@litfamily/litgrok 1.0.0
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/.grok/agents/litgrok-executor.md +33 -0
- package/.grok/agents/litgrok-korean-prose-editor.md +32 -0
- package/.grok/agents/litgrok-korean-style-analyzer.md +30 -0
- package/.grok/agents/litgrok-librarian-researcher.md +31 -0
- package/.grok/agents/litgrok-meaning-preservation-auditor.md +30 -0
- package/.grok/agents/litgrok-native-flow-reviewer.md +30 -0
- package/.grok/agents/litgrok-planner.md +31 -0
- package/.grok/agents/litgrok-polish-orchestrator.md +30 -0
- package/.grok/agents/litgrok-qa-runner.md +33 -0
- package/.grok/agents/litgrok-quality-reviewer.md +33 -0
- package/.grok/agents/litgrok-verifier.md +32 -0
- package/.grok/hooks/deliverable-hedge-guard.json +16 -0
- package/.grok/hooks/deliverable-hedge-guard.mjs +148 -0
- package/.grok/hooks/lit-mark.mjs +142 -0
- package/.grok/hooks/plan-gate.mjs +81 -0
- package/.grok/hooks/post-compact.json +15 -0
- package/.grok/hooks/post-compact.mjs +6 -0
- package/.grok/hooks/post-tool-use-failure.json +15 -0
- package/.grok/hooks/post-tool-use-failure.mjs +6 -0
- package/.grok/hooks/post-tool-use.json +16 -0
- package/.grok/hooks/post-tool-use.mjs +7 -0
- package/.grok/hooks/pre-compact.json +15 -0
- package/.grok/hooks/pre-compact.mjs +6 -0
- package/.grok/hooks/record-passive-event.mjs +198 -0
- package/.grok/hooks/session-start.json +15 -0
- package/.grok/hooks/session-start.mjs +37 -0
- package/.grok/hooks/stop-failure.json +15 -0
- package/.grok/hooks/stop-failure.mjs +6 -0
- package/.grok/hooks/stop.json +15 -0
- package/.grok/hooks/stop.mjs +36 -0
- package/.grok/hooks/subagent-start.json +15 -0
- package/.grok/hooks/subagent-start.mjs +6 -0
- package/.grok/hooks/subagent-stop.json +15 -0
- package/.grok/hooks/subagent-stop.mjs +6 -0
- package/.grok/hooks/user-prompt-submit.json +15 -0
- package/.grok/hooks/user-prompt-submit.mjs +7 -0
- package/.grok/rules/00-litgrok.md +152 -0
- package/.grok/skills/autoconference/LICENSE +21 -0
- package/.grok/skills/autoconference/PROVENANCE.md +23 -0
- package/.grok/skills/autoconference/SKILL.md +140 -0
- package/.grok/skills/autoconference/assets/conference_template.md +76 -0
- package/.grok/skills/autoconference/assets/report_template.md +56 -0
- package/.grok/skills/autoconference/assets/synthesis_template.md +40 -0
- package/.grok/skills/autoconference/references/_canonical-corpus/manifest.json +138 -0
- package/.grok/skills/autoconference/references/agent-prompts.md +30 -0
- package/.grok/skills/autoconference/references/conference-protocol.md +21 -0
- package/.grok/skills/autoconference/references/core-principles.md +13 -0
- package/.grok/skills/autoconference/references/family-contract.md +26 -0
- package/.grok/skills/autoconference/references/modes/analyze.md +11 -0
- package/.grok/skills/autoconference/references/modes/core/convergence-guide.md +41 -0
- package/.grok/skills/autoconference/references/modes/core/crash-recovery.md +11 -0
- package/.grok/skills/autoconference/references/modes/core.md +26 -0
- package/.grok/skills/autoconference/references/modes/debate.md +11 -0
- package/.grok/skills/autoconference/references/modes/plan.md +12 -0
- package/.grok/skills/autoconference/references/modes/resume.md +11 -0
- package/.grok/skills/autoconference/references/modes/ship.md +11 -0
- package/.grok/skills/autoconference/references/modes/survey.md +11 -0
- package/.grok/skills/autoconference/references/results-logging.md +12 -0
- package/.grok/skills/autoconference/references/visualization-guide.md +10 -0
- package/.grok/skills/autoconference/scripts/init_conference.py +646 -0
- package/.grok/skills/autoconference/scripts/verify-canonical-corpus.mjs +177 -0
- package/.grok/skills/autoconference/templates/code-performance.md +59 -0
- package/.grok/skills/autoconference/templates/debate-mode.md +50 -0
- package/.grok/skills/autoconference/templates/prompt-optimization.md +58 -0
- package/.grok/skills/autoconference/templates/quick-conference.md +48 -0
- package/.grok/skills/autoconference/templates/research-synthesis.md +56 -0
- package/.grok/skills/autoconference/templates/survey-mode.md +63 -0
- package/.grok/skills/autoresearch/LICENSE +21 -0
- package/.grok/skills/autoresearch/PROVENANCE.md +22 -0
- package/.grok/skills/autoresearch/SKILL.md +149 -0
- package/.grok/skills/autoresearch/assets/report_template.md +52 -0
- package/.grok/skills/autoresearch/assets/research_template.md +38 -0
- package/.grok/skills/autoresearch/assets/results_template.tsv +2 -0
- package/.grok/skills/autoresearch/references/_canonical-corpus/manifest.json +148 -0
- package/.grok/skills/autoresearch/references/core-principles.md +16 -0
- package/.grok/skills/autoresearch/references/family-contract.md +36 -0
- package/.grok/skills/autoresearch/references/modes/core/evaluator-contract.md +12 -0
- package/.grok/skills/autoresearch/references/modes/core/stuck-detection.md +11 -0
- package/.grok/skills/autoresearch/references/modes/core.md +21 -0
- package/.grok/skills/autoresearch/references/modes/debug/investigation-techniques.md +11 -0
- package/.grok/skills/autoresearch/references/modes/debug.md +11 -0
- package/.grok/skills/autoresearch/references/modes/fix.md +11 -0
- package/.grok/skills/autoresearch/references/modes/learn.md +11 -0
- package/.grok/skills/autoresearch/references/modes/plan.md +14 -0
- package/.grok/skills/autoresearch/references/modes/predict/persona-templates.md +11 -0
- package/.grok/skills/autoresearch/references/modes/predict.md +11 -0
- package/.grok/skills/autoresearch/references/modes/reason.md +11 -0
- package/.grok/skills/autoresearch/references/modes/scenario/dimensions.md +11 -0
- package/.grok/skills/autoresearch/references/modes/scenario.md +11 -0
- package/.grok/skills/autoresearch/references/modes/security/owasp-checklist.md +11 -0
- package/.grok/skills/autoresearch/references/modes/security/stride-model.md +11 -0
- package/.grok/skills/autoresearch/references/modes/security.md +12 -0
- package/.grok/skills/autoresearch/references/modes/ship/type-checklists.md +12 -0
- package/.grok/skills/autoresearch/references/modes/ship.md +11 -0
- package/.grok/skills/autoresearch/references/results-logging.md +12 -0
- package/.grok/skills/autoresearch/references/visualization-guide.md +24 -0
- package/.grok/skills/autoresearch/scripts/init_research.py +391 -0
- package/.grok/skills/autoresearch/scripts/style_presets.py +123 -0
- package/.grok/skills/autoresearch/scripts/verify-canonical-corpus.mjs +179 -0
- package/.grok/skills/browser-drive/SKILL.md +194 -0
- package/.grok/skills/browser-drive/references/snapshot-act-loop.md +61 -0
- package/.grok/skills/comment-checker/SKILL.md +194 -0
- package/.grok/skills/debugging/SKILL.md +82 -0
- package/.grok/skills/debugging/references/methodology/00-setup.md +108 -0
- package/.grok/skills/debugging/references/methodology/02-investigate.md +126 -0
- package/.grok/skills/debugging/references/methodology/04-oracle-triple.md +106 -0
- package/.grok/skills/debugging/references/methodology/05-escalate.md +69 -0
- package/.grok/skills/debugging/references/methodology/06-fix.md +116 -0
- package/.grok/skills/debugging/references/methodology/08-qa.md +94 -0
- package/.grok/skills/debugging/references/methodology/09-cleanup.md +164 -0
- package/.grok/skills/debugging/references/methodology/partial-runtime-evidence.md +228 -0
- package/.grok/skills/debugging/references/post-tool-use-failure-taxonomy.md +55 -0
- package/.grok/skills/debugging/references/reproduction-recipes.md +182 -0
- package/.grok/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
- package/.grok/skills/debugging/references/runtimes/go.md +252 -0
- package/.grok/skills/debugging/references/runtimes/native-binary.md +484 -0
- package/.grok/skills/debugging/references/runtimes/node.md +260 -0
- package/.grok/skills/debugging/references/runtimes/python.md +248 -0
- package/.grok/skills/debugging/references/runtimes/rust.md +234 -0
- package/.grok/skills/debugging/references/tools/ghidra.md +212 -0
- package/.grok/skills/debugging/references/tools/playwright-cli.md +194 -0
- package/.grok/skills/debugging/references/tools/pwndbg.md +263 -0
- package/.grok/skills/debugging/references/tools/pwntools.md +265 -0
- package/.grok/skills/deep-interview/SKILL.md +216 -0
- package/.grok/skills/frontend-ui-ux/LICENSE +21 -0
- package/.grok/skills/frontend-ui-ux/PROVENANCE.json +38 -0
- package/.grok/skills/frontend-ui-ux/SKILL.md +58 -0
- package/.grok/skills/frontend-ui-ux/SOURCE-MANIFEST.json +1060 -0
- package/.grok/skills/frontend-ui-ux/THIRD-PARTY-NOTICE.txt +14 -0
- package/.grok/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-ATTRIBUTION.md +217 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-LICENSE-Apache-2.0.txt +201 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/root-LICENSE +21 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +873 -0
- package/.grok/skills/frontend-ui-ux/references/adaptive-layout.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/brand-and-imagery.md +93 -0
- package/.grok/skills/frontend-ui-ux/references/complete-contract.md +557 -0
- package/.grok/skills/frontend-ui-ux/references/composition.md +85 -0
- package/.grok/skills/frontend-ui-ux/references/creative-directions.md +80 -0
- package/.grok/skills/frontend-ui-ux/references/design/README.md +248 -0
- package/.grok/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
- package/.grok/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
- package/.grok/skills/frontend-ui-ux/references/design/airtable.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/design/apple.md +250 -0
- package/.grok/skills/frontend-ui-ux/references/design/aside.md +209 -0
- package/.grok/skills/frontend-ui-ux/references/design/binance.md +348 -0
- package/.grok/skills/frontend-ui-ux/references/design/bmw.md +183 -0
- package/.grok/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
- package/.grok/skills/frontend-ui-ux/references/design/cal.md +262 -0
- package/.grok/skills/frontend-ui-ux/references/design/claude.md +315 -0
- package/.grok/skills/frontend-ui-ux/references/design/clay.md +307 -0
- package/.grok/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
- package/.grok/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
- package/.grok/skills/frontend-ui-ux/references/design/cohere.md +269 -0
- package/.grok/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
- package/.grok/skills/frontend-ui-ux/references/design/composio.md +310 -0
- package/.grok/skills/frontend-ui-ux/references/design/cursor.md +312 -0
- package/.grok/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
- package/.grok/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
- package/.grok/skills/frontend-ui-ux/references/design/expo.md +284 -0
- package/.grok/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
- package/.grok/skills/frontend-ui-ux/references/design/figma.md +223 -0
- package/.grok/skills/frontend-ui-ux/references/design/framer.md +249 -0
- package/.grok/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
- package/.grok/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
- package/.grok/skills/frontend-ui-ux/references/design/ibm.md +335 -0
- package/.grok/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
- package/.grok/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
- package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
- package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
- package/.grok/skills/frontend-ui-ux/references/design/intercom.md +149 -0
- package/.grok/skills/frontend-ui-ux/references/design/kraken.md +128 -0
- package/.grok/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
- package/.grok/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
- package/.grok/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
- package/.grok/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
- package/.grok/skills/frontend-ui-ux/references/design/lovable.md +301 -0
- package/.grok/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
- package/.grok/skills/frontend-ui-ux/references/design/meta.md +369 -0
- package/.grok/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
- package/.grok/skills/frontend-ui-ux/references/design/minimax.md +260 -0
- package/.grok/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
- package/.grok/skills/frontend-ui-ux/references/design/miro.md +111 -0
- package/.grok/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
- package/.grok/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
- package/.grok/skills/frontend-ui-ux/references/design/nike.md +366 -0
- package/.grok/skills/frontend-ui-ux/references/design/notion.md +312 -0
- package/.grok/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
- package/.grok/skills/frontend-ui-ux/references/design/ollama.md +270 -0
- package/.grok/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
- package/.grok/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
- package/.grok/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
- package/.grok/skills/frontend-ui-ux/references/design/playstation.md +367 -0
- package/.grok/skills/frontend-ui-ux/references/design/posthog.md +259 -0
- package/.grok/skills/frontend-ui-ux/references/design/raycast.md +271 -0
- package/.grok/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
- package/.grok/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
- package/.grok/skills/frontend-ui-ux/references/design/renault.md +314 -0
- package/.grok/skills/frontend-ui-ux/references/design/replicate.md +264 -0
- package/.grok/skills/frontend-ui-ux/references/design/resend.md +306 -0
- package/.grok/skills/frontend-ui-ux/references/design/revolut.md +188 -0
- package/.grok/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
- package/.grok/skills/frontend-ui-ux/references/design/sanity.md +360 -0
- package/.grok/skills/frontend-ui-ux/references/design/sentry.md +265 -0
- package/.grok/skills/frontend-ui-ux/references/design/shopify.md +353 -0
- package/.grok/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
- package/.grok/skills/frontend-ui-ux/references/design/spacex.md +197 -0
- package/.grok/skills/frontend-ui-ux/references/design/spotify.md +249 -0
- package/.grok/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
- package/.grok/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
- package/.grok/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
- package/.grok/skills/frontend-ui-ux/references/design/stripe.md +325 -0
- package/.grok/skills/frontend-ui-ux/references/design/supabase.md +258 -0
- package/.grok/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
- package/.grok/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
- package/.grok/skills/frontend-ui-ux/references/design/tesla.md +289 -0
- package/.grok/skills/frontend-ui-ux/references/design/theverge.md +342 -0
- package/.grok/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
- package/.grok/skills/frontend-ui-ux/references/design/uber.md +298 -0
- package/.grok/skills/frontend-ui-ux/references/design/vercel.md +313 -0
- package/.grok/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
- package/.grok/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
- package/.grok/skills/frontend-ui-ux/references/design/warp.md +256 -0
- package/.grok/skills/frontend-ui-ux/references/design/webflow.md +95 -0
- package/.grok/skills/frontend-ui-ux/references/design/wired.md +281 -0
- package/.grok/skills/frontend-ui-ux/references/design/wise.md +176 -0
- package/.grok/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
- package/.grok/skills/frontend-ui-ux/references/design/zapier.md +331 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
- package/.grok/skills/frontend-ui-ux/references/evidence-review.md +126 -0
- package/.grok/skills/frontend-ui-ux/references/implementation-platforms.md +109 -0
- package/.grok/skills/frontend-ui-ux/references/inclusive-interface.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/interaction-motion.md +101 -0
- package/.grok/skills/frontend-ui-ux/references/operating-lanes.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/perfection/README.md +160 -0
- package/.grok/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
- package/.grok/skills/frontend-ui-ux/references/performance-delivery.md +93 -0
- package/.grok/skills/frontend-ui-ux/references/product-direction.md +84 -0
- package/.grok/skills/frontend-ui-ux/references/redesign-playbook.md +97 -0
- package/.grok/skills/frontend-ui-ux/references/system-foundations.md +84 -0
- package/.grok/skills/frontend-ui-ux/references/taste-direction.md +86 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
- package/.grok/skills/frontend-ui-ux/references/visual-language.md +84 -0
- package/.grok/skills/frontend-ui-ux/references/visual-reconstruction.md +97 -0
- package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.schema.json +306 -0
- package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta1.schema.json +291 -0
- package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta2.schema.json +311 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-format.mjs +286 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-inventory-rules.mjs +354 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-rules.mjs +361 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-surface-rules.mjs +313 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-data.mjs +68 -0
- package/.grok/skills/frontend-ui-ux/scripts/errors.mjs +12 -0
- package/.grok/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +124 -0
- package/.grok/skills/frontend-ui-ux/scripts/json-boundary.mjs +63 -0
- package/.grok/skills/frontend-ui-ux/scripts/query-design-intelligence.mjs +106 -0
- package/.grok/skills/frontend-ui-ux/scripts/search.mjs +43 -0
- package/.grok/skills/frontend-ui-ux/scripts/source-replay.mjs +153 -0
- package/.grok/skills/frontend-ui-ux/scripts/strict-json.mjs +143 -0
- package/.grok/skills/frontend-ui-ux/scripts/validate-design-contract.mjs +52 -0
- package/.grok/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +214 -0
- package/.grok/skills/lit-burnoff/SKILL.md +175 -0
- package/.grok/skills/lit-burnoff-file/SKILL.md +67 -0
- package/.grok/skills/lit-code/SKILL.md +531 -0
- package/.grok/skills/lit-code/references/go/README.md +90 -0
- package/.grok/skills/lit-code/references/go/backend-stack.md +641 -0
- package/.grok/skills/lit-code/references/go/bootstrap.md +328 -0
- package/.grok/skills/lit-code/references/go/bubbletea-v2.md +360 -0
- package/.grok/skills/lit-code/references/go/cobra-stack.md +468 -0
- package/.grok/skills/lit-code/references/go/concurrency.md +362 -0
- package/.grok/skills/lit-code/references/go/data-modeling.md +329 -0
- package/.grok/skills/lit-code/references/go/error-handling.md +359 -0
- package/.grok/skills/lit-code/references/go/golangci-strict.md +236 -0
- package/.grok/skills/lit-code/references/go/grpc-connect.md +375 -0
- package/.grok/skills/lit-code/references/go/libraries.md +337 -0
- package/.grok/skills/lit-code/references/go/one-liners.md +202 -0
- package/.grok/skills/lit-code/references/go/sqlc-pgx.md +471 -0
- package/.grok/skills/lit-code/references/go/testing.md +467 -0
- package/.grok/skills/lit-code/references/go/type-patterns.md +298 -0
- package/.grok/skills/lit-code/references/permission-sandbox-matrix.md +70 -0
- package/.grok/skills/lit-code/references/python/README.md +314 -0
- package/.grok/skills/lit-code/references/python/async-anyio.md +442 -0
- package/.grok/skills/lit-code/references/python/data-modeling.md +233 -0
- package/.grok/skills/lit-code/references/python/data-processing.md +133 -0
- package/.grok/skills/lit-code/references/python/error-handling.md +218 -0
- package/.grok/skills/lit-code/references/python/fastapi-stack.md +316 -0
- package/.grok/skills/lit-code/references/python/httpx2-optimization.md +360 -0
- package/.grok/skills/lit-code/references/python/libraries.md +307 -0
- package/.grok/skills/lit-code/references/python/one-liners.md +268 -0
- package/.grok/skills/lit-code/references/python/orjson-stack.md +378 -0
- package/.grok/skills/lit-code/references/python/pydantic-ai.md +285 -0
- package/.grok/skills/lit-code/references/python/pyproject-strict.md +232 -0
- package/.grok/skills/lit-code/references/python/textual-tui.md +201 -0
- package/.grok/skills/lit-code/references/python/type-patterns.md +176 -0
- package/.grok/skills/lit-code/references/rust/README.md +317 -0
- package/.grok/skills/lit-code/references/rust/async-tokio.md +299 -0
- package/.grok/skills/lit-code/references/rust/axum-stack.md +467 -0
- package/.grok/skills/lit-code/references/rust/cargo-strict.md +317 -0
- package/.grok/skills/lit-code/references/rust/clap-stack.md +409 -0
- package/.grok/skills/lit-code/references/rust/concurrency.md +375 -0
- package/.grok/skills/lit-code/references/rust/libraries.md +439 -0
- package/.grok/skills/lit-code/references/rust/one-liners.md +291 -0
- package/.grok/skills/lit-code/references/rust/proptest-insta.md +429 -0
- package/.grok/skills/lit-code/references/rust/type-state.md +354 -0
- package/.grok/skills/lit-code/references/rust/unsafe-discipline.md +250 -0
- package/.grok/skills/lit-code/references/rust/zero-cost-safety.md +527 -0
- package/.grok/skills/lit-code/references/rust-ub/README.md +289 -0
- package/.grok/skills/lit-code/references/rust-ub/miri-sanitizers-loom.md +411 -0
- package/.grok/skills/lit-code/references/rust-ub/ub-taxonomy.md +269 -0
- package/.grok/skills/lit-code/references/tool-boundaries.md +66 -0
- package/.grok/skills/lit-code/references/typescript/README.md +195 -0
- package/.grok/skills/lit-code/references/typescript/backend-hono.md +672 -0
- package/.grok/skills/lit-code/references/typescript/bootstrap.md +199 -0
- package/.grok/skills/lit-code/references/typescript/data-modeling.md +202 -0
- package/.grok/skills/lit-code/references/typescript/error-handling.md +169 -0
- package/.grok/skills/lit-code/references/typescript/tsconfig-strict.md +152 -0
- package/.grok/skills/lit-code/references/typescript/type-patterns.md +196 -0
- package/.grok/skills/lit-code/references/worked-cases.md +190 -0
- package/.grok/skills/lit-commit/SKILL.md +218 -0
- package/.grok/skills/lit-comprehend/SKILL.md +63 -0
- package/.grok/skills/lit-comprehend/references/artifact-format.md +58 -0
- package/.grok/skills/lit-comprehend/references/artifact-template.md +219 -0
- package/.grok/skills/lit-comprehend/references/honesty-ledger-contract.md +51 -0
- package/.grok/skills/lit-comprehend/references/micro-worlds.md +195 -0
- package/.grok/skills/lit-comprehend/references/worked-explainer.md +51 -0
- package/.grok/skills/lit-crucible/SKILL.md +231 -0
- package/.grok/skills/lit-handoff/SKILL.md +159 -0
- package/.grok/skills/lit-handoff/evals/evals.json +154 -0
- package/.grok/skills/lit-handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/.grok/skills/lit-handoff/references/_canonical-corpus/manifest.json +17 -0
- package/.grok/skills/lit-handoff/references/source-pointer.md +31 -0
- package/.grok/skills/lit-handoff/scripts/verify-canonical-corpus.mjs +137 -0
- package/.grok/skills/lit-handoff/templates/HANDOFF.md +121 -0
- package/.grok/skills/lit-init/SKILL.md +244 -0
- package/.grok/skills/lit-korean/SKILL.md +176 -0
- package/.grok/skills/lit-plan/SKILL.md +71 -0
- package/.grok/skills/lit-plan/references/plan-schema.md +87 -0
- package/.grok/skills/lit-plan/references/start-work-handoff-contract.md +59 -0
- package/.grok/skills/lit-plan/scripts/scaffold-plan.mjs +259 -0
- package/.grok/skills/lit-plan/scripts/validate-plan.mjs +89 -0
- package/.grok/skills/lit-recap/SKILL.md +57 -0
- package/.grok/skills/lit-scientific-visualization/SKILL.md +213 -0
- package/.grok/skills/lit-scientific-visualization/scripts/verify-canonical-corpus.mjs +181 -0
- package/.grok/skills/lit-team/SKILL.md +73 -0
- package/.grok/skills/lit-team/references/explore-packet.md +70 -0
- package/.grok/skills/lit-team/references/general-purpose-packet.md +75 -0
- package/.grok/skills/lit-team/references/plan-packet.md +73 -0
- package/.grok/skills/litgoal/SKILL.md +98 -0
- package/.grok/skills/litgrok/SKILL.md +77 -0
- package/.grok/skills/litresearch/SKILL.md +60 -0
- package/.grok/skills/litresearch/references/mcp-tool-use-patterns.md +83 -0
- package/.grok/skills/litresearch/references/source-verdict-taxonomy.md +40 -0
- package/.grok/skills/litwork/SKILL.md +109 -0
- package/.grok/skills/lsp/SKILL.md +56 -0
- package/.grok/skills/lsp/references/built-in-lsp-contract.md +71 -0
- package/.grok/skills/lsp-setup/SKILL.md +82 -0
- package/.grok/skills/lsp-setup/references/bash/README.md +54 -0
- package/.grok/skills/lsp-setup/references/c-cpp/README.md +58 -0
- package/.grok/skills/lsp-setup/references/csharp/README.md +64 -0
- package/.grok/skills/lsp-setup/references/dart/README.md +48 -0
- package/.grok/skills/lsp-setup/references/elixir/README.md +51 -0
- package/.grok/skills/lsp-setup/references/go/README.md +53 -0
- package/.grok/skills/lsp-setup/references/haskell/README.md +57 -0
- package/.grok/skills/lsp-setup/references/java/README.md +55 -0
- package/.grok/skills/lsp-setup/references/julia/README.md +56 -0
- package/.grok/skills/lsp-setup/references/kotlin/README.md +58 -0
- package/.grok/skills/lsp-setup/references/lua/README.md +48 -0
- package/.grok/skills/lsp-setup/references/php/README.md +49 -0
- package/.grok/skills/lsp-setup/references/python/README.md +60 -0
- package/.grok/skills/lsp-setup/references/ruby/README.md +53 -0
- package/.grok/skills/lsp-setup/references/rust/README.md +55 -0
- package/.grok/skills/lsp-setup/references/swift/README.md +52 -0
- package/.grok/skills/lsp-setup/references/terraform/README.md +50 -0
- package/.grok/skills/lsp-setup/references/typescript/README.md +63 -0
- package/.grok/skills/lsp-setup/references/yaml/README.md +47 -0
- package/.grok/skills/lsp-setup/references/zig/README.md +49 -0
- package/.grok/skills/lsp-setup/scripts/detect-lsp.mjs +40 -0
- package/.grok/skills/lsp-setup/scripts/lsp-server-table.mjs +309 -0
- package/.grok/skills/lsp-setup/scripts/verify-lsp.mjs +54 -0
- package/.grok/skills/refactor/SKILL.md +210 -0
- package/.grok/skills/review-work/SKILL.md +515 -0
- package/.grok/skills/review-work/references/behavior-lane-contract.md +48 -0
- package/.grok/skills/review-work/references/documentation-lane-contract.md +49 -0
- package/.grok/skills/review-work/references/integration-lane-contract.md +51 -0
- package/.grok/skills/review-work/references/regression-lane-contract.md +48 -0
- package/.grok/skills/review-work/references/safety-lane-contract.md +48 -0
- package/.grok/skills/review-work/references/test-lane-contract.md +48 -0
- package/.grok/skills/review-work/scripts/check-lanes.mjs +63 -0
- package/.grok/skills/rules/SKILL.md +51 -0
- package/.grok/skills/rules/references/loading-order-contract.md +66 -0
- package/.grok/skills/rules/scripts/resolve-guidance.mjs +180 -0
- package/.grok/skills/skill-observer/SKILL.md +78 -0
- package/.grok/skills/skill-observer/references/review-contract.md +77 -0
- package/.grok/skills/skill-observer/scripts/curator.mjs +121 -0
- package/.grok/skills/skill-observer/scripts/review.mjs +347 -0
- package/.grok/skills/skill-observer/scripts/skill-loop.mjs +2087 -0
- package/.grok/skills/skill-observer/scripts/validate-skills.mjs +83 -0
- package/.grok/skills/start-work/SKILL.md +396 -0
- package/.grok/skills/structural-search/SKILL.md +195 -0
- package/.grok/skills/visual-qa/SKILL.md +50 -0
- package/.grok/skills/visual-qa/references/capture-playbook.md +47 -0
- package/.grok/skills/visual-qa/references/complete-contract.md +721 -0
- package/.grok/skills/visual-qa/references/verdict-taxonomy.md +34 -0
- package/.grok/skills/visual-qa/scripts/verify-evidence-manifest.mjs +91 -0
- package/.grok/skills/wikify/SKILL.md +65 -0
- package/.grok/skills/wikify/references/page-format.md +81 -0
- package/.grok/skills/wikify/references/provenance-contract.md +52 -0
- package/.grok/vendor/NOTICE.md +16 -0
- package/.grok/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/.grok/vendor/provenance/045_scientific-visualization.md +37 -0
- package/.grok/vendor/scientific-visualization/assets/color_palettes.py +197 -0
- package/.grok/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
- package/.grok/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
- package/.grok/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
- package/.grok/vendor/scientific-visualization/evals/evals.json +158 -0
- package/.grok/vendor/scientific-visualization/references/_canonical-corpus/manifest.json +38 -0
- package/.grok/vendor/scientific-visualization/references/color_palettes.md +380 -0
- package/.grok/vendor/scientific-visualization/references/journal_requirements.md +359 -0
- package/.grok/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
- package/.grok/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/.grok/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
- package/.grok/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/.grok/vendor/scientific-visualization/scripts/figure_export.py +238 -0
- package/.grok/vendor/scientific-visualization/scripts/style_presets.py +467 -0
- package/.grok/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
- package/.grok/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
- package/CHANGELOG.md +131 -0
- package/CODE_OF_CONDUCT.md +9 -0
- package/CONTRIBUTING.md +22 -0
- package/LICENSE +21 -0
- package/README.md +228 -0
- package/README_ko-KR.md +228 -0
- package/SECURITY.md +11 -0
- package/SUPPORT.md +9 -0
- package/bin/litgrok.mjs +860 -0
- package/docs/assets/cover.webp +0 -0
- package/docs/assets/litgrok-clay-icon.png +0 -0
- package/docs/assets/litgrok-continuity-1600.webp +0 -0
- package/docs/assets/litgrok-ignition-1600.webp +0 -0
- package/docs/assets/litgrok-wordmark.svg +5 -0
- package/docs/assets/readme/README.md +31 -0
- package/docs/assets/readme/badge-license.svg +1 -0
- package/docs/assets/readme/badge-version.svg +1 -0
- package/docs/privacy.md +13 -0
- package/docs/reference.md +271 -0
- package/docs/reference_ko-KR.md +267 -0
- package/package.json +50 -0
- package/plugin.json +27 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Rust — LSP setup (Grok Build / LitGrok)
|
|
2
|
+
|
|
3
|
+
- **Recommended server:** `rust-analyzer`
|
|
4
|
+
- **Extensions:** `.rs`
|
|
5
|
+
- **Install hint:** `rustup component add rust-analyzer`
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
- **macOS:** `rustup component add rust-analyzer` (or `brew install rust-analyzer`)
|
|
10
|
+
- **Linux:** `rustup component add rust-analyzer`
|
|
11
|
+
- **Windows:** `rustup component add rust-analyzer`
|
|
12
|
+
|
|
13
|
+
The rustup component is the recommended path — it stays pinned to your toolchain.
|
|
14
|
+
`rust-analyzer` also needs the `rust-src` component to index the standard library
|
|
15
|
+
(`rustup component add rust-src`).
|
|
16
|
+
|
|
17
|
+
Confirm it resolves:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
command -v rust-analyzer
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Server settings
|
|
24
|
+
|
|
25
|
+
Grok Build documents no project language-server schema, and LitGrok ships no server
|
|
26
|
+
configuration: the only documented code-intelligence surface is the built-in tool
|
|
27
|
+
behind `GROK_LSP_TOOLS=1` / `[features] lsp_tools`, which is off by default (see the
|
|
28
|
+
`lsp` skill). Installing the server binary on PATH is the whole setup this reference
|
|
29
|
+
can vouch for. Do not add a server entry to `.grok/config.toml`; that key is not a
|
|
30
|
+
documented Grok Build surface.
|
|
31
|
+
|
|
32
|
+
## Alternatives
|
|
33
|
+
|
|
34
|
+
None — `rust-analyzer` is the official and sole Rust language server.
|
|
35
|
+
|
|
36
|
+
## Troubleshooting
|
|
37
|
+
- **PATH:** `rust-analyzer` must be on PATH; reopen shell after install. The rustup shim lives in `~/.cargo/bin`.
|
|
38
|
+
- **Exits while loading rust-src:** if rust-analyzer crashes during stdlib indexing, reinstall the source component:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
rustup component remove rust-src && rustup component add rust-src
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
- **No proc-macro / build script support:** ensure the project builds with `cargo check`; rust-analyzer reuses the same toolchain.
|
|
45
|
+
|
|
46
|
+
## Verify
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
command -v rust-analyzer
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
A resolving executable is the only claim this reference makes. Whether Grok Build's
|
|
53
|
+
built-in code-intelligence tool picks the server up is undocumented; confirm tool
|
|
54
|
+
visibility inside the session as the `lsp` skill describes, and fall back to the
|
|
55
|
+
project's own checks when it is absent.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Swift — LSP setup (Grok Build / LitGrok)
|
|
2
|
+
|
|
3
|
+
- **Recommended server:** `sourcekit-lsp`
|
|
4
|
+
- **Extensions:** `.swift .objc .objcpp`
|
|
5
|
+
- **Install hint:** `Included with Xcode or the Swift toolchain`
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
`sourcekit-lsp` ships with the Swift toolchain — no separate install.
|
|
10
|
+
|
|
11
|
+
- **macOS:** `xcode-select --install` (or install full Xcode). It resolves to the active toolchain selected by `xcode-select`.
|
|
12
|
+
- **Linux:** Install a swift.org toolchain (`sourcekit-lsp` ships inside it); add the toolchain's `usr/bin` to PATH.
|
|
13
|
+
- **Windows:** Install the swift.org Windows toolchain; `sourcekit-lsp` is bundled.
|
|
14
|
+
|
|
15
|
+
Confirm it resolves:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
command -v sourcekit-lsp
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Server settings
|
|
22
|
+
|
|
23
|
+
Grok Build documents no project language-server schema, and LitGrok ships no server
|
|
24
|
+
configuration: the only documented code-intelligence surface is the built-in tool
|
|
25
|
+
behind `GROK_LSP_TOOLS=1` / `[features] lsp_tools`, which is off by default (see the
|
|
26
|
+
`lsp` skill). Installing the server binary on PATH is the whole setup this reference
|
|
27
|
+
can vouch for. Do not add a server entry to `.grok/config.toml`; that key is not a
|
|
28
|
+
documented Grok Build surface.
|
|
29
|
+
|
|
30
|
+
## Alternatives
|
|
31
|
+
|
|
32
|
+
**No mainstream alternative.** `sourcekit-lsp` is the official Apple/swift.org
|
|
33
|
+
server and the only practical choice.
|
|
34
|
+
|
|
35
|
+
## Troubleshooting
|
|
36
|
+
|
|
37
|
+
- **PATH:** `sourcekit-lsp` on PATH; reopen shell after install (or after `xcode-select -s`).
|
|
38
|
+
- **Wrong toolchain (macOS):** point `xcode-select` at the right Xcode/toolchain; mismatches cause stale or missing results.
|
|
39
|
+
- **No `Package.swift` / compile db:** add a SwiftPM manifest or generate `compile_commands.json` for accurate indexing.
|
|
40
|
+
- **Objective-C (`.objc`/`.objcpp`):** needs a compilation database to resolve headers and frameworks.
|
|
41
|
+
- **First build slow:** the server builds the module graph on first open; wait for it.
|
|
42
|
+
|
|
43
|
+
## Verify
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
command -v sourcekit-lsp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
A resolving executable is the only claim this reference makes. Whether Grok Build's
|
|
50
|
+
built-in code-intelligence tool picks the server up is undocumented; confirm tool
|
|
51
|
+
visibility inside the session as the `lsp` skill describes, and fall back to the
|
|
52
|
+
project's own checks when it is absent.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Terraform — LSP setup (Grok Build / LitGrok)
|
|
2
|
+
|
|
3
|
+
- **Recommended server:** `terraform-ls serve`
|
|
4
|
+
- **Extensions:** `.tf .tfvars`
|
|
5
|
+
- **Install hint:** See https://github.com/hashicorp/terraform-ls
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
- **macOS:** `brew install hashicorp/tap/terraform-ls`
|
|
10
|
+
- **Linux:** download a release from https://github.com/hashicorp/terraform-ls/releases and place `terraform-ls` on PATH (or `apt`/`dnf` via the HashiCorp repo)
|
|
11
|
+
- **Windows:** `choco install terraform-ls` (or download a release zip)
|
|
12
|
+
|
|
13
|
+
`terraform-ls` requires the `terraform` binary itself to be installed and on PATH.
|
|
14
|
+
|
|
15
|
+
Confirm both resolve:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
command -v terraform-ls
|
|
19
|
+
command -v terraform
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Server settings
|
|
23
|
+
|
|
24
|
+
Grok Build documents no project language-server schema, and LitGrok ships no server
|
|
25
|
+
configuration: the only documented code-intelligence surface is the built-in tool
|
|
26
|
+
behind `GROK_LSP_TOOLS=1` / `[features] lsp_tools`, which is off by default (see the
|
|
27
|
+
`lsp` skill). Installing the server binary on PATH is the whole setup this reference
|
|
28
|
+
can vouch for. Do not add a server entry to `.grok/config.toml`; that key is not a
|
|
29
|
+
documented Grok Build surface.
|
|
30
|
+
|
|
31
|
+
## Alternatives
|
|
32
|
+
|
|
33
|
+
- `tflint` standalone for opinionated linting (complements the LSP).
|
|
34
|
+
- `terraform fmt` for formatting.
|
|
35
|
+
|
|
36
|
+
## Troubleshooting
|
|
37
|
+
- **PATH:** `terraform-ls` AND `terraform` both on PATH; reopen shell after install.
|
|
38
|
+
- **No provider completion:** run `terraform init` so the `.terraform/` schema cache exists.
|
|
39
|
+
- **`.tfvars` not analyzed:** open the containing module so the server has root context.
|
|
40
|
+
|
|
41
|
+
## Verify
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
command -v terraform-ls
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
A resolving executable is the only claim this reference makes. Whether Grok Build's
|
|
48
|
+
built-in code-intelligence tool picks the server up is undocumented; confirm tool
|
|
49
|
+
visibility inside the session as the `lsp` skill describes, and fall back to the
|
|
50
|
+
project's own checks when it is absent.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# TypeScript / JavaScript — LSP setup (Grok Build / LitGrok)
|
|
2
|
+
|
|
3
|
+
- **Recommended server:** `typescript-language-server --stdio`
|
|
4
|
+
- **Extensions:** `.ts .tsx .js .jsx .mjs .cjs .mts .cts`
|
|
5
|
+
- **Install hint:** `npm install -g typescript-language-server typescript`
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
- **macOS:** `npm install -g typescript-language-server typescript`
|
|
10
|
+
- **Linux:** `npm install -g typescript-language-server typescript`
|
|
11
|
+
- **Windows:** `npm install -g typescript-language-server typescript` (PowerShell or cmd)
|
|
12
|
+
|
|
13
|
+
`typescript-language-server` is only a thin wrapper — it needs the `typescript`
|
|
14
|
+
package (`tsserver`) present too, either globally or in the project's
|
|
15
|
+
`node_modules`. Always install both.
|
|
16
|
+
|
|
17
|
+
Confirm it resolves:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
command -v typescript-language-server
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Server settings
|
|
24
|
+
|
|
25
|
+
Grok Build documents no project language-server schema, and LitGrok ships no server
|
|
26
|
+
configuration: the only documented code-intelligence surface is the built-in tool
|
|
27
|
+
behind `GROK_LSP_TOOLS=1` / `[features] lsp_tools`, which is off by default (see the
|
|
28
|
+
`lsp` skill). Installing the server binary on PATH is the whole setup this reference
|
|
29
|
+
can vouch for. Do not add a server entry to `.grok/config.toml`; that key is not a
|
|
30
|
+
documented Grok Build surface.
|
|
31
|
+
|
|
32
|
+
## Alternatives
|
|
33
|
+
|
|
34
|
+
Swap the server launch for your toolchain; each row owns the extensions named in
|
|
35
|
+
its description:
|
|
36
|
+
|
|
37
|
+
| server launch | when to choose |
|
|
38
|
+
| ----------------------------------------- | --------------------------------------- |
|
|
39
|
+
| `["deno", "lsp"]` | Deno projects (handles `.ts/.tsx/.js`) |
|
|
40
|
+
| `["biome", "lsp-proxy", "--stdio"]` | Biome lint/format as the LSP |
|
|
41
|
+
| `["vscode-eslint-language-server", "--stdio"]` | ESLint diagnostics |
|
|
42
|
+
| `["oxlint", "--lsp"]` | fast Oxc-based linting |
|
|
43
|
+
| `["vue-language-server", "--stdio"]` | `.vue` single-file components |
|
|
44
|
+
| `["svelteserver", "--stdio"]` | `.svelte` files |
|
|
45
|
+
| `["astro-ls", "--stdio"]` | `.astro` files |
|
|
46
|
+
|
|
47
|
+
`eslint` install: `npm i -g vscode-langservers-extracted`. To run Deno instead
|
|
48
|
+
of the default, launch `deno lsp` in place of `typescript-language-server --stdio`.
|
|
49
|
+
|
|
50
|
+
## Troubleshooting
|
|
51
|
+
- **PATH:** `typescript-language-server` must be on PATH; reopen shell after `npm i -g`. Check your global bin with `npm bin -g`.
|
|
52
|
+
- **Missing tsserver:** errors like "Could not find tsserver" mean the `typescript` package is absent — install it globally or in the project.
|
|
53
|
+
|
|
54
|
+
## Verify
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
command -v typescript-language-server
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
A resolving executable is the only claim this reference makes. Whether Grok Build's
|
|
61
|
+
built-in code-intelligence tool picks the server up is undocumented; confirm tool
|
|
62
|
+
visibility inside the session as the `lsp` skill describes, and fall back to the
|
|
63
|
+
project's own checks when it is absent.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# YAML — LSP setup (Grok Build / LitGrok)
|
|
2
|
+
|
|
3
|
+
- **Recommended server:** `yaml-language-server --stdio`
|
|
4
|
+
- **Extensions:** `.yaml .yml`
|
|
5
|
+
- **Install hint:** `npm install -g yaml-language-server`
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
- **macOS:** `npm install -g yaml-language-server`
|
|
10
|
+
- **Linux:** `npm install -g yaml-language-server`
|
|
11
|
+
- **Windows:** `npm install -g yaml-language-server` (PowerShell)
|
|
12
|
+
|
|
13
|
+
Confirm it resolves:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
command -v yaml-language-server
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Server settings
|
|
20
|
+
|
|
21
|
+
Grok Build documents no project language-server schema, and LitGrok ships no server
|
|
22
|
+
configuration: the only documented code-intelligence surface is the built-in tool
|
|
23
|
+
behind `GROK_LSP_TOOLS=1` / `[features] lsp_tools`, which is off by default (see the
|
|
24
|
+
`lsp` skill). Installing the server binary on PATH is the whole setup this reference
|
|
25
|
+
can vouch for. Do not add a server entry to `.grok/config.toml`; that key is not a
|
|
26
|
+
documented Grok Build surface.
|
|
27
|
+
|
|
28
|
+
## Alternatives
|
|
29
|
+
|
|
30
|
+
- `redhat.vscode-yaml` bundles the same server in editors.
|
|
31
|
+
- `yamllint` standalone for style/lint-only checks.
|
|
32
|
+
|
|
33
|
+
## Troubleshooting
|
|
34
|
+
- **PATH:** `yaml-language-server` on PATH; reopen shell after `npm -g` install.
|
|
35
|
+
- **No validation:** no schema matched — add a `$schema` modeline or a `yaml.schemas` mapping in your editor's init options.
|
|
36
|
+
- **Wrong schema applied:** SchemaStore guessed by filename; pin explicitly with a modeline.
|
|
37
|
+
|
|
38
|
+
## Verify
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
command -v yaml-language-server
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
A resolving executable is the only claim this reference makes. Whether Grok Build's
|
|
45
|
+
built-in code-intelligence tool picks the server up is undocumented; confirm tool
|
|
46
|
+
visibility inside the session as the `lsp` skill describes, and fall back to the
|
|
47
|
+
project's own checks when it is absent.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Zig — LSP setup (Grok Build / LitGrok)
|
|
2
|
+
|
|
3
|
+
- **Recommended server:** `zls`
|
|
4
|
+
- **Extensions:** `.zig .zon`
|
|
5
|
+
- **Install hint:** `https://github.com/zigtools/zls`
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
ZLS (the Zig Language Server) must be built against the **same Zig version** you use.
|
|
10
|
+
See `https://github.com/zigtools/zls`.
|
|
11
|
+
|
|
12
|
+
- **macOS:** `brew install zls`
|
|
13
|
+
- **Linux:** download a prebuilt release matching your Zig version, or `zig build -Doptimize=ReleaseSafe` from the zls source
|
|
14
|
+
- **Windows:** download the matching release from the zls GitHub releases, or build from source
|
|
15
|
+
|
|
16
|
+
Confirm it resolves:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
command -v zls
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Server settings
|
|
23
|
+
|
|
24
|
+
Grok Build documents no project language-server schema, and LitGrok ships no server
|
|
25
|
+
configuration: the only documented code-intelligence surface is the built-in tool
|
|
26
|
+
behind `GROK_LSP_TOOLS=1` / `[features] lsp_tools`, which is off by default (see the
|
|
27
|
+
`lsp` skill). Installing the server binary on PATH is the whole setup this reference
|
|
28
|
+
can vouch for. Do not add a server entry to `.grok/config.toml`; that key is not a
|
|
29
|
+
documented Grok Build surface.
|
|
30
|
+
|
|
31
|
+
## Alternatives
|
|
32
|
+
|
|
33
|
+
None.
|
|
34
|
+
|
|
35
|
+
## Troubleshooting
|
|
36
|
+
- **VERSION MATCH (critical):** zls version MUST match your zig version — build/install zls against the exact same Zig. A mismatch causes crashes, parse errors, or silent failures. After upgrading Zig, upgrade/rebuild zls too.
|
|
37
|
+
- **PATH:** `zls` must be on PATH; reopen the shell after install.
|
|
38
|
+
- **zig not found:** zls invokes `zig` for builds — make sure `zig` itself is also on PATH.
|
|
39
|
+
|
|
40
|
+
## Verify
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
command -v zls
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
A resolving executable is the only claim this reference makes. Whether Grok Build's
|
|
47
|
+
built-in code-intelligence tool picks the server up is undocumented; confirm tool
|
|
48
|
+
visibility inside the session as the `lsp` skill describes, and fall back to the
|
|
49
|
+
project's own checks when it is absent.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
assertProjectDirectory,
|
|
5
|
+
cliExitCode,
|
|
6
|
+
collectExtensions,
|
|
7
|
+
coverageForExtensions,
|
|
8
|
+
hostStatusMessage,
|
|
9
|
+
inspectProject,
|
|
10
|
+
isDirectInvocation,
|
|
11
|
+
parseOptions,
|
|
12
|
+
} from './lsp-server-table.mjs';
|
|
13
|
+
|
|
14
|
+
function main() {
|
|
15
|
+
try {
|
|
16
|
+
const options = parseOptions(process.argv.slice(2), { maxFiles: true, positional: 1 });
|
|
17
|
+
const project = assertProjectDirectory(options.positionals[0]);
|
|
18
|
+
const extensions = collectExtensions(project, options.maxFiles);
|
|
19
|
+
const host = inspectProject(project, options);
|
|
20
|
+
const report = {
|
|
21
|
+
root: project,
|
|
22
|
+
extensions,
|
|
23
|
+
host,
|
|
24
|
+
coverage: coverageForExtensions(extensions, host),
|
|
25
|
+
};
|
|
26
|
+
if (options.json) {
|
|
27
|
+
process.stdout.write(`${JSON.stringify(report)}\n`);
|
|
28
|
+
} else {
|
|
29
|
+
process.stdout.write(`PASS root=${project} extensions=${extensions.length} status=${host.status}\n`);
|
|
30
|
+
process.stdout.write(`${hostStatusMessage(host)}\n`);
|
|
31
|
+
for (const entry of report.coverage) process.stdout.write(`${entry.extension}: ${entry.status}\n`);
|
|
32
|
+
}
|
|
33
|
+
process.exitCode = 0;
|
|
34
|
+
} catch (error) {
|
|
35
|
+
process.stderr.write(`${error?.code ?? 'GROK_DETECT_FAILED'}: ${error?.message ?? String(error)}\n`);
|
|
36
|
+
process.exitCode = cliExitCode(error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (isDirectInvocation(import.meta.url)) main();
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
4
|
+
import { lstatSync, readdirSync, realpathSync } from 'node:fs';
|
|
5
|
+
import { extname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
|
|
8
|
+
const DEFAULT_TIMEOUT_MS = 5_000;
|
|
9
|
+
const MAX_TIMEOUT_MS = 120_000;
|
|
10
|
+
const DEFAULT_MAX_FILES = 50_000;
|
|
11
|
+
const MAX_FILES = 100_000;
|
|
12
|
+
const MAX_OUTPUT_BYTES = 1_024 * 1_024;
|
|
13
|
+
const MAX_INSPECTION_ENTRIES = 64;
|
|
14
|
+
const MAX_INSPECTION_KEYS = 64;
|
|
15
|
+
const SKIPPED_DIRECTORIES = new Set([
|
|
16
|
+
'.git',
|
|
17
|
+
'.grok',
|
|
18
|
+
'.hg',
|
|
19
|
+
'.svn',
|
|
20
|
+
'build',
|
|
21
|
+
'coverage',
|
|
22
|
+
'dist',
|
|
23
|
+
'node_modules',
|
|
24
|
+
'vendor',
|
|
25
|
+
]);
|
|
26
|
+
|
|
27
|
+
export class LspSetupError extends Error {
|
|
28
|
+
constructor(code, detail = '') {
|
|
29
|
+
super(detail ? `${code}: ${detail}` : code);
|
|
30
|
+
this.name = 'LspSetupError';
|
|
31
|
+
this.code = code;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function fail(code, detail = '') {
|
|
36
|
+
throw new LspSetupError(code, detail);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function safeString(value, maximum) {
|
|
40
|
+
return typeof value === 'string' && value.length <= maximum && !value.includes('\0') ? value : undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function numericOption(value, fallback, maximum, label) {
|
|
44
|
+
if (value === undefined) return fallback;
|
|
45
|
+
if (typeof value !== 'string' || !/^[1-9]\d*$/.test(value)) {
|
|
46
|
+
fail('CLI_ARGUMENT_INVALID', `${label} must be a positive integer`);
|
|
47
|
+
}
|
|
48
|
+
const parsed = Number(value);
|
|
49
|
+
if (!Number.isSafeInteger(parsed) || parsed > maximum) {
|
|
50
|
+
fail('CLI_ARGUMENT_INVALID', `${label} exceeds its bound`);
|
|
51
|
+
}
|
|
52
|
+
return parsed;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function parseOptions(argv, { positional = 0, maxFiles = false } = {}) {
|
|
56
|
+
const options = { json: false, project: undefined, grokBin: undefined, timeout: DEFAULT_TIMEOUT_MS };
|
|
57
|
+
const positionals = [];
|
|
58
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
59
|
+
const argument = argv[index];
|
|
60
|
+
if (argument === '--json') {
|
|
61
|
+
options.json = true;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (argument === '--project' || argument.startsWith('--project=')) {
|
|
65
|
+
const value = argument === '--project' ? argv[++index] : argument.slice('--project='.length);
|
|
66
|
+
if (!safeString(value, 4_096) || value.startsWith('-')) fail('CLI_ARGUMENT_INVALID', '--project requires a path');
|
|
67
|
+
options.project = value;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (argument === '--grok-bin' || argument.startsWith('--grok-bin=')) {
|
|
71
|
+
const value = argument === '--grok-bin' ? argv[++index] : argument.slice('--grok-bin='.length);
|
|
72
|
+
if (!safeString(value, 4_096) || value.startsWith('-')) fail('CLI_ARGUMENT_INVALID', '--grok-bin requires a path');
|
|
73
|
+
options.grokBin = value;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (argument === '--timeout' || argument.startsWith('--timeout=')) {
|
|
77
|
+
const value = argument === '--timeout' ? argv[++index] : argument.slice('--timeout='.length);
|
|
78
|
+
options.timeout = numericOption(value, DEFAULT_TIMEOUT_MS, MAX_TIMEOUT_MS, '--timeout');
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (maxFiles && (argument === '--max-files' || argument.startsWith('--max-files='))) {
|
|
82
|
+
const value = argument === '--max-files' ? argv[++index] : argument.slice('--max-files='.length);
|
|
83
|
+
options.maxFiles = numericOption(value, DEFAULT_MAX_FILES, MAX_FILES, '--max-files');
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (argument.startsWith('-')) fail('CLI_ARGUMENT_INVALID', `unknown argument ${argument}`);
|
|
87
|
+
positionals.push(argument);
|
|
88
|
+
}
|
|
89
|
+
if (positionals.length !== positional) {
|
|
90
|
+
fail('CLI_ARGUMENT_INVALID', `expected ${positional} positional path${positional === 1 ? '' : 's'}`);
|
|
91
|
+
}
|
|
92
|
+
return { ...options, positionals };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function assertProjectDirectory(input = process.cwd()) {
|
|
96
|
+
const candidate = resolve(input);
|
|
97
|
+
let status;
|
|
98
|
+
try {
|
|
99
|
+
status = lstatSync(candidate);
|
|
100
|
+
} catch (error) {
|
|
101
|
+
fail('GROK_PROJECT_INVALID', `${candidate} (${error?.code ?? 'unreadable'})`);
|
|
102
|
+
}
|
|
103
|
+
if (!status.isDirectory() || status.isSymbolicLink()) fail('GROK_PROJECT_INVALID', candidate);
|
|
104
|
+
try {
|
|
105
|
+
return realpathSync(candidate);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
fail('GROK_PROJECT_INVALID', `${candidate} (${error?.code ?? 'unreadable'})`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function assertRegularFile(input) {
|
|
112
|
+
const candidate = resolve(input);
|
|
113
|
+
let status;
|
|
114
|
+
try {
|
|
115
|
+
status = lstatSync(candidate);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
fail('GROK_FILE_INVALID', `${candidate} (${error?.code ?? 'unreadable'})`);
|
|
118
|
+
}
|
|
119
|
+
if (!status.isFile() || status.isSymbolicLink()) fail('GROK_FILE_INVALID', candidate);
|
|
120
|
+
try {
|
|
121
|
+
return realpathSync(candidate);
|
|
122
|
+
} catch (error) {
|
|
123
|
+
fail('GROK_FILE_INVALID', `${candidate} (${error?.code ?? 'unreadable'})`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function childEntries(directory) {
|
|
128
|
+
try {
|
|
129
|
+
return readdirSync(directory, { withFileTypes: true })
|
|
130
|
+
.sort((left, right) => left.name < right.name ? -1 : left.name > right.name ? 1 : 0);
|
|
131
|
+
} catch (error) {
|
|
132
|
+
fail('GROK_PROJECT_SCAN_FAILED', `${directory} (${error?.code ?? 'unreadable'})`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function collectExtensions(project, maxFiles = DEFAULT_MAX_FILES) {
|
|
137
|
+
const counts = new Map();
|
|
138
|
+
let fileCount = 0;
|
|
139
|
+
function visit(directory) {
|
|
140
|
+
for (const entry of childEntries(directory)) {
|
|
141
|
+
if (entry.isSymbolicLink()) continue;
|
|
142
|
+
const child = join(directory, entry.name);
|
|
143
|
+
if (entry.isDirectory()) {
|
|
144
|
+
if (!SKIPPED_DIRECTORIES.has(entry.name)) visit(child);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (!entry.isFile()) continue;
|
|
148
|
+
fileCount += 1;
|
|
149
|
+
if (fileCount > maxFiles) fail('GROK_PROJECT_TOO_LARGE', `more than ${maxFiles} files`);
|
|
150
|
+
const extension = extname(entry.name).toLowerCase();
|
|
151
|
+
if (extension) counts.set(extension, (counts.get(extension) ?? 0) + 1);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
visit(project);
|
|
155
|
+
return [...counts.entries()]
|
|
156
|
+
.sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
|
|
157
|
+
.map(([extension, files]) => ({ extension, files }));
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function boundedOutput(value) {
|
|
161
|
+
return typeof value === 'string' && Buffer.byteLength(value, 'utf8') <= MAX_OUTPUT_BYTES ? value : undefined;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function inspectBinary(options, env) {
|
|
165
|
+
return options.grokBin ?? env.GROK_BIN ?? env.LITGROK_GROK_BIN ?? 'grok';
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function runGrokInspect(project, options = {}) {
|
|
169
|
+
const env = options.env ?? process.env;
|
|
170
|
+
const result = spawnSync(inspectBinary(options, env), ['inspect', '--json'], {
|
|
171
|
+
cwd: project,
|
|
172
|
+
encoding: 'utf8',
|
|
173
|
+
env,
|
|
174
|
+
maxBuffer: MAX_OUTPUT_BYTES,
|
|
175
|
+
timeout: options.timeout ?? DEFAULT_TIMEOUT_MS,
|
|
176
|
+
windowsHide: true,
|
|
177
|
+
});
|
|
178
|
+
const stdout = boundedOutput(result.stdout);
|
|
179
|
+
const stderr = boundedOutput(result.stderr);
|
|
180
|
+
if (result.error || result.status !== 0 || stdout === undefined) {
|
|
181
|
+
return {
|
|
182
|
+
ok: false,
|
|
183
|
+
status: result.status,
|
|
184
|
+
signal: result.signal,
|
|
185
|
+
errorCode: result.error?.code ?? (stdout === undefined ? 'OUTPUT_TOO_LARGE' : 'EXIT_NONZERO'),
|
|
186
|
+
timedOut: result.error?.code === 'ETIMEDOUT',
|
|
187
|
+
stdoutBytes: typeof result.stdout === 'string' ? Buffer.byteLength(result.stdout, 'utf8') : 0,
|
|
188
|
+
stderrBytes: typeof result.stderr === 'string' ? Buffer.byteLength(result.stderr, 'utf8') : 0,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
ok: true,
|
|
193
|
+
stdout,
|
|
194
|
+
stderr,
|
|
195
|
+
status: result.status,
|
|
196
|
+
signal: result.signal,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function parseInspection(result) {
|
|
201
|
+
if (!result.ok) {
|
|
202
|
+
const detail = result.timedOut
|
|
203
|
+
? 'inspect timed out'
|
|
204
|
+
: `${result.errorCode ?? 'failed'} status=${result.status ?? 'null'} signal=${result.signal ?? 'none'}`;
|
|
205
|
+
fail('GROK_INSPECT_FAILED', detail);
|
|
206
|
+
}
|
|
207
|
+
let value;
|
|
208
|
+
try {
|
|
209
|
+
value = JSON.parse(result.stdout);
|
|
210
|
+
} catch {
|
|
211
|
+
fail('GROK_INSPECT_FAILED', 'inspect returned invalid JSON');
|
|
212
|
+
}
|
|
213
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
214
|
+
fail('GROK_INSPECT_FAILED', 'inspect returned a non-object');
|
|
215
|
+
}
|
|
216
|
+
return value;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export function summarizeInspection(value) {
|
|
220
|
+
const hasInventory = Array.isArray(value.lspServers);
|
|
221
|
+
const status = hasInventory
|
|
222
|
+
? (value.lspServers.length === 0 ? 'unconfigured' : 'opaque')
|
|
223
|
+
: 'not-exposed';
|
|
224
|
+
const summary = {
|
|
225
|
+
status,
|
|
226
|
+
lspServerCount: hasInventory ? value.lspServers.length : null,
|
|
227
|
+
entries: hasInventory
|
|
228
|
+
? value.lspServers.slice(0, MAX_INSPECTION_ENTRIES).map((entry, index) => ({
|
|
229
|
+
index,
|
|
230
|
+
keys: entry && typeof entry === 'object' && !Array.isArray(entry)
|
|
231
|
+
? Object.keys(entry).sort().slice(0, MAX_INSPECTION_KEYS)
|
|
232
|
+
: [],
|
|
233
|
+
}))
|
|
234
|
+
: [],
|
|
235
|
+
};
|
|
236
|
+
if (typeof value.grokVersion === 'string' && value.grokVersion.length <= 128) summary.grokVersion = value.grokVersion;
|
|
237
|
+
if (typeof value.projectRoot === 'string' && value.projectRoot.length <= 4_096) summary.projectRoot = value.projectRoot;
|
|
238
|
+
if (value.projectRoot === null) summary.projectRoot = null;
|
|
239
|
+
if (typeof value.projectTrusted === 'boolean') summary.projectTrusted = value.projectTrusted;
|
|
240
|
+
return summary;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export function inspectProject(project, options = {}) {
|
|
244
|
+
const result = runGrokInspect(project, options);
|
|
245
|
+
return summarizeInspection(parseInspection(result));
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export function hostStatusMessage(summary) {
|
|
249
|
+
if (summary.status === 'unconfigured') {
|
|
250
|
+
return 'Grok Build reported no language-server entries; no direct diagnostics transport is exposed; use compiler, linter, or tests.';
|
|
251
|
+
}
|
|
252
|
+
if (summary.status === 'opaque') {
|
|
253
|
+
return 'Grok Build reported opaque host language-server entries, but no documented diagnostic transport is exposed.';
|
|
254
|
+
}
|
|
255
|
+
if (summary.status === 'not-exposed') {
|
|
256
|
+
return 'Grok Build does not expose a language-server inventory; use compiler, linter, or tests.';
|
|
257
|
+
}
|
|
258
|
+
return 'Grok Build language-server inspection failed; no diagnostics were attempted.';
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
export function coverageForExtensions(extensions, summary) {
|
|
262
|
+
return extensions.map(({ extension, files }) => ({
|
|
263
|
+
extension,
|
|
264
|
+
files,
|
|
265
|
+
status: summary.status,
|
|
266
|
+
message: hostStatusMessage(summary),
|
|
267
|
+
}));
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export function ensureFileInProject(file, project) {
|
|
271
|
+
const suffix = relative(project, file);
|
|
272
|
+
const parentPrefix = `..${sep}`;
|
|
273
|
+
if (!suffix || isAbsolute(suffix) || suffix === '..' || suffix.startsWith(parentPrefix)) {
|
|
274
|
+
fail('GROK_FILE_OUTSIDE_PROJECT', `${file} is not below ${project}`);
|
|
275
|
+
}
|
|
276
|
+
return file;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export function cliExitCode(error, fallback = 1) {
|
|
280
|
+
if (error?.code === 'CLI_ARGUMENT_INVALID' || error?.code === 'GROK_PROJECT_INVALID'
|
|
281
|
+
|| error?.code === 'GROK_FILE_INVALID' || error?.code === 'GROK_FILE_OUTSIDE_PROJECT') return 2;
|
|
282
|
+
return fallback;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export function isDirectInvocation(moduleUrl = import.meta.url) {
|
|
286
|
+
if (!process.argv[1]) return false;
|
|
287
|
+
try {
|
|
288
|
+
return fileURLToPath(moduleUrl) === realpathSync(resolve(process.argv[1]));
|
|
289
|
+
} catch {
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function main() {
|
|
295
|
+
try {
|
|
296
|
+
const options = parseOptions(process.argv.slice(2));
|
|
297
|
+
const project = assertProjectDirectory(options.project ?? process.cwd());
|
|
298
|
+
const summary = inspectProject(project, options);
|
|
299
|
+
const report = { ...summary, message: hostStatusMessage(summary) };
|
|
300
|
+
if (options.json) process.stdout.write(`${JSON.stringify(report)}\n`);
|
|
301
|
+
else process.stdout.write(`PASS status=${summary.status} lspServers=${summary.lspServerCount ?? 'not-exposed'}\n${report.message}\n`);
|
|
302
|
+
process.exitCode = 0;
|
|
303
|
+
} catch (error) {
|
|
304
|
+
process.stderr.write(`${error?.code ?? 'GROK_INSPECT_FAILED'}: ${error?.message ?? String(error)}\n`);
|
|
305
|
+
process.exitCode = cliExitCode(error);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
if (isDirectInvocation()) main();
|