Cluster detail
build.rq
Ideas defined in reqlan rq/development/build.rq.
file
12 ideas
1 files
| Idea | File | Status | Summary | Katz |
|---|---|---|---|---|
| build_prepare | reqlan rq/development/build.rq | Copy TextMate grammars from the language package into extension syntaxes. Sync Cursor agent skills from extension sources into `.cursor/skills`. The orchestrator caches `build:syntaxes` independently and always runs the external Cursor-skill sync before webview and host bundling. | 0.063 | |
| extension_build | reqlan rq/development/build.rq | Production builds for the VS Code extension are orchestrated by [extension_build_script]. Run from the extension package: `pnpm run build` or `node scripts/build.mjs`. Workspace-wide builds also run langium generation and sibling packages via the root `pnpm run build`. Local and F5 builds use [incremental_extension_build]; VSIX prepublish uses the forced path. | 0.040 | |
| extension_bundle | reqlan rq/development/build.rq | The extension host ( `src/extension/main.ts` ) and language server ( `src/language/main.ts` ) are bundled with esbuild per [extension_esbuild]. The host-matching core engine `.node` is staged under `native/` by [extension_host_native_stage] for F5 and for per-target VSIX packaging; it is not inlined into `main.cjs`. Output: CommonJS `.cjs` files under `packages/extension/out/`. `vscode` remains external; a small `Object.groupBy` polyfill is injected for older Node runtimes. | 0.046 | |
| extension_host_native_stage | reqlan rq/development/build.rq | done | Local F5 and `pnpm run build` / `build:ext` stage the host-matching core engine `.node` into `packages/extension/native/` so activation loads the same layout as a per-target VSIX ( [distribution.vsix_export], ["../distribution/native_host_binary.rq".native_host_binary_development] ). The same build copies the `.node` into `packages/analytical-native/<napiSuffix>/` so the workspace optionalDependency matches a production npm install ( [distribution.rust_binary_distribution] ). The orchestrator builds `cargo build -p reqlan-napi -p reqlan-lsp --release` when needed, then copies `reqlan_napi.node` beside the extension. It is not a separate manual install. That command writes `reqlan-lsp` into `crates/target` ( ["../extension/language/support/language-server-rust.rq".language_server_rust] ). Azure compiles the [distribution.native_targets] matrix, then stages those binaries with `prepare-native-packages.mjs --binary-dir` before tests and VSIX packaging. Versions come from git at the `ext/v*` tag. Do not fetch platform packages from npm on Azure ( [distribution.extension_distribution] ). Implementation: ["../../scripts/stage-host-native.mjs"], ["../../scripts/ensure-host-native.mjs"], ["../../packages/extension/scripts/build.mjs"], ["../../azure-pipelines.yml"]. | 0.140 |
| extension_media_build | reqlan rq/development/build.rq | Extension logo assets are generated by ["../../packages/extension/scripts/generate-media.mjs"] from ["../../site/public/logo.svg"]. PNG ( `media/logo.png` ) is tracked in git and used as the packaged icon for marketplace, language file icon, and activity bar ( Azure Marketplace rejects SVG ). WebP and SVG copies remain build outputs ( gitignored ); regenerate via `build:media` when the source logo changes. Invoked as `pnpm run build:media` at the start of [extension_build_script]. | 0.040 | |
| extension_readme_build | reqlan rq/development/build.rq | Generate `packages/extension/README.md` from [extension_readme_script] and README. template. md before VSIX packaging. Marketplace links are resolved from ["../../scripts/phonebook.ts"]; changelog body comes from packages / extension / CHANGELOG. md ( Changesets output ). Invoked as `pnpm run build:readme` at the start of [extension_build_script]. Requirement: ["../distribution/distribution.rq".extension_readme]. | 0.048 | |
| extension_typecheck | reqlan rq/development/build.rq | Extension TypeScript sources are checked with `tsc -b tsconfig.json` before bundling. `noEmit: true` — compilation output comes from esbuild, not tsc. | 0.040 | |
| incremental_extension_build | reqlan rq/development/build.rq | done | Extension builds fingerprint inputs and outputs per independently cacheable artifact: - Langium generated sources / TextMate grammar - logo media - generated marketplace README - each of the five Vite webviews separately - extension-host / language-server esbuild outputs Host napi staging ( [extension_host_native_stage] ) always runs: cargo is incremental locally; Azure stages matrix artifacts and skips a second cargo compile in the package job. A step is skipped only when its command / input fingerprint and current output-content fingerprint both match the cache under `packages/extension/out/`. Missing, changed, or manually edited output invalidates that step. Fingerprint walks skip `node_modules` so Vite scratch files under `.vite-temp` and installed deps do not race or inflate hashes; dependency identity stays in `pnpm-lock.yaml` via shared inputs. Webview output fingerprints cover each complete emitted directory, including future lazy chunks. Host-bundle inputs include bundled phonebook data as well as workspace package output. TypeScript retains its native `tsc -b` project-reference incrementality. TextMate syntax copies are cached by content; Cursor-skill sync still runs because it targets workspace-external state. `pnpm run build:force` / `node scripts/build.mjs --force` bypasses all cache entries. `vscode:prepublish` uses forced mode with `--skip-native` so `vsce package --target` cannot replace a staged per-target `native/` with the packaging agent's host binary ( [distribution.vsix_export] ). `clean` removes `out/`, including the cache, so clean builds remain cold. Root `pnpm run build:ext` delegates only to the extension package. The extension build generates Langium artifacts when their fingerprints change, then its `tsc -b` builds language / analytical project references before downstream fingerprints are evaluated. It does not rebuild unrelated CLI, MCP, site, or test projects. | 0.045 |
| scope | reqlan rq/development/build.rq | extension build steps for local development and CI | 0.040 | |
| typescript_compile | reqlan rq/development/build.rq | done | Langium writes `packages/language/src/generated` ( ast, grammar, module ). That directory is gitignored. `tsc -b tsconfig.build.json` fails on a clean checkout if those files are missing. Root script `build:tsc` is `langium:generate` then that `tsc -b`. Full `pnpm run build` starts with `build:tsc`. GitHub CI, Azure package build, and npm deploy use `build:tsc` so compile matches a clean local build ( [distribution.prerelease_tests], [distribution.ci_gate], [distribution.npm_distribution] ). GitHub CI compiles the TypeScript workspace once in the sequential job, then reuses that emit for [check.check] and package tests ( [check.check_meta_implementation] ). `langium generate` validates ["../../packages/language/langium-config.json"] against the langium-cli schema. langium-cli 4. 3. 0 does not set schema `$id`. jsonschema 1. 5. 0 then throws `ERR_INVALID_URL` for `#/$defs/languageItem` on Node 24. The workspace pins jsonschema 1. 4. 1 for langium-cli in ["../../pnpm-workspace.yaml"] until a langium-cli release includes that `$id`. | 0.045 |
| typescript_emit | reqlan rq/development/build.rq | done | Package TypeScript emit goes to each package `out/` via `tsc -b` project references ( ["../../tsconfig.build.json"] ). Shared compiler options live in ["../../tsconfig.base.json"]. ["../../tsconfig.json"] is a solution file ( `files: []` ) so a plain `tsc` / VS Code " tsc: build " does not write `.js`, `.d.ts`, or `.js.map` next to sources. Webview tsconfigs are `noEmit` — Vite bundles to `packages/extension/media/webviews/`. A clean compile must generate Langium sources first ( [typescript_compile] ). | 0.040 |
| webview_build | reqlan rq/development/build.rq | Svelte webview UI is bundled with Vite per [development_core]. Configs: [ideas_summary_vite_config], [activity_bar_vite_config], [onboarding_vite_config] Output lands in `packages/extension/media/webviews/` for the extension host to load. The onboarding webview inlines ["../../packages/extension/templates/thanks-for-installing.template.rq"] via Vite `?raw` for the in-page language example; the template source stays excluded from the VSIX. Requirement: ["../extension/host/onboarding/page-thanks-for-installing.rq".installation_event]. Watch mode during development: `bash scripts/watch.sh` vite `--watch` alongside tsc and esbuild. | 0.046 |
Cluster graph
Initialising graph…