@litfamily/litopencode 1.0.3 → 1.0.5
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 +10 -0
- package/README-Ko-KR.md +146 -115
- package/README.md +144 -116
- package/dist/activation-workflow-prompts.js +1 -1
- package/dist/agents/registry.js +30 -26
- package/dist/cli/args.js +3 -3
- package/dist/cli/host-limits.d.ts +1 -1
- package/dist/cli/host-limits.js +3 -2
- package/dist/cli/install-config.js +2 -2
- package/dist/cli/install-report.js +2 -1
- package/dist/cli/managed-skill-assets.d.ts +1 -1
- package/dist/cli/managed-skill-assets.js +3 -1
- package/dist/cli/model-catalog.d.ts +56 -0
- package/dist/cli/model-catalog.js +78 -17
- package/dist/cli/model-policy.js +7 -6
- package/dist/cli/types.d.ts +1 -1
- package/dist/cli.js +8 -7
- package/dist/config-parser.js +3 -2
- package/dist/config.d.ts +1 -1
- package/dist/config.js +13 -12
- package/dist/features.d.ts +17 -1
- package/dist/features.js +10 -0
- package/dist/ignition.d.ts +1 -1
- package/dist/ignition.js +2 -6
- package/dist/model-route-policy.d.ts +1 -1
- package/dist/model-route-policy.js +24 -7
- package/dist/skills.d.ts +8 -1
- package/dist/skills.js +8 -0
- package/dist/uiux-visual-catalog.js +5 -5
- package/docs/assets/cover-motion-still.webp +0 -0
- package/docs/assets/cover-motion.webp +0 -0
- package/docs/assets/readme/JetBrainsMono-OFL.txt +93 -0
- package/docs/assets/readme/Lucide-LICENSE.txt +43 -0
- package/docs/assets/readme/ascii-readme.svg +5 -0
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/assets/readme/ignition-film.mp4 +0 -0
- package/docs/assets/readme/ignition-readme.gif +0 -0
- package/docs/assets/readme/litfamily-machines.png +0 -0
- package/docs/assets/readme/lucide-book-open.svg +14 -0
- package/docs/assets/readme/lucide-play.svg +13 -0
- package/docs/assets/readme/lucide-shield-check.svg +14 -0
- package/docs/assets/readme/poster.png +0 -0
- package/docs/lit-mark.md +5 -4
- package/docs/migration.md +2 -2
- package/docs/reference-Ko-KR.md +21 -4
- package/docs/reference.md +30 -10
- package/package.json +1 -1
- package/skills/frontend-ui-ux/SKILL.md +25 -31
- package/skills/frontend-ui-ux/references/complete-contract.md +12 -12
- package/skills/frontend-ui-ux/references/default-editorial-pixel.json +19 -0
- package/skills/frontend-ui-ux/references/production.md +15 -0
- package/skills/managed-skill-manifest.json +92 -1
- package/skills/readme-studio/SKILL.md +76 -0
- package/skills/readme-studio/references/decoration-patterns.md +105 -0
- package/skills/readme-studio/references/motion.md +38 -0
- package/skills/readme-studio/references/production.md +13 -0
- package/skills/readme-studio/references/typography.md +16 -0
- package/skills/readme-studio/scripts/check-facts.mjs +28 -0
- package/skills/readme-studio/templates/cover-source.json +1 -0
- package/skills/readme-studio/templates/facts.json +1 -0
- package/skills/readme-studio/templates/hyperframes/index.html +62 -0
- package/skills/readme-studio/templates/hyperframes/index.motion.json +1 -0
- package/skills/readme-studio/templates/hyperframes/package-lock.json +1966 -0
- package/skills/readme-studio/templates/hyperframes/package.json +1 -0
- package/skills/readme-studio/templates/readme-cover-section.md +53 -0
- package/skills/readme-studio/templates/remotion/package-lock.json +3783 -0
- package/skills/readme-studio/templates/remotion/package.json +1 -0
- package/skills/readme-studio/templates/remotion/src/index.tsx +32 -0
- package/skills/readme-studio/templates/typography/files.mjs +46 -0
- package/skills/readme-studio/templates/typography/outline.mjs +47 -0
- package/skills/readme-studio/templates/typography/package-lock.json +133 -0
- package/skills/readme-studio/templates/typography/package.json +1 -0
- package/tools/check-pack-payload.mjs +34 -2
- package/tools/payload-substance-parity.json +4 -3
- package/tools/version-manifests.json +10 -4
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { parseArgs } from 'node:util';
|
|
2
|
+
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { inside, readRegular } from '../templates/typography/files.mjs';
|
|
4
|
+
|
|
5
|
+
export function checkFacts(facts, root) {
|
|
6
|
+
const keys = (value, allowed) => value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).every(k => allowed.includes(k));
|
|
7
|
+
const nonempty = s => typeof s === 'string' && s.trim().length > 0 && s.length <= 4096;
|
|
8
|
+
if (!keys(facts, ['claims','badges']) || !Array.isArray(facts.claims) || !facts.claims.length || facts.claims.length > 200 || !Array.isArray(facts.badges) || facts.badges.length > 20) throw new Error('invalid facts structure');
|
|
9
|
+
const ids = new Set();
|
|
10
|
+
for (const claim of facts.claims) {
|
|
11
|
+
if (!keys(claim, ['id','text','sources']) || !nonempty(claim.id) || ids.has(claim.id) || !nonempty(claim.text) || !Array.isArray(claim.sources) || !claim.sources.length || claim.sources.length > 20) throw new Error('invalid or duplicate claim');
|
|
12
|
+
ids.add(claim.id);
|
|
13
|
+
for (const source of claim.sources) readRegular(inside(root, source), 8 * 1048576);
|
|
14
|
+
}
|
|
15
|
+
for (const badge of facts.badges) {
|
|
16
|
+
if (!keys(badge, ['label','url','claim']) || !nonempty(badge.label) || !ids.has(badge.claim) || !nonempty(badge.url) || /[\s\x00-\x1f\x7f]/u.test(badge.url)) throw new Error('invalid badge');
|
|
17
|
+
const url = new URL(badge.url);
|
|
18
|
+
if (!['http:','https:'].includes(url.protocol) || url.username || url.password || !url.hostname) throw new Error('unsafe badge URL');
|
|
19
|
+
}
|
|
20
|
+
return {valid:true, validation_scope:'structure-only', factual_accuracy:'not-checked', source_contents_compared:false, badge_truth_checked:false};
|
|
21
|
+
}
|
|
22
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
23
|
+
try {
|
|
24
|
+
const {values} = parseArgs({options:{root:{type:'string'},facts:{type:'string'}}});
|
|
25
|
+
if (!values.root || !values.facts) throw new Error('--root and --facts required');
|
|
26
|
+
console.log(JSON.stringify(checkFacts(JSON.parse(readRegular(inside(values.root, values.facts))), values.root)));
|
|
27
|
+
} catch (error) { console.error(`readme-studio: ${error.message}`); process.exitCode = 1; }
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"title":"Replace with verified project name","subtitle":"Replace with verified purpose","label":"LOCAL PROJECT","background":{"path":"inputs/background.png","origin":"supplied or native tool receipt","sha256":"record actual hash"},"fonts":[],"alignment":"left","effects":{"blur":6,"grain":0.04,"glow":0.18,"depth":0.025},"engine":"select before rendering","state":"source"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"claims":[{"id":"purpose","text":"Replace with verified purpose","sources":["README.md"]}],"badges":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" data-fps="60">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>README cover</title>
|
|
6
|
+
<style>
|
|
7
|
+
* { box-sizing: border-box }
|
|
8
|
+
body { margin: 0 }
|
|
9
|
+
#cover {
|
|
10
|
+
position: relative; width: 1600px; height: 800px; overflow: hidden;
|
|
11
|
+
background: #15242a; --far-blur: 9px; --middle-blur: 2px; --grain: .04; --glow: .18;
|
|
12
|
+
}
|
|
13
|
+
.background { position: absolute; width: 100%; height: 100%; object-fit: cover }
|
|
14
|
+
.depth-plane-far {
|
|
15
|
+
filter: blur(var(--far-blur)); transform: scale(1.04);
|
|
16
|
+
animation: field 5s ease-in-out both;
|
|
17
|
+
}
|
|
18
|
+
.depth-plane-middle {
|
|
19
|
+
filter: blur(var(--middle-blur)); opacity: .68; transform: scale(1.03);
|
|
20
|
+
mask-image: linear-gradient(to bottom, transparent 5%, black 28%, black 72%, transparent 94%);
|
|
21
|
+
-webkit-mask-image: linear-gradient(to bottom, transparent 5%, black 28%, black 72%, transparent 94%);
|
|
22
|
+
animation: middle-plane 5s ease-in-out both;
|
|
23
|
+
}
|
|
24
|
+
.glow {
|
|
25
|
+
position: absolute; inset: 0;
|
|
26
|
+
background: radial-gradient(ellipse at 80% 10%, rgba(170,240,196,var(--glow)), transparent 60%);
|
|
27
|
+
}
|
|
28
|
+
.rim-light {
|
|
29
|
+
position: absolute; inset: 0; z-index: 3; pointer-events: none; mix-blend-mode: screen; opacity: .78;
|
|
30
|
+
background: linear-gradient(112deg, transparent 42%, rgba(255,244,196,.04) 46%, rgba(255,239,184,.38) 49%, rgba(255,255,245,.2) 50%, rgba(255,239,184,.08) 53%, transparent 59%);
|
|
31
|
+
}
|
|
32
|
+
.panel {
|
|
33
|
+
position: absolute; z-index: 4; left: 64px; top: 60px; width: 1024px; padding: 36px;
|
|
34
|
+
background: #15242a; border: 1px solid #f4f1e9; animation: entry 5s cubic-bezier(.2,.8,.2,1) both;
|
|
35
|
+
}
|
|
36
|
+
.sharp-foreground { filter: none }
|
|
37
|
+
.label { height: 24px; width: 42%; object-fit: contain; object-position: left }
|
|
38
|
+
.title { width: 100%; display: block; margin-top: 42px }
|
|
39
|
+
.subtitle { display: block; width: 94%; margin-top: 24px }
|
|
40
|
+
.rule { height: 1px; background: #f4f1e9; opacity: .35; margin-top: 40px }
|
|
41
|
+
.pixel { position: absolute; z-index: 5; right: 80px; bottom: 68px; width: 240px; height: 186px; animation: sprite 5s ease-in-out both }
|
|
42
|
+
@keyframes field { 0%,100% { transform: scale(1.04) } 50% { transform: scale(1.065) } }
|
|
43
|
+
@keyframes middle-plane { 0%,100% { transform: scale(1.03) } 50% { transform: scale(1.045) } }
|
|
44
|
+
@keyframes entry { 0%,100% { transform: translateY(12px) } 8%,92% { transform: translateY(0) } }
|
|
45
|
+
@keyframes sprite { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-16px) } }
|
|
46
|
+
@media (prefers-reduced-motion: reduce) {
|
|
47
|
+
.depth-plane-far, .depth-plane-middle, .panel, .pixel { animation: none !important }
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
50
|
+
</head>
|
|
51
|
+
<body>
|
|
52
|
+
<div id="cover" data-composition-id="ReadmeCover" data-start="0" data-width="1600" data-height="800" data-duration="5" data-no-timeline>
|
|
53
|
+
<img class="background depth-plane-far" src="background.png" alt="">
|
|
54
|
+
<img class="background depth-plane-middle" src="background.png" alt="">
|
|
55
|
+
<div class="glow"></div>
|
|
56
|
+
<div class="rim-light"></div>
|
|
57
|
+
<svg width="1600" height="800" style="position:absolute;z-index:2;opacity:var(--grain)"><filter id="grain"><feTurbulence type="fractalNoise" baseFrequency=".8" numOctaves="2" seed="17"/></filter><rect width="100%" height="100%" filter="url(#grain)"/></svg>
|
|
58
|
+
<div class="panel sharp-foreground"><img class="label" src="label-light.svg" alt="Technical label"><img class="title" src="title-light.svg" alt="Project title"><img class="subtitle" src="subtitle-light.svg" alt="Purpose"><div class="rule"></div></div>
|
|
59
|
+
<svg class="pixel" viewBox="0 0 9 7" shape-rendering="crispEdges" aria-label="Original pixel sprite"><path fill="#c9ee95" d="M3 0h4v1H3zM2 1h6v1H2zM1 2h2v1H1zM4 2h1v1H4zM6 2h3v1H6zM0 3h9v1H0zM1 4h7v1H1zM2 5h1v1H2zM5 5h2v1H5zM1 6h2v1H1zM5 6h3v1H5z"/></svg>
|
|
60
|
+
</div>
|
|
61
|
+
</body>
|
|
62
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"duration":5,"assertions":[{"kind":"keepsMoving","withinSelector":"#cover","maxStaticSec":1.2}]}
|