@elaraai/east-plugin 0.0.0-stage → 1.0.87
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/LICENSE.md +682 -0
- package/README.md +104 -2
- package/dist/daemon/east-py-lsp.d.ts +2 -0
- package/dist/daemon/east-py-lsp.d.ts.map +1 -0
- package/dist/daemon/east-py-lsp.js +9 -0
- package/dist/daemon/east-py-lsp.js.map +1 -0
- package/dist/daemon/lsp.d.ts +2 -0
- package/dist/daemon/lsp.d.ts.map +1 -0
- package/dist/daemon/lsp.js +7 -0
- package/dist/daemon/lsp.js.map +1 -0
- package/dist/daemon/server.d.ts +2 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +71 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/hooks/diagnose-bash.d.ts +2 -0
- package/dist/hooks/diagnose-bash.d.ts.map +1 -0
- package/dist/hooks/diagnose-bash.js +28 -0
- package/dist/hooks/diagnose-bash.js.map +1 -0
- package/dist/hooks/diagnose.d.ts +2 -0
- package/dist/hooks/diagnose.d.ts.map +1 -0
- package/dist/hooks/diagnose.js +33 -0
- package/dist/hooks/diagnose.js.map +1 -0
- package/dist/hooks/pre-read.d.ts +2 -0
- package/dist/hooks/pre-read.d.ts.map +1 -0
- package/dist/hooks/pre-read.js +11 -0
- package/dist/hooks/pre-read.js.map +1 -0
- package/dist/hooks/pre-write.d.ts +2 -0
- package/dist/hooks/pre-write.d.ts.map +1 -0
- package/dist/hooks/pre-write.js +11 -0
- package/dist/hooks/pre-write.js.map +1 -0
- package/dist/hooks/session-start.d.ts +2 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +34 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/hooks/subagent-start.d.ts +2 -0
- package/dist/hooks/subagent-start.d.ts.map +1 -0
- package/dist/hooks/subagent-start.js +29 -0
- package/dist/hooks/subagent-start.js.map +1 -0
- package/dist/lib/bash-writes.d.ts +11 -0
- package/dist/lib/bash-writes.d.ts.map +1 -0
- package/dist/lib/bash-writes.js +74 -0
- package/dist/lib/bash-writes.js.map +1 -0
- package/dist/lib/codex-hook.d.ts +64 -0
- package/dist/lib/codex-hook.d.ts.map +1 -0
- package/dist/lib/codex-hook.js +94 -0
- package/dist/lib/codex-hook.js.map +1 -0
- package/dist/lib/codex-skills.d.ts +38 -0
- package/dist/lib/codex-skills.d.ts.map +1 -0
- package/dist/lib/codex-skills.js +80 -0
- package/dist/lib/codex-skills.js.map +1 -0
- package/dist/lib/codex-tools.d.ts +11 -0
- package/dist/lib/codex-tools.d.ts.map +1 -0
- package/dist/lib/codex-tools.js +41 -0
- package/dist/lib/codex-tools.js.map +1 -0
- package/dist/lib/diagnostics-client.d.ts +9 -0
- package/dist/lib/diagnostics-client.d.ts.map +1 -0
- package/dist/lib/diagnostics-client.js +123 -0
- package/dist/lib/diagnostics-client.js.map +1 -0
- package/dist/lib/east-index.d.ts +3 -0
- package/dist/lib/east-index.d.ts.map +1 -0
- package/dist/lib/east-index.js +9 -0
- package/dist/lib/east-index.js.map +1 -0
- package/dist/lib/east-project.d.ts +49 -0
- package/dist/lib/east-project.d.ts.map +1 -0
- package/dist/lib/east-project.js +121 -0
- package/dist/lib/east-project.js.map +1 -0
- package/dist/lib/east-py-lint.d.ts +7 -0
- package/dist/lib/east-py-lint.d.ts.map +1 -0
- package/dist/lib/east-py-lint.js +22 -0
- package/dist/lib/east-py-lint.js.map +1 -0
- package/dist/lib/east-rules-context.d.ts +7 -0
- package/dist/lib/east-rules-context.d.ts.map +1 -0
- package/dist/lib/east-rules-context.js +91 -0
- package/dist/lib/east-rules-context.js.map +1 -0
- package/dist/lib/hook-io.d.ts +30 -0
- package/dist/lib/hook-io.d.ts.map +1 -0
- package/dist/lib/hook-io.js +29 -0
- package/dist/lib/hook-io.js.map +1 -0
- package/dist/lib/host.d.ts +3 -0
- package/dist/lib/host.d.ts.map +1 -0
- package/dist/lib/host.js +9 -0
- package/dist/lib/host.js.map +1 -0
- package/dist/lib/lsp-client.d.ts +34 -0
- package/dist/lib/lsp-client.d.ts.map +1 -0
- package/dist/lib/lsp-client.js +200 -0
- package/dist/lib/lsp-client.js.map +1 -0
- package/dist/lib/plugin-status.d.ts +9 -0
- package/dist/lib/plugin-status.d.ts.map +1 -0
- package/dist/lib/plugin-status.js +164 -0
- package/dist/lib/plugin-status.js.map +1 -0
- package/dist/lib/review.d.ts +16 -0
- package/dist/lib/review.d.ts.map +1 -0
- package/dist/lib/review.js +74 -0
- package/dist/lib/review.js.map +1 -0
- package/dist/lib/search-guidance.d.ts +44 -0
- package/dist/lib/search-guidance.d.ts.map +1 -0
- package/dist/lib/search-guidance.js +73 -0
- package/dist/lib/search-guidance.js.map +1 -0
- package/dist/lib/search-hooks.d.ts +75 -0
- package/dist/lib/search-hooks.d.ts.map +1 -0
- package/dist/lib/search-hooks.js +117 -0
- package/dist/lib/search-hooks.js.map +1 -0
- package/dist/lib/search.d.ts +121 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +181 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/transcript.d.ts +29 -0
- package/dist/lib/transcript.d.ts.map +1 -0
- package/dist/lib/transcript.js +109 -0
- package/dist/lib/transcript.js.map +1 -0
- package/dist/mcp/example-tools.d.ts +33 -0
- package/dist/mcp/example-tools.d.ts.map +1 -0
- package/dist/mcp/example-tools.js +97 -0
- package/dist/mcp/example-tools.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +52 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/scripts/examples-file.d.ts +38 -0
- package/dist/scripts/examples-file.d.ts.map +1 -0
- package/dist/scripts/examples-file.js +224 -0
- package/dist/scripts/examples-file.js.map +1 -0
- package/dist/scripts/generate-index.d.ts +127 -0
- package/dist/scripts/generate-index.d.ts.map +1 -0
- package/dist/scripts/generate-index.js +315 -0
- package/dist/scripts/generate-index.js.map +1 -0
- package/dist/status/report.d.ts +2 -0
- package/dist/status/report.d.ts.map +1 -0
- package/dist/status/report.js +9 -0
- package/dist/status/report.js.map +1 -0
- package/index.json +44926 -0
- package/package.json +65 -3
- package/scripts/render-python.py +67 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* generate-index.ts
|
|
4
|
+
*
|
|
5
|
+
* Builds the example search index (index.json) the plugin's MCP search tool
|
|
6
|
+
* serves (#654) — East's, or a plugin's that builds on East's: the sources,
|
|
7
|
+
* the libraries and the hand-written entries are the caller's.
|
|
8
|
+
*
|
|
9
|
+
* Usage: east-plugin-generate-index --base-dir <dir> [--config <index.config.json>]
|
|
10
|
+
* [--static <index.static.json>] [--out <index.json>]
|
|
11
|
+
*
|
|
12
|
+
* Each path defaults to this package's own (East's index). From code, call
|
|
13
|
+
* `generateIndex` with the config and entries themselves.
|
|
14
|
+
*
|
|
15
|
+
* Two kinds of source, declared in index.config.json:
|
|
16
|
+
*
|
|
17
|
+
* - `ir: true` — a package whose `*.examples.ts` are East programs (east,
|
|
18
|
+
* east-node-std, east-node-io, east-py-datascience). Each `example()` export
|
|
19
|
+
* is imported from the package's BUILT test modules (`distTest`) and stored
|
|
20
|
+
* as its IR — the example itself, loc_ids zeroed — with its declared types,
|
|
21
|
+
* inputs, expected return, the builtins and platform functions it calls,
|
|
22
|
+
* and the TypeScript printed from that IR by `East.toSource` — with the
|
|
23
|
+
* `libraries` of the config imported and given to the printer, so a
|
|
24
|
+
* platform call prints as the library exports it (`Compression.Tar.create`)
|
|
25
|
+
* rather than as a hoisted declaration. The python rendering is added by
|
|
26
|
+
* `scripts/render-python.py` (the python printer), which fills the
|
|
27
|
+
* `python` field this script leaves null. No authored source text is
|
|
28
|
+
* stored: both languages are printings of the IR.
|
|
29
|
+
* - otherwise — a package whose examples are not printable programs (UI
|
|
30
|
+
* components authored as JSX, hand-written CLI stubs): the authored
|
|
31
|
+
* TypeScript source is extracted from the file text, as before.
|
|
32
|
+
*
|
|
33
|
+
* Each example uses the `example()` pattern:
|
|
34
|
+
* export const name = example({ keywords, description, fn, inputs, returns })
|
|
35
|
+
*
|
|
36
|
+
* Section comments (// ---\n// Name\n// ---) provide suite grouping. Each
|
|
37
|
+
* file is read by `examples-file.ts`, through the TypeScript parser.
|
|
38
|
+
*/
|
|
39
|
+
import * as fs from "node:fs";
|
|
40
|
+
import * as path from "node:path";
|
|
41
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
42
|
+
import { Expr, IRType, toJSONFor, toEastTypeValue, toSource, typeSource } from "@elaraai/east";
|
|
43
|
+
import { parseExamplesFile } from "./examples-file.js";
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Glob-style pattern matching (minimal, supports * and **)
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
function patternToRegex(pattern) {
|
|
48
|
+
let re = pattern
|
|
49
|
+
.replace(/[.+^${}()|[\]\\]/g, "\\$&")
|
|
50
|
+
.replace(/\*\*/g, "\0GLOBSTAR\0")
|
|
51
|
+
.replace(/\*/g, "[^/]*")
|
|
52
|
+
.replace(/\0GLOBSTAR\0/g, ".*");
|
|
53
|
+
return new RegExp(`^${re}$`);
|
|
54
|
+
}
|
|
55
|
+
function findFiles(dir, pattern) {
|
|
56
|
+
const regex = patternToRegex(pattern);
|
|
57
|
+
const results = [];
|
|
58
|
+
function walk(currentDir, relativePath) {
|
|
59
|
+
let entries;
|
|
60
|
+
try {
|
|
61
|
+
entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
for (const entry of entries) {
|
|
67
|
+
const rel = relativePath ? `${relativePath}/${entry.name}` : entry.name;
|
|
68
|
+
if (entry.isDirectory()) {
|
|
69
|
+
if (entry.name === "node_modules" || entry.name === "dist")
|
|
70
|
+
continue;
|
|
71
|
+
walk(path.join(currentDir, entry.name), rel);
|
|
72
|
+
}
|
|
73
|
+
else if (entry.isFile() && regex.test(rel)) {
|
|
74
|
+
results.push(path.join(currentDir, entry.name));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
walk(dir, "");
|
|
79
|
+
return results.sort();
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Program entries: the example's IR and what is printed from it
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
/** The JSON of `value` with every `loc_id` zeroed — an index carries no source map. */
|
|
85
|
+
function zeroLocations(value) {
|
|
86
|
+
if (Array.isArray(value))
|
|
87
|
+
return value.map(zeroLocations);
|
|
88
|
+
if (value !== null && typeof value === "object") {
|
|
89
|
+
const out = {};
|
|
90
|
+
for (const [k, v] of Object.entries(value)) {
|
|
91
|
+
out[k] = k === "loc_id" ? "0" : zeroLocations(v);
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
/** The builtin and platform function names an IR (as JSON) calls, sorted and unique. */
|
|
98
|
+
function builtinsOf(irJson) {
|
|
99
|
+
const names = new Set();
|
|
100
|
+
const walk = (v) => {
|
|
101
|
+
if (Array.isArray(v)) {
|
|
102
|
+
for (const x of v)
|
|
103
|
+
walk(x);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (v === null || typeof v !== "object")
|
|
107
|
+
return;
|
|
108
|
+
const node = v;
|
|
109
|
+
if (typeof node.type === "string" && node.value !== null && typeof node.value === "object") {
|
|
110
|
+
const p = node.value;
|
|
111
|
+
if (node.type === "Builtin" && typeof p["builtin"] === "string")
|
|
112
|
+
names.add(p["builtin"]);
|
|
113
|
+
if (node.type === "Platform" && typeof p["name"] === "string")
|
|
114
|
+
names.add(p["name"]);
|
|
115
|
+
}
|
|
116
|
+
for (const x of Object.values(v))
|
|
117
|
+
walk(x);
|
|
118
|
+
};
|
|
119
|
+
walk(irJson);
|
|
120
|
+
return [...names].sort();
|
|
121
|
+
}
|
|
122
|
+
const exportIR = toJSONFor(IRType);
|
|
123
|
+
/**
|
|
124
|
+
* The program fields of one built `example()` export: IR, printed
|
|
125
|
+
* TypeScript, signature, inputs, expected return, builtins.
|
|
126
|
+
*/
|
|
127
|
+
function programFields(exportName, ex, libraries) {
|
|
128
|
+
const fnType = Expr.type(ex.fn);
|
|
129
|
+
const bundle = ex.fn.toIR();
|
|
130
|
+
const irJson = zeroLocations(exportIR(bundle.ir));
|
|
131
|
+
const isExpr = (v) => v instanceof Expr;
|
|
132
|
+
const inputs = ex.inputs.some(isExpr) ? null : JSON.stringify(ex.inputs.map((v, i) => toJSONFor(fnType.inputs[i])(v)));
|
|
133
|
+
const returns = ex.returns === undefined || isExpr(ex.returns) ? null : JSON.stringify(toJSONFor(fnType.output)(ex.returns));
|
|
134
|
+
return {
|
|
135
|
+
ir: JSON.stringify(irJson),
|
|
136
|
+
ts: toSource(bundle.ir, { name: exportName, libraries }),
|
|
137
|
+
python: null,
|
|
138
|
+
signature: {
|
|
139
|
+
inputs: fnType.inputs.map((t) => typeSource(toEastTypeValue(t))),
|
|
140
|
+
output: typeSource(toEastTypeValue(fnType.output)),
|
|
141
|
+
async: fnType.type === "AsyncFunction",
|
|
142
|
+
},
|
|
143
|
+
inputs,
|
|
144
|
+
returns,
|
|
145
|
+
builtins: builtinsOf(irJson),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/** The built module of an examples file: the package's `dist` mirrors its layout, so `test/a/b.examples.ts` is `dist/test/a/b.examples.js`. */
|
|
149
|
+
async function loadExamplesModule(packageDir, dist, filePath) {
|
|
150
|
+
const built = path.join(dist, path.relative(packageDir, filePath)).replace(/\.tsx?$/, ".js");
|
|
151
|
+
if (!fs.existsSync(built)) {
|
|
152
|
+
throw new Error(`built example module not found: ${built} — build the package first (its tsconfig must include the test directory)`);
|
|
153
|
+
}
|
|
154
|
+
return (await import(pathToFileURL(built).href));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Builds an index: every `example()` of each source's examples files, a
|
|
158
|
+
* program's as its IR and the TypeScript printed from it, any other's as its
|
|
159
|
+
* authored source, then the hand-written entries. The python printings are
|
|
160
|
+
* `scripts/render-python.py`'s, run over the written index.
|
|
161
|
+
*
|
|
162
|
+
* @param options - The base directory, the config and the hand-written entries
|
|
163
|
+
* @returns The index, ready to write as `index.json`
|
|
164
|
+
* @throws {Error} When a program package or a library is not built, or an export is not an `example()`
|
|
165
|
+
*/
|
|
166
|
+
export async function generateIndex(options) {
|
|
167
|
+
const log = options.log ?? ((line) => console.log(line));
|
|
168
|
+
const resolvedBaseDir = path.resolve(options.baseDir);
|
|
169
|
+
const config = options.config;
|
|
170
|
+
if (!Array.isArray(config.sources) || config.sources.length === 0) {
|
|
171
|
+
throw new Error("Invalid config: sources array is empty or missing");
|
|
172
|
+
}
|
|
173
|
+
const entries = [];
|
|
174
|
+
const fileCount = new Set();
|
|
175
|
+
const packageCounts = {};
|
|
176
|
+
// The libraries whose exports spell platform calls in the printed
|
|
177
|
+
// TypeScript — imported once, by the specifier the printed code imports.
|
|
178
|
+
const libraries = {};
|
|
179
|
+
for (const [specifier, entry] of Object.entries(config.libraries ?? {})) {
|
|
180
|
+
const built = path.resolve(resolvedBaseDir, entry);
|
|
181
|
+
if (!fs.existsSync(built)) {
|
|
182
|
+
throw new Error(`library ${specifier} is not built: ${built} — build the package first`);
|
|
183
|
+
}
|
|
184
|
+
libraries[specifier] = (await import(pathToFileURL(built).href));
|
|
185
|
+
}
|
|
186
|
+
if (Object.keys(libraries).length > 0)
|
|
187
|
+
log(`[libraries] ${Object.keys(libraries).join(", ")}`);
|
|
188
|
+
for (const source of config.sources) {
|
|
189
|
+
const testDir = path.resolve(resolvedBaseDir, source.testDir);
|
|
190
|
+
if (!fs.existsSync(testDir)) {
|
|
191
|
+
console.warn(`Warning: Test directory not found, skipping: ${testDir}`);
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
// Support pattern as string or string[]
|
|
195
|
+
const patterns = Array.isArray(source.pattern) ? source.pattern : [source.pattern];
|
|
196
|
+
const files = patterns.flatMap(p => findFiles(testDir, p));
|
|
197
|
+
const uniqueFiles = [...new Set(files)].sort();
|
|
198
|
+
log(`[${source.package}] Found ${uniqueFiles.length} files in ${testDir}${source.ir ? " (programs: IR)" : ""}`);
|
|
199
|
+
for (const filePath of uniqueFiles) {
|
|
200
|
+
let examples;
|
|
201
|
+
try {
|
|
202
|
+
examples = parseExamplesFile(filePath);
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
console.warn(` Warning: Could not parse ${filePath}: ${err}`);
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (examples.length === 0)
|
|
209
|
+
continue;
|
|
210
|
+
fileCount.add(filePath);
|
|
211
|
+
// Forward slashes so the index is byte-identical whether generated
|
|
212
|
+
// on Windows or POSIX (path.relative emits os-native separators).
|
|
213
|
+
const relFile = path.relative(resolvedBaseDir, filePath).split(path.sep).join("/");
|
|
214
|
+
// A program package: the built module supplies the IR; the text
|
|
215
|
+
// parse supplies the suite each export sits in and its order.
|
|
216
|
+
const built = source.ir
|
|
217
|
+
? await loadExamplesModule(testDir, path.resolve(resolvedBaseDir, source.dist ?? path.join(source.testDir, "dist")), filePath)
|
|
218
|
+
: null;
|
|
219
|
+
for (const ex of examples) {
|
|
220
|
+
const entry = {
|
|
221
|
+
id: `${source.package}:${path.basename(filePath)}:${ex.exportName}`,
|
|
222
|
+
skill: source.skill,
|
|
223
|
+
package: source.package,
|
|
224
|
+
file: relFile,
|
|
225
|
+
suite: ex.suiteName,
|
|
226
|
+
test: ex.description,
|
|
227
|
+
keywords: ex.keywords,
|
|
228
|
+
imports: ex.imports,
|
|
229
|
+
languages: built !== null ? ["typescript", "python"] : filePath.endsWith(".tsx") ? ["tsx"] : ["typescript"],
|
|
230
|
+
};
|
|
231
|
+
if (built !== null) {
|
|
232
|
+
const value = built[ex.exportName];
|
|
233
|
+
if (value === undefined || typeof value !== "object" || !("fn" in value) || !Array.isArray(value.inputs)) {
|
|
234
|
+
throw new Error(`${relFile}: export "${ex.exportName}" is not an example() in the built module`);
|
|
235
|
+
}
|
|
236
|
+
Object.assign(entry, programFields(ex.exportName, value, libraries));
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
entry.source = ex.source;
|
|
240
|
+
}
|
|
241
|
+
entries.push(entry);
|
|
242
|
+
packageCounts[source.package] = (packageCounts[source.package] ?? 0) + 1;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Merge static entries (e.g. hand-written e3 examples)
|
|
247
|
+
const staticEntries = options.staticEntries ?? [];
|
|
248
|
+
for (const entry of staticEntries) {
|
|
249
|
+
entries.push({ ...entry, languages: entry.languages ?? ["typescript"] });
|
|
250
|
+
packageCounts[entry.package] = (packageCounts[entry.package] ?? 0) + 1;
|
|
251
|
+
}
|
|
252
|
+
if (staticEntries.length > 0)
|
|
253
|
+
log(`\n[static] Merged ${staticEntries.length} hand-written entries`);
|
|
254
|
+
return {
|
|
255
|
+
version: 2,
|
|
256
|
+
stats: {
|
|
257
|
+
totalEntries: entries.length,
|
|
258
|
+
totalFiles: fileCount.size,
|
|
259
|
+
packages: packageCounts,
|
|
260
|
+
},
|
|
261
|
+
entries,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
// ---------------------------------------------------------------------------
|
|
265
|
+
// CLI
|
|
266
|
+
// ---------------------------------------------------------------------------
|
|
267
|
+
/** The value after `flag`, if given. */
|
|
268
|
+
function argument(args, flag) {
|
|
269
|
+
const idx = args.indexOf(flag);
|
|
270
|
+
if (idx === -1)
|
|
271
|
+
return undefined;
|
|
272
|
+
const value = args[idx + 1];
|
|
273
|
+
if (value === undefined)
|
|
274
|
+
throw new Error(`${flag} needs a value`);
|
|
275
|
+
return value;
|
|
276
|
+
}
|
|
277
|
+
async function main() {
|
|
278
|
+
const args = process.argv.slice(2);
|
|
279
|
+
const baseDir = argument(args, "--base-dir");
|
|
280
|
+
if (baseDir === undefined) {
|
|
281
|
+
console.error("Usage: east-plugin-generate-index --base-dir <dir> [--config <index.config.json>] [--static <index.static.json>] [--out <index.json>]");
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
// This package's own files (dist/scripts -> package root is ../../): East's index.
|
|
285
|
+
const projectRoot = path.resolve(import.meta.dirname, "..", "..");
|
|
286
|
+
const configPath = path.resolve(argument(args, "--config") ?? path.join(projectRoot, "index.config.json"));
|
|
287
|
+
if (!fs.existsSync(configPath)) {
|
|
288
|
+
console.error(`Config not found: ${configPath}`);
|
|
289
|
+
process.exit(1);
|
|
290
|
+
}
|
|
291
|
+
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
292
|
+
const staticFlag = argument(args, "--static");
|
|
293
|
+
const staticPath = path.resolve(staticFlag ?? path.join(projectRoot, "index.static.json"));
|
|
294
|
+
const staticEntries = staticFlag !== undefined || fs.existsSync(staticPath)
|
|
295
|
+
? JSON.parse(fs.readFileSync(staticPath, "utf-8")).entries
|
|
296
|
+
: [];
|
|
297
|
+
const output = await generateIndex({ baseDir, config, staticEntries });
|
|
298
|
+
const outPath = path.resolve(argument(args, "--out") ?? path.join(projectRoot, "index.json"));
|
|
299
|
+
fs.writeFileSync(outPath, JSON.stringify(output, null, 2) + "\n");
|
|
300
|
+
const programs = output.entries.filter((e) => e.ir !== undefined).length;
|
|
301
|
+
console.log(`\nGenerated ${outPath}`);
|
|
302
|
+
console.log(` Entries: ${output.entries.length} (${programs} programs with IR, python pending: scripts/render-python.py)`);
|
|
303
|
+
console.log(` Files: ${output.stats.totalFiles}`);
|
|
304
|
+
for (const [pkg, count] of Object.entries(output.stats.packages)) {
|
|
305
|
+
console.log(` ${pkg}: ${count}`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// Run only as a command (the bin's link resolves to this file), never on import.
|
|
309
|
+
if (process.argv[1] !== undefined && fs.realpathSync(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
310
|
+
main().catch((err) => {
|
|
311
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
312
|
+
process.exit(1);
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=generate-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-index.js","sourceRoot":"","sources":["../../scripts/generate-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../status/report.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { dirname, resolve } from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { checkPluginStatus, formatStatus } from "../lib/plugin-status.js";
|
|
4
|
+
// Bundled to .build/status/report.js → the plugin root is two dirs up.
|
|
5
|
+
const pluginRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
6
|
+
const cwd = resolve(process.argv[2] ?? process.cwd());
|
|
7
|
+
const checks = await checkPluginStatus(pluginRoot, cwd);
|
|
8
|
+
console.log(formatStatus(checks));
|
|
9
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../status/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE1E,uEAAuE;AACvE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChF,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEtD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC"}
|