@litfamily/litopencode 1.0.7 → 1.0.9
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/CHANGELOG.md +18 -0
- package/README-Ko-KR.md +314 -31
- package/README.md +312 -29
- package/dist/activation-primary-prompts.d.ts +1 -0
- package/dist/activation-primary-prompts.js +16 -0
- package/dist/activation-probe.js +4 -1
- package/dist/activation-prompt-utils.d.ts +1 -1
- package/dist/activation-routing.d.ts +6 -1
- package/dist/activation-routing.js +174 -16
- package/dist/activation-workflow-prompts.d.ts +1 -1
- package/dist/activation-workflow-prompts.js +18 -17
- package/dist/activation.d.ts +3 -2
- package/dist/activation.js +6 -6
- package/dist/agents/defaults.js +14 -6
- package/dist/cli/command-aliases.js +24 -22
- package/dist/cli/doctor.js +3 -0
- package/dist/cli/install-report.d.ts +1 -0
- package/dist/cli/install-report.js +4 -0
- package/dist/cli/install.js +7 -4
- package/dist/cli/managed-skill-assets.d.ts +1 -1
- package/dist/cli/managed-skill-assets.js +15 -5
- package/dist/cli/motion-runtime.d.ts +6 -0
- package/dist/cli/motion-runtime.js +46 -0
- package/dist/cli/native-skill-install.js +32 -9
- package/dist/cli/native-skill-integrity.js +1 -0
- package/dist/cli/native-skills.d.ts +2 -0
- package/dist/cli/native-skills.js +2 -1
- package/dist/cli/office-dependencies.d.ts +14 -0
- package/dist/cli/office-dependencies.js +24 -0
- package/dist/cli.js +13 -3
- package/dist/commands.d.ts +2 -11
- package/dist/commands.js +9 -17
- package/dist/deliverable-hedge-guard.d.ts +20 -21
- package/dist/deliverable-hedge-guard.js +234 -275
- package/dist/features.d.ts +81 -2
- package/dist/features.js +80 -13
- package/dist/hooks.d.ts +3 -2
- package/dist/hooks.js +4 -4
- package/dist/ignition.d.ts +1 -1
- package/dist/ignition.js +15 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/interface-handoff.d.ts +1 -0
- package/dist/interface-handoff.js +1 -0
- package/dist/motion-image-reads.d.ts +6 -0
- package/dist/motion-image-reads.js +46 -0
- package/dist/server.js +13 -11
- package/dist/skill-renames.d.ts +4 -2
- package/dist/skill-renames.js +12 -4
- package/dist/skills.d.ts +31 -3
- package/dist/skills.js +53 -9
- package/dist/tools.js +4 -4
- package/docs/ab/S11/baseline-desktop.webp +0 -0
- package/docs/ab/S11/baseline-phone.webp +0 -0
- package/docs/ab/S11/lit-desktop.webp +0 -0
- package/docs/ab/S11/lit-phone.webp +0 -0
- package/docs/ab/S3/baseline-desktop.webp +0 -0
- package/docs/ab/S3/baseline-phone.webp +0 -0
- package/docs/ab/S3/lit-desktop.webp +0 -0
- package/docs/ab/S3/lit-phone.webp +0 -0
- package/docs/ab/S4/baseline-desktop.webp +0 -0
- package/docs/ab/S4/baseline-phone.webp +0 -0
- package/docs/ab/S4/lit-desktop.webp +0 -0
- package/docs/ab/S4/lit-phone.webp +0 -0
- package/docs/ab/S5/lit-slides.webp +0 -0
- package/docs/ab/S7/lit-diagram.webp +0 -0
- package/docs/ab/S8/baseline-slides.webp +0 -0
- package/docs/ab/S8/lit-slides.webp +0 -0
- package/docs/ab/S9/lit-pages.webp +0 -0
- package/docs/assets/cover-motion-still.webp +0 -0
- package/docs/assets/cover-motion.webp +0 -0
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/assets/skills/autoconference.webp +0 -0
- package/docs/assets/skills/automatic-guards.webp +0 -0
- package/docs/assets/skills/autoresearch.webp +0 -0
- package/docs/assets/skills/browser-drive.webp +0 -0
- package/docs/assets/skills/debugging.webp +0 -0
- package/docs/assets/skills/deep-interview.webp +0 -0
- package/docs/assets/skills/doctor-installer.webp +0 -0
- package/docs/assets/skills/durable-litgoal.webp +0 -0
- package/docs/assets/skills/frontend-ui-ux.webp +0 -0
- package/docs/assets/skills/lit-burnoff-file.webp +0 -0
- package/docs/assets/skills/lit-burnoff.webp +0 -0
- package/docs/assets/skills/lit-code.webp +0 -0
- package/docs/assets/skills/lit-commit.webp +0 -0
- package/docs/assets/skills/lit-comprehend.webp +0 -0
- package/docs/assets/skills/lit-crucible.webp +0 -0
- package/docs/assets/skills/lit-diagram-drawer.webp +0 -0
- package/docs/assets/skills/lit-docx.webp +0 -0
- package/docs/assets/skills/lit-fetch.webp +0 -0
- package/docs/assets/skills/lit-handoff.webp +0 -0
- package/docs/assets/skills/lit-humanizer.webp +0 -0
- package/docs/assets/skills/lit-init.webp +0 -0
- package/docs/assets/skills/lit-plan.webp +0 -0
- package/docs/assets/skills/lit-pptx.webp +0 -0
- package/docs/assets/skills/lit-recap.webp +0 -0
- package/docs/assets/skills/lit-scientific-visualization.webp +0 -0
- package/docs/assets/skills/lit-typographic-motion.webp +0 -0
- package/docs/assets/skills/litresearch.webp +0 -0
- package/docs/assets/skills/litwork.webp +0 -0
- package/docs/assets/skills/lsp-setup.webp +0 -0
- package/docs/assets/skills/lsp.webp +0 -0
- package/docs/assets/skills/readme-studio.webp +0 -0
- package/docs/assets/skills/refactor.webp +0 -0
- package/docs/assets/skills/review-work.webp +0 -0
- package/docs/assets/skills/rules.webp +0 -0
- package/docs/assets/skills/start-work.webp +0 -0
- package/docs/assets/skills/structural-search.webp +0 -0
- package/docs/assets/skills/visual-qa.webp +0 -0
- package/docs/assets/skills/wikify.webp +0 -0
- package/docs/reference-Ko-KR.md +5 -1
- package/docs/reference.md +6 -2
- package/package.json +1 -1
- package/rules/bundled-rules/lit-humanizer.md +12 -0
- package/skills/autoconference/SKILL.md +1 -1
- package/skills/autoconference/assets/report_template.md +1 -1
- package/skills/autoresearch/references/type-checklists.md +1 -1
- package/skills/browser-drive/SKILL.md +19 -5
- package/skills/browser-drive/scripts/capability-probe.mjs +26 -5
- package/skills/frontend-ui-ux/SKILL.md +10 -15
- package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +10 -0
- package/skills/frontend-ui-ux/references/adaptive-layout.md +3 -11
- package/skills/frontend-ui-ux/references/brand-and-imagery.md +6 -11
- package/skills/frontend-ui-ux/references/complete-contract.md +10 -3
- package/skills/frontend-ui-ux/references/composition.md +1 -7
- package/skills/frontend-ui-ux/references/craft-floor.md +94 -0
- package/skills/frontend-ui-ux/references/creative-directions.md +1 -7
- package/skills/frontend-ui-ux/references/evidence-review.md +2 -12
- package/skills/frontend-ui-ux/references/implementation-platforms.md +1 -4
- package/skills/frontend-ui-ux/references/inclusive-interface.md +1 -3
- package/skills/frontend-ui-ux/references/interaction-motion.md +1 -7
- package/skills/frontend-ui-ux/references/motion-guide.md +125 -0
- package/skills/frontend-ui-ux/references/operating-lanes.md +2 -8
- package/skills/frontend-ui-ux/references/product-direction.md +1 -6
- package/skills/frontend-ui-ux/references/production.md +12 -5
- package/skills/frontend-ui-ux/references/redesign-playbook.md +1 -7
- package/skills/frontend-ui-ux/references/slop-register.md +103 -0
- package/skills/frontend-ui-ux/references/system-foundations.md +1 -8
- package/skills/frontend-ui-ux/references/taste-direction.md +4 -11
- package/skills/frontend-ui-ux/references/visual-language.md +1 -6
- package/skills/frontend-ui-ux/references/visual-reconstruction.md +2 -7
- package/skills/frontend-ui-ux/scripts/probe-page.mjs +326 -0
- package/skills/frontend-ui-ux/scripts/probe-server.mjs +24 -0
- package/skills/frontend-ui-ux/scripts/probe-static.mjs +42 -0
- package/skills/frontend-ui-ux/scripts/probe-thresholds.json +86 -0
- package/skills/frontend-ui-ux/scripts/probe.mjs +183 -0
- package/skills/lit-comprehend/SKILL.md +10 -11
- package/skills/lit-comprehend/references/artifact-template.md +2 -18
- package/skills/lit-comprehend/scripts/verify-explainer.ts +0 -14
- package/skills/lit-diagram-drawer/NOTICE.md +33 -0
- package/skills/lit-diagram-drawer/SKILL.md +101 -0
- package/skills/lit-diagram-drawer/assets/examples/type-architecture-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-architecture-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-architecture-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bar-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bar-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bar-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-beeswarm-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bubble-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bubble-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bubble-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bump-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bump-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-bump-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-data-flow-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-data-flow-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-data-flow-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-datalake-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-datalake-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-datalake-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-db-schema-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-db-schema-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-db-schema-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dependency-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dependency-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dependency-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-deployment-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-deployment-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-deployment-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dp-integration-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-er-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-er-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-er-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-fishbone-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-fishbone-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-fishbone-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-flowchart-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-flowchart-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-flowchart-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-gantt-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-gantt-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-gantt-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-heatmap-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-heatmap-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-heatmap-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-high-level-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-high-level-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-high-level-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-drawio-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-it-state-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-it-state-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-it-state-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-journey-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-journey-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-journey-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-kanban-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-kanban-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-kanban-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-layers-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-layers-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-layers-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-line-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-line-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-line-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-loop-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-loop-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-loop-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-marimekko-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-marimekko-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-marimekko-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-medallion-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-medallion-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-medallion-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-nested-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-nested-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-nested-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-org-chart-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-org-chart-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-org-chart-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-polar-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-polar-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-polar-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-process-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-process-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-process-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-pyramid-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-pyramid-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-pyramid-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-quadrant-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-quadrant-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-quadrant-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-queue-animated-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-radar-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-radar-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-radar-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-ridgeline-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sankey-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sankey-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sankey-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-scatter-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-scatter-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-scatter-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sequence-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sequence-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sequence-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-slopegraph-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-state-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-state-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-state-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-story-map-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-story-map-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-story-map-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-streamgraph-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-swimlane-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-swimlane-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-swimlane-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-timeline-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-timeline-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-timeline-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-tree-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-tree-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-tree-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-treemap-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-treemap-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-treemap-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-uml-class-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-uml-class-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-uml-class-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-venn-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-venn-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-venn-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-wardley-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-wardley-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-wardley-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-waterfall-dark.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-waterfall-full.html +1 -0
- package/skills/lit-diagram-drawer/assets/examples/type-waterfall-light.html +1 -0
- package/skills/lit-diagram-drawer/assets/fonts/OFL.txt +94 -0
- package/skills/lit-diagram-drawer/assets/fonts/PretendardVariable.woff2 +0 -0
- package/skills/lit-diagram-drawer/assets/fonts/provenance.json +23 -0
- package/skills/lit-diagram-drawer/assets/icons.html +231 -0
- package/skills/lit-diagram-drawer/assets/licenses/devicon-MIT.txt +20 -0
- package/skills/lit-diagram-drawer/assets/licenses/diagram-design-MIT.txt +21 -0
- package/skills/lit-diagram-drawer/assets/licenses/log-z-MIT.txt +21 -0
- package/skills/lit-diagram-drawer/assets/licenses/simple-icons-CC0.md +30 -0
- package/skills/lit-diagram-drawer/assets/licenses/tabler-MIT.txt +21 -0
- package/skills/lit-diagram-drawer/examples/01-service-architecture/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/01-service-architecture/brief.md +33 -0
- package/skills/lit-diagram-drawer/examples/02-release-decision/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/02-release-decision/brief.md +18 -0
- package/skills/lit-diagram-drawer/examples/03-data-retention/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/03-data-retention/brief.md +19 -0
- package/skills/lit-diagram-drawer/examples/04-oauth-sequence/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/04-oauth-sequence/brief.md +17 -0
- package/skills/lit-diagram-drawer/examples/05-review-lanes/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/05-review-lanes/brief.md +17 -0
- package/skills/lit-diagram-drawer/examples/06-rollout-gates/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/06-rollout-gates/brief.md +17 -0
- package/skills/lit-diagram-drawer/examples/07-deployment-boundary/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/07-deployment-boundary/brief.md +19 -0
- package/skills/lit-diagram-drawer/examples/08-policy-traces/after.html +1 -0
- package/skills/lit-diagram-drawer/examples/08-policy-traces/brief.md +20 -0
- package/skills/lit-diagram-drawer/references/accessibility.md +37 -0
- package/skills/lit-diagram-drawer/references/export.md +17 -0
- package/skills/lit-diagram-drawer/references/import-drawio.md +13 -0
- package/skills/lit-diagram-drawer/references/import-excalidraw.md +11 -0
- package/skills/lit-diagram-drawer/references/import-mermaid.md +12 -0
- package/skills/lit-diagram-drawer/references/import-schema.md +28 -0
- package/skills/lit-diagram-drawer/references/korean-typography.md +34 -0
- package/skills/lit-diagram-drawer/references/motion.md +29 -0
- package/skills/lit-diagram-drawer/references/office-pptx-docx.md +28 -0
- package/skills/lit-diagram-drawer/references/output-spec.md +48 -0
- package/skills/lit-diagram-drawer/references/primitive-annotation.md +12 -0
- package/skills/lit-diagram-drawer/references/primitive-icons.md +21 -0
- package/skills/lit-diagram-drawer/references/primitive-sketchy.md +11 -0
- package/skills/lit-diagram-drawer/references/primitive-terminal.md +11 -0
- package/skills/lit-diagram-drawer/references/profiles.md +24 -0
- package/skills/lit-diagram-drawer/references/semantic-patterns.md +27 -0
- package/skills/lit-diagram-drawer/references/style-guide.md +67 -0
- package/skills/lit-diagram-drawer/references/type-architecture.md +51 -0
- package/skills/lit-diagram-drawer/references/type-bar.md +51 -0
- package/skills/lit-diagram-drawer/references/type-beeswarm.md +49 -0
- package/skills/lit-diagram-drawer/references/type-bubble.md +49 -0
- package/skills/lit-diagram-drawer/references/type-bump.md +49 -0
- package/skills/lit-diagram-drawer/references/type-catalog.json +1433 -0
- package/skills/lit-diagram-drawer/references/type-data-flow.md +51 -0
- package/skills/lit-diagram-drawer/references/type-datalake.md +49 -0
- package/skills/lit-diagram-drawer/references/type-db-schema.md +49 -0
- package/skills/lit-diagram-drawer/references/type-dependency.md +49 -0
- package/skills/lit-diagram-drawer/references/type-deployment.md +49 -0
- package/skills/lit-diagram-drawer/references/type-dp-integration.md +49 -0
- package/skills/lit-diagram-drawer/references/type-dp-security-matrix.md +49 -0
- package/skills/lit-diagram-drawer/references/type-er.md +49 -0
- package/skills/lit-diagram-drawer/references/type-fishbone.md +49 -0
- package/skills/lit-diagram-drawer/references/type-flowchart.md +49 -0
- package/skills/lit-diagram-drawer/references/type-gantt.md +49 -0
- package/skills/lit-diagram-drawer/references/type-heatmap.md +53 -0
- package/skills/lit-diagram-drawer/references/type-high-level-vertical.md +53 -0
- package/skills/lit-diagram-drawer/references/type-high-level.md +53 -0
- package/skills/lit-diagram-drawer/references/type-import-drawio.md +53 -0
- package/skills/lit-diagram-drawer/references/type-import-excalidraw.md +53 -0
- package/skills/lit-diagram-drawer/references/type-import-mermaid.md +53 -0
- package/skills/lit-diagram-drawer/references/type-it-state.md +54 -0
- package/skills/lit-diagram-drawer/references/type-journey.md +54 -0
- package/skills/lit-diagram-drawer/references/type-kanban.md +54 -0
- package/skills/lit-diagram-drawer/references/type-layers.md +54 -0
- package/skills/lit-diagram-drawer/references/type-line.md +54 -0
- package/skills/lit-diagram-drawer/references/type-loop-terminal.md +53 -0
- package/skills/lit-diagram-drawer/references/type-loop.md +54 -0
- package/skills/lit-diagram-drawer/references/type-marimekko.md +54 -0
- package/skills/lit-diagram-drawer/references/type-medallion.md +54 -0
- package/skills/lit-diagram-drawer/references/type-nested.md +59 -0
- package/skills/lit-diagram-drawer/references/type-org-chart.md +58 -0
- package/skills/lit-diagram-drawer/references/type-paved-road-animated.md +72 -0
- package/skills/lit-diagram-drawer/references/type-polar.md +67 -0
- package/skills/lit-diagram-drawer/references/type-policy-trace-animated.md +69 -0
- package/skills/lit-diagram-drawer/references/type-process.md +58 -0
- package/skills/lit-diagram-drawer/references/type-pyramid.md +59 -0
- package/skills/lit-diagram-drawer/references/type-quadrant-consultant.md +60 -0
- package/skills/lit-diagram-drawer/references/type-quadrant.md +57 -0
- package/skills/lit-diagram-drawer/references/type-queue-animated.md +63 -0
- package/skills/lit-diagram-drawer/references/type-radar.md +57 -0
- package/skills/lit-diagram-drawer/references/type-ridgeline.md +63 -0
- package/skills/lit-diagram-drawer/references/type-sankey.md +68 -0
- package/skills/lit-diagram-drawer/references/type-scatter.md +60 -0
- package/skills/lit-diagram-drawer/references/type-sequence-oauth.md +66 -0
- package/skills/lit-diagram-drawer/references/type-sequence.md +63 -0
- package/skills/lit-diagram-drawer/references/type-slopegraph.md +65 -0
- package/skills/lit-diagram-drawer/references/type-state-lifecycle.md +53 -0
- package/skills/lit-diagram-drawer/references/type-state.md +59 -0
- package/skills/lit-diagram-drawer/references/type-story-map.md +52 -0
- package/skills/lit-diagram-drawer/references/type-streamgraph.md +53 -0
- package/skills/lit-diagram-drawer/references/type-swimlane.md +52 -0
- package/skills/lit-diagram-drawer/references/type-timeline.md +52 -0
- package/skills/lit-diagram-drawer/references/type-tree-block-decomposition.md +57 -0
- package/skills/lit-diagram-drawer/references/type-tree.md +54 -0
- package/skills/lit-diagram-drawer/references/type-treemap.md +54 -0
- package/skills/lit-diagram-drawer/references/type-uml-class.md +52 -0
- package/skills/lit-diagram-drawer/references/type-venn.md +51 -0
- package/skills/lit-diagram-drawer/references/type-wardley.md +52 -0
- package/skills/lit-diagram-drawer/references/type-waterfall.md +54 -0
- package/skills/lit-diagram-drawer/references/verifier-guide.md +59 -0
- package/skills/lit-diagram-drawer/scripts/block-registry.mjs +43 -0
- package/skills/lit-diagram-drawer/scripts/brief-contract.mjs +94 -0
- package/skills/lit-diagram-drawer/scripts/capability-probe.mjs +132 -0
- package/skills/lit-diagram-drawer/scripts/check-visible-text.mjs +15 -0
- package/skills/lit-diagram-drawer/scripts/craft-thresholds.json +15 -0
- package/skills/lit-diagram-drawer/scripts/diagram-metrics.mjs +216 -0
- package/skills/lit-diagram-drawer/scripts/doctor.mjs +8 -0
- package/skills/lit-diagram-drawer/scripts/drawio-extract.mjs +214 -0
- package/skills/lit-diagram-drawer/scripts/excalidraw-extract.mjs +151 -0
- package/skills/lit-diagram-drawer/scripts/export.mjs +133 -0
- package/skills/lit-diagram-drawer/scripts/import-shared.mjs +130 -0
- package/skills/lit-diagram-drawer/scripts/mermaid-extract.mjs +173 -0
- package/skills/lit-diagram-drawer/scripts/office-safety.mjs +120 -0
- package/skills/lit-diagram-drawer/scripts/renderer-safety.mjs +46 -0
- package/skills/lit-diagram-drawer/scripts/test-block-registry.mjs +20 -0
- package/skills/lit-diagram-drawer/scripts/test-brief-contract.mjs +27 -0
- package/skills/lit-diagram-drawer/scripts/test-importers.mjs +119 -0
- package/skills/lit-diagram-drawer/scripts/test-office-safety.mjs +67 -0
- package/skills/lit-diagram-drawer/scripts/test-sequence-verifier.mjs +28 -0
- package/skills/lit-diagram-drawer/scripts/test-visual-quality.mjs +68 -0
- package/skills/lit-diagram-drawer/scripts/verify-all.mjs +74 -0
- package/skills/lit-diagram-drawer/scripts/verify-brief.mjs +47 -0
- package/skills/lit-diagram-drawer/scripts/verify-coverage.mjs +56 -0
- package/skills/lit-diagram-drawer/scripts/verify-diagram.mjs +26 -0
- package/skills/lit-diagram-drawer/scripts/verify-motion.mjs +12 -0
- package/skills/lit-diagram-drawer/scripts/verify-type.mjs +48 -0
- package/skills/lit-diagram-drawer/scripts/visual-quality.mjs +363 -0
- package/skills/lit-docx/LICENSE-MIT.txt +21 -0
- package/skills/lit-docx/SKILL.md +78 -0
- package/skills/lit-docx/references/frontmatter_schema.md +42 -0
- package/skills/lit-docx/references/journal_style_spec.md +17 -0
- package/skills/lit-docx/references/markdown_quality_checklist.md +37 -0
- package/skills/lit-docx/references/slop_phrase_list.yaml +58 -0
- package/skills/lit-docx/references/slop_rules.md +35 -0
- package/skills/lit-docx/requirements.in +5 -0
- package/skills/lit-docx/requirements.lock +289 -0
- package/skills/lit-docx/run.py +64 -0
- package/skills/lit-docx/scripts/clean_markdown.py +95 -0
- package/skills/lit-docx/scripts/convert_md_to_docx.py +1047 -0
- package/skills/lit-docx/scripts/convert_md_to_pdf.py +281 -0
- package/skills/lit-docx/scripts/convert_pdf.py +130 -0
- package/skills/lit-docx/scripts/craft-thresholds.json +11 -0
- package/skills/lit-docx/scripts/craft_docx.py +83 -0
- package/skills/lit-docx/scripts/edit_docx.py +297 -0
- package/skills/lit-docx/scripts/embed_images.py +78 -0
- package/skills/lit-docx/scripts/generate_docx_templates.py +491 -0
- package/skills/lit-docx/scripts/slop_lint.py +485 -0
- package/skills/lit-docx/scripts/visual_audit.py +41 -0
- package/skills/lit-docx/templates/docx/acs.docx +0 -0
- package/skills/lit-docx/templates/docx/elsevier.docx +0 -0
- package/skills/lit-docx/templates/docx/ieee.docx +0 -0
- package/skills/lit-docx/templates/docx/korean-generic.docx +0 -0
- package/skills/lit-docx/templates/docx/nature.docx +0 -0
- package/skills/lit-docx/templates/latex/acs/README.md +5 -0
- package/skills/lit-docx/templates/latex/acs/template.tex +37 -0
- package/skills/lit-docx/templates/latex/elsevier/README.md +5 -0
- package/skills/lit-docx/templates/latex/elsevier/template.tex +38 -0
- package/skills/lit-docx/templates/latex/ieee/README.md +5 -0
- package/skills/lit-docx/templates/latex/ieee/template.tex +37 -0
- package/skills/lit-docx/templates/latex/korean-generic/README.md +5 -0
- package/skills/lit-docx/templates/latex/korean-generic/template.tex +37 -0
- package/skills/lit-docx/templates/latex/nature/README.md +5 -0
- package/skills/lit-docx/templates/latex/nature/template.tex +37 -0
- package/skills/lit-docx/templates/registry.yaml +1366 -0
- package/skills/lit-humanizer/NOTICE +160 -0
- package/skills/lit-humanizer/SKILL.md +122 -0
- package/skills/lit-humanizer/assets/always-on-rule.md +9 -0
- package/skills/lit-humanizer/assets/report-skeleton.md +25 -0
- package/skills/lit-humanizer/assets/slide-text-skeleton.md +28 -0
- package/skills/lit-humanizer/examples/accessibility-note/after.md +7 -0
- package/skills/lit-humanizer/examples/accessibility-note/before.md +7 -0
- package/skills/lit-humanizer/examples/api-reference/after.md +9 -0
- package/skills/lit-humanizer/examples/api-reference/before.md +15 -0
- package/skills/lit-humanizer/examples/changelog/after.md +5 -0
- package/skills/lit-humanizer/examples/changelog/before.md +12 -0
- package/skills/lit-humanizer/examples/code-comments/after.md +10 -0
- package/skills/lit-humanizer/examples/code-comments/before.md +19 -0
- package/skills/lit-humanizer/examples/commit/after.md +5 -0
- package/skills/lit-humanizer/examples/commit/before.md +7 -0
- package/skills/lit-humanizer/examples/data-release/after.md +7 -0
- package/skills/lit-humanizer/examples/data-release/before.md +9 -0
- package/skills/lit-humanizer/examples/english-essay/after.md +5 -0
- package/skills/lit-humanizer/examples/english-essay/before.md +5 -0
- package/skills/lit-humanizer/examples/incident-update/after.md +7 -0
- package/skills/lit-humanizer/examples/incident-update/before.md +7 -0
- package/skills/lit-humanizer/examples/ko-essay/after.md +7 -0
- package/skills/lit-humanizer/examples/ko-essay/before.md +9 -0
- package/skills/lit-humanizer/examples/ko-report/after.md +9 -0
- package/skills/lit-humanizer/examples/ko-report/before.md +13 -0
- package/skills/lit-humanizer/examples/ko-slide/after.md +19 -0
- package/skills/lit-humanizer/examples/ko-slide/before.md +21 -0
- package/skills/lit-humanizer/examples/meeting-brief/after.md +9 -0
- package/skills/lit-humanizer/examples/meeting-brief/before.md +11 -0
- package/skills/lit-humanizer/examples/policy-faq/after.md +9 -0
- package/skills/lit-humanizer/examples/policy-faq/before.md +9 -0
- package/skills/lit-humanizer/examples/pr/after.md +15 -0
- package/skills/lit-humanizer/examples/pr/before.md +17 -0
- package/skills/lit-humanizer/examples/project-update/after.md +7 -0
- package/skills/lit-humanizer/examples/project-update/before.md +9 -0
- package/skills/lit-humanizer/examples/readme/after.md +12 -0
- package/skills/lit-humanizer/examples/readme/before.md +14 -0
- package/skills/lit-humanizer/examples/report/after.md +13 -0
- package/skills/lit-humanizer/examples/report/before.md +11 -0
- package/skills/lit-humanizer/examples/research-abstract/after.md +5 -0
- package/skills/lit-humanizer/examples/research-abstract/before.md +5 -0
- package/skills/lit-humanizer/examples/slides/after.md +19 -0
- package/skills/lit-humanizer/examples/slides/before.md +19 -0
- package/skills/lit-humanizer/examples/troubleshooting/after.md +11 -0
- package/skills/lit-humanizer/examples/troubleshooting/before.md +11 -0
- package/skills/lit-humanizer/fixtures/ko-metrics-golden.json +49 -0
- package/skills/lit-humanizer/fixtures/office/minimal.docx +0 -0
- package/skills/lit-humanizer/fixtures/office/minimal.pptx +0 -0
- package/skills/lit-humanizer/fixtures/pos-real.txt +26 -0
- package/skills/lit-humanizer/fixtures/rule-cases.json +306 -0
- package/skills/lit-humanizer/references/code-patterns.md +468 -0
- package/skills/lit-humanizer/references/deliverable-channels.md +111 -0
- package/skills/lit-humanizer/references/en-patterns-checklist.md +43 -0
- package/skills/lit-humanizer/references/en-patterns-content.md +243 -0
- package/skills/lit-humanizer/references/en-patterns-structure.md +375 -0
- package/skills/lit-humanizer/references/en-patterns.md +57 -0
- package/skills/lit-humanizer/references/ko-metrics.md +33 -0
- package/skills/lit-humanizer/references/ko-patterns-a-d.md +659 -0
- package/skills/lit-humanizer/references/ko-patterns-e-j.md +387 -0
- package/skills/lit-humanizer/references/ko-patterns.md +31 -0
- package/skills/lit-humanizer/references/rewrite-playbook.md +54 -0
- package/skills/lit-humanizer/references/taxonomy.md +153 -0
- package/skills/lit-humanizer/rules.json +884 -0
- package/skills/lit-humanizer/scripts/core.mjs +208 -0
- package/skills/lit-humanizer/scripts/detect.mjs +91 -0
- package/skills/lit-humanizer/scripts/extract_office_text.py +89 -0
- package/skills/lit-humanizer/scripts/guard-scan.mjs +36 -0
- package/skills/lit-humanizer/scripts/ko-metrics.mjs +124 -0
- package/skills/lit-humanizer/scripts/test-fixtures.mjs +54 -0
- package/skills/lit-humanizer/scripts/test-ko-metrics.mjs +27 -0
- package/skills/lit-pptx/FORBIDDEN_TERMS.json +55 -0
- package/skills/lit-pptx/NOTICE.md +3 -0
- package/skills/lit-pptx/SKILL.md +76 -0
- package/skills/lit-pptx/agents/analyst.md +49 -0
- package/skills/lit-pptx/agents/antithesis.md +59 -0
- package/skills/lit-pptx/agents/architect.md +44 -0
- package/skills/lit-pptx/agents/critic.md +42 -0
- package/skills/lit-pptx/agents/synthesizer.md +47 -0
- package/skills/lit-pptx/agents/thesis.md +33 -0
- package/skills/lit-pptx/assets/azure/circle-lg.png +0 -0
- package/skills/lit-pptx/assets/azure/circle-md.png +0 -0
- package/skills/lit-pptx/assets/azure/circle-sm.png +0 -0
- package/skills/lit-pptx/fonts/a2z-font/A2Z-Black.otf +0 -0
- package/skills/lit-pptx/fonts/a2z-font/A2Z-Bold.otf +0 -0
- package/skills/lit-pptx/fonts/a2z-font/A2Z-Light.otf +0 -0
- package/skills/lit-pptx/fonts/a2z-font/A2Z-Medium.otf +0 -0
- package/skills/lit-pptx/fonts/a2z-font/A2Z-Regular.otf +0 -0
- package/skills/lit-pptx/fonts/a2z-font/OFL.txt +94 -0
- package/skills/lit-pptx/fonts/a2z-font/SOURCE.md +29 -0
- package/skills/lit-pptx/package-lock.json +747 -0
- package/skills/lit-pptx/package.json +13 -0
- package/skills/lit-pptx/pretendard-font/LICENSE.txt +94 -0
- package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Bold.otf +0 -0
- package/skills/lit-pptx/pretendard-font/public/static/LitOpenCodeSans-Regular.otf +0 -0
- package/skills/lit-pptx/requirements.in +2 -0
- package/skills/lit-pptx/requirements.lock +285 -0
- package/skills/lit-pptx/run.mjs +71 -0
- package/skills/lit-pptx/scripts/check_ooxml.py +47 -0
- package/skills/lit-pptx/scripts/compile-deck.js +447 -0
- package/skills/lit-pptx/scripts/craft-thresholds.json +26 -0
- package/skills/lit-pptx/scripts/craft_extras.py +224 -0
- package/skills/lit-pptx/scripts/embed_fonts.py +204 -0
- package/skills/lit-pptx/scripts/layout_inventory.py +70 -0
- package/skills/lit-pptx/scripts/learn_template.py +433 -0
- package/skills/lit-pptx/scripts/lib/derive-palette.js +176 -0
- package/skills/lit-pptx/scripts/lib/directive-parser.js +244 -0
- package/skills/lit-pptx/scripts/lib/font-map.js +79 -0
- package/skills/lit-pptx/scripts/lib/gen-bg.js +85 -0
- package/skills/lit-pptx/scripts/lib/gen-gradient-assets.js +36 -0
- package/skills/lit-pptx/scripts/lib/layout-resolver.js +737 -0
- package/skills/lit-pptx/scripts/lib/markdown-loader.js +136 -0
- package/skills/lit-pptx/scripts/lib/render-adapter-html.js +364 -0
- package/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +1848 -0
- package/skills/lit-pptx/scripts/lib/slide-ast.js +534 -0
- package/skills/lit-pptx/scripts/lib/spec-validator.js +94 -0
- package/skills/lit-pptx/scripts/lib/template-registry.js +355 -0
- package/skills/lit-pptx/scripts/qa_deck.py +773 -0
- package/skills/lit-pptx/scripts/validate_pptx.py +206 -0
- package/skills/lit-pptx/specs/markdown-slide-spec-v1.md +251 -0
- package/skills/lit-pptx/specs/markdown-slide-spec-v2.md +223 -0
- package/skills/lit-pptx/specs/slide-ast-v1.schema.json +229 -0
- package/skills/lit-pptx/specs/slide-ast-v2.schema.json +144 -0
- package/skills/lit-pptx/specs/template-enrollment-contract.md +379 -0
- package/skills/lit-pptx/templates/bauhaus_light.css +4 -0
- package/skills/lit-pptx/templates/boilerplate_professional.css +508 -0
- package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/capabilities.yaml +146 -0
- package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +454 -0
- package/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +37 -0
- package/skills/lit-pptx/templates/enrolled/AZURE-PRO/capabilities.yaml +154 -0
- package/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +483 -0
- package/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +37 -0
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/capabilities.yaml +179 -0
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/layout-mapping.yaml +299 -0
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/template.yaml +45 -0
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml +181 -0
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/layout-mapping.yaml +299 -0
- package/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml +44 -0
- package/skills/lit-scientific-visualization/SKILL.md +2 -0
- package/skills/lit-typographic-motion/NOTICE +23 -0
- package/skills/lit-typographic-motion/SKILL.md +77 -0
- package/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +25 -0
- package/skills/lit-typographic-motion/audio-analysis.py +52 -0
- package/skills/lit-typographic-motion/engine/browser.mjs +83 -0
- package/skills/lit-typographic-motion/engine/constants.mjs +177 -0
- package/skills/lit-typographic-motion/engine/contrast.mjs +101 -0
- package/skills/lit-typographic-motion/engine/encode.mjs +46 -0
- package/skills/lit-typographic-motion/engine/flash.mjs +216 -0
- package/skills/lit-typographic-motion/engine/look.mjs +166 -0
- package/skills/lit-typographic-motion/engine/page/common.js +105 -0
- package/skills/lit-typographic-motion/engine/page/engine.js +451 -0
- package/skills/lit-typographic-motion/engine/page/gl.js +213 -0
- package/skills/lit-typographic-motion/engine/page/lines.js +88 -0
- package/skills/lit-typographic-motion/engine/page/passes.js +144 -0
- package/skills/lit-typographic-motion/engine/page/post.js +119 -0
- package/skills/lit-typographic-motion/engine/page/scenes.js +187 -0
- package/skills/lit-typographic-motion/engine/page/type.js +321 -0
- package/skills/lit-typographic-motion/engine/png.mjs +139 -0
- package/skills/lit-typographic-motion/engine/sound.mjs +291 -0
- package/skills/lit-typographic-motion/engine/stage/capture.mjs +133 -0
- package/skills/lit-typographic-motion/engine/stage/clock.js +171 -0
- package/skills/lit-typographic-motion/engine/stage/frame-worker.mjs +47 -0
- package/skills/lit-typographic-motion/engine/stage/gate.mjs +119 -0
- package/skills/lit-typographic-motion/engine/stage/qa-page.js +158 -0
- package/skills/lit-typographic-motion/engine/stage/qa.mjs +208 -0
- package/skills/lit-typographic-motion/engine/stage/render.mjs +418 -0
- package/skills/lit-typographic-motion/engine/stage/scan.mjs +162 -0
- package/skills/lit-typographic-motion/engine/stage/stage-kit.js +310 -0
- package/skills/lit-typographic-motion/engine/stills.mjs +60 -0
- package/skills/lit-typographic-motion/engine/text.mjs +126 -0
- package/skills/lit-typographic-motion/engine/timing.mjs +289 -0
- package/skills/lit-typographic-motion/engine/treatment.mjs +254 -0
- package/skills/lit-typographic-motion/fonts/Archivo-100-400.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-100-700.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-100-900.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-125-400.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-125-700.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-125-900.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-75-400.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-75-700.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-75-900.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Archivo-OFL.txt +93 -0
- package/skills/lit-typographic-motion/fonts/Silkscreen-Bold.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/Silkscreen-OFL.txt +93 -0
- package/skills/lit-typographic-motion/fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/VT323-OFL.txt +93 -0
- package/skills/lit-typographic-motion/fonts/VT323-Regular.ttf +0 -0
- package/skills/lit-typographic-motion/fonts/pins.json +44 -0
- package/skills/lit-typographic-motion/fonts/stroke/CREDITS +52 -0
- package/skills/lit-typographic-motion/fonts/stroke/EMSAllure.svg +216 -0
- package/skills/lit-typographic-motion/fonts/stroke/EMSFelix.svg +216 -0
- package/skills/lit-typographic-motion/fonts/stroke/EMSOsmotron.svg +216 -0
- package/skills/lit-typographic-motion/fonts/stroke/EMSReadability.svg +216 -0
- package/skills/lit-typographic-motion/fonts/stroke/EMSTech.svg +217 -0
- package/skills/lit-typographic-motion/fonts/stroke/OFL.txt +85 -0
- package/skills/lit-typographic-motion/gate.mjs +593 -0
- package/skills/lit-typographic-motion/package-lock.json +78 -0
- package/skills/lit-typographic-motion/package.json +11 -0
- package/skills/lit-typographic-motion/probe.mjs +74 -0
- package/skills/lit-typographic-motion/references/authoring.md +110 -0
- package/skills/lit-typographic-motion/references/craft-loop.md +110 -0
- package/skills/lit-typographic-motion/references/runtime.md +88 -0
- package/skills/lit-typographic-motion/references/stage.md +164 -0
- package/skills/lit-typographic-motion/references/style-bibles.md +88 -0
- package/skills/lit-typographic-motion/references/treatment.md +143 -0
- package/skills/lit-typographic-motion/references/type-craft.md +55 -0
- package/skills/lit-typographic-motion/render.mjs +654 -0
- package/skills/lit-typographic-motion/requirements-audio.in +1 -0
- package/skills/lit-typographic-motion/requirements-audio.txt +790 -0
- package/skills/lit-typographic-motion/runtime.mjs +259 -0
- package/skills/lit-typographic-motion/word-timing-models.json +25 -0
- package/skills/litresearch/SKILL.md +41 -12
- package/skills/managed-skill-manifest.json +2367 -63
- package/skills/skill-rename-aliases.json +6 -1
- package/tools/check-pack-payload.mjs +22 -1
- package/tools/check-payload-substance.mjs +2 -2
- package/tools/payload-reference-exemptions.json +4 -0
- package/tools/payload-substance-allowlist.json +2 -3
- package/tools/payload-substance-parity.json +7 -7
- package/tools/version-manifests.json +4 -4
- package/skills/lit-korean/SKILL.md +0 -231
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// lit-typographic-motion runtime: `litopencode motion-runtime install|status [--audio] [--word-timing]`.
|
|
3
|
+
// Installs the pinned engine dependencies, fonts and (opt-in) the librosa venv into a product-owned
|
|
4
|
+
// cache, once, outside any render session (MO-A-42, MO-A-54). Renders only read what this wrote.
|
|
5
|
+
import { createHash } from "node:crypto";
|
|
6
|
+
import { spawnSync } from "node:child_process";
|
|
7
|
+
import { copyFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
8
|
+
import os from "node:os";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
|
|
12
|
+
export const skillRoot = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const sha256 = (bytes) => createHash("sha256").update(bytes).digest("hex");
|
|
14
|
+
const hashFile = (file) => sha256(readFileSync(file));
|
|
15
|
+
export const pins = JSON.parse(readFileSync(path.join(skillRoot, "fonts", "pins.json"), "utf8"));
|
|
16
|
+
export const wordTimingPins = JSON.parse(readFileSync(path.join(skillRoot, "word-timing-models.json"), "utf8"));
|
|
17
|
+
const installCommand = "litopencode motion-runtime install";
|
|
18
|
+
|
|
19
|
+
export function runtimePaths(env = process.env) {
|
|
20
|
+
const base = path.join(env.XDG_CACHE_HOME || path.join(env.HOME || os.homedir(), ".cache"), "litopencode", "motion-runtime");
|
|
21
|
+
const lockHash = hashFile(path.join(skillRoot, "package-lock.json")).slice(0, 16);
|
|
22
|
+
const pinHash = sha256(JSON.stringify(pins.fetched) + JSON.stringify(pins.fallback)).slice(0, 16);
|
|
23
|
+
const audioHash = hashFile(path.join(skillRoot, "requirements-audio.txt")).slice(0, 16);
|
|
24
|
+
return {
|
|
25
|
+
base,
|
|
26
|
+
node: path.join(base, `node-${lockHash}`),
|
|
27
|
+
fonts: path.join(base, `fonts-${pinHash}`),
|
|
28
|
+
audio: path.join(base, `audio-${audioHash}`),
|
|
29
|
+
lockHash, pinHash, audioHash
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const pairPath = (entry) => path.resolve(skillRoot, entry.path);
|
|
34
|
+
|
|
35
|
+
// Which fetched files a preset needs (MO-A-55: status names exactly what is missing).
|
|
36
|
+
export function presetFontNeeds(presetId) {
|
|
37
|
+
return Object.entries(pins.fetched).filter(([, pin]) => pin.presets?.includes(presetId)).flatMap(([name, pin]) => [name, ...(pin.licence ?? [])]);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function inspectAudio(env = process.env) {
|
|
41
|
+
const paths = runtimePaths(env);
|
|
42
|
+
const python = path.join(paths.audio, process.platform === "win32" ? "Scripts/python.exe" : "bin/python");
|
|
43
|
+
const receipt = path.join(paths.audio, "requirements.sha256");
|
|
44
|
+
const fix = `${installCommand} --audio`;
|
|
45
|
+
if (!existsSync(python) || !existsSync(receipt)) return { ready: false, state: "absent", reason: `audio analysis not prewarmed: run ${fix}`, python, fix };
|
|
46
|
+
if (readFileSync(receipt, "utf8").trim() !== hashFile(path.join(skillRoot, "requirements-audio.txt")))
|
|
47
|
+
return { ready: false, state: "mismatched", reason: `audio venv no longer matches its pins: run ${fix}`, python, fix };
|
|
48
|
+
const probe = spawnSync(python, ["-c", "import librosa; print(librosa.__version__)"], { encoding: "utf8", timeout: 30000 });
|
|
49
|
+
if (probe.status !== 0 || probe.stdout.trim() !== "0.11.0") return { ready: false, state: "mismatched", reason: `audio venv no longer matches its pins: run ${fix}`, python, fix };
|
|
50
|
+
return { ready: true, state: "ready", version: probe.stdout.trim(), python, fix };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function inspectWordTiming() {
|
|
54
|
+
const usable = wordTimingPins.models.every((model) => model.id && model.revision && model.bytes && model.licenceVerified && !/non-?commercial|\bNC\b/iu.test(model.licence ?? ""));
|
|
55
|
+
return { ready: false, pinned: usable, reason: usable ? "word-timing models are pinned but not installed" : "no licence-verified Korean alignment model is pinned; Tier 3 fails closed", fix: `${installCommand} --word-timing` };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// The full pre-warm state. `blocked` classifies what a render would hit first:
|
|
59
|
+
// a present-but-wrong font -> 15; missing deps -> 14; a missing font -> 15.
|
|
60
|
+
export function inspectWarmState(env = process.env) {
|
|
61
|
+
const paths = runtimePaths(env);
|
|
62
|
+
const deps = [];
|
|
63
|
+
const nodeReceipt = path.join(paths.node, "receipt.json");
|
|
64
|
+
if (!existsSync(path.join(paths.node, "node_modules", "playwright-core", "index.mjs"))) deps.push("pinned Node dependencies (playwright-core, opentype.js, ws)");
|
|
65
|
+
else if (!existsSync(nodeReceipt) || JSON.parse(readFileSync(nodeReceipt, "utf8")).lockSha256 !== hashFile(path.join(skillRoot, "package-lock.json"))) deps.push("lockfile receipt");
|
|
66
|
+
const missingFonts = [];
|
|
67
|
+
const mismatchedFonts = [];
|
|
68
|
+
for (const [name, pin] of Object.entries(pins.fetched)) {
|
|
69
|
+
const file = path.join(paths.fonts, name);
|
|
70
|
+
if (!existsSync(file)) missingFonts.push(name);
|
|
71
|
+
else if (hashFile(file) !== pin.sha256) mismatchedFonts.push(name);
|
|
72
|
+
}
|
|
73
|
+
for (const [relative, expected] of Object.entries(pins.bundled)) {
|
|
74
|
+
const file = path.join(skillRoot, relative);
|
|
75
|
+
if (!existsSync(file)) missingFonts.push(relative);
|
|
76
|
+
else if (hashFile(file) !== expected) mismatchedFonts.push(relative);
|
|
77
|
+
}
|
|
78
|
+
let hangul = "lit-pptx";
|
|
79
|
+
for (const weight of ["Regular", "Bold"]) {
|
|
80
|
+
const entry = pins.litPptxPair[weight];
|
|
81
|
+
const file = pairPath(entry);
|
|
82
|
+
if (existsSync(file) && hashFile(file) === entry.sha256) continue;
|
|
83
|
+
if (existsSync(file)) { mismatchedFonts.push(`lit-pptx ${path.basename(entry.path)}`); continue; }
|
|
84
|
+
hangul = "fallback";
|
|
85
|
+
}
|
|
86
|
+
if (hangul === "fallback") {
|
|
87
|
+
for (const [name, pin] of Object.entries(pins.fallback)) {
|
|
88
|
+
const file = path.join(paths.fonts, name);
|
|
89
|
+
if (!existsSync(file)) missingFonts.push(`${name} (the lit-pptx Hangul pair is absent)`);
|
|
90
|
+
else if (hashFile(file) !== pin.sha256) mismatchedFonts.push(name);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const blocked = mismatchedFonts.length ? { exit: 15, name: "BLOCKED_FONT_FETCH", detail: `font hash mismatch: ${mismatchedFonts.join(", ")}` }
|
|
94
|
+
: deps.length ? { exit: 14, name: "BLOCKED_DEPS_NOT_PREWARMED", detail: `missing ${deps.join(", ")}` }
|
|
95
|
+
: missingFonts.length ? { exit: 15, name: "BLOCKED_FONT_FETCH", detail: `missing fonts: ${missingFonts.join(", ")}` }
|
|
96
|
+
: null;
|
|
97
|
+
return {
|
|
98
|
+
cache: paths.base, nodeDir: paths.node, fontDir: paths.fonts, hangul,
|
|
99
|
+
deps, missingFonts, mismatchedFonts, blocked, ready: blocked === null,
|
|
100
|
+
presets: Object.fromEntries(["swiss-signal", "terminalcore", "tidal"].map((id) => {
|
|
101
|
+
const needs = presetFontNeeds(id);
|
|
102
|
+
const gaps = needs.filter((name) => missingFonts.includes(name) || mismatchedFonts.includes(name));
|
|
103
|
+
return [id, { ready: gaps.length === 0 && deps.length === 0, missing: gaps }];
|
|
104
|
+
})),
|
|
105
|
+
audio: inspectAudio(env), wordTiming: inspectWordTiming(), fix: installCommand
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function takeLock(dir) {
|
|
110
|
+
mkdirSync(path.dirname(dir), { recursive: true });
|
|
111
|
+
try { mkdirSync(dir); return; } catch (error) { if (error.code !== "EEXIST") throw error; }
|
|
112
|
+
if (Date.now() - statSync(dir).mtimeMs > 10 * 60 * 1000) { rmSync(dir, { recursive: true, force: true }); mkdirSync(dir); return; }
|
|
113
|
+
throw new Error(`another motion-runtime install holds ${dir}; wait for it to finish`);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async function fetchPinned(name, pin, env) {
|
|
117
|
+
const url = env.LITOPENCODE_MOTION_MIRROR ? `${env.LITOPENCODE_MOTION_MIRROR.replace(/\/$/u, "")}/${encodeURIComponent(name)}` : pin.url;
|
|
118
|
+
const response = await fetch(url, { signal: AbortSignal.timeout(60000) });
|
|
119
|
+
if (!response.ok) throw new Error(`fetch ${name}: HTTP ${response.status}`);
|
|
120
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
121
|
+
if (sha256(bytes) !== pin.sha256) throw new Error(`fetch ${name}: sha256 mismatch (got ${sha256(bytes)}, pinned ${pin.sha256})`);
|
|
122
|
+
return bytes;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async function installFonts(env, log) {
|
|
126
|
+
const paths = runtimePaths(env);
|
|
127
|
+
const wanted = { ...pins.fetched, ...(inspectWarmState(env).hangul === "fallback" ? pins.fallback : {}) };
|
|
128
|
+
const todo = Object.entries(wanted).filter(([name, pin]) => {
|
|
129
|
+
const file = path.join(paths.fonts, name);
|
|
130
|
+
return !existsSync(file) || hashFile(file) !== pin.sha256;
|
|
131
|
+
});
|
|
132
|
+
if (todo.length === 0) return;
|
|
133
|
+
mkdirSync(paths.fonts, { recursive: true });
|
|
134
|
+
for (const [name, pin] of todo) {
|
|
135
|
+
const bytes = await fetchPinned(name, pin, env);
|
|
136
|
+
const temp = path.join(paths.fonts, `.${name}.${process.pid}.part`);
|
|
137
|
+
writeFileSync(temp, bytes);
|
|
138
|
+
renameSync(temp, path.join(paths.fonts, name));
|
|
139
|
+
log(`fetched ${name} (${bytes.length} B, sha256 verified)`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function installNode(env, log) {
|
|
144
|
+
const paths = runtimePaths(env);
|
|
145
|
+
if (inspectWarmState(env).deps.length === 0) return;
|
|
146
|
+
mkdirSync(paths.base, { recursive: true });
|
|
147
|
+
const stage = mkdtempSync(path.join(paths.base, ".stage-"));
|
|
148
|
+
try {
|
|
149
|
+
copyFileSync(path.join(skillRoot, "package.json"), path.join(stage, "package.json"));
|
|
150
|
+
copyFileSync(path.join(skillRoot, "package-lock.json"), path.join(stage, "package-lock.json"));
|
|
151
|
+
const npm = spawnSync(process.platform === "win32" ? "npm.cmd" : "npm", ["ci", "--omit=dev", "--ignore-scripts", "--no-audit", "--no-fund"],
|
|
152
|
+
{ cwd: stage, encoding: "utf8", timeout: 240000, env: { ...env, npm_config_update_notifier: "false" } });
|
|
153
|
+
if (npm.status !== 0) throw new Error(`npm ci failed: ${(npm.stderr || npm.error?.message || String(npm.status)).trim().split("\n").slice(-3).join(" ")}`);
|
|
154
|
+
writeFileSync(path.join(stage, "receipt.json"), JSON.stringify({ lockSha256: hashFile(path.join(skillRoot, "package-lock.json")) }) + "\n");
|
|
155
|
+
rmSync(paths.node, { recursive: true, force: true });
|
|
156
|
+
renameSync(stage, paths.node);
|
|
157
|
+
log(`installed pinned engine dependencies into ${paths.node}`);
|
|
158
|
+
} finally {
|
|
159
|
+
rmSync(stage, { recursive: true, force: true });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function pythonForAudio(env) {
|
|
164
|
+
const uv = spawnSync("uv", ["python", "find", "--no-python-downloads", "3.12"], { encoding: "utf8", timeout: 10000 });
|
|
165
|
+
for (const name of [env.MOTION_PYTHON, uv.status === 0 ? uv.stdout.trim() : undefined, "python3.12", "python3.11", "python3.13", "python3"]) {
|
|
166
|
+
if (!name) continue;
|
|
167
|
+
const version = spawnSync(name, ["-c", "import sys; print(sys.version_info.major, sys.version_info.minor)"], { encoding: "utf8", timeout: 10000 });
|
|
168
|
+
if (version.status === 0 && /^3 (?:11|12|13)$/u.test(version.stdout.trim())) return name;
|
|
169
|
+
}
|
|
170
|
+
throw new Error("Python 3.11-3.13 is required for the optional audio tier");
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function installAudio(env, log) {
|
|
174
|
+
if (inspectAudio(env).ready) return;
|
|
175
|
+
const paths = runtimePaths(env);
|
|
176
|
+
mkdirSync(paths.base, { recursive: true });
|
|
177
|
+
const stage = mkdtempSync(path.join(paths.base, ".audio-stage-"));
|
|
178
|
+
try {
|
|
179
|
+
const created = spawnSync(pythonForAudio(env), ["-m", "venv", stage], { encoding: "utf8", timeout: 180000 });
|
|
180
|
+
if (created.status !== 0) throw new Error(`audio venv creation failed: ${(created.stderr || created.error?.message || "").trim()}`);
|
|
181
|
+
const python = path.join(stage, process.platform === "win32" ? "Scripts/python.exe" : "bin/python");
|
|
182
|
+
const pip = spawnSync(python, ["-m", "pip", "install", "--require-hashes", "--only-binary=:all:", "--no-deps", "-r", path.join(skillRoot, "requirements-audio.txt")],
|
|
183
|
+
{ encoding: "utf8", timeout: 900000, maxBuffer: 16_000_000 });
|
|
184
|
+
if (pip.status !== 0) throw new Error(`audio pin install failed: ${(pip.stderr || pip.error?.message || "").trim().split("\n").slice(-3).join(" ")}`);
|
|
185
|
+
writeFileSync(path.join(stage, "requirements.sha256"), hashFile(path.join(skillRoot, "requirements-audio.txt")) + "\n");
|
|
186
|
+
rmSync(paths.audio, { recursive: true, force: true });
|
|
187
|
+
renameSync(stage, paths.audio);
|
|
188
|
+
log(`installed the pinned librosa venv into ${paths.audio}`);
|
|
189
|
+
} finally {
|
|
190
|
+
rmSync(stage, { recursive: true, force: true });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// MO-A-21: state the download size and every pin first; fail closed unless each model is pinned
|
|
195
|
+
// with a verified commercial-use licence. No model is downloaded in this build.
|
|
196
|
+
export function describeWordTiming() {
|
|
197
|
+
const lines = ["Tier 3 word timing (opt-in, --word-timing):"];
|
|
198
|
+
const known = wordTimingPins.models.filter((model) => Number.isFinite(model.bytes));
|
|
199
|
+
lines.push(` download size: ${known.length === wordTimingPins.models.length ? `${known.reduce((sum, model) => sum + model.bytes, 0)} bytes` : "not stated, because at least one model has no pinned size"}`);
|
|
200
|
+
for (const model of wordTimingPins.models) {
|
|
201
|
+
lines.push(` ${model.role}: id ${model.id ?? "UNPINNED"}, revision ${model.revision ?? "UNPINNED"}, licence ${model.licence ?? "UNVERIFIED"}`);
|
|
202
|
+
}
|
|
203
|
+
lines.push(` never used at any tier: ${wordTimingPins.forbidden.join(", ")}`);
|
|
204
|
+
return lines.join("\n");
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export async function install(flags = [], env = process.env, log = (line) => console.log(line)) {
|
|
208
|
+
const paths = runtimePaths(env);
|
|
209
|
+
if (flags.includes("--word-timing")) {
|
|
210
|
+
log(describeWordTiming());
|
|
211
|
+
const state = inspectWordTiming();
|
|
212
|
+
if (!state.pinned) {
|
|
213
|
+
log("BLOCKED_DEPS_NOT_PREWARMED: no licence-verified Korean alignment model is pinned, so Tier 3 fails closed; nothing was downloaded.");
|
|
214
|
+
return { exitCode: 14 };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const lock = path.join(paths.base, ".install-lock");
|
|
218
|
+
takeLock(lock);
|
|
219
|
+
try {
|
|
220
|
+
await installFonts(env, log);
|
|
221
|
+
installNode(env, log);
|
|
222
|
+
if (flags.includes("--audio")) installAudio(env, log);
|
|
223
|
+
} finally {
|
|
224
|
+
rmSync(lock, { recursive: true, force: true });
|
|
225
|
+
}
|
|
226
|
+
const state = inspectWarmState(env);
|
|
227
|
+
return { exitCode: state.ready ? 0 : state.blocked.exit, state };
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
async function main(argv) {
|
|
231
|
+
const [command, ...flags] = argv;
|
|
232
|
+
if (!command || command === "--help" || command === "help") {
|
|
233
|
+
console.log("lit-typographic-motion runtime\nUsage: litopencode motion-runtime install|status [--audio] [--word-timing] [--json]");
|
|
234
|
+
return 0;
|
|
235
|
+
}
|
|
236
|
+
if (command === "install") {
|
|
237
|
+
try {
|
|
238
|
+
const result = await install(flags);
|
|
239
|
+
if (result.state) console.log(`motion runtime: ${result.state.ready ? "ready" : `not ready (${result.state.blocked.name}: ${result.state.blocked.detail})`} in ${result.state.cache}`);
|
|
240
|
+
return result.exitCode;
|
|
241
|
+
} catch (error) {
|
|
242
|
+
console.error(`motion runtime install failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
243
|
+
console.error(`nothing in the render session will install it; rerun ${installCommand} with network access`);
|
|
244
|
+
return 14;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (command === "status") {
|
|
248
|
+
const { probe, formatProbe } = await import("./probe.mjs");
|
|
249
|
+
const report = await probe();
|
|
250
|
+
console.log(flags.includes("--json") ? JSON.stringify(report, null, 2) : formatProbe(report));
|
|
251
|
+
return report.prewarm.ready ? 0 : report.prewarm.blocked.exit;
|
|
252
|
+
}
|
|
253
|
+
console.error("Usage: litopencode motion-runtime install|status [--audio] [--word-timing] [--json]");
|
|
254
|
+
return 2;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (process.argv[1] && existsSync(process.argv[1]) && realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url))) {
|
|
258
|
+
main(process.argv.slice(2)).then((code) => { process.exitCode = code; });
|
|
259
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"tier": "word-timing",
|
|
4
|
+
"optIn": "--word-timing",
|
|
5
|
+
"note": "Tier 3 is opt-in only and never runs from bare lit. A model counts only with a pinned id, revision, byte size and a verified licence that allows commercial use. This build records no such Korean alignment model, so the install fails closed before any download.",
|
|
6
|
+
"models": [
|
|
7
|
+
{
|
|
8
|
+
"role": "Korean-capable multilingual transcription",
|
|
9
|
+
"id": null,
|
|
10
|
+
"revision": null,
|
|
11
|
+
"bytes": null,
|
|
12
|
+
"licence": null,
|
|
13
|
+
"licenceVerified": false
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"role": "Korean forced alignment",
|
|
17
|
+
"id": null,
|
|
18
|
+
"revision": null,
|
|
19
|
+
"bytes": null,
|
|
20
|
+
"licence": null,
|
|
21
|
+
"licenceVerified": false
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"forbidden": ["MMS_FA", "madmom", "aubio", "essentia"]
|
|
25
|
+
}
|
|
@@ -89,6 +89,24 @@ child has no task delegation, does not activate this skill recursively, and must
|
|
|
89
89
|
evidence packet without writing shared state. When task delegation is unavailable or
|
|
90
90
|
denied, run the same protocol sequentially and state that degradation in the report.
|
|
91
91
|
|
|
92
|
+
## Bounded task budget
|
|
93
|
+
|
|
94
|
+
For a bounded question with a specified deliverable and no request for exhaustive
|
|
95
|
+
coverage, use a **12 minutes total elapsed research budget**, measured from the first
|
|
96
|
+
research action through source checks, synthesis, and the final response. If the host
|
|
97
|
+
imposes a shorter cap, spend at most half collecting evidence and reserve the rest for
|
|
98
|
+
verification and the answer.
|
|
99
|
+
|
|
100
|
+
For up to ten requested factual outputs, use at most 10 distinct source pages; reuse
|
|
101
|
+
direct official sources across claims. One root-owned pass is the default. Do not spawn
|
|
102
|
+
workers unless the user asks or truly independent checks reduce total elapsed time. Use
|
|
103
|
+
at most two waves total, and start the optional second wave only for an unresolved or
|
|
104
|
+
contradicted material claim. There is no minimum wave count. Treat each `EXPAND` tail as
|
|
105
|
+
a candidate lead to evaluate against the remaining budget, not as an instruction to
|
|
106
|
+
continue. Stop collection when every requested claim has adequate support or the budget
|
|
107
|
+
ends. At the stop, state which facts remain unknown without guessing and preserve the
|
|
108
|
+
requested output shape when possible.
|
|
109
|
+
|
|
92
110
|
Before the first search, record a run id, the decision to be changed, trusted source
|
|
93
111
|
classes, source/step budgets, stop conditions, and non-goals. Use a project-local ignored
|
|
94
112
|
directory such as `.litopencode/litgoal/lit-loop/research/<run-id>/` with root-owned
|
|
@@ -101,13 +119,26 @@ uncertainty, contradictions, duplicate leads, access boundaries, and a mandatory
|
|
|
101
119
|
are append-only and use stable ids with `supports`, `contradicts`, `depends_on`, and
|
|
102
120
|
`duplicates` relations; a later confidence change does not erase an earlier receipt.
|
|
103
121
|
|
|
104
|
-
Run
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
not
|
|
122
|
+
Run only the waves allowed by the user-set or bounded-task budget. No minimum wave count
|
|
123
|
+
applies, even for a multi-faceted question. A further wave is allowed only for a novel,
|
|
124
|
+
decision-relevant unchecked lead. Converge after each wave by deduplicating claims,
|
|
125
|
+
resolving contradictions with a higher-authority source or a falsifying fixture, and
|
|
126
|
+
checking whether another lead can change the decision. Stop when the requested evidence
|
|
127
|
+
threshold is met, the budget is exhausted, all remaining routes are blocked, or every
|
|
128
|
+
child returns `EXPAND_NONE`. Do not manufacture workers to satisfy a count, and do not
|
|
129
|
+
claim host enforcement of an advisory concurrency number.
|
|
130
|
+
|
|
131
|
+
## Requested-coverage matrix
|
|
132
|
+
|
|
133
|
+
Map every requested category and deliverable field to a planned claim and suitable source
|
|
134
|
+
before collecting evidence. Preserve exact version, date, comparison, and output-shape
|
|
135
|
+
constraints. Do not replace a requested comparison with a related but unrequested fact.
|
|
136
|
+
Before delivery, check every numbered line or required section against that map; if a
|
|
137
|
+
requested point cannot be verified, say so in the requested format instead of filling its
|
|
138
|
+
place with adjacent trivia.
|
|
139
|
+
For a version comparison, pair each dimension across the named versions and state one
|
|
140
|
+
concrete migration effect. Prefer exact thresholds or changed behavior over broad status
|
|
141
|
+
labels when the requested output calls for practical differences.
|
|
111
142
|
|
|
112
143
|
## Safe route ladder and failure receipts
|
|
113
144
|
|
|
@@ -199,7 +230,7 @@ work behind a confident summary.
|
|
|
199
230
|
|
|
200
231
|
```yaml
|
|
201
232
|
artifact_genre: internal_analysis
|
|
202
|
-
limitations_channel:
|
|
233
|
+
limitations_channel: reply
|
|
203
234
|
```
|
|
204
235
|
|
|
205
236
|
## #contract.evidence
|
|
@@ -391,11 +422,9 @@ Before using research as the basis for code, ask whether the evidence is current
|
|
|
391
422
|
|
|
392
423
|
**Docs coverage question.** If research is used to expand docs, use other sources only as coverage oracles. Identify topics such as hooks, tools, config, ledgers, package checks, review lanes, security boundaries, stale state, and cleanup. Then write fresh LitOpenCode prose tied to local source. Do not import old identifiers or copied phrasing.
|
|
393
424
|
|
|
394
|
-
##
|
|
395
|
-
|
|
396
|
-
For complex answers, use a small table with columns: claim, source, confidence, uncertainty, and next check. Keep the table short. A row might say: claim “`/start-work` should be command-routed,” source `skills/start-work/SKILL.md` and command tests, confidence high after targeted tests, uncertainty real OpenCode restart not probed, next check packed install if package surface changed. This format makes it obvious which statements are facts and which are remaining risks.
|
|
425
|
+
## Internal evidence graph
|
|
397
426
|
|
|
398
|
-
|
|
427
|
+
Keep claim, source, observation time, validity window, gate result, and unresolved questions in the internal research record. Do not copy that graph into a reader-facing report as a confidence or limitation table. When citations are requested, cite the relevant sources in footnotes or a reference list. Tell the user any material risk once, plainly, in the chat reply.
|
|
399
428
|
|
|
400
429
|
## Source Authority Ladder
|
|
401
430
|
|