@litfamily/litopencode 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/.gitattributes +8 -0
- package/ATTRIBUTION.md +56 -0
- package/CHANGELOG.md +267 -0
- package/CODE_OF_CONDUCT.md +30 -0
- package/CONTRIBUTING.md +82 -0
- package/LICENSE +21 -0
- package/README-Ko-KR.md +252 -0
- package/README.md +252 -0
- package/SECURITY.md +36 -0
- package/SUPPORT.md +37 -0
- package/bin/litopencode +3 -0
- package/bin/litopencode.cjs +10 -0
- package/dist/activation-managed-prompts.d.ts +2 -0
- package/dist/activation-managed-prompts.js +51 -0
- package/dist/activation-primary-prompts.d.ts +2 -0
- package/dist/activation-primary-prompts.js +176 -0
- package/dist/activation-probe.d.ts +3 -0
- package/dist/activation-probe.js +19 -0
- package/dist/activation-prompt-utils.d.ts +6 -0
- package/dist/activation-prompt-utils.js +36 -0
- package/dist/activation-routing.d.ts +5 -0
- package/dist/activation-routing.js +340 -0
- package/dist/activation-workflow-prompts.d.ts +26 -0
- package/dist/activation-workflow-prompts.js +295 -0
- package/dist/activation.d.ts +24 -0
- package/dist/activation.js +152 -0
- package/dist/agents/defaults.d.ts +15 -0
- package/dist/agents/defaults.js +112 -0
- package/dist/agents/registry.d.ts +65 -0
- package/dist/agents/registry.js +319 -0
- package/dist/agents/specialists.d.ts +49 -0
- package/dist/agents/specialists.js +307 -0
- package/dist/agents/types.d.ts +55 -0
- package/dist/agents/types.js +4 -0
- package/dist/agents.d.ts +4 -0
- package/dist/agents.js +3 -0
- package/dist/benchmark.d.ts +94 -0
- package/dist/benchmark.js +172 -0
- package/dist/bounded-authority-hooks.d.ts +19 -0
- package/dist/bounded-authority-hooks.js +157 -0
- package/dist/bounded-authority.d.ts +184 -0
- package/dist/bounded-authority.js +825 -0
- package/dist/cache-metrics.d.ts +54 -0
- package/dist/cache-metrics.js +81 -0
- package/dist/cli/args.d.ts +5 -0
- package/dist/cli/args.js +415 -0
- package/dist/cli/auto-update.d.ts +117 -0
- package/dist/cli/auto-update.js +604 -0
- package/dist/cli/command-alias-ownership.d.ts +2 -0
- package/dist/cli/command-alias-ownership.js +14 -0
- package/dist/cli/command-aliases.d.ts +12 -0
- package/dist/cli/command-aliases.js +112 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.js +175 -0
- package/dist/cli/host-capabilities.d.ts +12 -0
- package/dist/cli/host-capabilities.js +25 -0
- package/dist/cli/host-limits.d.ts +21 -0
- package/dist/cli/host-limits.js +83 -0
- package/dist/cli/install-config.d.ts +13 -0
- package/dist/cli/install-config.js +201 -0
- package/dist/cli/install-report.d.ts +2 -0
- package/dist/cli/install-report.js +180 -0
- package/dist/cli/install-tui.d.ts +12 -0
- package/dist/cli/install-tui.js +174 -0
- package/dist/cli/install.d.ts +2 -0
- package/dist/cli/install.js +264 -0
- package/dist/cli/json.d.ts +4 -0
- package/dist/cli/json.js +31 -0
- package/dist/cli/loop.d.ts +3 -0
- package/dist/cli/loop.js +135 -0
- package/dist/cli/lsp-capability.d.ts +17 -0
- package/dist/cli/lsp-capability.js +92 -0
- package/dist/cli/managed-skill-assets.d.ts +23 -0
- package/dist/cli/managed-skill-assets.js +117 -0
- package/dist/cli/model-catalog.d.ts +21 -0
- package/dist/cli/model-catalog.js +107 -0
- package/dist/cli/model-policy.d.ts +3 -0
- package/dist/cli/model-policy.js +143 -0
- package/dist/cli/model-routing.d.ts +5 -0
- package/dist/cli/model-routing.js +208 -0
- package/dist/cli/native-canonical-backup.d.ts +9 -0
- package/dist/cli/native-canonical-backup.js +96 -0
- package/dist/cli/native-canonical-cache.d.ts +9 -0
- package/dist/cli/native-canonical-cache.js +37 -0
- package/dist/cli/native-skill-install.d.ts +2 -0
- package/dist/cli/native-skill-install.js +128 -0
- package/dist/cli/native-skill-integrity.d.ts +25 -0
- package/dist/cli/native-skill-integrity.js +178 -0
- package/dist/cli/native-skill-tree.d.ts +12 -0
- package/dist/cli/native-skill-tree.js +104 -0
- package/dist/cli/native-skills.d.ts +22 -0
- package/dist/cli/native-skills.js +105 -0
- package/dist/cli/plugin-mutation.d.ts +4 -0
- package/dist/cli/plugin-mutation.js +89 -0
- package/dist/cli/scientific-visualization-dependencies.d.ts +18 -0
- package/dist/cli/scientific-visualization-dependencies.js +91 -0
- package/dist/cli/skill-loop.d.ts +3 -0
- package/dist/cli/skill-loop.js +649 -0
- package/dist/cli/types.d.ts +188 -0
- package/dist/cli/types.js +1 -0
- package/dist/cli/update-check.d.ts +2 -0
- package/dist/cli/update-check.js +15 -0
- package/dist/cli/update-notifier.d.ts +70 -0
- package/dist/cli/update-notifier.js +717 -0
- package/dist/cli/vendor-path-migration.d.ts +9 -0
- package/dist/cli/vendor-path-migration.js +96 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +250 -0
- package/dist/commands.d.ts +331 -0
- package/dist/commands.js +600 -0
- package/dist/config-parser.d.ts +5 -0
- package/dist/config-parser.js +274 -0
- package/dist/config.d.ts +72 -0
- package/dist/config.js +157 -0
- package/dist/deliverable-hedge-guard.d.ts +26 -0
- package/dist/deliverable-hedge-guard.js +302 -0
- package/dist/durable-plan.d.ts +23 -0
- package/dist/durable-plan.js +349 -0
- package/dist/features.d.ts +828 -0
- package/dist/features.js +1109 -0
- package/dist/hooks.d.ts +17 -0
- package/dist/hooks.js +83 -0
- package/dist/ignition.d.ts +14 -0
- package/dist/ignition.js +33 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +30 -0
- package/dist/inert-data.d.ts +2 -0
- package/dist/inert-data.js +13 -0
- package/dist/knowledge.d.ts +98 -0
- package/dist/knowledge.js +961 -0
- package/dist/ledger.d.ts +181 -0
- package/dist/ledger.js +1179 -0
- package/dist/lit-fetch-classify.d.ts +8 -0
- package/dist/lit-fetch-classify.js +107 -0
- package/dist/lit-fetch-content.d.ts +2 -0
- package/dist/lit-fetch-content.js +43 -0
- package/dist/lit-fetch-http.d.ts +10 -0
- package/dist/lit-fetch-http.js +82 -0
- package/dist/lit-fetch-result.d.ts +2 -0
- package/dist/lit-fetch-result.js +65 -0
- package/dist/lit-fetch-ssrf.d.ts +9 -0
- package/dist/lit-fetch-ssrf.js +77 -0
- package/dist/lit-fetch-url.d.ts +3 -0
- package/dist/lit-fetch-url.js +28 -0
- package/dist/lit-fetch.d.ts +69 -0
- package/dist/lit-fetch.js +84 -0
- package/dist/lit-mark.d.ts +17 -0
- package/dist/lit-mark.js +129 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.js +21 -0
- package/dist/model-route-policy.d.ts +25 -0
- package/dist/model-route-policy.js +129 -0
- package/dist/reader-facing-output.d.ts +3 -0
- package/dist/reader-facing-output.js +28 -0
- package/dist/rules/discovery.d.ts +36 -0
- package/dist/rules/discovery.js +270 -0
- package/dist/rules/engine.d.ts +43 -0
- package/dist/rules/engine.js +236 -0
- package/dist/rules/frontmatter.d.ts +16 -0
- package/dist/rules/frontmatter.js +179 -0
- package/dist/rules/glob.d.ts +12 -0
- package/dist/rules/glob.js +233 -0
- package/dist/rules/hooks.d.ts +25 -0
- package/dist/rules/hooks.js +75 -0
- package/dist/rules/output-style.d.ts +1 -0
- package/dist/rules/output-style.js +20 -0
- package/dist/scientific-visualization-banner.d.ts +1 -0
- package/dist/scientific-visualization-banner.js +2 -0
- package/dist/search-workflow-ideas.d.ts +67 -0
- package/dist/search-workflow-ideas.js +128 -0
- package/dist/secret-shapes.d.ts +9 -0
- package/dist/secret-shapes.js +63 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +129 -0
- package/dist/session-lineage.d.ts +8 -0
- package/dist/session-lineage.js +12 -0
- package/dist/skill-loop/apply.d.ts +19 -0
- package/dist/skill-loop/apply.js +483 -0
- package/dist/skill-loop/config.d.ts +50 -0
- package/dist/skill-loop/config.js +215 -0
- package/dist/skill-loop/curator.d.ts +18 -0
- package/dist/skill-loop/curator.js +232 -0
- package/dist/skill-loop/ledger.d.ts +39 -0
- package/dist/skill-loop/ledger.js +344 -0
- package/dist/skill-loop/proposals.d.ts +48 -0
- package/dist/skill-loop/proposals.js +290 -0
- package/dist/skill-loop/storage.d.ts +72 -0
- package/dist/skill-loop/storage.js +817 -0
- package/dist/skill-loop/time.d.ts +2 -0
- package/dist/skill-loop/time.js +23 -0
- package/dist/skill-loop/transaction.d.ts +62 -0
- package/dist/skill-loop/transaction.js +836 -0
- package/dist/skill-loop/usage.d.ts +31 -0
- package/dist/skill-loop/usage.js +146 -0
- package/dist/skill-observer.d.ts +22 -0
- package/dist/skill-observer.js +1154 -0
- package/dist/skill-renames.d.ts +5 -0
- package/dist/skill-renames.js +8 -0
- package/dist/skills.d.ts +307 -0
- package/dist/skills.js +450 -0
- package/dist/stable-identity.d.ts +14 -0
- package/dist/stable-identity.js +15 -0
- package/dist/state.d.ts +25 -0
- package/dist/state.js +38 -0
- package/dist/strict-json.d.ts +2 -0
- package/dist/strict-json.js +94 -0
- package/dist/tool-guards.d.ts +34 -0
- package/dist/tool-guards.js +210 -0
- package/dist/tool-kit.d.ts +32 -0
- package/dist/tool-kit.js +75 -0
- package/dist/tools.d.ts +43 -0
- package/dist/tools.js +381 -0
- package/dist/uiux-visual-catalog.d.ts +50 -0
- package/dist/uiux-visual-catalog.js +103 -0
- package/dist/user-facing-markdown.d.ts +5 -0
- package/dist/user-facing-markdown.js +93 -0
- package/dist/workflow-families.d.ts +16 -0
- package/dist/workflow-families.js +95 -0
- package/docs/assets/cover.webp +0 -0
- package/docs/assets/litopencode-continuity-1600.webp +0 -0
- package/docs/assets/litopencode-ignition-1600.webp +0 -0
- package/docs/assets/readme/badge-license.svg +1 -0
- package/docs/assets/readme/badge-version.svg +1 -0
- package/docs/assets/readme/litopencode-clay-icon.png +0 -0
- package/docs/assets/readme/litopencode-wordmark.svg +5 -0
- package/docs/lit-mark.md +46 -0
- package/docs/migration.md +162 -0
- package/docs/privacy.md +82 -0
- package/docs/reference-Ko-KR.md +309 -0
- package/docs/reference.md +444 -0
- package/output-styles/asd-ste100-ko.md +41 -0
- package/output-styles/asd-ste100.md +40 -0
- package/output-styles/eli5-ko.md +13 -0
- package/output-styles/eli5.md +11 -0
- package/package.json +57 -0
- package/qa/fixtures/litfamily-harness-speed-v1.json +38 -0
- package/qa/harness-speed-contract.mjs +209 -0
- package/qa/harness-speed-v2-contract.mjs +213 -0
- package/qa/harness-speed-verdict.mjs +105 -0
- package/skills/agent-roster/SKILL.md +262 -0
- package/skills/autoconference/LICENSE +21 -0
- package/skills/autoconference/PROVENANCE.md +20 -0
- package/skills/autoconference/SKILL.md +125 -0
- package/skills/autoconference/assets/conference_template.md +76 -0
- package/skills/autoconference/assets/report_template.md +53 -0
- package/skills/autoconference/assets/synthesis_template.md +39 -0
- package/skills/autoconference/modes/analyze.md +255 -0
- package/skills/autoconference/modes/core.md +112 -0
- package/skills/autoconference/modes/debate.md +373 -0
- package/skills/autoconference/modes/plan.md +310 -0
- package/skills/autoconference/modes/resume.md +48 -0
- package/skills/autoconference/modes/ship.md +57 -0
- package/skills/autoconference/modes/survey.md +109 -0
- package/skills/autoconference/references/agent-prompts.md +134 -0
- package/skills/autoconference/references/conference-protocol.md +102 -0
- package/skills/autoconference/references/convergence-guide.md +167 -0
- package/skills/autoconference/references/core-principles.md +83 -0
- package/skills/autoconference/references/crash-recovery.md +104 -0
- package/skills/autoconference/references/results-logging.md +198 -0
- package/skills/autoconference/references/upstream-family-contract.md +130 -0
- package/skills/autoconference/references/visualization-guide.md +105 -0
- package/skills/autoconference/scripts/check_conference.sh +371 -0
- package/skills/autoconference/scripts/init_conference.py +625 -0
- package/skills/autoconference/scripts/style_presets.py +104 -0
- package/skills/autoresearch/LICENSE +21 -0
- package/skills/autoresearch/PROVENANCE.md +20 -0
- package/skills/autoresearch/SKILL.md +131 -0
- package/skills/autoresearch/assets/report_template.md +50 -0
- package/skills/autoresearch/assets/research_template.md +38 -0
- package/skills/autoresearch/assets/results_template.tsv +1 -0
- package/skills/autoresearch/modes/core.md +216 -0
- package/skills/autoresearch/modes/debug.md +235 -0
- package/skills/autoresearch/modes/fix.md +173 -0
- package/skills/autoresearch/modes/learn.md +91 -0
- package/skills/autoresearch/modes/plan.md +291 -0
- package/skills/autoresearch/modes/predict.md +266 -0
- package/skills/autoresearch/modes/reason.md +170 -0
- package/skills/autoresearch/modes/scenario.md +164 -0
- package/skills/autoresearch/modes/security.md +282 -0
- package/skills/autoresearch/modes/ship.md +49 -0
- package/skills/autoresearch/references/core-principles.md +80 -0
- package/skills/autoresearch/references/evaluator-contract.md +126 -0
- package/skills/autoresearch/references/investigation-techniques.md +205 -0
- package/skills/autoresearch/references/owasp-checklist.md +161 -0
- package/skills/autoresearch/references/persona-templates.md +232 -0
- package/skills/autoresearch/references/results-logging.md +96 -0
- package/skills/autoresearch/references/scenario-dimensions.md +178 -0
- package/skills/autoresearch/references/stride-model.md +196 -0
- package/skills/autoresearch/references/stuck-detection.md +107 -0
- package/skills/autoresearch/references/type-checklists.md +163 -0
- package/skills/autoresearch/references/upstream-family-contract.md +125 -0
- package/skills/autoresearch/references/visualization-guide.md +95 -0
- package/skills/autoresearch/scripts/check_progress.sh +272 -0
- package/skills/autoresearch/scripts/init_research.py +330 -0
- package/skills/autoresearch/scripts/run_with_deadline.py +164 -0
- package/skills/autoresearch/scripts/style_presets.py +104 -0
- package/skills/browser-drive/SKILL.md +133 -0
- package/skills/browser-drive/references/snapshot-act-loop.md +37 -0
- package/skills/browser-drive/scripts/capability-probe.mjs +262 -0
- package/skills/comment-checker/SKILL.md +171 -0
- package/skills/debugging/SKILL.md +202 -0
- package/skills/debugging/references/README.md +15 -0
- package/skills/debugging/references/escalation.md +43 -0
- package/skills/debugging/references/runtimes/README.md +17 -0
- package/skills/debugging/references/runtimes/bundled-js-binary.md +44 -0
- package/skills/debugging/references/runtimes/go.md +37 -0
- package/skills/debugging/references/runtimes/native-binary.md +44 -0
- package/skills/debugging/references/runtimes/node.md +43 -0
- package/skills/debugging/references/runtimes/python.md +41 -0
- package/skills/debugging/references/runtimes/rust.md +37 -0
- package/skills/debugging/references/tools.md +72 -0
- package/skills/deep-interview/SKILL.md +201 -0
- package/skills/doctor-installer/SKILL.md +252 -0
- package/skills/durable-litgoal/SKILL.md +248 -0
- package/skills/frontend-ui-ux/SKILL.md +70 -0
- package/skills/frontend-ui-ux/data/LICENSE +21 -0
- package/skills/frontend-ui-ux/data/PROVENANCE.json +1088 -0
- package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +14 -0
- package/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +867 -0
- package/skills/frontend-ui-ux/references/adaptive-layout.md +85 -0
- package/skills/frontend-ui-ux/references/brand-and-imagery.md +79 -0
- package/skills/frontend-ui-ux/references/complete-contract.md +282 -0
- package/skills/frontend-ui-ux/references/composition.md +87 -0
- package/skills/frontend-ui-ux/references/creative-directions.md +83 -0
- package/skills/frontend-ui-ux/references/design/README.md +248 -0
- package/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
- package/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
- package/skills/frontend-ui-ux/references/design/airtable.md +92 -0
- package/skills/frontend-ui-ux/references/design/apple.md +250 -0
- package/skills/frontend-ui-ux/references/design/aside.md +209 -0
- package/skills/frontend-ui-ux/references/design/binance.md +348 -0
- package/skills/frontend-ui-ux/references/design/bmw.md +183 -0
- package/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
- package/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
- package/skills/frontend-ui-ux/references/design/cal.md +262 -0
- package/skills/frontend-ui-ux/references/design/claude.md +315 -0
- package/skills/frontend-ui-ux/references/design/clay.md +307 -0
- package/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
- package/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
- package/skills/frontend-ui-ux/references/design/cohere.md +269 -0
- package/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
- package/skills/frontend-ui-ux/references/design/composio.md +310 -0
- package/skills/frontend-ui-ux/references/design/cursor.md +312 -0
- package/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
- package/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
- package/skills/frontend-ui-ux/references/design/expo.md +284 -0
- package/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
- package/skills/frontend-ui-ux/references/design/figma.md +223 -0
- package/skills/frontend-ui-ux/references/design/framer.md +249 -0
- package/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
- package/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
- package/skills/frontend-ui-ux/references/design/ibm.md +335 -0
- package/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
- package/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
- package/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
- package/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
- package/skills/frontend-ui-ux/references/design/intercom.md +149 -0
- package/skills/frontend-ui-ux/references/design/kraken.md +128 -0
- package/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
- package/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
- package/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
- package/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
- package/skills/frontend-ui-ux/references/design/lovable.md +301 -0
- package/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
- package/skills/frontend-ui-ux/references/design/meta.md +369 -0
- package/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
- package/skills/frontend-ui-ux/references/design/minimax.md +260 -0
- package/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
- package/skills/frontend-ui-ux/references/design/miro.md +111 -0
- package/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
- package/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
- package/skills/frontend-ui-ux/references/design/nike.md +366 -0
- package/skills/frontend-ui-ux/references/design/notion.md +312 -0
- package/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
- package/skills/frontend-ui-ux/references/design/ollama.md +270 -0
- package/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
- package/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
- package/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
- package/skills/frontend-ui-ux/references/design/playstation.md +367 -0
- package/skills/frontend-ui-ux/references/design/posthog.md +259 -0
- package/skills/frontend-ui-ux/references/design/raycast.md +271 -0
- package/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
- package/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
- package/skills/frontend-ui-ux/references/design/renault.md +314 -0
- package/skills/frontend-ui-ux/references/design/replicate.md +264 -0
- package/skills/frontend-ui-ux/references/design/resend.md +306 -0
- package/skills/frontend-ui-ux/references/design/revolut.md +188 -0
- package/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
- package/skills/frontend-ui-ux/references/design/sanity.md +360 -0
- package/skills/frontend-ui-ux/references/design/sentry.md +265 -0
- package/skills/frontend-ui-ux/references/design/shopify.md +353 -0
- package/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
- package/skills/frontend-ui-ux/references/design/spacex.md +197 -0
- package/skills/frontend-ui-ux/references/design/spotify.md +249 -0
- package/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
- package/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
- package/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
- package/skills/frontend-ui-ux/references/design/stripe.md +325 -0
- package/skills/frontend-ui-ux/references/design/supabase.md +258 -0
- package/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
- package/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
- package/skills/frontend-ui-ux/references/design/tesla.md +289 -0
- package/skills/frontend-ui-ux/references/design/theverge.md +342 -0
- package/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
- package/skills/frontend-ui-ux/references/design/uber.md +298 -0
- package/skills/frontend-ui-ux/references/design/vercel.md +313 -0
- package/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
- package/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
- package/skills/frontend-ui-ux/references/design/warp.md +256 -0
- package/skills/frontend-ui-ux/references/design/webflow.md +95 -0
- package/skills/frontend-ui-ux/references/design/wired.md +281 -0
- package/skills/frontend-ui-ux/references/design/wise.md +176 -0
- package/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
- package/skills/frontend-ui-ux/references/design/zapier.md +331 -0
- package/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
- package/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
- package/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
- package/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
- package/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
- package/skills/frontend-ui-ux/references/evidence-review.md +103 -0
- package/skills/frontend-ui-ux/references/implementation-platforms.md +94 -0
- package/skills/frontend-ui-ux/references/inclusive-interface.md +85 -0
- package/skills/frontend-ui-ux/references/interaction-motion.md +93 -0
- package/skills/frontend-ui-ux/references/operating-lanes.md +80 -0
- package/skills/frontend-ui-ux/references/perfection/README.md +160 -0
- package/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
- package/skills/frontend-ui-ux/references/performance-delivery.md +77 -0
- package/skills/frontend-ui-ux/references/product-direction.md +84 -0
- package/skills/frontend-ui-ux/references/redesign-playbook.md +88 -0
- package/skills/frontend-ui-ux/references/system-foundations.md +86 -0
- package/skills/frontend-ui-ux/references/taste-direction.md +55 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
- package/skills/frontend-ui-ux/references/visual-language.md +84 -0
- package/skills/frontend-ui-ux/references/visual-reconstruction.md +87 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.json +570 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1beta1.json +32 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1beta2.json +34 -0
- package/skills/frontend-ui-ux/scripts/bounded-json.mjs +45 -0
- package/skills/frontend-ui-ux/scripts/canonical-json.mjs +26 -0
- package/skills/frontend-ui-ux/scripts/contract-error.mjs +15 -0
- package/skills/frontend-ui-ux/scripts/csv.mjs +64 -0
- package/skills/frontend-ui-ux/scripts/dataset.mjs +65 -0
- package/skills/frontend-ui-ux/scripts/design-contract.mjs +609 -0
- package/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +193 -0
- package/skills/frontend-ui-ux/scripts/retrieval.mjs +92 -0
- package/skills/frontend-ui-ux/scripts/stable-file-read.mjs +237 -0
- package/skills/frontend-ui-ux/scripts/stdin-json.mjs +16 -0
- package/skills/frontend-ui-ux/scripts/strict-json.mjs +102 -0
- package/skills/frontend-ui-ux/scripts/uiux.mjs +86 -0
- package/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +266 -0
- package/skills/lit-burnoff/SKILL.md +227 -0
- package/skills/lit-burnoff-file/SKILL.md +175 -0
- package/skills/lit-code/SKILL.md +266 -0
- package/skills/lit-code/references/README.md +18 -0
- package/skills/lit-code/references/go/README.md +12 -0
- package/skills/lit-code/references/go/concurrency.md +42 -0
- package/skills/lit-code/references/go/error-handling.md +47 -0
- package/skills/lit-code/references/go/testing.md +55 -0
- package/skills/lit-code/references/go/tooling.md +35 -0
- package/skills/lit-code/references/go/type-patterns.md +50 -0
- package/skills/lit-code/references/python/README.md +12 -0
- package/skills/lit-code/references/python/async.md +50 -0
- package/skills/lit-code/references/python/error-handling.md +44 -0
- package/skills/lit-code/references/python/testing.md +50 -0
- package/skills/lit-code/references/python/tooling.md +38 -0
- package/skills/lit-code/references/python/type-patterns.md +46 -0
- package/skills/lit-code/references/rust/README.md +12 -0
- package/skills/lit-code/references/rust/concurrency.md +45 -0
- package/skills/lit-code/references/rust/error-handling.md +43 -0
- package/skills/lit-code/references/rust/tooling.md +36 -0
- package/skills/lit-code/references/rust/type-patterns.md +46 -0
- package/skills/lit-code/references/rust/unsafe.md +47 -0
- package/skills/lit-code/references/typescript/README.md +11 -0
- package/skills/lit-code/references/typescript/error-handling.md +56 -0
- package/skills/lit-code/references/typescript/testing.md +42 -0
- package/skills/lit-code/references/typescript/tsconfig-strict.md +40 -0
- package/skills/lit-code/references/typescript/type-patterns.md +60 -0
- package/skills/lit-commit/SKILL.md +222 -0
- package/skills/lit-comprehend/SKILL.md +278 -0
- package/skills/lit-comprehend/assets/explainer-scaffold.html +104 -0
- package/skills/lit-comprehend/references/artifact-template.md +114 -0
- package/skills/lit-comprehend/references/micro-worlds.md +115 -0
- package/skills/lit-comprehend/scripts/verify-explainer.ts +339 -0
- package/skills/lit-crucible/SKILL.md +212 -0
- package/skills/lit-fetch/SKILL.md +242 -0
- package/skills/lit-handoff/SKILL.md +199 -0
- package/skills/lit-init/SKILL.md +214 -0
- package/skills/lit-korean/SKILL.md +231 -0
- package/skills/lit-plan/SKILL.md +351 -0
- package/skills/lit-plan/scripts/scaffold-plan.mjs +275 -0
- package/skills/lit-recap/SKILL.md +233 -0
- package/skills/lit-scientific-visualization/SKILL.md +175 -0
- package/skills/litresearch/SKILL.md +436 -0
- package/skills/litwork/SKILL.md +227 -0
- package/skills/lsp/SKILL.md +186 -0
- package/skills/lsp-setup/SKILL.md +187 -0
- package/skills/lsp-setup/references/README.md +40 -0
- package/skills/lsp-setup/references/bash.md +31 -0
- package/skills/lsp-setup/references/c-cpp.md +43 -0
- package/skills/lsp-setup/references/csharp.md +29 -0
- package/skills/lsp-setup/references/dart.md +25 -0
- package/skills/lsp-setup/references/elixir.md +30 -0
- package/skills/lsp-setup/references/go.md +33 -0
- package/skills/lsp-setup/references/haskell.md +27 -0
- package/skills/lsp-setup/references/java.md +28 -0
- package/skills/lsp-setup/references/julia.md +28 -0
- package/skills/lsp-setup/references/kotlin.md +25 -0
- package/skills/lsp-setup/references/lua.md +26 -0
- package/skills/lsp-setup/references/php.md +30 -0
- package/skills/lsp-setup/references/python.md +33 -0
- package/skills/lsp-setup/references/ruby.md +34 -0
- package/skills/lsp-setup/references/rust.md +34 -0
- package/skills/lsp-setup/references/swift.md +26 -0
- package/skills/lsp-setup/references/terraform.md +26 -0
- package/skills/lsp-setup/references/typescript.md +35 -0
- package/skills/lsp-setup/references/yaml.md +27 -0
- package/skills/lsp-setup/references/zig.md +28 -0
- package/skills/managed-skill-manifest.json +1386 -0
- package/skills/native-goal-verdict/SKILL.md +216 -0
- package/skills/refactor/SKILL.md +221 -0
- package/skills/reference-benchmark-claims/SKILL.md +204 -0
- package/skills/release-guardrails/SKILL.md +245 -0
- package/skills/review-work/SKILL.md +301 -0
- package/skills/rules/SKILL.md +196 -0
- package/skills/search-workflow-ideas/SKILL.md +223 -0
- package/skills/skill-observer/SKILL.md +148 -0
- package/skills/skill-observer/references/review-contract.md +95 -0
- package/skills/skill-rename-aliases.json +10 -0
- package/skills/start-work/SKILL.md +334 -0
- package/skills/structural-search/SKILL.md +234 -0
- package/skills/tool-guards/SKILL.md +223 -0
- package/skills/visual-qa/SKILL.md +61 -0
- package/skills/visual-qa/references/capture-playbook.md +105 -0
- package/skills/visual-qa/references/complete-contract.md +411 -0
- package/skills/visual-qa/schemas/evidence-manifest-v1alpha1.json +201 -0
- package/skills/visual-qa/schemas/evidence-manifest-v1beta1.json +141 -0
- package/skills/visual-qa/schemas/review-receipt-v1alpha1.json +113 -0
- package/skills/visual-qa/scripts/artifact.mjs +123 -0
- package/skills/visual-qa/scripts/bounded-json.mjs +47 -0
- package/skills/visual-qa/scripts/canonical-json.mjs +28 -0
- package/skills/visual-qa/scripts/capabilities.mjs +66 -0
- package/skills/visual-qa/scripts/contract-text.mjs +15 -0
- package/skills/visual-qa/scripts/design-contract.mjs +611 -0
- package/skills/visual-qa/scripts/evidence-evaluate.mjs +521 -0
- package/skills/visual-qa/scripts/evidence.mjs +271 -0
- package/skills/visual-qa/scripts/png-decode.mjs +146 -0
- package/skills/visual-qa/scripts/png.mjs +154 -0
- package/skills/visual-qa/scripts/review.mjs +188 -0
- package/skills/visual-qa/scripts/stdin-json.mjs +16 -0
- package/skills/visual-qa/scripts/strict-json.mjs +102 -0
- package/skills/visual-qa/scripts/tui.mjs +149 -0
- package/skills/visual-qa/scripts/visual-qa.mjs +90 -0
- package/skills/wikify/LICENSE +21 -0
- package/skills/wikify/PROVENANCE.md +18 -0
- package/skills/wikify/SKILL.md +176 -0
- package/skills/wikify/assets/home-template.md +44 -0
- package/skills/wikify/assets/maintenance-report-template.md +46 -0
- package/skills/wikify/assets/paper-source-note-template.md +137 -0
- package/skills/wikify/assets/source-note-template.md +45 -0
- package/skills/wikify/assets/wiki-rules-template.md +117 -0
- package/skills/wikify/modes/ingest.md +57 -0
- package/skills/wikify/modes/init.md +44 -0
- package/skills/wikify/modes/lint.md +60 -0
- package/skills/wikify/modes/query.md +38 -0
- package/skills/wikify/modes/save.md +45 -0
- package/skills/wikify/references-upstream-contract.md +758 -0
- package/skills/workflow-loop/SKILL.md +387 -0
- package/tools/check-pack-payload.mjs +410 -0
- package/tools/check-payload-substance.mjs +738 -0
- package/tools/check-version-lockstep.mjs +238 -0
- package/tools/gen-canonical-frontend-manifest.mjs +66 -0
- package/tools/gen-managed-skill-manifest.mjs +135 -0
- package/tools/harness-speed-local.mjs +261 -0
- package/tools/payload-reference-exemptions.json +49 -0
- package/tools/payload-substance-allowlist.json +46 -0
- package/tools/payload-substance-parity.json +571 -0
- package/tools/qa-real-surface-fixtures.mjs +428 -0
- package/tools/qa-real-surface-harness.mjs +173 -0
- package/tools/run-behavior-replacement-probes.mjs +296 -0
- package/tools/run-build.mjs +101 -0
- package/tools/run-harness-speed-local.mjs +52 -0
- package/tools/run-harness-speed-v2.mjs +36 -0
- package/tools/run-installed-resource-tamper-probe.mjs +62 -0
- package/tools/run-negative-gate-matrix.mjs +516 -0
- package/tools/run-rules-glob-differential.mjs +232 -0
- package/tools/run-typecheck.mjs +25 -0
- package/tools/run-uiux-visual-qa-scenarios.mjs +234 -0
- package/tools/run-wikify-surface-probe.mjs +170 -0
- package/tools/scan-legacy-tokens.mjs +431 -0
- package/tools/version-manifests.json +60 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +13 -0
- package/vendor/NOTICE.md +21 -0
- package/vendor/handoff/SKILL.md +199 -0
- package/vendor/handoff/evals/evals.json +154 -0
- package/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/vendor/handoff/templates/HANDOFF.md +121 -0
- package/vendor/licenses/022_handoff-MIT.txt +21 -0
- package/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/vendor/provenance/022_handoff.md +19 -0
- package/vendor/provenance/045_scientific-visualization.md +36 -0
- package/vendor/scientific-visualization/SKILL.md +283 -0
- package/vendor/scientific-visualization/assets/color_palettes.py +197 -0
- package/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
- package/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
- package/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
- package/vendor/scientific-visualization/evals/evals.json +158 -0
- package/vendor/scientific-visualization/references/color_palettes.md +380 -0
- package/vendor/scientific-visualization/references/journal_requirements.md +359 -0
- package/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
- package/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
- package/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/vendor/scientific-visualization/scripts/figure_export.py +238 -0
- package/vendor/scientific-visualization/scripts/style_presets.py +467 -0
- package/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
- package/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const legacyVendorPaths: readonly [{
|
|
2
|
+
readonly legacy: "022_handoff";
|
|
3
|
+
readonly canonical: "handoff";
|
|
4
|
+
}, {
|
|
5
|
+
readonly legacy: "045_scientific-visualization";
|
|
6
|
+
readonly canonical: "scientific-visualization";
|
|
7
|
+
}];
|
|
8
|
+
/** Move only pristine, manifest-owned numbered vendor roots to their canonical names. */
|
|
9
|
+
export declare function migrateLegacyVendorPaths(sourceRoot: string, targetRoot: string): Promise<void>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { assertContained, assertPathComponentsSafe } from "./native-skill-tree.js";
|
|
5
|
+
export const legacyVendorPaths = [
|
|
6
|
+
{ legacy: "022_handoff", canonical: "handoff" },
|
|
7
|
+
{ legacy: "045_scientific-visualization", canonical: "scientific-visualization" },
|
|
8
|
+
];
|
|
9
|
+
/** Move only pristine, manifest-owned numbered vendor roots to their canonical names. */
|
|
10
|
+
export async function migrateLegacyVendorPaths(sourceRoot, targetRoot) {
|
|
11
|
+
await requireDirectory(sourceRoot, "Vendor migration source");
|
|
12
|
+
await requireDirectory(targetRoot, "Vendor migration target");
|
|
13
|
+
const source = path.resolve(sourceRoot);
|
|
14
|
+
const target = path.resolve(targetRoot);
|
|
15
|
+
const moves = [];
|
|
16
|
+
for (const { legacy, canonical } of legacyVendorPaths) {
|
|
17
|
+
const sourcePath = path.join(source, canonical);
|
|
18
|
+
const legacyPath = path.join(target, legacy);
|
|
19
|
+
const canonicalPath = path.join(target, canonical);
|
|
20
|
+
await assertPathComponentsSafe(source, sourcePath, `Vendor source ${canonical}`);
|
|
21
|
+
await assertPathComponentsSafe(target, legacyPath, `Legacy vendor ${legacy}`);
|
|
22
|
+
await assertPathComponentsSafe(target, canonicalPath, `Canonical vendor ${canonical}`);
|
|
23
|
+
const sourceStat = await lstatIfPresent(sourcePath);
|
|
24
|
+
if (sourceStat === null || sourceStat.isSymbolicLink() || !sourceStat.isDirectory()) {
|
|
25
|
+
throw new Error(`Unsafe or missing canonical vendor source: ${canonical}`);
|
|
26
|
+
}
|
|
27
|
+
const legacyStat = await lstatIfPresent(legacyPath);
|
|
28
|
+
if (legacyStat === null)
|
|
29
|
+
continue;
|
|
30
|
+
if (legacyStat.isSymbolicLink() || !legacyStat.isDirectory()) {
|
|
31
|
+
throw new Error(`Unsafe legacy vendor path: ${legacy}`);
|
|
32
|
+
}
|
|
33
|
+
if (await lstatIfPresent(canonicalPath) !== null) {
|
|
34
|
+
throw new Error(`Legacy and canonical vendor paths coexist: ${canonical}`);
|
|
35
|
+
}
|
|
36
|
+
const expected = await vendorTreeSignature(sourcePath);
|
|
37
|
+
const actual = await vendorTreeSignature(legacyPath);
|
|
38
|
+
if (!sameSignature(expected, actual)) {
|
|
39
|
+
throw new Error(`Legacy vendor path is modified, foreign, or incomplete: ${legacy}`);
|
|
40
|
+
}
|
|
41
|
+
moves.push([legacyPath, canonicalPath]);
|
|
42
|
+
}
|
|
43
|
+
for (const [legacyPath, canonicalPath] of moves)
|
|
44
|
+
await fs.rename(legacyPath, canonicalPath);
|
|
45
|
+
}
|
|
46
|
+
async function requireDirectory(directory, label) {
|
|
47
|
+
const stat = await fs.lstat(directory).catch((error) => {
|
|
48
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT")
|
|
49
|
+
return null;
|
|
50
|
+
throw error;
|
|
51
|
+
});
|
|
52
|
+
if (stat === null || stat.isSymbolicLink() || !stat.isDirectory())
|
|
53
|
+
throw new Error(`${label} is unsafe`);
|
|
54
|
+
}
|
|
55
|
+
async function lstatIfPresent(filePath) {
|
|
56
|
+
try {
|
|
57
|
+
return await fs.lstat(filePath);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT")
|
|
61
|
+
return null;
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function vendorTreeSignature(root) {
|
|
66
|
+
const entries = [];
|
|
67
|
+
const visit = async (directory, relativePath) => {
|
|
68
|
+
const directoryStat = await fs.lstat(directory);
|
|
69
|
+
if (directoryStat.isSymbolicLink() || !directoryStat.isDirectory()) {
|
|
70
|
+
throw new Error(`Unsupported vendor entry: ${relativePath || "."}`);
|
|
71
|
+
}
|
|
72
|
+
for (const entry of (await fs.readdir(directory, { withFileTypes: true })).sort((left, right) => left.name.localeCompare(right.name))) {
|
|
73
|
+
const child = path.join(directory, entry.name);
|
|
74
|
+
const childRelative = relativePath === "" ? entry.name : `${relativePath}/${entry.name}`;
|
|
75
|
+
const stat = await fs.lstat(child);
|
|
76
|
+
if (stat.isSymbolicLink())
|
|
77
|
+
throw new Error(`Unsafe vendor symlink: ${childRelative}`);
|
|
78
|
+
if (stat.isDirectory()) {
|
|
79
|
+
entries.push(`directory\0${childRelative}\0${stat.mode & 0o7777}`);
|
|
80
|
+
await visit(child, childRelative);
|
|
81
|
+
}
|
|
82
|
+
else if (stat.isFile()) {
|
|
83
|
+
const digest = createHash("sha256").update(await fs.readFile(child)).digest("hex");
|
|
84
|
+
entries.push(`file\0${childRelative}\0${digest}\0${stat.mode & 0o7777}`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw new Error(`Unsupported vendor entry: ${childRelative}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
await visit(root, "");
|
|
92
|
+
return entries.sort();
|
|
93
|
+
}
|
|
94
|
+
function sameSignature(left, right) {
|
|
95
|
+
return left.length === right.length && left.every((entry, index) => entry === right[index]);
|
|
96
|
+
}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CliResult, InstallProgress } from "./cli/types.ts";
|
|
2
|
+
type RunCliOptions = {
|
|
3
|
+
readonly installProgress?: InstallProgress;
|
|
4
|
+
};
|
|
5
|
+
export declare function runCli(argv?: readonly string[], options?: RunCliOptions): Promise<CliResult>;
|
|
6
|
+
export declare function main(argv?: readonly string[]): Promise<void>;
|
|
7
|
+
export {};
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { isLoopCommand, parseArgs } from "./cli/args.js";
|
|
2
|
+
import { runLoopCommand } from "./cli/loop.js";
|
|
3
|
+
import { doctor } from "./cli/doctor.js";
|
|
4
|
+
import { install } from "./cli/install.js";
|
|
5
|
+
import { createInstallTui, renderLitOpenCodeWordmark, shouldRenderInstallTui } from "./cli/install-tui.js";
|
|
6
|
+
import { runUpdateNotifier } from "./cli/update-notifier.js";
|
|
7
|
+
import { autoUpdateDiagnostic, canContinueAfterAutoUpdate, runInteractiveAutoUpdate } from "./cli/auto-update.js";
|
|
8
|
+
import { LitOpenCodeConfigError } from "./config.js";
|
|
9
|
+
import { fetchPublicSource } from "./lit-fetch.js";
|
|
10
|
+
import { runSkillCuratorCli, runSkillLoopCli } from "./cli/skill-loop.js";
|
|
11
|
+
import { readPackageMetadata } from "./cli/json.js";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { pathToFileURL } from "node:url";
|
|
14
|
+
function helpText() {
|
|
15
|
+
return [
|
|
16
|
+
"litopencode",
|
|
17
|
+
"",
|
|
18
|
+
"Install LitOpenCode into OpenCode with an explicit npm package.",
|
|
19
|
+
"",
|
|
20
|
+
"Quick start:",
|
|
21
|
+
" npm exec --package @litfamily/litopencode -- litopencode install",
|
|
22
|
+
" npm exec --package @litfamily/litopencode -- litopencode fetch-public https://example.com --json",
|
|
23
|
+
" npm exec --package @litfamily/litopencode -- litopencode install --permission-prompt",
|
|
24
|
+
" npm exec --package @litfamily/litopencode -- litopencode install --permission-mode balanced",
|
|
25
|
+
" npm exec --package @litfamily/litopencode -- litopencode install --yolo",
|
|
26
|
+
" npm exec --package @litfamily/litopencode -- litopencode install --provider openai --model gpt-6-astra --effort xhigh",
|
|
27
|
+
" npm exec --package @litfamily/litopencode -- litopencode install --provider openai --model gpt-5.6-luna --effort max",
|
|
28
|
+
" npm exec --package @litfamily/litopencode -- litopencode install --provider openai --model gpt-5.6-luna --effort high",
|
|
29
|
+
"",
|
|
30
|
+
"Usage:",
|
|
31
|
+
" litopencode install [--dry-run] [--root <dir>] --provider <openai|xai> --model <id> [--effort <e>] [--subagent-model <provider/id>] [--subagent-effort <e>] [--yolo]",
|
|
32
|
+
" litopencode install [--model-prompt | --no-model-prompt | --yes]",
|
|
33
|
+
" litopencode install [--permission-prompt | --no-permission-prompt] [--permission-mode <safe|balanced|yolo>]",
|
|
34
|
+
" litopencode install|doctor [--no-auto-update]",
|
|
35
|
+
" litopencode doctor [--json] [--root <dir>]",
|
|
36
|
+
" litopencode fetch-public <url> [--json] [--timeout <ms>] [--max-bytes <n>]",
|
|
37
|
+
" litopencode fetch-public <local-url> --json --allow-private-network # trusted fixtures only",
|
|
38
|
+
" litopencode skill-loop propose <file>|list|apply <id>|reject <id>|rollback <ledger-id>|review",
|
|
39
|
+
" litopencode skill-curator run|status",
|
|
40
|
+
" OpenCode /start-work init|resume|cancel|complete|status <schema-3 JSON>",
|
|
41
|
+
"",
|
|
42
|
+
"Isolated skill review (POSIX hosts only):",
|
|
43
|
+
" LITOPENCODE_REVIEW_HOST=/absolute/path/to/opencode selects a pinned trusted host executable.",
|
|
44
|
+
" LITOPENCODE_REVIEW_CREDENTIAL_ENV=NAME[,NAME...] forwards only named variables to the final tool-less review.",
|
|
45
|
+
" Review never reads auth files; Windows review/mutation/curator returns WINDOWS_SKILL_LOOP_UNSUPPORTED.",
|
|
46
|
+
"",
|
|
47
|
+
"Evidence loop (all accept [--project <dir>] [--json]; default project is the current directory):",
|
|
48
|
+
" litopencode create-goals --session-id <id> --objective <text> [--title <t>] [--criterion <scenario>]... [--force]",
|
|
49
|
+
" litopencode status",
|
|
50
|
+
" litopencode record-evidence --criterion-id <id> --kind <red|green|scenario|cleanup|note> --ref <ref> [--detail <t>] [--status <s>]",
|
|
51
|
+
" litopencode record-observation --signal <correction|repetition|coverage-gap> --skill-id <id> --observed <t> --proposal <t>",
|
|
52
|
+
" litopencode list-observations",
|
|
53
|
+
" litopencode checkpoint --summary <text> [--criterion-id <id>]",
|
|
54
|
+
" litopencode steer --directive <text> [--kind <redirect|add_criterion|narrow_scope|reprioritize|annotate>]",
|
|
55
|
+
" litopencode record-review-blockers --detail <text> [--needs-user-decision]",
|
|
56
|
+
" litopencode record-review-blockers --resolve <id>",
|
|
57
|
+
" litopencode complete-goals",
|
|
58
|
+
"",
|
|
59
|
+
"Commands:",
|
|
60
|
+
" install Register litopencode with OpenCode using a branded installer UI.",
|
|
61
|
+
" doctor Report package, config, and runtime path status without writing files.",
|
|
62
|
+
" fetch-public Fetch a public URL with SSRF guards, verdicts, and trace output.",
|
|
63
|
+
" --allow-private-network is opt-in for reviewed local fixtures or trusted internal tests.",
|
|
64
|
+
"",
|
|
65
|
+
"Evidence ledger:",
|
|
66
|
+
" State lives in .litopencode/litgoal/lit-loop: goals.json is the machine state, brief.md is the",
|
|
67
|
+
" human-readable rendering, and ledger.jsonl stays the append-only audit trail. status is read-only and writes no files.",
|
|
68
|
+
" Mutating verbs write goals.json and brief.md, then append one ledger.jsonl audit event under the local mutation lock.",
|
|
69
|
+
" Criterion status: pending, in_progress, blocked, pass, fail. Evidence kinds: red, green, scenario, cleanup, note.",
|
|
70
|
+
" Goal status: active, blocked, review_blocked, needs_user_decision, complete.",
|
|
71
|
+
" A fresh --session-id opens new state beside the old; --force is required only to overwrite recorded evidence.",
|
|
72
|
+
" complete-goals refuses unless every criterion passes with green and scenario evidence and no blocker is open.",
|
|
73
|
+
" steer --kind add_criterion appends a pending criterion with the next safe C-number; it must pass before completion.",
|
|
74
|
+
" Other steering can redirect or annotate a goal; a directive that would weaken the completion gate is refused.",
|
|
75
|
+
"",
|
|
76
|
+
"Bounded authority:",
|
|
77
|
+
" /start-work owns a schema-3 bounded-authority lifecycle with CAS revisions and durable compaction.",
|
|
78
|
+
" Resume is accepted only from an exact trusted user route with the matching pending boundary grant.",
|
|
79
|
+
" Agent-callable tools cannot use resume as a generic authority bypass.",
|
|
80
|
+
"",
|
|
81
|
+
"Project-local knowledge:",
|
|
82
|
+
" The Wikify tool captures only structured fact, decision, failure, risk, rule, or checkpoint events.",
|
|
83
|
+
" New claims start review-needed in .litopencode/knowledge/claims.jsonl; save or review changes state.",
|
|
84
|
+
" Set knowledge.capture to false in .litopencode/config.json to disable capture. Query stays local and read-only.",
|
|
85
|
+
"",
|
|
86
|
+
"Native offline skills:",
|
|
87
|
+
" frontend-ui-ux provides deterministic design-contract retrieval from a packaged MIT corpus,",
|
|
88
|
+
" plus fifteen shipped reference documents routed from its SKILL.md.",
|
|
89
|
+
" visual-qa validates evidence, PNGs, terminal layouts, and independent review receipts,",
|
|
90
|
+
" ships a per-channel capture playbook, and keeps blocked codes separate from fail codes.",
|
|
91
|
+
" Each skill resolves its own helpers inside its own installed tree; neither adds command,",
|
|
92
|
+
" browser, MCP, tool, agent, authentication, or write authority.",
|
|
93
|
+
"",
|
|
94
|
+
"Model routing:",
|
|
95
|
+
" Interactive terminal installs ask provider (openai | xai), LEAD model (planning/review) and HELPER model (execution/research),",
|
|
96
|
+
" preselecting the current managed route; --yes and --no-model-prompt keep the current non-picker behavior.",
|
|
97
|
+
" openai rows: gpt-6-astra·xhigh (low/medium/high/xhigh/max), gpt-5.6-sol·xhigh, gpt-5.6-luna·max, gpt-5.6·high, gpt-5.6-terra·xhigh.",
|
|
98
|
+
" The legacy GPT-5.6 rows retain their <id>-fast aliases; gpt-6-astra-fast is not a model alias.",
|
|
99
|
+
" xai rows: reasoning-capable Grok models from the host catalog, grok-4.6 first; XAI_API_KEY is warned about, never required.",
|
|
100
|
+
" --provider <p> --model <id> [--effort <e>] writes the lead route; --subagent-model <provider/id> [--subagent-effort <e>] the helper route.",
|
|
101
|
+
" Astra accepts low, medium, high, xhigh, or max and uses native reasoning effort; LUNA accepts high or max and rejects xhigh.",
|
|
102
|
+
" Without flags/reset, planning and review (including lit-loop) use Astra/xhigh; execution and research helpers use LUNA/max.",
|
|
103
|
+
" --model-prompt forces the picker on any existing route (managed keys only); --no-model-prompt and --yes keep current model routes.",
|
|
104
|
+
"",
|
|
105
|
+
"Permission behavior:",
|
|
106
|
+
" Terminal installs can ask whether LitOpenCode should stay safe, use balanced automation, or use YOLO.",
|
|
107
|
+
" --permission-prompt forces the permission picker; --no-permission-prompt keeps safe defaults.",
|
|
108
|
+
" --permission-mode <safe|balanced|yolo> writes the selected permission behavior explicitly.",
|
|
109
|
+
" --yolo is shorthand for --permission-mode yolo and also allows external_directory; lit-plan stays deny-only.",
|
|
110
|
+
"",
|
|
111
|
+
"Automatic updates:",
|
|
112
|
+
" Packaged plugin startup and successful interactive install/doctor use a bounded exact-version foreground update barrier.",
|
|
113
|
+
" The transaction uses a separate lock, private backup, journal, receipt, and post-install doctor rollback.",
|
|
114
|
+
" --no-auto-update or LITOPENCODE_NO_AUTO_UPDATE=1 disables the barrier; NO_UPDATE_NOTIFIER and LITOPENCODE_NO_UPDATE_CHECK also disable it.",
|
|
115
|
+
" The detached update notice remains cache-refresh-only and never installs.",
|
|
116
|
+
"",
|
|
117
|
+
"Default root:",
|
|
118
|
+
" ~/.config/opencode, or $XDG_CONFIG_HOME/opencode when XDG_CONFIG_HOME is set."
|
|
119
|
+
].join("\n");
|
|
120
|
+
}
|
|
121
|
+
export async function runCli(argv = process.argv.slice(2), options = {}) {
|
|
122
|
+
if (argv[0] === "skill-loop")
|
|
123
|
+
return runSkillLoopCli(argv.slice(1));
|
|
124
|
+
if (argv[0] === "skill-curator")
|
|
125
|
+
return runSkillCuratorCli(argv.slice(1));
|
|
126
|
+
let parsed;
|
|
127
|
+
try {
|
|
128
|
+
parsed = parseArgs(argv);
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
132
|
+
return { exitCode: 2, stderr: message };
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
if (!parsed.command || parsed.command === "help") {
|
|
136
|
+
return { exitCode: 0, stdout: helpText() };
|
|
137
|
+
}
|
|
138
|
+
if (isLoopCommand(parsed.command))
|
|
139
|
+
return await runLoopCommand(parsed.command, parsed.loop);
|
|
140
|
+
if (parsed.command === "doctor")
|
|
141
|
+
return await doctor(parsed.root);
|
|
142
|
+
if (parsed.command === "fetch-public") {
|
|
143
|
+
if (!parsed.fetchPublicUrl)
|
|
144
|
+
return { exitCode: 2, stderr: "fetch-public requires a URL" };
|
|
145
|
+
const output = await fetchPublicSource(parsed.fetchPublicUrl, {
|
|
146
|
+
allowPrivateNetwork: parsed.fetchPublicAllowPrivateNetwork,
|
|
147
|
+
timeoutMs: parsed.fetchPublicTimeoutMs,
|
|
148
|
+
maxBytes: parsed.fetchPublicMaxBytes
|
|
149
|
+
});
|
|
150
|
+
if (parsed.fetchPublicJson)
|
|
151
|
+
return { exitCode: output.ok ? 0 : 1, stdout: JSON.stringify(output, null, 2) };
|
|
152
|
+
return { exitCode: output.ok ? 0 : 1, stdout: renderFetchPublicText(output) };
|
|
153
|
+
}
|
|
154
|
+
if (parsed.command === "install") {
|
|
155
|
+
return await install(parsed.root, parsed.dryRun, parsed.modelSelection, parsed.modelPrompt, parsed.permissionMode, parsed.permissionModeExplicit, parsed.permissionPrompt, options.installProgress, parsed.outputStylePrompt);
|
|
156
|
+
}
|
|
157
|
+
return { exitCode: 2, stderr: `Unknown command: ${parsed.command}` };
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
await options.installProgress?.fail("Installer stopped before completion.");
|
|
161
|
+
const prefix = error instanceof LitOpenCodeConfigError ? "CONFIG_ERROR" : "ERROR";
|
|
162
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
163
|
+
return { exitCode: 1, stderr: `${prefix}: ${message}` };
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function renderFetchPublicText(output) {
|
|
167
|
+
return [
|
|
168
|
+
`verdict: ${output.verdict}`,
|
|
169
|
+
`ok: ${String(output.ok)}`,
|
|
170
|
+
output.finalUrl ? `finalUrl: ${output.finalUrl}` : undefined,
|
|
171
|
+
output.status ? `status: ${output.status}` : undefined,
|
|
172
|
+
output.reason ? `reason: ${output.reason}` : undefined,
|
|
173
|
+
output.content ? "" : undefined,
|
|
174
|
+
output.content
|
|
175
|
+
].filter((line) => line !== undefined).join("\n");
|
|
176
|
+
}
|
|
177
|
+
function shouldPrintCommandWordmark(argv) {
|
|
178
|
+
if (argv.includes("--json"))
|
|
179
|
+
return false;
|
|
180
|
+
try {
|
|
181
|
+
const parsed = parseArgs(argv);
|
|
182
|
+
if (parsed.command === "install" || parsed.command === "doctor")
|
|
183
|
+
return false;
|
|
184
|
+
return parsed.command === "help" || parsed.command === "fetch-public" || isLoopCommand(parsed.command);
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
export async function main(argv = process.argv.slice(2)) {
|
|
191
|
+
const result = await runCli(argv, { installProgress: shouldRenderInstallTui(argv) ? createInstallTui() : undefined });
|
|
192
|
+
if (shouldPrintCommandWordmark(argv)) {
|
|
193
|
+
const metadata = await readPackageMetadata();
|
|
194
|
+
const colorEnabled = process.stdout.isTTY === true && process.env.CI === undefined && process.env.NO_COLOR === undefined;
|
|
195
|
+
process.stdout.write(`${renderLitOpenCodeWordmark(metadata.name + "@" + metadata.version, colorEnabled)}\n`);
|
|
196
|
+
}
|
|
197
|
+
// Doctor's stdout is JSON even without --json; keep its interactive mark on stderr.
|
|
198
|
+
if (argv[0] === "doctor" && !argv.some((arg) => arg === "--json" || arg === "--help" || arg === "-h") && process.stderr.isTTY === true && process.env.CI === undefined) {
|
|
199
|
+
const metadata = await readPackageMetadata();
|
|
200
|
+
process.stderr.write(`${renderLitOpenCodeWordmark(metadata.name + "@" + metadata.version)}\n`);
|
|
201
|
+
}
|
|
202
|
+
if (result.stdout)
|
|
203
|
+
process.stdout.write(`${result.stdout}\n`);
|
|
204
|
+
if (result.stderr)
|
|
205
|
+
process.stderr.write(`${result.stderr}\n`);
|
|
206
|
+
let autoUpdateResult;
|
|
207
|
+
try {
|
|
208
|
+
autoUpdateResult = await runInteractiveAutoUpdate({
|
|
209
|
+
argv,
|
|
210
|
+
exitCode: result.exitCode,
|
|
211
|
+
env: process.env,
|
|
212
|
+
stdinIsTTY: process.stdin.isTTY,
|
|
213
|
+
stdoutIsTTY: process.stdout.isTTY,
|
|
214
|
+
stderrIsTTY: process.stderr.isTTY,
|
|
215
|
+
configRoot: (() => {
|
|
216
|
+
try {
|
|
217
|
+
return parseArgs(argv).root;
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
})()
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
process.stderr.write(`Automatic update stopped before verification: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
227
|
+
process.exitCode = 1;
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (!canContinueAfterAutoUpdate(autoUpdateResult)) {
|
|
231
|
+
process.stderr.write(`${autoUpdateDiagnostic(autoUpdateResult)}\n`);
|
|
232
|
+
process.exitCode = 1;
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
await runUpdateNotifier({
|
|
236
|
+
argv,
|
|
237
|
+
exitCode: result.exitCode,
|
|
238
|
+
env: process.env,
|
|
239
|
+
stdinIsTTY: process.stdin.isTTY,
|
|
240
|
+
stdoutIsTTY: process.stdout.isTTY,
|
|
241
|
+
stderrIsTTY: process.stderr.isTTY
|
|
242
|
+
});
|
|
243
|
+
process.exitCode = result.exitCode;
|
|
244
|
+
}
|
|
245
|
+
if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href) {
|
|
246
|
+
void main().catch((error) => {
|
|
247
|
+
process.stderr.write(`${error instanceof Error ? error.stack ?? error.message : String(error)}\n`);
|
|
248
|
+
process.exitCode = 1;
|
|
249
|
+
});
|
|
250
|
+
}
|