@open-agent-toolkit/cli 0.2.5 → 0.2.7
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/assets/docs/cli-utilities/configuration.md +40 -0
- package/assets/docs/cli-utilities/tool-packs.md +31 -0
- package/assets/docs/workflows/projects/artifacts.md +27 -0
- package/assets/docs/workflows/skills/explainer-kit.md +125 -0
- package/assets/docs/workflows/skills/index.md +4 -0
- package/assets/migration/pjm-restructure.md +12 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/explainer-kit/SKILL.md +95 -0
- package/assets/skills/explainer-kit/examples/project-explainer/content.md +31 -0
- package/assets/skills/explainer-kit/examples/project-explainer/fact-base.md +22 -0
- package/assets/skills/explainer-kit/examples/project-recap/content.md +34 -0
- package/assets/skills/explainer-kit/examples/project-recap/fact-base.md +22 -0
- package/assets/skills/explainer-kit/examples/theme-bundle.json +87 -0
- package/assets/skills/explainer-kit/palettes/ember.json +37 -0
- package/assets/skills/explainer-kit/palettes/forest.json +37 -0
- package/assets/skills/explainer-kit/palettes/neutral.json +37 -0
- package/assets/skills/explainer-kit/palettes/ocean.json +37 -0
- package/assets/skills/explainer-kit/palettes/violet.json +37 -0
- package/assets/skills/explainer-kit/profiles/clean.json +42 -0
- package/assets/skills/explainer-kit/profiles/editorial.json +42 -0
- package/assets/skills/explainer-kit/profiles/technical.json +39 -0
- package/assets/skills/explainer-kit/recipes/engineer-tour.json +33 -0
- package/assets/skills/explainer-kit/recipes/project-explainer.json +33 -0
- package/assets/skills/explainer-kit/recipes/project-recap.json +34 -0
- package/assets/skills/explainer-kit/references/contracts.md +101 -0
- package/assets/skills/explainer-kit/references/destination-contract.md +94 -0
- package/assets/skills/explainer-kit/references/extension-contract.md +71 -0
- package/assets/skills/explainer-kit/references/fact-base-contract.md +119 -0
- package/assets/skills/explainer-kit/schemas/build-record.schema.json +92 -0
- package/assets/skills/explainer-kit/schemas/durability-evidence.schema.json +53 -0
- package/assets/skills/explainer-kit/schemas/fact-base.schema.json +129 -0
- package/assets/skills/explainer-kit/schemas/manifest.schema.json +193 -0
- package/assets/skills/explainer-kit/schemas/publish-receipt.schema.json +97 -0
- package/assets/skills/explainer-kit/schemas/publish-request.schema.json +32 -0
- package/assets/skills/explainer-kit/schemas/run-request.schema.json +132 -0
- package/assets/skills/explainer-kit/schemas/theme.schema.json +217 -0
- package/assets/skills/explainer-kit/scripts/lib/content-approval.mjs +180 -0
- package/assets/skills/explainer-kit/scripts/lib/contracts.mjs +680 -0
- package/assets/skills/explainer-kit/scripts/lib/durability.mjs +538 -0
- package/assets/skills/explainer-kit/scripts/lib/fact-base.mjs +494 -0
- package/assets/skills/explainer-kit/scripts/lib/fs-safe.mjs +218 -0
- package/assets/skills/explainer-kit/scripts/lib/qa.mjs +512 -0
- package/assets/skills/explainer-kit/scripts/lib/recipes.mjs +289 -0
- package/assets/skills/explainer-kit/scripts/lib/records.mjs +231 -0
- package/assets/skills/explainer-kit/scripts/lib/render.mjs +485 -0
- package/assets/skills/explainer-kit/scripts/lib/s3-static.mjs +587 -0
- package/assets/skills/explainer-kit/scripts/lib/safe-paths.mjs +96 -0
- package/assets/skills/explainer-kit/scripts/lib/theme.mjs +332 -0
- package/assets/skills/explainer-kit/scripts/publish.mjs +76 -0
- package/assets/skills/explainer-kit/scripts/record-durability.mjs +64 -0
- package/assets/skills/explainer-kit/scripts/render-qa.mjs +273 -0
- package/assets/skills/explainer-kit/scripts/run.mjs +778 -0
- package/assets/skills/explainer-kit/scripts/validate.mjs +59 -0
- package/assets/skills/explainer-kit/templates/deck-shell.html +233 -0
- package/assets/skills/explainer-kit/templates/diagram-shell.html +219 -0
- package/assets/skills/explainer-kit/templates/engineer-tour.html +273 -0
- package/assets/skills/explainer-kit/templates/house-style.html +218 -0
- package/assets/skills/oat-explainer-kit/SKILL.md +92 -0
- package/assets/skills/oat-explainer-kit/references/config-contract.md +67 -0
- package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +143 -0
- package/assets/skills/oat-explainer-kit/references/migration.md +143 -0
- package/assets/skills/oat-explainer-kit/scripts/bind-project-sources.mjs +103 -0
- package/assets/skills/oat-explainer-kit/scripts/check-core.mjs +127 -0
- package/assets/skills/oat-explainer-kit/scripts/finalize-tracked-run.mjs +392 -0
- package/assets/skills/oat-explainer-kit/scripts/persist-intent.mjs +130 -0
- package/assets/skills/oat-explainer-kit/scripts/resolve-config.mjs +293 -0
- package/assets/skills/oat-explainer-kit/scripts/resolve-intent.mjs +209 -0
- package/assets/skills/oat-explainer-kit/scripts/resolve-paths.mjs +166 -0
- package/assets/skills/oat-explainer-kit/scripts/run.mjs +284 -0
- package/assets/skills/oat-project-autonomous/SKILL.md +22 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +5 -1
- package/assets/skills/oat-project-complete/SKILL.md +166 -28
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +5 -1
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +17 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +5 -1
- package/assets/skills/oat-project-plan/SKILL.md +30 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +5 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +5 -1
- package/assets/skills/oat-project-summary/SKILL.md +20 -1
- package/assets/skills/oat-wave-execute/SKILL.md +1 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +232 -1
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +2 -2
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +2 -0
- package/dist/commands/project/archive/archive-utils.d.ts +12 -0
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +320 -8
- package/dist/commands/project/archive/index.d.ts.map +1 -1
- package/dist/commands/project/archive/index.js +1 -0
- package/dist/commands/project/archive/push-runner.d.ts +1 -0
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/push-runner.js +9 -2
- package/dist/config/oat-config.d.ts +26 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +88 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +18 -0
- package/dist/validation/project-state.d.ts +3 -0
- package/dist/validation/project-state.d.ts.map +1 -1
- package/dist/validation/project-state.js +91 -0
- package/package.json +2 -2
- /package/assets/skills/{oat-wave-execute/assets/program-recap.recipe.json → explainer-kit/recipes/program-recap.json} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ember",
|
|
3
|
+
"modes": {
|
|
4
|
+
"light": {
|
|
5
|
+
"surface": {
|
|
6
|
+
"canvas": "#fffbeb",
|
|
7
|
+
"panel": "#fef3c7",
|
|
8
|
+
"elevated": "#fde68a"
|
|
9
|
+
},
|
|
10
|
+
"ink": { "primary": "#451a03", "muted": "#713f12", "inverse": "#ffffff" },
|
|
11
|
+
"accent": { "primary": "#9a3412", "secondary": "#92400e" },
|
|
12
|
+
"status": {
|
|
13
|
+
"success": "#166534",
|
|
14
|
+
"warning": "#854d0e",
|
|
15
|
+
"danger": "#991b1b",
|
|
16
|
+
"info": "#1e40af"
|
|
17
|
+
},
|
|
18
|
+
"diagramSeries": ["#9a3412", "#92400e", "#166534", "#1e40af"]
|
|
19
|
+
},
|
|
20
|
+
"dark": {
|
|
21
|
+
"surface": {
|
|
22
|
+
"canvas": "#431407",
|
|
23
|
+
"panel": "#7c2d12",
|
|
24
|
+
"elevated": "#78350f"
|
|
25
|
+
},
|
|
26
|
+
"ink": { "primary": "#fff7ed", "muted": "#fed7aa", "inverse": "#431407" },
|
|
27
|
+
"accent": { "primary": "#fdba74", "secondary": "#fcd34d" },
|
|
28
|
+
"status": {
|
|
29
|
+
"success": "#86efac",
|
|
30
|
+
"warning": "#fde047",
|
|
31
|
+
"danger": "#fca5a5",
|
|
32
|
+
"info": "#93c5fd"
|
|
33
|
+
},
|
|
34
|
+
"diagramSeries": ["#fdba74", "#fcd34d", "#86efac", "#93c5fd"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "forest",
|
|
3
|
+
"modes": {
|
|
4
|
+
"light": {
|
|
5
|
+
"surface": {
|
|
6
|
+
"canvas": "#f7fee7",
|
|
7
|
+
"panel": "#ecfccb",
|
|
8
|
+
"elevated": "#d9f99d"
|
|
9
|
+
},
|
|
10
|
+
"ink": { "primary": "#052e16", "muted": "#365314", "inverse": "#ffffff" },
|
|
11
|
+
"accent": { "primary": "#166534", "secondary": "#3f6212" },
|
|
12
|
+
"status": {
|
|
13
|
+
"success": "#166534",
|
|
14
|
+
"warning": "#854d0e",
|
|
15
|
+
"danger": "#991b1b",
|
|
16
|
+
"info": "#1e40af"
|
|
17
|
+
},
|
|
18
|
+
"diagramSeries": ["#166534", "#3f6212", "#854d0e", "#1e40af"]
|
|
19
|
+
},
|
|
20
|
+
"dark": {
|
|
21
|
+
"surface": {
|
|
22
|
+
"canvas": "#052e16",
|
|
23
|
+
"panel": "#14532d",
|
|
24
|
+
"elevated": "#365314"
|
|
25
|
+
},
|
|
26
|
+
"ink": { "primary": "#f7fee7", "muted": "#d9f99d", "inverse": "#052e16" },
|
|
27
|
+
"accent": { "primary": "#86efac", "secondary": "#bef264" },
|
|
28
|
+
"status": {
|
|
29
|
+
"success": "#86efac",
|
|
30
|
+
"warning": "#fde047",
|
|
31
|
+
"danger": "#fca5a5",
|
|
32
|
+
"info": "#93c5fd"
|
|
33
|
+
},
|
|
34
|
+
"diagramSeries": ["#86efac", "#bef264", "#fde047", "#93c5fd"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "neutral",
|
|
3
|
+
"modes": {
|
|
4
|
+
"light": {
|
|
5
|
+
"surface": {
|
|
6
|
+
"canvas": "#ffffff",
|
|
7
|
+
"panel": "#f3f4f6",
|
|
8
|
+
"elevated": "#e5e7eb"
|
|
9
|
+
},
|
|
10
|
+
"ink": { "primary": "#111827", "muted": "#4b5563", "inverse": "#ffffff" },
|
|
11
|
+
"accent": { "primary": "#374151", "secondary": "#4b5563" },
|
|
12
|
+
"status": {
|
|
13
|
+
"success": "#166534",
|
|
14
|
+
"warning": "#854d0e",
|
|
15
|
+
"danger": "#991b1b",
|
|
16
|
+
"info": "#1e40af"
|
|
17
|
+
},
|
|
18
|
+
"diagramSeries": ["#374151", "#1e40af", "#166534", "#854d0e"]
|
|
19
|
+
},
|
|
20
|
+
"dark": {
|
|
21
|
+
"surface": {
|
|
22
|
+
"canvas": "#111827",
|
|
23
|
+
"panel": "#1f2937",
|
|
24
|
+
"elevated": "#374151"
|
|
25
|
+
},
|
|
26
|
+
"ink": { "primary": "#f9fafb", "muted": "#d1d5db", "inverse": "#111827" },
|
|
27
|
+
"accent": { "primary": "#d1d5db", "secondary": "#e5e7eb" },
|
|
28
|
+
"status": {
|
|
29
|
+
"success": "#86efac",
|
|
30
|
+
"warning": "#fde047",
|
|
31
|
+
"danger": "#fca5a5",
|
|
32
|
+
"info": "#93c5fd"
|
|
33
|
+
},
|
|
34
|
+
"diagramSeries": ["#d1d5db", "#93c5fd", "#86efac", "#fde047"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ocean",
|
|
3
|
+
"modes": {
|
|
4
|
+
"light": {
|
|
5
|
+
"surface": {
|
|
6
|
+
"canvas": "#f8fafc",
|
|
7
|
+
"panel": "#e2e8f0",
|
|
8
|
+
"elevated": "#cbd5e1"
|
|
9
|
+
},
|
|
10
|
+
"ink": { "primary": "#0f172a", "muted": "#334155", "inverse": "#ffffff" },
|
|
11
|
+
"accent": { "primary": "#075985", "secondary": "#155e75" },
|
|
12
|
+
"status": {
|
|
13
|
+
"success": "#166534",
|
|
14
|
+
"warning": "#854d0e",
|
|
15
|
+
"danger": "#991b1b",
|
|
16
|
+
"info": "#075985"
|
|
17
|
+
},
|
|
18
|
+
"diagramSeries": ["#075985", "#155e75", "#166534", "#854d0e"]
|
|
19
|
+
},
|
|
20
|
+
"dark": {
|
|
21
|
+
"surface": {
|
|
22
|
+
"canvas": "#082f49",
|
|
23
|
+
"panel": "#0c4a6e",
|
|
24
|
+
"elevated": "#164e63"
|
|
25
|
+
},
|
|
26
|
+
"ink": { "primary": "#f0f9ff", "muted": "#bae6fd", "inverse": "#082f49" },
|
|
27
|
+
"accent": { "primary": "#7dd3fc", "secondary": "#67e8f9" },
|
|
28
|
+
"status": {
|
|
29
|
+
"success": "#86efac",
|
|
30
|
+
"warning": "#fde047",
|
|
31
|
+
"danger": "#fca5a5",
|
|
32
|
+
"info": "#bae6fd"
|
|
33
|
+
},
|
|
34
|
+
"diagramSeries": ["#7dd3fc", "#67e8f9", "#86efac", "#fde047"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "violet",
|
|
3
|
+
"modes": {
|
|
4
|
+
"light": {
|
|
5
|
+
"surface": {
|
|
6
|
+
"canvas": "#faf5ff",
|
|
7
|
+
"panel": "#f3e8ff",
|
|
8
|
+
"elevated": "#e9d5ff"
|
|
9
|
+
},
|
|
10
|
+
"ink": { "primary": "#2e1065", "muted": "#581c87", "inverse": "#ffffff" },
|
|
11
|
+
"accent": { "primary": "#6b21a8", "secondary": "#5b21b6" },
|
|
12
|
+
"status": {
|
|
13
|
+
"success": "#166534",
|
|
14
|
+
"warning": "#854d0e",
|
|
15
|
+
"danger": "#991b1b",
|
|
16
|
+
"info": "#1e40af"
|
|
17
|
+
},
|
|
18
|
+
"diagramSeries": ["#6b21a8", "#5b21b6", "#166534", "#854d0e"]
|
|
19
|
+
},
|
|
20
|
+
"dark": {
|
|
21
|
+
"surface": {
|
|
22
|
+
"canvas": "#2e1065",
|
|
23
|
+
"panel": "#4c1d95",
|
|
24
|
+
"elevated": "#581c87"
|
|
25
|
+
},
|
|
26
|
+
"ink": { "primary": "#faf5ff", "muted": "#e9d5ff", "inverse": "#2e1065" },
|
|
27
|
+
"accent": { "primary": "#d8b4fe", "secondary": "#c4b5fd" },
|
|
28
|
+
"status": {
|
|
29
|
+
"success": "#86efac",
|
|
30
|
+
"warning": "#fde047",
|
|
31
|
+
"danger": "#fca5a5",
|
|
32
|
+
"info": "#93c5fd"
|
|
33
|
+
},
|
|
34
|
+
"diagramSeries": ["#d8b4fe", "#c4b5fd", "#86efac", "#fde047"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "clean",
|
|
3
|
+
"typography": {
|
|
4
|
+
"sans": ["system-ui", "-apple-system", "BlinkMacSystemFont", "sans-serif"],
|
|
5
|
+
"serif": ["ui-serif", "Georgia", "serif"],
|
|
6
|
+
"mono": ["ui-monospace", "SFMono-Regular", "Consolas", "monospace"],
|
|
7
|
+
"scale": {
|
|
8
|
+
"caption": "0.875rem",
|
|
9
|
+
"body": "1rem",
|
|
10
|
+
"title": "1.5rem",
|
|
11
|
+
"display": "2.25rem"
|
|
12
|
+
},
|
|
13
|
+
"lineHeight": { "caption": 1.4, "body": 1.6, "title": 1.25, "display": 1.1 }
|
|
14
|
+
},
|
|
15
|
+
"spacing": {
|
|
16
|
+
"unit": 4,
|
|
17
|
+
"scale": { "xs": 4, "sm": 8, "md": 16, "lg": 24, "xl": 40 }
|
|
18
|
+
},
|
|
19
|
+
"geometry": { "radius": { "sm": 4, "md": 8, "lg": 12 }, "borderWidth": 1 },
|
|
20
|
+
"elevation": {
|
|
21
|
+
"shadows": {
|
|
22
|
+
"low": "0 1px 2px rgb(0 0 0 / 0.08)",
|
|
23
|
+
"high": "0 12px 28px rgb(0 0 0 / 0.16)"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"density": "comfortable",
|
|
27
|
+
"motion": {
|
|
28
|
+
"enabled": true,
|
|
29
|
+
"durationMs": { "fast": 120, "normal": 200, "slow": 320 },
|
|
30
|
+
"easing": {
|
|
31
|
+
"standard": "ease",
|
|
32
|
+
"emphasized": "cubic-bezier(0.2, 0, 0, 1)"
|
|
33
|
+
},
|
|
34
|
+
"reducedMotion": "disable-nonessential"
|
|
35
|
+
},
|
|
36
|
+
"diagrams": {
|
|
37
|
+
"lineWidth": 2,
|
|
38
|
+
"nodeGap": 32,
|
|
39
|
+
"arrowStyle": "straight",
|
|
40
|
+
"labelTreatment": "boxed"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "editorial",
|
|
3
|
+
"typography": {
|
|
4
|
+
"sans": ["system-ui", "-apple-system", "BlinkMacSystemFont", "sans-serif"],
|
|
5
|
+
"serif": ["Charter", "Bitstream Charter", "Georgia", "serif"],
|
|
6
|
+
"mono": ["ui-monospace", "SFMono-Regular", "Consolas", "monospace"],
|
|
7
|
+
"scale": {
|
|
8
|
+
"caption": "0.875rem",
|
|
9
|
+
"body": "1.0625rem",
|
|
10
|
+
"title": "1.75rem",
|
|
11
|
+
"display": "2.75rem"
|
|
12
|
+
},
|
|
13
|
+
"lineHeight": { "caption": 1.5, "body": 1.7, "title": 1.2, "display": 1.05 }
|
|
14
|
+
},
|
|
15
|
+
"spacing": {
|
|
16
|
+
"unit": 5,
|
|
17
|
+
"scale": { "xs": 5, "sm": 10, "md": 20, "lg": 30, "xl": 50 }
|
|
18
|
+
},
|
|
19
|
+
"geometry": { "radius": { "sm": 2, "md": 4, "lg": 8 }, "borderWidth": 1 },
|
|
20
|
+
"elevation": {
|
|
21
|
+
"shadows": {
|
|
22
|
+
"low": "0 1px 3px rgb(0 0 0 / 0.1)",
|
|
23
|
+
"high": "0 16px 36px rgb(0 0 0 / 0.18)"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"density": "spacious",
|
|
27
|
+
"motion": {
|
|
28
|
+
"enabled": true,
|
|
29
|
+
"durationMs": { "fast": 150, "normal": 240, "slow": 400 },
|
|
30
|
+
"easing": {
|
|
31
|
+
"standard": "ease-out",
|
|
32
|
+
"emphasized": "cubic-bezier(0.16, 1, 0.3, 1)"
|
|
33
|
+
},
|
|
34
|
+
"reducedMotion": "disable-nonessential"
|
|
35
|
+
},
|
|
36
|
+
"diagrams": {
|
|
37
|
+
"lineWidth": 1.5,
|
|
38
|
+
"nodeGap": 40,
|
|
39
|
+
"arrowStyle": "curved",
|
|
40
|
+
"labelTreatment": "inline"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "technical",
|
|
3
|
+
"typography": {
|
|
4
|
+
"sans": ["system-ui", "-apple-system", "BlinkMacSystemFont", "sans-serif"],
|
|
5
|
+
"serif": ["ui-serif", "Georgia", "serif"],
|
|
6
|
+
"mono": ["ui-monospace", "SFMono-Regular", "Consolas", "monospace"],
|
|
7
|
+
"scale": {
|
|
8
|
+
"caption": "0.8125rem",
|
|
9
|
+
"body": "0.9375rem",
|
|
10
|
+
"title": "1.375rem",
|
|
11
|
+
"display": "2rem"
|
|
12
|
+
},
|
|
13
|
+
"lineHeight": { "caption": 1.35, "body": 1.5, "title": 1.2, "display": 1.1 }
|
|
14
|
+
},
|
|
15
|
+
"spacing": {
|
|
16
|
+
"unit": 3,
|
|
17
|
+
"scale": { "xs": 3, "sm": 6, "md": 12, "lg": 18, "xl": 30 }
|
|
18
|
+
},
|
|
19
|
+
"geometry": { "radius": { "sm": 2, "md": 4, "lg": 6 }, "borderWidth": 1 },
|
|
20
|
+
"elevation": {
|
|
21
|
+
"shadows": {
|
|
22
|
+
"low": "0 1px 2px rgb(0 0 0 / 0.12)",
|
|
23
|
+
"high": "0 8px 20px rgb(0 0 0 / 0.2)"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"density": "compact",
|
|
27
|
+
"motion": {
|
|
28
|
+
"enabled": false,
|
|
29
|
+
"durationMs": { "fast": 0, "normal": 0, "slow": 0 },
|
|
30
|
+
"easing": { "standard": "linear", "emphasized": "linear" },
|
|
31
|
+
"reducedMotion": "disable-nonessential"
|
|
32
|
+
},
|
|
33
|
+
"diagrams": {
|
|
34
|
+
"lineWidth": 2,
|
|
35
|
+
"nodeGap": 24,
|
|
36
|
+
"arrowStyle": "straight",
|
|
37
|
+
"labelTreatment": "boxed"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "explainer-kit.recipe/v1",
|
|
3
|
+
"id": "engineer-tour",
|
|
4
|
+
"version": "1",
|
|
5
|
+
"sourceRoles": [
|
|
6
|
+
{
|
|
7
|
+
"role": "codebase",
|
|
8
|
+
"required": true,
|
|
9
|
+
"accepts": ["directory", "git"],
|
|
10
|
+
"minBindings": 1,
|
|
11
|
+
"maxBindings": 1
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"requiredNarrative": [
|
|
15
|
+
"orientation",
|
|
16
|
+
"architecture",
|
|
17
|
+
"execution-flow",
|
|
18
|
+
"key-code",
|
|
19
|
+
"validation"
|
|
20
|
+
],
|
|
21
|
+
"artifacts": [
|
|
22
|
+
{
|
|
23
|
+
"id": "engineer-tour",
|
|
24
|
+
"type": "explainer",
|
|
25
|
+
"template": "engineer-tour",
|
|
26
|
+
"required": true
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"discoveryLimits": {
|
|
30
|
+
"consecutiveNoNewFindingsRounds": 2,
|
|
31
|
+
"maxRounds": 8
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "explainer-kit.recipe/v1",
|
|
3
|
+
"id": "project-explainer",
|
|
4
|
+
"version": "1",
|
|
5
|
+
"sourceRoles": [
|
|
6
|
+
{
|
|
7
|
+
"role": "project",
|
|
8
|
+
"required": true,
|
|
9
|
+
"accepts": ["file", "directory", "git", "github"],
|
|
10
|
+
"minBindings": 1,
|
|
11
|
+
"maxBindings": 1
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"requiredNarrative": [
|
|
15
|
+
"planned-architecture",
|
|
16
|
+
"decisions",
|
|
17
|
+
"risks",
|
|
18
|
+
"phases",
|
|
19
|
+
"validation-approach"
|
|
20
|
+
],
|
|
21
|
+
"artifacts": [
|
|
22
|
+
{
|
|
23
|
+
"id": "project-explainer",
|
|
24
|
+
"type": "hub",
|
|
25
|
+
"template": "house-style",
|
|
26
|
+
"required": true
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"discoveryLimits": {
|
|
30
|
+
"consecutiveNoNewFindingsRounds": 2,
|
|
31
|
+
"maxRounds": 8
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "explainer-kit.recipe/v1",
|
|
3
|
+
"id": "project-recap",
|
|
4
|
+
"version": "1",
|
|
5
|
+
"sourceRoles": [
|
|
6
|
+
{
|
|
7
|
+
"role": "project",
|
|
8
|
+
"required": true,
|
|
9
|
+
"accepts": ["file", "directory", "git", "github"],
|
|
10
|
+
"minBindings": 1,
|
|
11
|
+
"maxBindings": 1
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"requiredNarrative": [
|
|
15
|
+
"original-request",
|
|
16
|
+
"key-agent-decisions",
|
|
17
|
+
"as-built-architecture",
|
|
18
|
+
"implementation-record",
|
|
19
|
+
"validation-evidence",
|
|
20
|
+
"outcome"
|
|
21
|
+
],
|
|
22
|
+
"artifacts": [
|
|
23
|
+
{
|
|
24
|
+
"id": "project-recap",
|
|
25
|
+
"type": "hub",
|
|
26
|
+
"template": "house-style",
|
|
27
|
+
"required": true
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"discoveryLimits": {
|
|
31
|
+
"consecutiveNoNewFindingsRounds": 2,
|
|
32
|
+
"maxRounds": 8
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Core run contract
|
|
2
|
+
|
|
3
|
+
`scripts/run.mjs` is the config-blind orchestration entry point. It reads only
|
|
4
|
+
the explicit `ExplainerRunRequestV1`, bundled skill assets, and source paths
|
|
5
|
+
named by that request. It does not search for `.oat`, user configuration,
|
|
6
|
+
provider configuration, vaults, or destinations.
|
|
7
|
+
|
|
8
|
+
## Invocation
|
|
9
|
+
|
|
10
|
+
Programmatic callers import `runExplainer(request, options)`. Command-line
|
|
11
|
+
callers use:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
node scripts/run.mjs --request request.json
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Federated runs require a provider-neutral critic callback. A command-line
|
|
18
|
+
caller supplies one with `--critic-module critic.mjs`; the module exports
|
|
19
|
+
`critic(request)` or a default function. The callback receives reconciled
|
|
20
|
+
claims, sources, overrides, and the freshness policy. It returns:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"criticId": "skeptical-pass",
|
|
25
|
+
"executedAt": "2026-07-17T20:00:00Z",
|
|
26
|
+
"findings": []
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
No provider name, command, credential, or dispatch protocol is part of this
|
|
31
|
+
contract.
|
|
32
|
+
|
|
33
|
+
## Explicit source forms
|
|
34
|
+
|
|
35
|
+
- `factBase.mode: supplied` points to a valid `FactBaseV1` JSON file. The core
|
|
36
|
+
performs only the lightweight consistency and freshness check and never
|
|
37
|
+
invokes the critic.
|
|
38
|
+
- `factBase.mode: federated` names explicit source bindings. File locators
|
|
39
|
+
contain JSON with a `claims` array of `{ "id", "text", "locator"? }`.
|
|
40
|
+
Non-file bindings require a caller-supplied `sourceLoader(source)` callback.
|
|
41
|
+
Every binding names its recipe `role` and `sourceSetId`. Multiple documents
|
|
42
|
+
may share one source-set ID; recipe cardinality counts distinct sets, not
|
|
43
|
+
documents. The core validates these bindings before loading facts, then
|
|
44
|
+
reconciles the loaded claims and invokes the critic exactly once.
|
|
45
|
+
|
|
46
|
+
An unattended request asserts that its explicit source artifacts are already
|
|
47
|
+
approved. It does not prompt. Interactive review and same-run approval/resume
|
|
48
|
+
are introduced separately and are not part of this contract.
|
|
49
|
+
|
|
50
|
+
## Pipeline and retained package
|
|
51
|
+
|
|
52
|
+
The core executes:
|
|
53
|
+
|
|
54
|
+
1. validate request and recipe
|
|
55
|
+
2. reconcile or check the fact base
|
|
56
|
+
3. apply bounded discovery and create recipe content
|
|
57
|
+
4. resolve one theme
|
|
58
|
+
5. render typed artifacts
|
|
59
|
+
6. run structural and optional browser QA
|
|
60
|
+
7. write the manifest and build record
|
|
61
|
+
|
|
62
|
+
The run package retains `source/fact-base.json`, `source/fact-base.md`,
|
|
63
|
+
`source/content/*.md`, `theme.resolved.json`, rendered `site/` files,
|
|
64
|
+
`manifest.json`, and `build-record.json` as far as each stage succeeds. A stage
|
|
65
|
+
failure records a structured error and recovery action without deleting earlier
|
|
66
|
+
outputs. Raw art direction is omitted unless the request explicitly opts in.
|
|
67
|
+
|
|
68
|
+
When a caller supplies `discover({ round, recipe, factBase })`, the callback
|
|
69
|
+
returns the findings added in that round. The core stops after two consecutive
|
|
70
|
+
empty rounds and always stops at the recipe's `maxRounds`.
|
|
71
|
+
|
|
72
|
+
## Optional seams
|
|
73
|
+
|
|
74
|
+
Durability and publishing are never implicit.
|
|
75
|
+
|
|
76
|
+
- `durability.strategy: none` invokes neither seam.
|
|
77
|
+
- `durability.strategy: commit` invokes the explicit `durability` callback.
|
|
78
|
+
Caller-created commit evidence is subsequently verified with
|
|
79
|
+
`record-durability.mjs`; the core never creates commits. The first evidence
|
|
80
|
+
commit must contain every path and byte hash in `manifest.immutableHashes`:
|
|
81
|
+
fact-base JSON and Markdown, all content Markdown, the resolved theme, and
|
|
82
|
+
every built artifact retained in the package. Mutable `manifest.json` and
|
|
83
|
+
`build-record.json` remain excluded for the separate evidence update.
|
|
84
|
+
- `durability.strategy: publish` invokes the explicit `publish` callback with
|
|
85
|
+
the complete publish request. A verified receipt is subsequently recorded as
|
|
86
|
+
durability evidence.
|
|
87
|
+
|
|
88
|
+
CLI callers provide these callbacks only with `--durability-module` and
|
|
89
|
+
`--publish-module`. Building remains `built-not-durable` until evidence is
|
|
90
|
+
verified. Publishing remains independently human-gated by the caller.
|
|
91
|
+
|
|
92
|
+
## Result
|
|
93
|
+
|
|
94
|
+
`runExplainer` returns the run root, manifest path, build-record path, outcome,
|
|
95
|
+
warnings, and bounded-discovery summary. Input validation and unsupported
|
|
96
|
+
recipes reject before output mutation. Failures after initialization return a
|
|
97
|
+
`failed` result with paths to the retained record and intermediates.
|
|
98
|
+
|
|
99
|
+
V1 readers reject unknown schema majors and unknown contract fields. Relative
|
|
100
|
+
record paths are run-root confined, hashes use `sha256:<hex>`, and command
|
|
101
|
+
metadata uses argv arrays rather than shell strings.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# S3 static destination contract
|
|
2
|
+
|
|
3
|
+
The `s3-static` connector publishes only files declared as built artifacts in a
|
|
4
|
+
validated manifest. Publishing is human-gated:
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
node scripts/publish.mjs \
|
|
8
|
+
--request /path/to/publish-request.json \
|
|
9
|
+
--receipt /path/to/publish-receipt.json \
|
|
10
|
+
--confirm-publish
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The request uses `explainer-kit.publish-request/v1`. Credentials come only from
|
|
14
|
+
the standard AWS credential chain or the request's optional profile. Never put
|
|
15
|
+
access keys, secret keys, session tokens, or SSO tokens in a request.
|
|
16
|
+
|
|
17
|
+
## Corresponding roots
|
|
18
|
+
|
|
19
|
+
`s3Uri` and `publicBaseUrl` must identify corresponding roots. Both are
|
|
20
|
+
normalized without trailing slashes. For a path `P` relative to `siteRoot`, the
|
|
21
|
+
connector writes `<s3Uri>/P` and verifies `<publicBaseUrl>/P`.
|
|
22
|
+
|
|
23
|
+
For example:
|
|
24
|
+
|
|
25
|
+
| Input | Value |
|
|
26
|
+
| ----------------------- | --------------------------------------------------------------- |
|
|
27
|
+
| `siteRoot` | `/tmp/run/site` |
|
|
28
|
+
| manifest `renderedPath` | `site/initiatives/demo/index.html` |
|
|
29
|
+
| `s3Uri` | `s3://example-bucket/published` |
|
|
30
|
+
| `publicBaseUrl` | `https://cdn.example.com/published` |
|
|
31
|
+
| object | `s3://example-bucket/published/initiatives/demo/index.html` |
|
|
32
|
+
| public URL | `https://cdn.example.com/published/initiatives/demo/index.html` |
|
|
33
|
+
|
|
34
|
+
Use explicit `index.html` URLs. Directory redirects are not portable evidence.
|
|
35
|
+
The destination must serve uploaded bytes at the corresponding public path.
|
|
36
|
+
|
|
37
|
+
## Safety and ordering
|
|
38
|
+
|
|
39
|
+
The connector validates the request, manifest, paths, hashes, and duplicate
|
|
40
|
+
site-relative paths before network access. It then:
|
|
41
|
+
|
|
42
|
+
1. uploads a sentinel whose path contains the run ID and a random 128-bit
|
|
43
|
+
suffix;
|
|
44
|
+
2. verifies the sentinel with `head-object`;
|
|
45
|
+
3. fetches that exact sentinel through the public root;
|
|
46
|
+
4. deletes only that sentinel;
|
|
47
|
+
5. uploads or idempotently skips each declared artifact;
|
|
48
|
+
6. verifies object metadata, content type, and SHA-256 of the exact response
|
|
49
|
+
bytes from each public artifact URL; and
|
|
50
|
+
7. atomically writes `explainer-kit.publish-receipt/v1`.
|
|
51
|
+
|
|
52
|
+
If public sentinel verification fails, no artifact is uploaded. The connector
|
|
53
|
+
attempts sentinel cleanup and emits no successful receipt.
|
|
54
|
+
|
|
55
|
+
Publishing is additive. The implementation uses individual `put-object`,
|
|
56
|
+
`head-object`, and sentinel-only `delete-object` operations. It never performs
|
|
57
|
+
root-wide synchronization, never passes a delete flag, never walks or uploads
|
|
58
|
+
undeclared files, and never deletes an artifact object. Existing declared
|
|
59
|
+
objects with matching hash and metadata are skipped; changed declared objects
|
|
60
|
+
may be replaced.
|
|
61
|
+
|
|
62
|
+
## Metadata
|
|
63
|
+
|
|
64
|
+
Every upload sets metadata explicitly:
|
|
65
|
+
|
|
66
|
+
| File | Content type |
|
|
67
|
+
| ------- | ------------------------------------------------- |
|
|
68
|
+
| `.html` | `text/html; charset=utf-8` |
|
|
69
|
+
| `.json` | `application/json` |
|
|
70
|
+
| `.css` | `text/css; charset=utf-8` |
|
|
71
|
+
| `.js` | `text/javascript; charset=utf-8` |
|
|
72
|
+
| `.svg` | `image/svg+xml` |
|
|
73
|
+
| `.txt` | `text/plain; charset=utf-8` |
|
|
74
|
+
| other | manifest media type or `application/octet-stream` |
|
|
75
|
+
|
|
76
|
+
Artifacts use `Cache-Control: public, max-age=300`. The connector stores the
|
|
77
|
+
SHA-256 digest as object metadata for idempotency and verifies content type,
|
|
78
|
+
cache control, and digest after upload. Public verification hashes response
|
|
79
|
+
bytes without text decoding, so binary artifacts and stale wrong-byte 200
|
|
80
|
+
responses are covered.
|
|
81
|
+
|
|
82
|
+
## Failures and retries
|
|
83
|
+
|
|
84
|
+
Authentication and permission failures stop immediately. The connector does
|
|
85
|
+
not run `aws sso login`, retry with another profile, expose AWS diagnostics, or
|
|
86
|
+
persist credentials. Refresh credentials separately and rerun after approval.
|
|
87
|
+
|
|
88
|
+
Only transient individual object-operation failures receive bounded retries.
|
|
89
|
+
Input, authorization, root-correspondence, metadata, and public-verification
|
|
90
|
+
failures are not retried. A failed publish preserves the local package.
|
|
91
|
+
|
|
92
|
+
Public roots must be credential-free HTTPS URLs with no username, password,
|
|
93
|
+
query, or fragment. Invalid roots fail before AWS or HTTP operations and are
|
|
94
|
+
never persisted in receipts.
|