Referenced by 6
Labels 3

Referencing ideas

IdeaStatusTagsSummary
extension_package `packages/extension` ( npm `reqlan-extension` ) is the editor product per [distribution.extension_package]. It registers `.rq` language support, TextMate grammars, starts the language client, and owns activity bar, Ideas Summary, chat, skills, and mutation hooks. Ideas index engine lives in [analytical_package] / [indexer]; the extension only hosts a thin VS Code adapter ( [editor_index_adapter] ) for watchers and UI. Host entry: [extension_main]. LSP process entry: [language_server_main]. Depends on [language_package] and [analytical_package]. Follows [extension_architecture.event_driven] and [extension_architecture.state_machine_mindset] ( zustand ) for JS state. This is the one Marketplace / Open VSX shippable; see [package_versioning].
language_server The language server is a separate Node process started by the extension host over IPC ( [extension_main] → [language_server_main] ). It runs [language_module] `createReqlanServices` for live editing: definition, completion, semantic tokens, inlays, document links, validation. It owns open-document language intelligence for `.rq` files ( and related language features ), not the full-workspace SQLite ideas index. Product expectation for LSP navigation and validation: [extension_scope.lsp_support].
scope These requirements describe the cross-package system architecture of the reqlan monorepo: language definition, language server, ideas index, editor product, and companion tools. They are distinct from [extension_scope.scope], which bounds only the VS Code extension and LSP product surface. Language concepts live in [ontology]; syntax truth lives in [syntax]; editor module contracts live under extension / module. Grouped as [workspace_packages], [language_runtime], and [product_map].
activation VS Code loads the extension host entry at ["../../packages/extension/src/extension/main.ts"] when an activation event in ["../../packages/extension/package.json"] matches. The exported `activate(context)` function is the single activation entry point for [scope.vscode_extension]. Install-time and first-run sequencing across extension vs base layers: ["./installation.rq".installation_sequencing]. Startup failure diagnosis, first-paint sequencing, bundle splitting, and development-host lessons: ["./startup-performance.rq"].
activation_sequence `activate` is synchronous and non-blocking in ["../../packages/extension/src/extension/main.ts"]; it never awaits startup work so the UI is available as soon as possible. It runs the following phases: 1. Register reference inlay-hint and CodeLens configuration / commands synchronously. 2. Call [analytical_submodule_activation] — registers commands, activity bar, chat, webviews, AI commands, and mutation hooks synchronously and returns without starting indexing. 3. Register import-error quick-fix commands when the analytical submodule registered. 4. Arm [first_paint_startup] so index startup cannot race the activity-bar shell. 5. Invoke [onboarding_check] without awaiting it, so onboarding cannot block activation. Submodule failures are logged and do not prevent later phases from running.
background_startup Startup work that must not block activation is coordinated by `scheduleBackgroundStartup` in ["../../packages/extension/src/extension/main.ts"]. - [first_paint_startup] gates index discovery and sync when the Context view opens; a three-second fallback preserves warm startup when the sidebar remains closed. - The language client starts after the same paint signal when the Context view opens, with a one-second fallback so language features still start when the sidebar remains closed. - Registers attribute and name catalog sync once the language client exists; the initial push covers an already-ready index and the catalog-update subscription covers indexes that become ready afterwards. Index and language-client failures are logged and do not affect the already-available UI.

Reference labels

../../packages/extension/src/extension/main.ts, ../packages/extension/src/extension/main.ts, extension_main