vemora 0.1.0-alpha.10
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 +759 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +589 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ask.d.ts +14 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +137 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/audit.d.ts +17 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +408 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/brief.d.ts +14 -0
- package/dist/commands/brief.d.ts.map +1 -0
- package/dist/commands/brief.js +73 -0
- package/dist/commands/brief.js.map +1 -0
- package/dist/commands/chat.d.ts +7 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +155 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/context.d.ts +61 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +778 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/deps.d.ts +20 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +138 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/focus.d.ts +6 -0
- package/dist/commands/focus.d.ts.map +1 -0
- package/dist/commands/focus.js +302 -0
- package/dist/commands/focus.js.map +1 -0
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +366 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init-agent.d.ts +23 -0
- package/dist/commands/init-agent.d.ts.map +1 -0
- package/dist/commands/init-agent.js +447 -0
- package/dist/commands/init-agent.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +122 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/knowledge.d.ts +8 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +98 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/plan.d.ts +16 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +535 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/query.d.ts +39 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +389 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/remember.d.ts +11 -0
- package/dist/commands/remember.d.ts.map +1 -0
- package/dist/commands/remember.js +174 -0
- package/dist/commands/remember.js.map +1 -0
- package/dist/commands/report.d.ts +10 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +180 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +127 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/summarize.d.ts +14 -0
- package/dist/commands/summarize.d.ts.map +1 -0
- package/dist/commands/summarize.js +181 -0
- package/dist/commands/summarize.js.map +1 -0
- package/dist/commands/triage.d.ts +33 -0
- package/dist/commands/triage.d.ts.map +1 -0
- package/dist/commands/triage.js +419 -0
- package/dist/commands/triage.js.map +1 -0
- package/dist/commands/usages.d.ts +14 -0
- package/dist/commands/usages.d.ts.map +1 -0
- package/dist/commands/usages.js +236 -0
- package/dist/commands/usages.js.map +1 -0
- package/dist/core/config.d.ts +35 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +141 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/types.d.ts +274 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +4 -0
- package/dist/core/types.js.map +1 -0
- package/dist/embeddings/factory.d.ts +9 -0
- package/dist/embeddings/factory.d.ts.map +1 -0
- package/dist/embeddings/factory.js +26 -0
- package/dist/embeddings/factory.js.map +1 -0
- package/dist/embeddings/noop.d.ts +17 -0
- package/dist/embeddings/noop.d.ts.map +1 -0
- package/dist/embeddings/noop.js +22 -0
- package/dist/embeddings/noop.js.map +1 -0
- package/dist/embeddings/ollama.d.ts +11 -0
- package/dist/embeddings/ollama.d.ts.map +1 -0
- package/dist/embeddings/ollama.js +49 -0
- package/dist/embeddings/ollama.js.map +1 -0
- package/dist/embeddings/openai.d.ts +10 -0
- package/dist/embeddings/openai.d.ts.map +1 -0
- package/dist/embeddings/openai.js +67 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/embeddings/provider.d.ts +19 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +3 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/indexer/callgraph.d.ts +16 -0
- package/dist/indexer/callgraph.d.ts.map +1 -0
- package/dist/indexer/callgraph.js +154 -0
- package/dist/indexer/callgraph.js.map +1 -0
- package/dist/indexer/chunkBySlidingWindow.d.ts +6 -0
- package/dist/indexer/chunkBySlidingWindow.d.ts.map +1 -0
- package/dist/indexer/chunkBySlidingWindow.js +30 -0
- package/dist/indexer/chunkBySlidingWindow.js.map +1 -0
- package/dist/indexer/chunkBySymbols.d.ts +7 -0
- package/dist/indexer/chunkBySymbols.d.ts.map +1 -0
- package/dist/indexer/chunkBySymbols.js +57 -0
- package/dist/indexer/chunkBySymbols.js.map +1 -0
- package/dist/indexer/chunker.d.ts +15 -0
- package/dist/indexer/chunker.d.ts.map +1 -0
- package/dist/indexer/chunker.js +26 -0
- package/dist/indexer/chunker.js.map +1 -0
- package/dist/indexer/classHeader.d.ts +7 -0
- package/dist/indexer/classHeader.d.ts.map +1 -0
- package/dist/indexer/classHeader.js +37 -0
- package/dist/indexer/classHeader.js.map +1 -0
- package/dist/indexer/deps.d.ts +66 -0
- package/dist/indexer/deps.d.ts.map +1 -0
- package/dist/indexer/deps.js +409 -0
- package/dist/indexer/deps.js.map +1 -0
- package/dist/indexer/hasher.d.ts +17 -0
- package/dist/indexer/hasher.d.ts.map +1 -0
- package/dist/indexer/hasher.js +38 -0
- package/dist/indexer/hasher.js.map +1 -0
- package/dist/indexer/parser.d.ts +18 -0
- package/dist/indexer/parser.d.ts.map +1 -0
- package/dist/indexer/parser.js +355 -0
- package/dist/indexer/parser.js.map +1 -0
- package/dist/indexer/scanner.d.ts +18 -0
- package/dist/indexer/scanner.d.ts.map +1 -0
- package/dist/indexer/scanner.js +37 -0
- package/dist/indexer/scanner.js.map +1 -0
- package/dist/indexer/strategy.d.ts +11 -0
- package/dist/indexer/strategy.d.ts.map +1 -0
- package/dist/indexer/strategy.js +15 -0
- package/dist/indexer/strategy.js.map +1 -0
- package/dist/indexer/tests.d.ts +15 -0
- package/dist/indexer/tests.d.ts.map +1 -0
- package/dist/indexer/tests.js +68 -0
- package/dist/indexer/tests.js.map +1 -0
- package/dist/indexer/todos.d.ts +9 -0
- package/dist/indexer/todos.d.ts.map +1 -0
- package/dist/indexer/todos.js +29 -0
- package/dist/indexer/todos.js.map +1 -0
- package/dist/llm/anthropic.d.ts +8 -0
- package/dist/llm/anthropic.d.ts.map +1 -0
- package/dist/llm/anthropic.js +76 -0
- package/dist/llm/anthropic.js.map +1 -0
- package/dist/llm/factory.d.ts +7 -0
- package/dist/llm/factory.d.ts.map +1 -0
- package/dist/llm/factory.js +39 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/ollama.d.ts +8 -0
- package/dist/llm/ollama.d.ts.map +1 -0
- package/dist/llm/ollama.js +83 -0
- package/dist/llm/ollama.js.map +1 -0
- package/dist/llm/openai.d.ts +8 -0
- package/dist/llm/openai.d.ts.map +1 -0
- package/dist/llm/openai.js +68 -0
- package/dist/llm/openai.js.map +1 -0
- package/dist/llm/provider.d.ts +29 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +3 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/search/bm25.d.ts +3 -0
- package/dist/search/bm25.d.ts.map +1 -0
- package/dist/search/bm25.js +102 -0
- package/dist/search/bm25.js.map +1 -0
- package/dist/search/formatter.d.ts +43 -0
- package/dist/search/formatter.d.ts.map +1 -0
- package/dist/search/formatter.js +208 -0
- package/dist/search/formatter.js.map +1 -0
- package/dist/search/hybrid.d.ts +10 -0
- package/dist/search/hybrid.d.ts.map +1 -0
- package/dist/search/hybrid.js +53 -0
- package/dist/search/hybrid.js.map +1 -0
- package/dist/search/merge.d.ts +33 -0
- package/dist/search/merge.d.ts.map +1 -0
- package/dist/search/merge.js +158 -0
- package/dist/search/merge.js.map +1 -0
- package/dist/search/mmr.d.ts +23 -0
- package/dist/search/mmr.d.ts.map +1 -0
- package/dist/search/mmr.js +95 -0
- package/dist/search/mmr.js.map +1 -0
- package/dist/search/rerank.d.ts +12 -0
- package/dist/search/rerank.d.ts.map +1 -0
- package/dist/search/rerank.js +113 -0
- package/dist/search/rerank.js.map +1 -0
- package/dist/search/signature.d.ts +42 -0
- package/dist/search/signature.d.ts.map +1 -0
- package/dist/search/signature.js +112 -0
- package/dist/search/signature.js.map +1 -0
- package/dist/search/vector.d.ts +41 -0
- package/dist/search/vector.d.ts.map +1 -0
- package/dist/search/vector.js +185 -0
- package/dist/search/vector.js.map +1 -0
- package/dist/storage/cache.d.ts +30 -0
- package/dist/storage/cache.d.ts.map +1 -0
- package/dist/storage/cache.js +160 -0
- package/dist/storage/cache.js.map +1 -0
- package/dist/storage/knowledge.d.ts +17 -0
- package/dist/storage/knowledge.d.ts.map +1 -0
- package/dist/storage/knowledge.js +58 -0
- package/dist/storage/knowledge.js.map +1 -0
- package/dist/storage/repository.d.ts +27 -0
- package/dist/storage/repository.d.ts.map +1 -0
- package/dist/storage/repository.js +95 -0
- package/dist/storage/repository.js.map +1 -0
- package/dist/storage/session.d.ts +38 -0
- package/dist/storage/session.d.ts.map +1 -0
- package/dist/storage/session.js +100 -0
- package/dist/storage/session.js.map +1 -0
- package/dist/storage/summaries.d.ts +19 -0
- package/dist/storage/summaries.d.ts.map +1 -0
- package/dist/storage/summaries.js +66 -0
- package/dist/storage/summaries.js.map +1 -0
- package/dist/storage/usage.d.ts +35 -0
- package/dist/storage/usage.d.ts.map +1 -0
- package/dist/storage/usage.js +55 -0
- package/dist/storage/usage.js.map +1 -0
- package/dist/utils/git.d.ts +15 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +38 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +24 -0
- package/dist/utils/tokenizer.d.ts.map +1 -0
- package/dist/utils/tokenizer.js +52 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +71 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* vemora CLI
|
|
4
|
+
*
|
|
5
|
+
* Repository-local memory system for LLM-assisted development.
|
|
6
|
+
* Builds a structured, versioned index of a codebase and enables
|
|
7
|
+
* semantic search over it using local or remote embedding providers.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* vemora init Initialize .vemora/ in the current repo
|
|
11
|
+
* vemora index Scan and index the repository (incremental)
|
|
12
|
+
* vemora query "<text>" Find relevant code chunks
|
|
13
|
+
* vemora status Show current index stats
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* vemora CLI
|
|
5
|
+
*
|
|
6
|
+
* Repository-local memory system for LLM-assisted development.
|
|
7
|
+
* Builds a structured, versioned index of a codebase and enables
|
|
8
|
+
* semantic search over it using local or remote embedding providers.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* vemora init Initialize .vemora/ in the current repo
|
|
12
|
+
* vemora index Scan and index the repository (incremental)
|
|
13
|
+
* vemora query "<text>" Find relevant code chunks
|
|
14
|
+
* vemora status Show current index stats
|
|
15
|
+
*/
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
21
|
+
const commander_1 = require("commander");
|
|
22
|
+
const path_1 = __importDefault(require("path"));
|
|
23
|
+
const ask_1 = require("./commands/ask");
|
|
24
|
+
const brief_1 = require("./commands/brief");
|
|
25
|
+
const audit_1 = require("./commands/audit");
|
|
26
|
+
const focus_1 = require("./commands/focus");
|
|
27
|
+
const plan_1 = require("./commands/plan");
|
|
28
|
+
const triage_1 = require("./commands/triage");
|
|
29
|
+
const chat_1 = require("./commands/chat");
|
|
30
|
+
const context_1 = require("./commands/context");
|
|
31
|
+
const deps_1 = require("./commands/deps");
|
|
32
|
+
const index_1 = require("./commands/index");
|
|
33
|
+
const init_1 = require("./commands/init");
|
|
34
|
+
const init_agent_1 = require("./commands/init-agent");
|
|
35
|
+
const knowledge_1 = require("./commands/knowledge");
|
|
36
|
+
const query_1 = require("./commands/query");
|
|
37
|
+
const remember_1 = require("./commands/remember");
|
|
38
|
+
const usages_1 = require("./commands/usages");
|
|
39
|
+
const report_1 = require("./commands/report");
|
|
40
|
+
const status_1 = require("./commands/status");
|
|
41
|
+
const summarize_1 = require("./commands/summarize");
|
|
42
|
+
const program = new commander_1.Command();
|
|
43
|
+
program
|
|
44
|
+
.name("vemora")
|
|
45
|
+
.description("Repository-local memory system for LLM-assisted development")
|
|
46
|
+
.version("0.1.0");
|
|
47
|
+
// ── init ──────────────────────────────────────────────────────────────────────
|
|
48
|
+
program
|
|
49
|
+
.command("init")
|
|
50
|
+
.description("Initialize vemora in the current repository")
|
|
51
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
52
|
+
.action(async (opts) => {
|
|
53
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
54
|
+
try {
|
|
55
|
+
await (0, init_1.runInit)(rootDir);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// ── index ─────────────────────────────────────────────────────────────────────
|
|
63
|
+
program
|
|
64
|
+
.command("index")
|
|
65
|
+
.description("Index the repository content")
|
|
66
|
+
.option("--root <dir>", "Project root directory", process.cwd())
|
|
67
|
+
.option("--force", "Re-index all files, ignoring hashes", false)
|
|
68
|
+
.option("--no-embed", "Skip embedding generation", false)
|
|
69
|
+
.option("-w, --watch", "Watch for changes and re-index automatically", false)
|
|
70
|
+
.action(async (opts) => {
|
|
71
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
72
|
+
try {
|
|
73
|
+
// Commander's --no-embed sets opts.embed = false
|
|
74
|
+
await (0, index_1.runIndex)(rootDir, {
|
|
75
|
+
force: opts.force,
|
|
76
|
+
noEmbed: !opts.embed,
|
|
77
|
+
watch: opts.watch,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
// ── query ─────────────────────────────────────────────────────────────────────
|
|
86
|
+
program
|
|
87
|
+
.command("query <question>")
|
|
88
|
+
.description("Search the vemora index for relevant code")
|
|
89
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
90
|
+
.option("-k, --top-k <n>", "number of results to return", "10")
|
|
91
|
+
.option("-c, --show-code", "print code snippets in results", false)
|
|
92
|
+
.option("--keyword", "use keyword search instead of semantic search", false)
|
|
93
|
+
.option("--format <fmt>", "output format: terminal (default), json, markdown", "terminal")
|
|
94
|
+
.option("--rerank", "re-score results with a cross-encoder model (slower but more accurate)", false)
|
|
95
|
+
.option("--hybrid", "use hybrid search (vector + BM25)", false)
|
|
96
|
+
.option("--alpha <n>", "hybrid weight for vector search (0-1, default: 0.7)", "0.7")
|
|
97
|
+
.option("--budget <n>", "max tokens to include across results (overrides top-k as upper bound)")
|
|
98
|
+
.option("--mmr", "apply Maximal Marginal Relevance to diversify results", false)
|
|
99
|
+
.option("--lambda <n>", "MMR relevance weight (0=diverse, 1=relevant, default: 0.5)", "0.5")
|
|
100
|
+
.option("--merge", "merge adjacent or overlapping chunks from the same file", false)
|
|
101
|
+
.option("--merge-gap <n>", "max line gap between chunks to still merge (default: 3)", "3")
|
|
102
|
+
.option("--session", "skip chunks already seen in this session (auto-expires after 30 min idle)", false)
|
|
103
|
+
.option("--fresh", "reset session memory before this query", false)
|
|
104
|
+
.action(async (question, opts) => {
|
|
105
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
106
|
+
const fmt = opts.format;
|
|
107
|
+
if (!["terminal", "json", "markdown"].includes(fmt)) {
|
|
108
|
+
console.error(chalk_1.default.red(`Unknown format "${fmt}". Use: terminal, json, markdown`));
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
await (0, query_1.runQuery)(rootDir, question, {
|
|
113
|
+
topK: parseInt(opts.topK, 10),
|
|
114
|
+
showCode: opts.showCode,
|
|
115
|
+
keyword: opts.keyword,
|
|
116
|
+
format: fmt,
|
|
117
|
+
rerank: opts.rerank,
|
|
118
|
+
hybrid: opts.hybrid,
|
|
119
|
+
alpha: parseFloat(opts.alpha),
|
|
120
|
+
budget: opts.budget ? parseInt(opts.budget, 10) : undefined,
|
|
121
|
+
mmr: opts.mmr,
|
|
122
|
+
lambda: parseFloat(opts.lambda),
|
|
123
|
+
merge: opts.merge,
|
|
124
|
+
mergeGap: parseInt(opts.mergeGap, 10),
|
|
125
|
+
session: opts.session,
|
|
126
|
+
fresh: opts.fresh,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
// ── status ────────────────────────────────────────────────────────────────────
|
|
135
|
+
program
|
|
136
|
+
.command("status")
|
|
137
|
+
.description("Show current index stats")
|
|
138
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
139
|
+
.action(async (opts) => {
|
|
140
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
141
|
+
try {
|
|
142
|
+
await (0, status_1.runStatus)(rootDir);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
// ── ask ───────────────────────────────────────────────────────────────────────
|
|
150
|
+
program
|
|
151
|
+
.command("ask <question>")
|
|
152
|
+
.description("One-shot Q&A: retrieve relevant context and answer with the configured LLM")
|
|
153
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
154
|
+
.option("-k, --top-k <n>", "number of chunks to retrieve", "5")
|
|
155
|
+
.option("--keyword", "use keyword search (no embeddings required)", false)
|
|
156
|
+
.option("--hybrid", "use hybrid vector+BM25 search", false)
|
|
157
|
+
.option("--budget <n>", "max context tokens to send to the LLM (default: 6000)", "6000")
|
|
158
|
+
.option("--show-context", "print the retrieved context before the answer", false)
|
|
159
|
+
.action(async (question, opts) => {
|
|
160
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
161
|
+
try {
|
|
162
|
+
await (0, ask_1.runAsk)(rootDir, question, {
|
|
163
|
+
topK: Number.parseInt(opts.topK, 10),
|
|
164
|
+
keyword: opts.keyword,
|
|
165
|
+
hybrid: opts.hybrid,
|
|
166
|
+
budget: Number.parseInt(opts.budget, 10),
|
|
167
|
+
showContext: opts.showContext,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
// ── plan ──────────────────────────────────────────────────────────────────────
|
|
176
|
+
program
|
|
177
|
+
.command("plan <task>")
|
|
178
|
+
.description("Planner-executor: a pro LLM decomposes the task, a smaller LLM executes each step")
|
|
179
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
180
|
+
.option("-k, --top-k <n>", "chunks to retrieve per step (default: 5)", "5")
|
|
181
|
+
.option("--keyword", "use keyword search (no embeddings required)", false)
|
|
182
|
+
.option("--budget <n>", "max context tokens per step (default: 4000)", "4000")
|
|
183
|
+
.option("--show-context", "print retrieved context for each step", false)
|
|
184
|
+
.option("--confirm", "show the plan and ask for confirmation before executing", false)
|
|
185
|
+
.option("--synthesize", "call the planner again after all steps to produce a single final answer", false)
|
|
186
|
+
.action(async (task, opts) => {
|
|
187
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
188
|
+
try {
|
|
189
|
+
await (0, plan_1.runPlan)(rootDir, task, {
|
|
190
|
+
topK: Number.parseInt(opts.topK, 10),
|
|
191
|
+
keyword: opts.keyword,
|
|
192
|
+
budget: Number.parseInt(opts.budget, 10),
|
|
193
|
+
showContext: opts.showContext,
|
|
194
|
+
confirm: opts.confirm,
|
|
195
|
+
synthesize: opts.synthesize,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
// ── chat ──────────────────────────────────────────────────────────────────────
|
|
204
|
+
program
|
|
205
|
+
.command("chat")
|
|
206
|
+
.description("Interactive chat with the codebase (middleware proxy)")
|
|
207
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
208
|
+
.option("--provider <name>", "LLM provider (openai, anthropic, ollama)")
|
|
209
|
+
.option("--model <name>", "LLM model to use")
|
|
210
|
+
.option("-k, --top-k <n>", "number of context chunks to pull per message (default: 5)", "5")
|
|
211
|
+
.action(async (opts) => {
|
|
212
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
213
|
+
try {
|
|
214
|
+
await (0, chat_1.runChat)(rootDir, {
|
|
215
|
+
provider: opts.provider,
|
|
216
|
+
model: opts.model,
|
|
217
|
+
topK: parseInt(opts.topK, 10),
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
// ── context ──────────────────────────────────────────────────────────────────
|
|
226
|
+
program
|
|
227
|
+
.command("context")
|
|
228
|
+
.description("Generate an optimized LLM context block from query and/or file")
|
|
229
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
230
|
+
.option("-q, --query <text>", "natural-language query to find relevant code")
|
|
231
|
+
.option("-f, --file <path>", "include a specific file in full with its dependency graph")
|
|
232
|
+
.option("-k, --top-k <n>", "number of search results to include (default: 5)", "5")
|
|
233
|
+
.option("--keyword", "use keyword search instead of semantic search", false)
|
|
234
|
+
.option("--show-code", "show full code (no line cap)", false)
|
|
235
|
+
.option("--format <fmt>", "output format: markdown (default), plain, terse")
|
|
236
|
+
.option("--rerank", "re-score results with a cross-encoder model", false)
|
|
237
|
+
.option("--hybrid", "use hybrid search (vector + BM25)", false)
|
|
238
|
+
.option("--alpha <n>", "hybrid weight for vector search (0-1, default: 0.7)", "0.7")
|
|
239
|
+
.option("--budget <n>", "max tokens to include across retrieved chunks")
|
|
240
|
+
.option("--mmr", "apply Maximal Marginal Relevance to diversify results", false)
|
|
241
|
+
.option("--lambda <n>", "MMR relevance weight (0=diverse, 1=relevant, default: 0.5)", "0.5")
|
|
242
|
+
.option("--merge", "merge adjacent or overlapping chunks from the same file", false)
|
|
243
|
+
.option("--merge-gap <n>", "max line gap between chunks to still merge (default: 3)", "3")
|
|
244
|
+
.option("--structured", "emit a structured context block (Entry Point / Dependencies / Types / Related Patterns)", false)
|
|
245
|
+
.option("--session", "skip chunks already seen in this session (auto-expires after 30 min idle)", false)
|
|
246
|
+
.option("--fresh", "reset session memory before this query", false)
|
|
247
|
+
.action(async (opts) => {
|
|
248
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
249
|
+
const fmt = opts.format;
|
|
250
|
+
if (fmt && !["markdown", "plain", "terse"].includes(fmt)) {
|
|
251
|
+
console.error(chalk_1.default.red(`Unknown format "${fmt}". Use: markdown, plain, terse`));
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
await (0, context_1.runContext)(rootDir, {
|
|
256
|
+
query: opts.query,
|
|
257
|
+
file: opts.file,
|
|
258
|
+
topK: parseInt(opts.topK, 10),
|
|
259
|
+
keyword: opts.keyword,
|
|
260
|
+
showCode: opts.showCode,
|
|
261
|
+
format: fmt,
|
|
262
|
+
rerank: opts.rerank,
|
|
263
|
+
hybrid: opts.hybrid,
|
|
264
|
+
alpha: parseFloat(opts.alpha),
|
|
265
|
+
budget: opts.budget ? parseInt(opts.budget, 10) : undefined,
|
|
266
|
+
mmr: opts.mmr,
|
|
267
|
+
lambda: parseFloat(opts.lambda),
|
|
268
|
+
merge: opts.merge,
|
|
269
|
+
mergeGap: parseInt(opts.mergeGap, 10),
|
|
270
|
+
structured: opts.structured,
|
|
271
|
+
session: opts.session,
|
|
272
|
+
fresh: opts.fresh,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
// ── deps ──────────────────────────────────────────────────────────────────────
|
|
281
|
+
program
|
|
282
|
+
.command("deps <file>")
|
|
283
|
+
.description("Show dependency context for a file (imports + used-by)")
|
|
284
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
285
|
+
.option("-d, --depth <n>", "transitive depth for outgoing imports (default: 1)", "1")
|
|
286
|
+
.option("-r, --reverse-depth <n>", "transitive depth for incoming importers (default: 1)", "1")
|
|
287
|
+
.action(async (file, opts) => {
|
|
288
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
289
|
+
try {
|
|
290
|
+
await (0, deps_1.runDeps)(rootDir, file, {
|
|
291
|
+
depth: parseInt(opts.depth, 10),
|
|
292
|
+
reverseDepth: parseInt(opts.reverseDepth, 10),
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
catch (err) {
|
|
296
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
297
|
+
process.exit(1);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
// ── summarize ─────────────────────────────────────────────────────────────────
|
|
301
|
+
program
|
|
302
|
+
.command("summarize")
|
|
303
|
+
.description("Generate LLM summaries for each file and a project overview")
|
|
304
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
305
|
+
.option("--force", "re-generate all summaries, ignoring content hashes", false)
|
|
306
|
+
.option("--model <name>", "override LLM model (default: from config)")
|
|
307
|
+
.option("--files-only", "only generate per-file summaries, skip project overview", false)
|
|
308
|
+
.option("--project-only", "(re)generate project overview from existing file summaries", false)
|
|
309
|
+
.option("--show", "print the existing project overview without regenerating", false)
|
|
310
|
+
.action(async (opts) => {
|
|
311
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
312
|
+
try {
|
|
313
|
+
await (0, summarize_1.runSummarize)(rootDir, {
|
|
314
|
+
force: opts.force,
|
|
315
|
+
model: opts.model,
|
|
316
|
+
filesOnly: opts.filesOnly,
|
|
317
|
+
projectOnly: opts.projectOnly,
|
|
318
|
+
show: opts.show,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
catch (err) {
|
|
322
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
323
|
+
process.exit(1);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// ── init-agent ────────────────────────────────────────────────────────────────
|
|
327
|
+
program
|
|
328
|
+
.command("init-agent")
|
|
329
|
+
.description("Generate AI agent instruction files (CLAUDE.md, GEMINI.md, .github/copilot-instructions.md, .cursor/rules/vemora.mdc, .windsurfrules)")
|
|
330
|
+
.option("--agent <agent>", "Which agent to target: claude, gemini, copilot, cursor, windsurf (default: all)")
|
|
331
|
+
.option("--force", "Overwrite existing files that have no vemora markers")
|
|
332
|
+
.option("--hooks", "Write Claude Code hooks to .claude/settings.json (claude target only)", false)
|
|
333
|
+
.option("--root <dir>", "Project root directory", process.cwd())
|
|
334
|
+
.action(async (opts) => {
|
|
335
|
+
const ALL_AGENTS = ["claude", "copilot", "cursor", "windsurf", "gemini"];
|
|
336
|
+
const agents = opts.agent
|
|
337
|
+
? ALL_AGENTS.includes(opts.agent)
|
|
338
|
+
? [opts.agent]
|
|
339
|
+
: undefined
|
|
340
|
+
: undefined;
|
|
341
|
+
if (opts.agent && !agents) {
|
|
342
|
+
console.error(chalk_1.default.red(`Unknown agent "${opts.agent}". Valid values: claude, gemini, copilot, cursor, windsurf`));
|
|
343
|
+
process.exit(1);
|
|
344
|
+
}
|
|
345
|
+
try {
|
|
346
|
+
await (0, init_agent_1.runInitAgent)(opts.root, { agents, force: opts.force, hooks: opts.hooks });
|
|
347
|
+
}
|
|
348
|
+
catch (err) {
|
|
349
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
350
|
+
process.exit(1);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
// ── remember ──────────────────────────────────────────────────────────────────
|
|
354
|
+
program
|
|
355
|
+
.command("remember <text>")
|
|
356
|
+
.description("Save a knowledge entry (architectural decision, pattern, gotcha, glossary term)")
|
|
357
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
358
|
+
.option("--category <cat>", "entry category: decision | pattern | gotcha | glossary (auto-classified if omitted)")
|
|
359
|
+
.option("--title <title>", "short title (auto-derived from text if omitted)")
|
|
360
|
+
.option("--files <paths>", "comma-separated project-relative file paths this entry relates to")
|
|
361
|
+
.option("--symbols <names>", "comma-separated symbol names this entry relates to")
|
|
362
|
+
.option("--confidence <level>", "confidence level: high | medium | low", "medium")
|
|
363
|
+
.option("--supersedes <id>", "ID of an existing entry this replaces")
|
|
364
|
+
.option("--by <author>", "createdBy tag (default: human)", "human")
|
|
365
|
+
.action(async (text, opts) => {
|
|
366
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
367
|
+
try {
|
|
368
|
+
await (0, remember_1.runRemember)(rootDir, text, {
|
|
369
|
+
category: opts.category,
|
|
370
|
+
title: opts.title,
|
|
371
|
+
files: opts.files,
|
|
372
|
+
symbols: opts.symbols,
|
|
373
|
+
confidence: opts.confidence,
|
|
374
|
+
supersedes: opts.supersedes,
|
|
375
|
+
createdBy: opts.by,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
catch (err) {
|
|
379
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
380
|
+
process.exit(1);
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
// ── knowledge ─────────────────────────────────────────────────────────────────
|
|
384
|
+
const knowledge = program
|
|
385
|
+
.command("knowledge")
|
|
386
|
+
.description("Manage the project knowledge store");
|
|
387
|
+
knowledge
|
|
388
|
+
.command("list")
|
|
389
|
+
.description("List knowledge entries, optionally filtered")
|
|
390
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
391
|
+
.option("--category <cat>", "filter by category: decision | pattern | gotcha | glossary")
|
|
392
|
+
.option("--file <path>", "filter by related file path (substring match)")
|
|
393
|
+
.option("--symbol <name>", "filter by related symbol name")
|
|
394
|
+
.action(async (opts) => {
|
|
395
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
396
|
+
try {
|
|
397
|
+
await (0, knowledge_1.runKnowledgeList)(rootDir, {
|
|
398
|
+
category: opts.category,
|
|
399
|
+
file: opts.file,
|
|
400
|
+
symbol: opts.symbol,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
catch (err) {
|
|
404
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
405
|
+
process.exit(1);
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
knowledge
|
|
409
|
+
.command("forget <id>")
|
|
410
|
+
.description("Remove a knowledge entry by ID (prefix match supported)")
|
|
411
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
412
|
+
.action(async (id, opts) => {
|
|
413
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
414
|
+
try {
|
|
415
|
+
await (0, knowledge_1.runKnowledgeForget)(rootDir, id);
|
|
416
|
+
}
|
|
417
|
+
catch (err) {
|
|
418
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
419
|
+
process.exit(1);
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
// ── usages ────────────────────────────────────────────────────────────────────
|
|
423
|
+
program
|
|
424
|
+
.command("usages <symbol>")
|
|
425
|
+
.description("Find all files that use a symbol, following re-export chains")
|
|
426
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
427
|
+
.option("-d, --depth <n>", "max re-export chain depth to follow (default: 10)", "10")
|
|
428
|
+
.option("--callers-only", "show only files with call graph data (known call sites)", false)
|
|
429
|
+
.action(async (symbol, opts) => {
|
|
430
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
431
|
+
try {
|
|
432
|
+
await (0, usages_1.runUsages)(rootDir, symbol, {
|
|
433
|
+
depth: parseInt(opts.depth, 10),
|
|
434
|
+
callersOnly: opts.callersOnly,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
catch (err) {
|
|
438
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
439
|
+
process.exit(1);
|
|
440
|
+
}
|
|
441
|
+
});
|
|
442
|
+
// ── report ────────────────────────────────────────────────────────────────────
|
|
443
|
+
program
|
|
444
|
+
.command("report")
|
|
445
|
+
.description("Show usage statistics and token savings estimate")
|
|
446
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
447
|
+
.option("--days <n>", "limit report to events from the last N days")
|
|
448
|
+
.option("-v, --verbose", "show per-query breakdown (last 20 queries)", false)
|
|
449
|
+
.option("--clear", "clear all recorded usage data", false)
|
|
450
|
+
.action(async (opts) => {
|
|
451
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
452
|
+
try {
|
|
453
|
+
await (0, report_1.runReport)(rootDir, {
|
|
454
|
+
days: opts.days ? parseInt(opts.days, 10) : undefined,
|
|
455
|
+
verbose: opts.verbose,
|
|
456
|
+
clear: opts.clear,
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
catch (err) {
|
|
460
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
461
|
+
process.exit(1);
|
|
462
|
+
}
|
|
463
|
+
});
|
|
464
|
+
// ── audit ─────────────────────────────────────────────────────────────────────
|
|
465
|
+
program
|
|
466
|
+
.command("audit")
|
|
467
|
+
.description("Systematic code audit for security vulnerabilities, performance issues, and bugs")
|
|
468
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
469
|
+
.option("--type <types>", "comma-separated audit types: security, performance, bugs (default: all)")
|
|
470
|
+
.option("--since <ref>", "only audit files changed since this git ref (e.g. HEAD~5, main)")
|
|
471
|
+
.option("--budget <n>", "max context tokens per step (default: 5000)", "5000")
|
|
472
|
+
.option("--keyword", "use keyword search (no embeddings required)", false)
|
|
473
|
+
.option("--output <fmt>", "output format: terminal (default), json, markdown", "terminal")
|
|
474
|
+
.option("--save", "save critical/high findings as knowledge entries", false)
|
|
475
|
+
.action(async (opts) => {
|
|
476
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
477
|
+
const validTypes = ["security", "performance", "bugs"];
|
|
478
|
+
let types;
|
|
479
|
+
if (opts.type) {
|
|
480
|
+
const requested = opts.type.split(",").map((t) => t.trim());
|
|
481
|
+
const invalid = requested.filter((t) => !validTypes.includes(t));
|
|
482
|
+
if (invalid.length > 0) {
|
|
483
|
+
console.error(chalk_1.default.red(`Unknown audit type(s): ${invalid.join(", ")}. Valid: security, performance, bugs`));
|
|
484
|
+
process.exit(1);
|
|
485
|
+
}
|
|
486
|
+
types = requested;
|
|
487
|
+
}
|
|
488
|
+
const outputFmt = opts.output;
|
|
489
|
+
if (!["terminal", "json", "markdown"].includes(outputFmt)) {
|
|
490
|
+
console.error(chalk_1.default.red(`Unknown output format "${opts.output}". Use: terminal, json, markdown`));
|
|
491
|
+
process.exit(1);
|
|
492
|
+
}
|
|
493
|
+
try {
|
|
494
|
+
await (0, audit_1.runAudit)(rootDir, {
|
|
495
|
+
types,
|
|
496
|
+
since: opts.since,
|
|
497
|
+
budget: Number.parseInt(opts.budget, 10),
|
|
498
|
+
keyword: opts.keyword,
|
|
499
|
+
output: outputFmt,
|
|
500
|
+
save: opts.save,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
catch (err) {
|
|
504
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
505
|
+
process.exit(1);
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
// ── triage ────────────────────────────────────────────────────────────────────
|
|
509
|
+
program
|
|
510
|
+
.command("triage")
|
|
511
|
+
.description("Static heuristic scan for bugs, security issues, and performance problems — no LLM required")
|
|
512
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
513
|
+
.option("--type <types>", "comma-separated types: bugs, security, performance (default: all)")
|
|
514
|
+
.option("-k, --top-k <n>", "max findings to return, ranked by score (default: 30)", "30")
|
|
515
|
+
.option("--min-score <n>", "skip findings below this score threshold (default: 1)", "1")
|
|
516
|
+
.option("--file <path>", "restrict scan to files matching this substring")
|
|
517
|
+
.option("--output <fmt>", "output format: terminal (default), json, markdown", "terminal")
|
|
518
|
+
.action(async (opts) => {
|
|
519
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
520
|
+
const validTypes = ["bugs", "security", "performance"];
|
|
521
|
+
let types;
|
|
522
|
+
if (opts.type) {
|
|
523
|
+
const requested = opts.type.split(",").map((t) => t.trim());
|
|
524
|
+
const invalid = requested.filter((t) => !validTypes.includes(t));
|
|
525
|
+
if (invalid.length > 0) {
|
|
526
|
+
console.error(chalk_1.default.red(`Unknown type(s): ${invalid.join(", ")}. Valid: bugs, security, performance`));
|
|
527
|
+
process.exit(1);
|
|
528
|
+
}
|
|
529
|
+
types = requested;
|
|
530
|
+
}
|
|
531
|
+
const outputFmt = opts.output;
|
|
532
|
+
if (!["terminal", "json", "markdown"].includes(outputFmt)) {
|
|
533
|
+
console.error(chalk_1.default.red(`Unknown output format "${opts.output}". Use: terminal, json, markdown`));
|
|
534
|
+
process.exit(1);
|
|
535
|
+
}
|
|
536
|
+
try {
|
|
537
|
+
await (0, triage_1.runTriage)(rootDir, {
|
|
538
|
+
types,
|
|
539
|
+
topK: Number.parseInt(opts.topK, 10),
|
|
540
|
+
minScore: Number.parseInt(opts.minScore, 10),
|
|
541
|
+
file: opts.file,
|
|
542
|
+
output: outputFmt,
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
catch (err) {
|
|
546
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
547
|
+
process.exit(1);
|
|
548
|
+
}
|
|
549
|
+
});
|
|
550
|
+
// ── focus ─────────────────────────────────────────────────────────────────────
|
|
551
|
+
program
|
|
552
|
+
.command("focus <target>")
|
|
553
|
+
.description("Show implementation, dependencies, callers, tests and knowledge for a file or symbol")
|
|
554
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
555
|
+
.option("--format <fmt>", "output format: markdown (default), plain", "markdown")
|
|
556
|
+
.action(async (target, opts) => {
|
|
557
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
558
|
+
const fmt = opts.format;
|
|
559
|
+
if (!["markdown", "plain"].includes(fmt)) {
|
|
560
|
+
console.error(chalk_1.default.red(`Unknown format "${fmt}". Use: markdown, plain`));
|
|
561
|
+
process.exit(1);
|
|
562
|
+
}
|
|
563
|
+
try {
|
|
564
|
+
await (0, focus_1.runFocus)(rootDir, target, { format: fmt });
|
|
565
|
+
}
|
|
566
|
+
catch (err) {
|
|
567
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
568
|
+
process.exit(1);
|
|
569
|
+
}
|
|
570
|
+
});
|
|
571
|
+
// ── brief ─────────────────────────────────────────────────────────────────────
|
|
572
|
+
program
|
|
573
|
+
.command("brief")
|
|
574
|
+
.description("Print a compact session primer: project overview + high-confidence knowledge")
|
|
575
|
+
.option("--root <dir>", "project root directory (default: cwd)", "")
|
|
576
|
+
.option("--all", "include all knowledge entries, not only high-confidence ones", false)
|
|
577
|
+
.action(async (opts) => {
|
|
578
|
+
const rootDir = path_1.default.resolve(opts.root || process.cwd());
|
|
579
|
+
try {
|
|
580
|
+
await (0, brief_1.runBrief)(rootDir, { all: opts.all });
|
|
581
|
+
}
|
|
582
|
+
catch (err) {
|
|
583
|
+
console.error(chalk_1.default.red("Error:"), err.message);
|
|
584
|
+
process.exit(1);
|
|
585
|
+
}
|
|
586
|
+
});
|
|
587
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
588
|
+
program.parse(process.argv);
|
|
589
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;GAYG;;;;;AAEH,kDAA0B;AAC1B,yCAAoC;AACpC,gDAAwB;AACxB,wCAAwC;AACxC,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,0CAA0C;AAC1C,8CAA8C;AAC9C,0CAA0C;AAC1C,gDAAgD;AAChD,0CAA0C;AAC1C,4CAA4C;AAC5C,0CAA0C;AAC1C,sDAAqD;AACrD,oDAA4E;AAC5E,4CAA4C;AAC5C,kDAAkD;AAClD,8CAA8C;AAC9C,8CAA8C;AAC9C,8CAA8C;AAC9C,oDAAoD;AAEpD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,IAAsB,EAAE,EAAE;IACvC,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,cAAO,EAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,cAAc,EAAE,wBAAwB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC/D,MAAM,CAAC,SAAS,EAAE,qCAAqC,EAAE,KAAK,CAAC;KAC/D,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,KAAK,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,8CAA8C,EAAE,KAAK,CAAC;KAC5E,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,iDAAiD;QACjD,MAAM,IAAA,gBAAQ,EAAC,OAAO,EAAE;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,EAAE,IAAI,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,EAAE,KAAK,CAAC;KAClE,MAAM,CAAC,WAAW,EAAE,+CAA+C,EAAE,KAAK,CAAC;KAC3E,MAAM,CACL,gBAAgB,EAChB,mDAAmD,EACnD,UAAU,CACX;KACA,MAAM,CACL,UAAU,EACV,wEAAwE,EACxE,KAAK,CACN;KACA,MAAM,CAAC,UAAU,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAC9D,MAAM,CACL,aAAa,EACb,qDAAqD,EACrD,KAAK,CACN;KACA,MAAM,CACL,cAAc,EACd,uEAAuE,CACxE;KACA,MAAM,CACL,OAAO,EACP,uDAAuD,EACvD,KAAK,CACN;KACA,MAAM,CACL,cAAc,EACd,4DAA4D,EAC5D,KAAK,CACN;KACA,MAAM,CACL,SAAS,EACT,yDAAyD,EACzD,KAAK,CACN;KACA,MAAM,CACL,iBAAiB,EACjB,yDAAyD,EACzD,GAAG,CACJ;KACA,MAAM,CACL,WAAW,EACX,2EAA2E,EAC3E,KAAK,CACN;KACA,MAAM,CAAC,SAAS,EAAE,wCAAwC,EAAE,KAAK,CAAC;KAClE,MAAM,CACL,KAAK,EACH,QAAgB,EAChB,IAgBC,EACD,EAAE;IACF,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAA0C,CAAC;IAC5D,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,kCAAkC,CAAC,CACpE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAA,gBAAQ,EAAC,OAAO,EAAE,QAAQ,EAAE;YAChC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,IAAsB,EAAE,EAAE;IACvC,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,kBAAS,EAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CACV,4EAA4E,CAC7E;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,GAAG,CAAC;KAC9D,MAAM,CAAC,WAAW,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACzE,MAAM,CAAC,UAAU,EAAE,+BAA+B,EAAE,KAAK,CAAC;KAC1D,MAAM,CACL,cAAc,EACd,uDAAuD,EACvD,MAAM,CACP;KACA,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,EAAE,KAAK,CAAC;KAChF,MAAM,CACL,KAAK,EACH,QAAgB,EAChB,IAOC,EACD,EAAE;IACF,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,YAAM,EAAC,OAAO,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CACV,mFAAmF,CACpF;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,EAAE,GAAG,CAAC;KAC1E,MAAM,CAAC,WAAW,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACzE,MAAM,CACL,cAAc,EACd,6CAA6C,EAC7C,MAAM,CACP;KACA,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,EAAE,KAAK,CAAC;KACxE,MAAM,CACL,WAAW,EACX,yDAAyD,EACzD,KAAK,CACN;KACA,MAAM,CACL,cAAc,EACd,yEAAyE,EACzE,KAAK,CACN;KACA,MAAM,CACL,KAAK,EACH,IAAY,EACZ,IAQC,EACD,EAAE;IACF,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,cAAO,EAAC,OAAO,EAAE,IAAI,EAAE;YAC3B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KACvE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;KAC5C,MAAM,CACL,iBAAiB,EACjB,2DAA2D,EAC3D,GAAG,CACJ;KACA,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,cAAO,EAAC,OAAO,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,gFAAgF;AAEhF,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;KAC5E,MAAM,CACL,mBAAmB,EACnB,2DAA2D,CAC5D;KACA,MAAM,CACL,iBAAiB,EACjB,kDAAkD,EAClD,GAAG,CACJ;KACA,MAAM,CAAC,WAAW,EAAE,+CAA+C,EAAE,KAAK,CAAC;KAC3E,MAAM,CAAC,aAAa,EAAE,8BAA8B,EAAE,KAAK,CAAC;KAC5D,MAAM,CACL,gBAAgB,EAChB,iDAAiD,CAClD;KACA,MAAM,CAAC,UAAU,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACxE,MAAM,CAAC,UAAU,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAC9D,MAAM,CACL,aAAa,EACb,qDAAqD,EACrD,KAAK,CACN;KACA,MAAM,CAAC,cAAc,EAAE,+CAA+C,CAAC;KACvE,MAAM,CACL,OAAO,EACP,uDAAuD,EACvD,KAAK,CACN;KACA,MAAM,CACL,cAAc,EACd,4DAA4D,EAC5D,KAAK,CACN;KACA,MAAM,CACL,SAAS,EACT,yDAAyD,EACzD,KAAK,CACN;KACA,MAAM,CACL,iBAAiB,EACjB,yDAAyD,EACzD,GAAG,CACJ;KACA,MAAM,CACL,cAAc,EACd,yFAAyF,EACzF,KAAK,CACN;KACA,MAAM,CACL,WAAW,EACX,2EAA2E,EAC3E,KAAK,CACN;KACA,MAAM,CAAC,SAAS,EAAE,wCAAwC,EAAE,KAAK,CAAC;KAClE,MAAM,CACL,KAAK,EAAE,IAmBN,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAoD,CAAC;IACtE,IAAI,GAAG,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,gCAAgC,CAAC,CAClE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAA,oBAAU,EAAC,OAAO,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,iBAAiB,EACjB,oDAAoD,EACpD,GAAG,CACJ;KACA,MAAM,CACL,yBAAyB,EACzB,sDAAsD,EACtD,GAAG,CACJ;KACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA2D,EAAE,EAAE;IAC1F,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,cAAO,EAAC,OAAO,EAAE,IAAI,EAAE;YAC3B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/B,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,SAAS,EACT,oDAAoD,EACpD,KAAK,CACN;KACA,MAAM,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;KACrE,MAAM,CACL,cAAc,EACd,yDAAyD,EACzD,KAAK,CACN;KACA,MAAM,CACL,gBAAgB,EAChB,4DAA4D,EAC5D,KAAK,CACN;KACA,MAAM,CAAC,QAAQ,EAAE,0DAA0D,EAAE,KAAK,CAAC;KACnF,MAAM,CACL,KAAK,EAAE,IAON,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,wBAAY,EAAC,OAAO,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CACV,uIAAuI,CACxI;KACA,MAAM,CACL,iBAAiB,EACjB,iFAAiF,CAClF;KACA,MAAM,CAAC,SAAS,EAAE,sDAAsD,CAAC;KACzE,MAAM,CACL,SAAS,EACT,uEAAuE,EACvE,KAAK,CACN;KACA,MAAM,CAAC,cAAc,EAAE,wBAAwB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC/D,MAAM,CAAC,KAAK,EAAE,IAAuE,EAAE,EAAE;IACxF,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;IAElF,MAAM,MAAM,GAA8B,IAAI,CAAC,KAAK;QAClD,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAoB,CAAC;YAC9C,CAAC,CAAC,CAAC,IAAI,CAAC,KAAoB,CAAC;YAC7B,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CACP,kBAAkB,IAAI,CAAC,KAAK,4DAA4D,CACzF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAA,yBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CACV,iFAAiF,CAClF;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,kBAAkB,EAClB,qFAAqF,CACtF;KACA,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,CAAC;KAC5E,MAAM,CACL,iBAAiB,EACjB,mEAAmE,CACpE;KACA,MAAM,CACL,mBAAmB,EACnB,oDAAoD,CACrD;KACA,MAAM,CACL,sBAAsB,EACtB,uCAAuC,EACvC,QAAQ,CACT;KACA,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,gCAAgC,EAAE,OAAO,CAAC;KAClE,MAAM,CACL,KAAK,EACH,IAAY,EACZ,IASC,EACD,EAAE;IACF,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,sBAAW,EAAC,OAAO,EAAE,IAAI,EAAE;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAKF;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAuC;YACxD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oCAAoC,CAAC,CAAC;AAErD,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,kBAAkB,EAClB,4DAA4D,CAC7D;KACA,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;KACxE,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,4BAAgB,EAAC,OAAO,EAAE;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,SAAS;KACN,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAsB,EAAE,EAAE;IACnD,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,8BAAkB,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CACV,8DAA8D,CAC/D;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,iBAAiB,EACjB,mDAAmD,EACnD,IAAI,CACL;KACA,MAAM,CACL,gBAAgB,EAChB,yDAAyD,EACzD,KAAK,CACN;KACA,MAAM,CACL,KAAK,EACH,MAAc,EACd,IAA2D,EAC3D,EAAE;IACF,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,kBAAS,EAAC,OAAO,EAAE,MAAM,EAAE;YAC/B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;KACnE,MAAM,CAAC,eAAe,EAAE,4CAA4C,EAAE,KAAK,CAAC;KAC5E,MAAM,CAAC,SAAS,EAAE,+BAA+B,EAAE,KAAK,CAAC;KACzD,MAAM,CACL,KAAK,EAAE,IAAuE,EAAE,EAAE;IAChF,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,kBAAS,EAAC,OAAO,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACrD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CACV,kFAAkF,CACnF;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,gBAAgB,EAChB,yEAAyE,CAC1E;KACA,MAAM,CACL,eAAe,EACf,iEAAiE,CAClE;KACA,MAAM,CACL,cAAc,EACd,6CAA6C,EAC7C,MAAM,CACP;KACA,MAAM,CAAC,WAAW,EAAE,6CAA6C,EAAE,KAAK,CAAC;KACzE,MAAM,CACL,gBAAgB,EAChB,mDAAmD,EACnD,UAAU,CACX;KACA,MAAM,CACL,QAAQ,EACR,kDAAkD,EAClD,KAAK,CACN;KACA,MAAM,CACL,KAAK,EAAE,IAQN,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAU,CAAC;IAGhE,IAAI,KAA8B,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAgB,CAAC;QAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CACP,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,CACnF,CACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAA0C,CAAC;IAClE,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,MAAM,kCAAkC,CAAC,CACnF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,gBAAQ,EAAC,OAAO,EAAE;YACtB,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CACV,6FAA6F,CAC9F;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,gBAAgB,EAChB,mEAAmE,CACpE;KACA,MAAM,CACL,iBAAiB,EACjB,uDAAuD,EACvD,IAAI,CACL;KACA,MAAM,CACL,iBAAiB,EACjB,uDAAuD,EACvD,GAAG,CACJ;KACA,MAAM,CAAC,eAAe,EAAE,gDAAgD,CAAC;KACzE,MAAM,CACL,gBAAgB,EAChB,mDAAmD,EACnD,UAAU,CACX;KACA,MAAM,CACL,KAAK,EAAE,IAON,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;IAGhE,IAAI,KAA+B,CAAC;IACpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAiB,CAAC;QAC5E,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CACP,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAC7E,CACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAA0C,CAAC;IAClE,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,MAAM,kCAAkC,CAAC,CACnF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAA,kBAAS,EAAC,OAAO,EAAE;YACvB,KAAK;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CACV,sFAAsF,CACvF;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CACL,gBAAgB,EAChB,0CAA0C,EAC1C,UAAU,CACX;KACA,MAAM,CACL,KAAK,EAAE,MAAc,EAAE,IAAsC,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAA8B,CAAC;IAChD,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAA,gBAAQ,EAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CACV,8EAA8E,CAC/E;KACA,MAAM,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,CAAC;KACnE,MAAM,CAAC,OAAO,EAAE,8DAA8D,EAAE,KAAK,CAAC;KACtF,MAAM,CAAC,KAAK,EAAE,IAAoC,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAA,gBAAQ,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,gFAAgF;AAEhF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|