Spaces:
Running
Running
Deploy GoalOS by AbteeX AI Labs Space
Browse files- README.md +41 -5
- assets/app.js +414 -0
- assets/styles.css +1193 -0
- docs/index.html +272 -0
- index.html +336 -18
README.md
CHANGED
|
@@ -1,10 +1,46 @@
|
|
| 1 |
---
|
| 2 |
-
title: GoalOS
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
|
|
|
| 7 |
pinned: false
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: GoalOS by AbteeX AI Labs
|
| 3 |
+
emoji: 🧭
|
| 4 |
+
colorFrom: indigo
|
| 5 |
+
colorTo: pink
|
| 6 |
sdk: static
|
| 7 |
+
app_file: index.html
|
| 8 |
pinned: false
|
| 9 |
+
short_description: Cinematic demo and docs for the GoalOS intent layer.
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# GoalOS by AbteeX AI Labs
|
| 13 |
+
|
| 14 |
+
GoalOS is the intent layer for AI agents: a structured, machine-readable graph of goals, priorities, blockers, permissions, and progress that every connected tool can read from the same source of truth.
|
| 15 |
+
|
| 16 |
+
This Space is a launch-grade product surface for GoalOS:
|
| 17 |
+
|
| 18 |
+
- cinematic demo
|
| 19 |
+
- package and install surfaces
|
| 20 |
+
- docs hub
|
| 21 |
+
- GitHub links
|
| 22 |
+
- deployable static bundle
|
| 23 |
+
|
| 24 |
+
## Included in this Space
|
| 25 |
+
|
| 26 |
+
- `index.html`: the main cinematic landing page
|
| 27 |
+
- `docs/index.html`: the in-Space documentation hub
|
| 28 |
+
- `assets/styles.css`: visual system and layout
|
| 29 |
+
- `assets/app.js`: copy helpers, demo playback, scroll effects, and UI interactions
|
| 30 |
+
|
| 31 |
+
## Core GoalOS surfaces
|
| 32 |
+
|
| 33 |
+
- TypeScript core: `@goalos/core`
|
| 34 |
+
- Python SDK: `goalos`
|
| 35 |
+
- CLI: `goalos`
|
| 36 |
+
- MCP server: `@goalos/mcp-server`
|
| 37 |
+
- OpenAPI and spec docs in the GitHub repository
|
| 38 |
+
|
| 39 |
+
## Canonical repository
|
| 40 |
+
|
| 41 |
+
- GitHub: `https://github.com/Aimaghsoodi/GoalOS`
|
| 42 |
+
- Website: `https://aimaghsoodi.github.io/GoalOS/`
|
| 43 |
+
|
| 44 |
+
## Brand
|
| 45 |
+
|
| 46 |
+
`GoalOS by AbteeX AI Labs`
|
assets/app.js
ADDED
|
@@ -0,0 +1,414 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
(function () {
|
| 2 |
+
const toast = document.querySelector('[data-toast]');
|
| 3 |
+
const revealables = document.querySelectorAll('.reveal');
|
| 4 |
+
|
| 5 |
+
function showToast(message) {
|
| 6 |
+
if (!toast) return;
|
| 7 |
+
toast.textContent = message;
|
| 8 |
+
toast.classList.add('is-visible');
|
| 9 |
+
window.clearTimeout(showToast.timeout);
|
| 10 |
+
showToast.timeout = window.setTimeout(() => {
|
| 11 |
+
toast.classList.remove('is-visible');
|
| 12 |
+
}, 1800);
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
async function copyText(text) {
|
| 16 |
+
try {
|
| 17 |
+
await navigator.clipboard.writeText(text);
|
| 18 |
+
showToast('Copied to clipboard');
|
| 19 |
+
} catch (error) {
|
| 20 |
+
showToast('Copy failed');
|
| 21 |
+
}
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
document.querySelectorAll('[data-copy]').forEach((button) => {
|
| 25 |
+
button.addEventListener('click', () => {
|
| 26 |
+
copyText(button.getAttribute('data-copy') || '');
|
| 27 |
+
});
|
| 28 |
+
});
|
| 29 |
+
|
| 30 |
+
document.querySelectorAll('[data-copy-source]').forEach((button) => {
|
| 31 |
+
button.addEventListener('click', () => {
|
| 32 |
+
const sourceId = button.getAttribute('data-copy-source');
|
| 33 |
+
const source = document.getElementById(sourceId);
|
| 34 |
+
if (source) {
|
| 35 |
+
copyText(source.textContent || '');
|
| 36 |
+
}
|
| 37 |
+
});
|
| 38 |
+
});
|
| 39 |
+
|
| 40 |
+
if ('IntersectionObserver' in window) {
|
| 41 |
+
const observer = new IntersectionObserver((entries) => {
|
| 42 |
+
entries.forEach((entry) => {
|
| 43 |
+
if (entry.isIntersecting) {
|
| 44 |
+
entry.target.classList.add('is-visible');
|
| 45 |
+
observer.unobserve(entry.target);
|
| 46 |
+
}
|
| 47 |
+
});
|
| 48 |
+
}, { threshold: 0.16 });
|
| 49 |
+
|
| 50 |
+
revealables.forEach((node) => observer.observe(node));
|
| 51 |
+
} else {
|
| 52 |
+
revealables.forEach((node) => node.classList.add('is-visible'));
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
const sectionNav = document.querySelector('[data-section-nav]');
|
| 56 |
+
if (sectionNav) {
|
| 57 |
+
const links = [...sectionNav.querySelectorAll('a[href^="#"]')];
|
| 58 |
+
const sectionMap = new Map(
|
| 59 |
+
links
|
| 60 |
+
.map((link) => {
|
| 61 |
+
const section = document.querySelector(link.getAttribute('href'));
|
| 62 |
+
return section ? [section, link] : null;
|
| 63 |
+
})
|
| 64 |
+
.filter(Boolean)
|
| 65 |
+
);
|
| 66 |
+
|
| 67 |
+
if ('IntersectionObserver' in window && sectionMap.size > 0) {
|
| 68 |
+
const navObserver = new IntersectionObserver((entries) => {
|
| 69 |
+
entries.forEach((entry) => {
|
| 70 |
+
const link = sectionMap.get(entry.target);
|
| 71 |
+
if (link) {
|
| 72 |
+
link.classList.toggle('is-current', entry.isIntersecting);
|
| 73 |
+
}
|
| 74 |
+
});
|
| 75 |
+
}, { rootMargin: '-25% 0px -60% 0px', threshold: 0.01 });
|
| 76 |
+
|
| 77 |
+
sectionMap.forEach((_, section) => navObserver.observe(section));
|
| 78 |
+
}
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
const demoRoot = document.querySelector('[data-demo-root]');
|
| 82 |
+
|
| 83 |
+
if (!demoRoot) return;
|
| 84 |
+
|
| 85 |
+
const actButtonContainer = demoRoot.querySelector('[data-act-buttons]');
|
| 86 |
+
const sceneButtonContainer = demoRoot.querySelector('[data-scene-buttons]');
|
| 87 |
+
const progressBar = demoRoot.querySelector('[data-demo-progress]');
|
| 88 |
+
const labelNode = demoRoot.querySelector('[data-scene-label]');
|
| 89 |
+
const titleNode = demoRoot.querySelector('[data-scene-title]');
|
| 90 |
+
const summaryNode = demoRoot.querySelector('[data-scene-summary]');
|
| 91 |
+
const highlightNode = demoRoot.querySelector('[data-scene-highlight]');
|
| 92 |
+
const metricNode = demoRoot.querySelector('[data-scene-metrics]');
|
| 93 |
+
const codeNode = demoRoot.querySelector('[data-scene-code]');
|
| 94 |
+
const graphNode = demoRoot.querySelector('[data-scene-graph]');
|
| 95 |
+
const eventNode = demoRoot.querySelector('[data-scene-events]');
|
| 96 |
+
const counterNode = demoRoot.querySelector('[data-scene-counter]');
|
| 97 |
+
const controls = demoRoot.querySelectorAll('[data-demo-action]');
|
| 98 |
+
|
| 99 |
+
const acts = [
|
| 100 |
+
{
|
| 101 |
+
id: 'team',
|
| 102 |
+
label: 'Act I',
|
| 103 |
+
title: 'Team Command Center',
|
| 104 |
+
scenes: [
|
| 105 |
+
{
|
| 106 |
+
label: 'Launch week / 09:00',
|
| 107 |
+
title: 'The full team reads the same board.',
|
| 108 |
+
summary: 'Engineering, research, marketing, and ops all enter the week with one live graph instead of fragmented prompts and Slack summaries.',
|
| 109 |
+
highlight: 'GoalOS establishes a common intent layer before any tool starts making local optimizations.',
|
| 110 |
+
metrics: [
|
| 111 |
+
['Critical priorities', '6 live'],
|
| 112 |
+
['Blocked goals', '2 resolved'],
|
| 113 |
+
['Agents aligned', '4 surfaces'],
|
| 114 |
+
['Launch horizon', '72 hours'],
|
| 115 |
+
],
|
| 116 |
+
code: `goalos_get_context({\n horizon: "this_week",\n domain: ["product", "research", "marketing", "ops"]\n})`,
|
| 117 |
+
graph: [
|
| 118 |
+
['Launch public beta', 'critical', 'Ship, docs, and onboarding all converge here.', ['deadline: Fri', 'owner: launch lead']],
|
| 119 |
+
['Finalize retrieval eval', 'cyan', 'Research validation gates the launch claim.', ['research', 'eval']],
|
| 120 |
+
['Publish launch film', 'orange', 'Marketing depends on accurate release language.', ['creative', 'release']],
|
| 121 |
+
['Legal + pricing sign-off', 'gold', 'Ops holds the final release switch.', ['ops', 'risk']],
|
| 122 |
+
],
|
| 123 |
+
events: [
|
| 124 |
+
'Claude reprioritizes docs because release notes are blocking the hero page.',
|
| 125 |
+
'Research agent downgrades an experiment branch that no longer affects launch risk.',
|
| 126 |
+
'Marketing pauses paid acquisition until pricing copy and legal review converge.',
|
| 127 |
+
],
|
| 128 |
+
},
|
| 129 |
+
{
|
| 130 |
+
label: 'Launch week / 11:20',
|
| 131 |
+
title: 'The graph catches a cross-functional collision.',
|
| 132 |
+
summary: 'A brand-new blocker appears: legal review touches pricing copy, which impacts the launch film, which impacts the homepage hero.',
|
| 133 |
+
highlight: 'Instead of each team discovering the conflict late, GoalOS updates the dependency map instantly.',
|
| 134 |
+
metrics: [
|
| 135 |
+
['New blocker', 'pricing/legal'],
|
| 136 |
+
['Affected teams', '3'],
|
| 137 |
+
['Time saved', 'hours not days'],
|
| 138 |
+
['Status shift', 'high → critical'],
|
| 139 |
+
],
|
| 140 |
+
code: `goalos_add_dependency("launch-film", {\n type: "requires",\n targetGoalId: "pricing-signoff",\n description: "Headline claim needs approved pricing language"\n})`,
|
| 141 |
+
graph: [
|
| 142 |
+
['Pricing sign-off', 'magenta', 'Now marked as the unlock for external messaging.', ['critical path', 'legal']],
|
| 143 |
+
['Launch film', 'orange', 'Creative output waits on the approved value claim.', ['asset', 'blocked']],
|
| 144 |
+
['Homepage hero', 'cyan', 'Hero copy inherits the approved promise stack.', ['web', 'copy']],
|
| 145 |
+
['Beta announcement', 'success', 'Queued but safe to hold until dependencies clear.', ['scheduled', 'ready state']],
|
| 146 |
+
],
|
| 147 |
+
events: [
|
| 148 |
+
'GoalOS pushes the dependency update to every connected tool surface.',
|
| 149 |
+
'Engineering retains velocity because infra work is not actually on the critical path.',
|
| 150 |
+
'Operators get a cleaner escalation path instead of a vague “launch feels risky.”',
|
| 151 |
+
],
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
label: 'Launch week / 15:45',
|
| 155 |
+
title: 'Agents reflow the plan without human re-briefing.',
|
| 156 |
+
summary: 'Once the dependency changes land, every connected surface updates what “important” means now.',
|
| 157 |
+
highlight: 'No one needs to rewrite the same context into Claude, LangChain, the CLI, and internal launch docs.',
|
| 158 |
+
metrics: [
|
| 159 |
+
['Reprioritized tasks', '11'],
|
| 160 |
+
['Context handoffs', '0 repeated'],
|
| 161 |
+
['MCP clients', 'goal-aware'],
|
| 162 |
+
['Release confidence', 'climbing'],
|
| 163 |
+
],
|
| 164 |
+
code: `goalos_get_priorities({\n count: 5,\n horizon: "today"\n})`,
|
| 165 |
+
graph: [
|
| 166 |
+
['Docs polish', 'gold', 'Moved upward because launch clarity now matters more than optional refactors.', ['docs', 'today']],
|
| 167 |
+
['Onboarding flow QA', 'cyan', 'Still active but no longer competing with launch messaging.', ['product', 'active']],
|
| 168 |
+
['Press notes', 'orange', 'Synced to approved launch claim automatically.', ['marketing', 'aligned']],
|
| 169 |
+
['Infra cleanup', 'success', 'Safely pushed after launch without confusion.', ['deferred', 'safe']],
|
| 170 |
+
],
|
| 171 |
+
events: [
|
| 172 |
+
'CLI status board updates the launch tree with new top priorities.',
|
| 173 |
+
'Claude Desktop retrieves the new context and drafts release notes against the right constraints.',
|
| 174 |
+
'Ops confirms the team is finally working against one live mission picture.',
|
| 175 |
+
],
|
| 176 |
+
},
|
| 177 |
+
],
|
| 178 |
+
},
|
| 179 |
+
{
|
| 180 |
+
id: 'personal',
|
| 181 |
+
label: 'Act II',
|
| 182 |
+
title: 'Personal AI Chief of Staff',
|
| 183 |
+
scenes: [
|
| 184 |
+
{
|
| 185 |
+
label: 'Founder mode / 06:30',
|
| 186 |
+
title: 'The founder graph includes life, energy, and strategic work.',
|
| 187 |
+
summary: 'GoalOS can represent work and personal operating constraints together: launch prep, recovery windows, learning goals, and meeting-critical prep.',
|
| 188 |
+
highlight: 'The personal layer keeps assistants useful without turning into generic memory sludge.',
|
| 189 |
+
metrics: [
|
| 190 |
+
['Deep work block', '09:00–11:30'],
|
| 191 |
+
['Recovery guardrail', 'sleep protected'],
|
| 192 |
+
['Meetings today', '3 high stakes'],
|
| 193 |
+
['Personal goals', 'health + learning'],
|
| 194 |
+
],
|
| 195 |
+
code: `graph.addGoal({\n title: "Protect founder deep work block",\n status: "active",\n priority: { level: "high", score: 88 },\n domain: "personal_ops"\n})`,
|
| 196 |
+
graph: [
|
| 197 |
+
['Investor prep', 'magenta', 'Requires a protected block and current launch metrics.', ['fundraising', 'today']],
|
| 198 |
+
['Sleep + recovery', 'success', 'A constraint, not a nice-to-have.', ['health', 'guardrail']],
|
| 199 |
+
['Team briefing', 'cyan', 'Consumes the same launch graph the team sees.', ['ops', 'sync']],
|
| 200 |
+
['Reading / synthesis', 'gold', 'Keeps long-term reasoning from collapsing into reaction mode.', ['learning', 'weekly']],
|
| 201 |
+
],
|
| 202 |
+
events: [
|
| 203 |
+
'Personal assistant agent avoids scheduling over the deep work block.',
|
| 204 |
+
'Meeting prep draws only the goals that actually influence investor narrative.',
|
| 205 |
+
'Health and recovery goals remain visible instead of being sacrificed silently.',
|
| 206 |
+
],
|
| 207 |
+
},
|
| 208 |
+
{
|
| 209 |
+
label: 'Founder mode / 18:10',
|
| 210 |
+
title: 'The day closes with context preserved.',
|
| 211 |
+
summary: 'After the founder finishes the day, the graph preserves what changed, what slipped, and what tomorrow needs.',
|
| 212 |
+
highlight: 'GoalOS turns “keep me aligned” into a durable operating layer instead of a temporary chat state.',
|
| 213 |
+
metrics: [
|
| 214 |
+
['Completed', '7 goals'],
|
| 215 |
+
['Deferred safely', '3'],
|
| 216 |
+
['Tomorrow carryover', '2 critical'],
|
| 217 |
+
['Human re-brief', 'not needed'],
|
| 218 |
+
],
|
| 219 |
+
code: `goalos_complete_goal("investor-brief")\ngoalos_update_goal("launch-film", {\n status: "planned"\n})`,
|
| 220 |
+
graph: [
|
| 221 |
+
['Investor prep', 'success', 'Closed with updated notes and preserved context.', ['done', 'captured']],
|
| 222 |
+
['Founder focus block', 'success', 'Protected and logged as an enabling constraint.', ['healthy', 'repeat']],
|
| 223 |
+
['Tomorrow launch sync', 'cyan', 'Already staged with the right dependencies.', ['next up', 'ready']],
|
| 224 |
+
['Personal admin', 'orange', 'Explicitly deferred without contaminating core priorities.', ['deferred', 'clear']],
|
| 225 |
+
],
|
| 226 |
+
events: [
|
| 227 |
+
'Tomorrow’s top priorities are generated from the graph, not memory of today’s chaos.',
|
| 228 |
+
'Personal admin is moved out of the critical lane with zero ambiguity.',
|
| 229 |
+
'Every assistant wakes up tomorrow with the same aligned picture.',
|
| 230 |
+
],
|
| 231 |
+
},
|
| 232 |
+
],
|
| 233 |
+
},
|
| 234 |
+
];
|
| 235 |
+
|
| 236 |
+
const demoState = {
|
| 237 |
+
actIndex: 0,
|
| 238 |
+
sceneIndex: 0,
|
| 239 |
+
playing: true,
|
| 240 |
+
};
|
| 241 |
+
|
| 242 |
+
const SCENE_INTERVAL_MS = 5200;
|
| 243 |
+
let sceneTimer = null;
|
| 244 |
+
|
| 245 |
+
function statusClass(status) {
|
| 246 |
+
switch (status) {
|
| 247 |
+
case 'critical':
|
| 248 |
+
case 'cyan':
|
| 249 |
+
return 'is-cyan';
|
| 250 |
+
case 'orange':
|
| 251 |
+
return 'is-orange';
|
| 252 |
+
case 'gold':
|
| 253 |
+
return 'is-gold';
|
| 254 |
+
case 'magenta':
|
| 255 |
+
return 'is-magenta';
|
| 256 |
+
case 'success':
|
| 257 |
+
return 'is-success';
|
| 258 |
+
default:
|
| 259 |
+
return 'is-cyan';
|
| 260 |
+
}
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
function totalSceneCount() {
|
| 264 |
+
return acts.reduce((total, act) => total + act.scenes.length, 0);
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
function flatSceneIndex() {
|
| 268 |
+
let count = 0;
|
| 269 |
+
for (let i = 0; i < demoState.actIndex; i += 1) {
|
| 270 |
+
count += acts[i].scenes.length;
|
| 271 |
+
}
|
| 272 |
+
return count + demoState.sceneIndex + 1;
|
| 273 |
+
}
|
| 274 |
+
|
| 275 |
+
function renderActButtons() {
|
| 276 |
+
actButtonContainer.innerHTML = '';
|
| 277 |
+
acts.forEach((act, index) => {
|
| 278 |
+
const button = document.createElement('button');
|
| 279 |
+
button.className = `chip-button${index === demoState.actIndex ? ' is-active' : ''}`;
|
| 280 |
+
button.type = 'button';
|
| 281 |
+
button.textContent = `${act.label} · ${act.title}`;
|
| 282 |
+
button.addEventListener('click', () => {
|
| 283 |
+
demoState.actIndex = index;
|
| 284 |
+
demoState.sceneIndex = 0;
|
| 285 |
+
render();
|
| 286 |
+
restartTimer();
|
| 287 |
+
});
|
| 288 |
+
actButtonContainer.appendChild(button);
|
| 289 |
+
});
|
| 290 |
+
}
|
| 291 |
+
|
| 292 |
+
function renderSceneButtons(activeAct) {
|
| 293 |
+
sceneButtonContainer.innerHTML = '';
|
| 294 |
+
activeAct.scenes.forEach((scene, index) => {
|
| 295 |
+
const button = document.createElement('button');
|
| 296 |
+
button.className = `chip-button chip-button--small${index === demoState.sceneIndex ? ' is-active' : ''}`;
|
| 297 |
+
button.type = 'button';
|
| 298 |
+
button.textContent = scene.title;
|
| 299 |
+
button.addEventListener('click', () => {
|
| 300 |
+
demoState.sceneIndex = index;
|
| 301 |
+
render();
|
| 302 |
+
restartTimer();
|
| 303 |
+
});
|
| 304 |
+
sceneButtonContainer.appendChild(button);
|
| 305 |
+
});
|
| 306 |
+
}
|
| 307 |
+
|
| 308 |
+
function renderScene(scene) {
|
| 309 |
+
labelNode.textContent = scene.label;
|
| 310 |
+
titleNode.textContent = scene.title;
|
| 311 |
+
summaryNode.textContent = scene.summary;
|
| 312 |
+
highlightNode.textContent = scene.highlight;
|
| 313 |
+
codeNode.textContent = scene.code;
|
| 314 |
+
counterNode.textContent = `${flatSceneIndex()} / ${totalSceneCount()}`;
|
| 315 |
+
|
| 316 |
+
metricNode.innerHTML = '';
|
| 317 |
+
scene.metrics.forEach(([label, value]) => {
|
| 318 |
+
const card = document.createElement('article');
|
| 319 |
+
card.className = 'demo-metric';
|
| 320 |
+
card.innerHTML = `<span>${label}</span><strong>${value}</strong>`;
|
| 321 |
+
metricNode.appendChild(card);
|
| 322 |
+
});
|
| 323 |
+
|
| 324 |
+
graphNode.innerHTML = '';
|
| 325 |
+
scene.graph.forEach(([title, status, description, meta]) => {
|
| 326 |
+
const card = document.createElement('article');
|
| 327 |
+
card.className = 'graph-card';
|
| 328 |
+
card.innerHTML = `
|
| 329 |
+
<span class="graph-card__status ${statusClass(status)}">${status}</span>
|
| 330 |
+
<h4>${title}</h4>
|
| 331 |
+
<p>${description}</p>
|
| 332 |
+
<div class="graph-card__meta">${meta.map((item) => `<span>${item}</span>`).join('')}</div>
|
| 333 |
+
`;
|
| 334 |
+
graphNode.appendChild(card);
|
| 335 |
+
});
|
| 336 |
+
|
| 337 |
+
eventNode.innerHTML = '';
|
| 338 |
+
scene.events.forEach((event) => {
|
| 339 |
+
const item = document.createElement('li');
|
| 340 |
+
item.textContent = event;
|
| 341 |
+
eventNode.appendChild(item);
|
| 342 |
+
});
|
| 343 |
+
|
| 344 |
+
progressBar.style.width = `${(flatSceneIndex() / totalSceneCount()) * 100}%`;
|
| 345 |
+
}
|
| 346 |
+
|
| 347 |
+
function renderControlLabels() {
|
| 348 |
+
controls.forEach((button) => {
|
| 349 |
+
if (button.getAttribute('data-demo-action') === 'toggle') {
|
| 350 |
+
button.textContent = demoState.playing ? 'Pause' : 'Play';
|
| 351 |
+
}
|
| 352 |
+
});
|
| 353 |
+
}
|
| 354 |
+
|
| 355 |
+
function render() {
|
| 356 |
+
const activeAct = acts[demoState.actIndex];
|
| 357 |
+
const activeScene = activeAct.scenes[demoState.sceneIndex];
|
| 358 |
+
|
| 359 |
+
renderActButtons();
|
| 360 |
+
renderSceneButtons(activeAct);
|
| 361 |
+
renderScene(activeScene);
|
| 362 |
+
renderControlLabels();
|
| 363 |
+
}
|
| 364 |
+
|
| 365 |
+
function advanceScene() {
|
| 366 |
+
const activeAct = acts[demoState.actIndex];
|
| 367 |
+
if (demoState.sceneIndex < activeAct.scenes.length - 1) {
|
| 368 |
+
demoState.sceneIndex += 1;
|
| 369 |
+
} else if (demoState.actIndex < acts.length - 1) {
|
| 370 |
+
demoState.actIndex += 1;
|
| 371 |
+
demoState.sceneIndex = 0;
|
| 372 |
+
} else {
|
| 373 |
+
demoState.actIndex = 0;
|
| 374 |
+
demoState.sceneIndex = 0;
|
| 375 |
+
}
|
| 376 |
+
|
| 377 |
+
render();
|
| 378 |
+
restartTimer();
|
| 379 |
+
}
|
| 380 |
+
|
| 381 |
+
function stopTimer() {
|
| 382 |
+
if (sceneTimer) {
|
| 383 |
+
window.clearTimeout(sceneTimer);
|
| 384 |
+
sceneTimer = null;
|
| 385 |
+
}
|
| 386 |
+
}
|
| 387 |
+
|
| 388 |
+
function restartTimer() {
|
| 389 |
+
stopTimer();
|
| 390 |
+
if (!demoState.playing) return;
|
| 391 |
+
sceneTimer = window.setTimeout(advanceScene, SCENE_INTERVAL_MS);
|
| 392 |
+
}
|
| 393 |
+
|
| 394 |
+
controls.forEach((button) => {
|
| 395 |
+
button.addEventListener('click', () => {
|
| 396 |
+
const action = button.getAttribute('data-demo-action');
|
| 397 |
+
if (action === 'toggle') {
|
| 398 |
+
demoState.playing = !demoState.playing;
|
| 399 |
+
renderControlLabels();
|
| 400 |
+
restartTimer();
|
| 401 |
+
}
|
| 402 |
+
if (action === 'replay') {
|
| 403 |
+
demoState.actIndex = 0;
|
| 404 |
+
demoState.sceneIndex = 0;
|
| 405 |
+
demoState.playing = true;
|
| 406 |
+
render();
|
| 407 |
+
restartTimer();
|
| 408 |
+
}
|
| 409 |
+
});
|
| 410 |
+
});
|
| 411 |
+
|
| 412 |
+
render();
|
| 413 |
+
restartTimer();
|
| 414 |
+
})();
|
assets/styles.css
ADDED
|
@@ -0,0 +1,1193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
:root {
|
| 2 |
+
--bg: #060816;
|
| 3 |
+
--bg-deep: #03050f;
|
| 4 |
+
--panel: rgba(10, 14, 34, 0.74);
|
| 5 |
+
--panel-strong: rgba(13, 18, 42, 0.9);
|
| 6 |
+
--panel-soft: rgba(255, 255, 255, 0.03);
|
| 7 |
+
--line: rgba(255, 255, 255, 0.1);
|
| 8 |
+
--line-strong: rgba(255, 255, 255, 0.2);
|
| 9 |
+
--text: #f9fbff;
|
| 10 |
+
--muted: #aab7d5;
|
| 11 |
+
--muted-strong: #d7def1;
|
| 12 |
+
--cyan: #00d1ff;
|
| 13 |
+
--orange: #ff7a18;
|
| 14 |
+
--gold: #ffd166;
|
| 15 |
+
--magenta: #ff4ecd;
|
| 16 |
+
--success: #5af0a5;
|
| 17 |
+
--shadow: 0 24px 90px rgba(0, 0, 0, 0.45);
|
| 18 |
+
--radius: 28px;
|
| 19 |
+
--radius-sm: 16px;
|
| 20 |
+
--shell: 1220px;
|
| 21 |
+
--font-display: "Syne", sans-serif;
|
| 22 |
+
--font-body: "IBM Plex Sans", sans-serif;
|
| 23 |
+
--font-mono: "IBM Plex Mono", monospace;
|
| 24 |
+
--ease: cubic-bezier(0.2, 1, 0.22, 1);
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
*,
|
| 28 |
+
*::before,
|
| 29 |
+
*::after {
|
| 30 |
+
box-sizing: border-box;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
html {
|
| 34 |
+
scroll-behavior: smooth;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
body {
|
| 38 |
+
margin: 0;
|
| 39 |
+
min-height: 100vh;
|
| 40 |
+
background:
|
| 41 |
+
radial-gradient(circle at 12% 16%, rgba(0, 209, 255, 0.19), transparent 24%),
|
| 42 |
+
radial-gradient(circle at 85% 18%, rgba(255, 122, 24, 0.2), transparent 24%),
|
| 43 |
+
radial-gradient(circle at 50% 82%, rgba(255, 78, 205, 0.12), transparent 28%),
|
| 44 |
+
linear-gradient(180deg, #050714 0%, #060816 48%, #03050f 100%);
|
| 45 |
+
color: var(--text);
|
| 46 |
+
font-family: var(--font-body);
|
| 47 |
+
line-height: 1.6;
|
| 48 |
+
overflow-x: hidden;
|
| 49 |
+
color-scheme: dark;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
body::after {
|
| 53 |
+
content: "";
|
| 54 |
+
position: fixed;
|
| 55 |
+
inset: 0;
|
| 56 |
+
background: linear-gradient(180deg, rgba(255,255,255,0.04), transparent 18%, transparent 82%, rgba(255,255,255,0.03));
|
| 57 |
+
pointer-events: none;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
a {
|
| 61 |
+
color: inherit;
|
| 62 |
+
text-decoration: none;
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
button,
|
| 66 |
+
input,
|
| 67 |
+
textarea,
|
| 68 |
+
select {
|
| 69 |
+
font: inherit;
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
button {
|
| 73 |
+
background: none;
|
| 74 |
+
border: 0;
|
| 75 |
+
color: inherit;
|
| 76 |
+
cursor: pointer;
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
code,
|
| 80 |
+
pre {
|
| 81 |
+
font-family: var(--font-mono);
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
pre {
|
| 85 |
+
margin: 0;
|
| 86 |
+
white-space: pre-wrap;
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
.skip-link {
|
| 90 |
+
position: absolute;
|
| 91 |
+
left: -999px;
|
| 92 |
+
top: 12px;
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
.skip-link:focus {
|
| 96 |
+
left: 12px;
|
| 97 |
+
z-index: 30;
|
| 98 |
+
padding: 10px 14px;
|
| 99 |
+
border-radius: 999px;
|
| 100 |
+
background: var(--panel-strong);
|
| 101 |
+
border: 1px solid var(--line-strong);
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
.aurora,
|
| 105 |
+
.grid-noise {
|
| 106 |
+
pointer-events: none;
|
| 107 |
+
position: fixed;
|
| 108 |
+
inset: 0;
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
.aurora {
|
| 112 |
+
filter: blur(90px);
|
| 113 |
+
opacity: 0.55;
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
.aurora-a {
|
| 117 |
+
background: radial-gradient(circle at 15% 15%, rgba(0, 209, 255, 0.18), transparent 34%);
|
| 118 |
+
animation: drift-a 18s ease-in-out infinite;
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
.aurora-b {
|
| 122 |
+
background: radial-gradient(circle at 84% 18%, rgba(255, 122, 24, 0.16), transparent 32%);
|
| 123 |
+
animation: drift-b 24s ease-in-out infinite;
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
.aurora-c {
|
| 127 |
+
background: radial-gradient(circle at 52% 82%, rgba(255, 78, 205, 0.12), transparent 28%);
|
| 128 |
+
animation: drift-c 20s ease-in-out infinite;
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
.grid-noise {
|
| 132 |
+
background-image:
|
| 133 |
+
linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
|
| 134 |
+
linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
|
| 135 |
+
background-size: 32px 32px;
|
| 136 |
+
mask-image: radial-gradient(circle at center, black 45%, transparent 90%);
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
.shell {
|
| 140 |
+
width: min(var(--shell), calc(100vw - 40px));
|
| 141 |
+
margin: 0 auto;
|
| 142 |
+
position: relative;
|
| 143 |
+
z-index: 2;
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
.site-header {
|
| 147 |
+
position: sticky;
|
| 148 |
+
top: 0;
|
| 149 |
+
z-index: 20;
|
| 150 |
+
backdrop-filter: blur(18px);
|
| 151 |
+
background: rgba(5, 7, 20, 0.45);
|
| 152 |
+
border-bottom: 1px solid rgba(255,255,255,0.06);
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
.site-header__inner {
|
| 156 |
+
display: flex;
|
| 157 |
+
align-items: center;
|
| 158 |
+
justify-content: space-between;
|
| 159 |
+
gap: 24px;
|
| 160 |
+
padding: 18px 0;
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
.brand {
|
| 164 |
+
display: inline-flex;
|
| 165 |
+
align-items: center;
|
| 166 |
+
gap: 14px;
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
.brand strong,
|
| 170 |
+
.brand h1 {
|
| 171 |
+
display: block;
|
| 172 |
+
font-family: var(--font-display);
|
| 173 |
+
font-size: 1.05rem;
|
| 174 |
+
letter-spacing: -0.03em;
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
.brand span span {
|
| 178 |
+
display: block;
|
| 179 |
+
color: var(--muted);
|
| 180 |
+
font-size: 0.84rem;
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
.brand__mark {
|
| 184 |
+
width: 52px;
|
| 185 |
+
height: 52px;
|
| 186 |
+
border-radius: 18px;
|
| 187 |
+
display: grid;
|
| 188 |
+
place-items: center;
|
| 189 |
+
background:
|
| 190 |
+
linear-gradient(145deg, rgba(255,255,255,0.08), rgba(255,255,255,0.03)),
|
| 191 |
+
rgba(255,255,255,0.02);
|
| 192 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 193 |
+
box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 18px 40px rgba(0,0,0,0.25);
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
.brand__mark svg {
|
| 197 |
+
width: 34px;
|
| 198 |
+
height: 34px;
|
| 199 |
+
}
|
| 200 |
+
|
| 201 |
+
.brand__mark--small {
|
| 202 |
+
width: 44px;
|
| 203 |
+
height: 44px;
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
.brand__mark--small::before {
|
| 207 |
+
content: "";
|
| 208 |
+
width: 24px;
|
| 209 |
+
height: 24px;
|
| 210 |
+
border-radius: 8px;
|
| 211 |
+
background: linear-gradient(135deg, var(--cyan), var(--orange), var(--gold));
|
| 212 |
+
box-shadow: 0 0 20px rgba(0, 209, 255, 0.4);
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
.site-nav {
|
| 216 |
+
display: flex;
|
| 217 |
+
align-items: center;
|
| 218 |
+
gap: 18px;
|
| 219 |
+
flex-wrap: wrap;
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
.site-nav a {
|
| 223 |
+
color: var(--muted);
|
| 224 |
+
font-size: 0.95rem;
|
| 225 |
+
transition: color 180ms var(--ease), transform 180ms var(--ease);
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
.site-nav a:hover,
|
| 229 |
+
.site-nav a:focus-visible {
|
| 230 |
+
color: var(--text);
|
| 231 |
+
transform: translateY(-1px);
|
| 232 |
+
}
|
| 233 |
+
|
| 234 |
+
.hero {
|
| 235 |
+
padding: 64px 0 42px;
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
.hero__grid {
|
| 239 |
+
display: grid;
|
| 240 |
+
grid-template-columns: 1.05fr 0.95fr;
|
| 241 |
+
gap: 34px;
|
| 242 |
+
align-items: center;
|
| 243 |
+
}
|
| 244 |
+
|
| 245 |
+
.eyebrow {
|
| 246 |
+
display: inline-flex;
|
| 247 |
+
align-items: center;
|
| 248 |
+
gap: 10px;
|
| 249 |
+
margin: 0 0 16px;
|
| 250 |
+
color: var(--gold);
|
| 251 |
+
font-family: var(--font-mono);
|
| 252 |
+
font-size: 0.78rem;
|
| 253 |
+
letter-spacing: 0.18em;
|
| 254 |
+
text-transform: uppercase;
|
| 255 |
+
}
|
| 256 |
+
|
| 257 |
+
.eyebrow::before {
|
| 258 |
+
content: "";
|
| 259 |
+
width: 22px;
|
| 260 |
+
height: 1px;
|
| 261 |
+
background: linear-gradient(90deg, transparent, var(--gold));
|
| 262 |
+
}
|
| 263 |
+
|
| 264 |
+
.hero h1,
|
| 265 |
+
.section-heading h2,
|
| 266 |
+
.docs-sidebar h1,
|
| 267 |
+
.docs-section h2 {
|
| 268 |
+
margin: 0;
|
| 269 |
+
font-family: var(--font-display);
|
| 270 |
+
line-height: 0.96;
|
| 271 |
+
letter-spacing: -0.06em;
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
.hero h1 {
|
| 275 |
+
font-size: clamp(3.4rem, 8vw, 6.6rem);
|
| 276 |
+
max-width: 11ch;
|
| 277 |
+
}
|
| 278 |
+
|
| 279 |
+
.hero__lede,
|
| 280 |
+
.section-heading p,
|
| 281 |
+
.docs-sidebar__lede,
|
| 282 |
+
.docs-section p {
|
| 283 |
+
margin: 18px 0 0;
|
| 284 |
+
color: var(--muted);
|
| 285 |
+
font-size: 1.05rem;
|
| 286 |
+
max-width: 64ch;
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
.hero__actions,
|
| 290 |
+
.docs-cta__actions {
|
| 291 |
+
display: flex;
|
| 292 |
+
flex-wrap: wrap;
|
| 293 |
+
gap: 12px;
|
| 294 |
+
margin-top: 30px;
|
| 295 |
+
}
|
| 296 |
+
|
| 297 |
+
.button {
|
| 298 |
+
display: inline-flex;
|
| 299 |
+
align-items: center;
|
| 300 |
+
justify-content: center;
|
| 301 |
+
min-height: 50px;
|
| 302 |
+
padding: 0 22px;
|
| 303 |
+
border-radius: 999px;
|
| 304 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 305 |
+
background: rgba(255,255,255,0.04);
|
| 306 |
+
transition: transform 180ms var(--ease), border-color 180ms var(--ease), background 180ms var(--ease);
|
| 307 |
+
}
|
| 308 |
+
|
| 309 |
+
.button:hover,
|
| 310 |
+
.button:focus-visible,
|
| 311 |
+
.chip-button:hover,
|
| 312 |
+
.chip-button:focus-visible {
|
| 313 |
+
transform: translateY(-1px);
|
| 314 |
+
}
|
| 315 |
+
|
| 316 |
+
.button--primary {
|
| 317 |
+
color: #04111c;
|
| 318 |
+
background: linear-gradient(135deg, var(--cyan), #7af6ff 48%, var(--gold));
|
| 319 |
+
border-color: rgba(255,255,255,0.18);
|
| 320 |
+
font-weight: 700;
|
| 321 |
+
}
|
| 322 |
+
|
| 323 |
+
.button--ghost {
|
| 324 |
+
color: var(--muted-strong);
|
| 325 |
+
}
|
| 326 |
+
|
| 327 |
+
.hero__stats {
|
| 328 |
+
display: grid;
|
| 329 |
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
| 330 |
+
gap: 12px;
|
| 331 |
+
margin-top: 28px;
|
| 332 |
+
}
|
| 333 |
+
|
| 334 |
+
.metric-card,
|
| 335 |
+
.surface-card,
|
| 336 |
+
.step-card,
|
| 337 |
+
.docs-card,
|
| 338 |
+
.docs-link-card,
|
| 339 |
+
.docs-callout,
|
| 340 |
+
.demo-console,
|
| 341 |
+
.docs-cta,
|
| 342 |
+
.stage-frame,
|
| 343 |
+
.docs-snippet,
|
| 344 |
+
.docs-codeblock,
|
| 345 |
+
.docs-link-card {
|
| 346 |
+
background:
|
| 347 |
+
linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02)),
|
| 348 |
+
var(--panel);
|
| 349 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 350 |
+
box-shadow: var(--shadow);
|
| 351 |
+
}
|
| 352 |
+
|
| 353 |
+
.metric-card {
|
| 354 |
+
padding: 16px 18px;
|
| 355 |
+
border-radius: 20px;
|
| 356 |
+
}
|
| 357 |
+
|
| 358 |
+
.metric-card__label,
|
| 359 |
+
.surface-card__meta,
|
| 360 |
+
.panel-heading span,
|
| 361 |
+
.docs-snippet__topline span,
|
| 362 |
+
.docs-codeblock__topline span {
|
| 363 |
+
display: block;
|
| 364 |
+
color: var(--gold);
|
| 365 |
+
font-family: var(--font-mono);
|
| 366 |
+
font-size: 0.74rem;
|
| 367 |
+
letter-spacing: 0.14em;
|
| 368 |
+
text-transform: uppercase;
|
| 369 |
+
}
|
| 370 |
+
|
| 371 |
+
.metric-card strong {
|
| 372 |
+
display: block;
|
| 373 |
+
margin-top: 8px;
|
| 374 |
+
font-size: 0.98rem;
|
| 375 |
+
line-height: 1.35;
|
| 376 |
+
}
|
| 377 |
+
|
| 378 |
+
.stage-frame {
|
| 379 |
+
border-radius: 34px;
|
| 380 |
+
overflow: hidden;
|
| 381 |
+
position: relative;
|
| 382 |
+
}
|
| 383 |
+
|
| 384 |
+
.stage-frame__chrome {
|
| 385 |
+
display: flex;
|
| 386 |
+
gap: 8px;
|
| 387 |
+
padding: 16px 18px;
|
| 388 |
+
border-bottom: 1px solid rgba(255,255,255,0.08);
|
| 389 |
+
}
|
| 390 |
+
|
| 391 |
+
.stage-frame__chrome span {
|
| 392 |
+
width: 10px;
|
| 393 |
+
height: 10px;
|
| 394 |
+
border-radius: 50%;
|
| 395 |
+
background: rgba(255,255,255,0.18);
|
| 396 |
+
}
|
| 397 |
+
|
| 398 |
+
.stage-frame__content {
|
| 399 |
+
padding: 22px;
|
| 400 |
+
}
|
| 401 |
+
|
| 402 |
+
.stage-kicker,
|
| 403 |
+
.status-pill {
|
| 404 |
+
display: inline-flex;
|
| 405 |
+
align-items: center;
|
| 406 |
+
gap: 10px;
|
| 407 |
+
padding: 8px 14px;
|
| 408 |
+
border-radius: 999px;
|
| 409 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 410 |
+
background: rgba(255,255,255,0.03);
|
| 411 |
+
color: var(--muted-strong);
|
| 412 |
+
}
|
| 413 |
+
|
| 414 |
+
.status-dot {
|
| 415 |
+
width: 8px;
|
| 416 |
+
height: 8px;
|
| 417 |
+
border-radius: 50%;
|
| 418 |
+
background: var(--success);
|
| 419 |
+
box-shadow: 0 0 12px rgba(90, 240, 165, 0.8);
|
| 420 |
+
}
|
| 421 |
+
|
| 422 |
+
.orbital-board {
|
| 423 |
+
position: relative;
|
| 424 |
+
height: 330px;
|
| 425 |
+
margin: 24px 0;
|
| 426 |
+
border-radius: 28px;
|
| 427 |
+
background:
|
| 428 |
+
radial-gradient(circle at center, rgba(0,209,255,0.16), transparent 28%),
|
| 429 |
+
linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02));
|
| 430 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 431 |
+
overflow: hidden;
|
| 432 |
+
}
|
| 433 |
+
|
| 434 |
+
.orbital-board::before,
|
| 435 |
+
.orbital-board::after {
|
| 436 |
+
content: "";
|
| 437 |
+
position: absolute;
|
| 438 |
+
inset: 24px;
|
| 439 |
+
border-radius: 50%;
|
| 440 |
+
border: 1px solid rgba(255,255,255,0.07);
|
| 441 |
+
}
|
| 442 |
+
|
| 443 |
+
.orbital-board::after {
|
| 444 |
+
inset: 64px;
|
| 445 |
+
}
|
| 446 |
+
|
| 447 |
+
.orbital-board__center {
|
| 448 |
+
position: absolute;
|
| 449 |
+
inset: 50%;
|
| 450 |
+
width: 150px;
|
| 451 |
+
height: 150px;
|
| 452 |
+
transform: translate(-50%, -50%);
|
| 453 |
+
border-radius: 50%;
|
| 454 |
+
display: grid;
|
| 455 |
+
place-items: center;
|
| 456 |
+
text-align: center;
|
| 457 |
+
background:
|
| 458 |
+
radial-gradient(circle at top, rgba(255,255,255,0.2), transparent 45%),
|
| 459 |
+
linear-gradient(135deg, rgba(0,209,255,0.16), rgba(255,122,24,0.18), rgba(255,209,102,0.18));
|
| 460 |
+
border: 1px solid rgba(255,255,255,0.1);
|
| 461 |
+
box-shadow: 0 0 80px rgba(0,209,255,0.18);
|
| 462 |
+
}
|
| 463 |
+
|
| 464 |
+
.orbital-board__center span {
|
| 465 |
+
color: var(--muted);
|
| 466 |
+
font-family: var(--font-mono);
|
| 467 |
+
font-size: 0.74rem;
|
| 468 |
+
letter-spacing: 0.12em;
|
| 469 |
+
text-transform: uppercase;
|
| 470 |
+
}
|
| 471 |
+
|
| 472 |
+
.orbital-board__center strong {
|
| 473 |
+
display: block;
|
| 474 |
+
font-family: var(--font-display);
|
| 475 |
+
font-size: 2rem;
|
| 476 |
+
margin-top: -18px;
|
| 477 |
+
}
|
| 478 |
+
|
| 479 |
+
.orbital-node {
|
| 480 |
+
position: absolute;
|
| 481 |
+
min-width: 118px;
|
| 482 |
+
padding: 10px 14px;
|
| 483 |
+
border-radius: 999px;
|
| 484 |
+
background: rgba(255,255,255,0.06);
|
| 485 |
+
border: 1px solid rgba(255,255,255,0.1);
|
| 486 |
+
text-align: center;
|
| 487 |
+
font-size: 0.92rem;
|
| 488 |
+
backdrop-filter: blur(12px);
|
| 489 |
+
}
|
| 490 |
+
|
| 491 |
+
.orbital-node--cyan { top: 12%; left: 14%; box-shadow: 0 0 30px rgba(0,209,255,0.2); }
|
| 492 |
+
.orbital-node--orange { top: 18%; right: 14%; box-shadow: 0 0 30px rgba(255,122,24,0.2); }
|
| 493 |
+
.orbital-node--gold { bottom: 18%; left: 12%; box-shadow: 0 0 30px rgba(255,209,102,0.16); }
|
| 494 |
+
.orbital-node--magenta { bottom: 14%; right: 10%; box-shadow: 0 0 30px rgba(255,78,205,0.2); }
|
| 495 |
+
|
| 496 |
+
.stage-tape {
|
| 497 |
+
display: flex;
|
| 498 |
+
flex-wrap: wrap;
|
| 499 |
+
gap: 10px;
|
| 500 |
+
}
|
| 501 |
+
|
| 502 |
+
.stage-tape span {
|
| 503 |
+
padding: 8px 12px;
|
| 504 |
+
border-radius: 999px;
|
| 505 |
+
background: rgba(255,255,255,0.04);
|
| 506 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 507 |
+
color: var(--muted);
|
| 508 |
+
font-family: var(--font-mono);
|
| 509 |
+
font-size: 0.76rem;
|
| 510 |
+
}
|
| 511 |
+
|
| 512 |
+
.stage-panels {
|
| 513 |
+
display: grid;
|
| 514 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 515 |
+
gap: 14px;
|
| 516 |
+
margin-top: 18px;
|
| 517 |
+
}
|
| 518 |
+
|
| 519 |
+
.stage-panel {
|
| 520 |
+
padding: 16px;
|
| 521 |
+
border-radius: 22px;
|
| 522 |
+
background: rgba(255,255,255,0.04);
|
| 523 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 524 |
+
}
|
| 525 |
+
|
| 526 |
+
.stage-panel span {
|
| 527 |
+
color: var(--muted);
|
| 528 |
+
font-family: var(--font-mono);
|
| 529 |
+
font-size: 0.74rem;
|
| 530 |
+
letter-spacing: 0.12em;
|
| 531 |
+
text-transform: uppercase;
|
| 532 |
+
}
|
| 533 |
+
|
| 534 |
+
.stage-panel strong {
|
| 535 |
+
display: block;
|
| 536 |
+
margin-top: 8px;
|
| 537 |
+
font-size: 1.05rem;
|
| 538 |
+
}
|
| 539 |
+
|
| 540 |
+
.stage-panel p {
|
| 541 |
+
margin: 8px 0 0;
|
| 542 |
+
color: var(--muted);
|
| 543 |
+
}
|
| 544 |
+
|
| 545 |
+
.section {
|
| 546 |
+
padding: 80px 0;
|
| 547 |
+
}
|
| 548 |
+
|
| 549 |
+
.section-heading {
|
| 550 |
+
max-width: 760px;
|
| 551 |
+
}
|
| 552 |
+
|
| 553 |
+
.section-heading h2,
|
| 554 |
+
.docs-section h2 {
|
| 555 |
+
font-size: clamp(2.2rem, 5vw, 4rem);
|
| 556 |
+
}
|
| 557 |
+
|
| 558 |
+
.section--demo {
|
| 559 |
+
padding-top: 48px;
|
| 560 |
+
}
|
| 561 |
+
|
| 562 |
+
.demo-console {
|
| 563 |
+
border-radius: 32px;
|
| 564 |
+
overflow: hidden;
|
| 565 |
+
margin-top: 30px;
|
| 566 |
+
}
|
| 567 |
+
|
| 568 |
+
.demo-console__toolbar,
|
| 569 |
+
.demo-console__timeline {
|
| 570 |
+
display: flex;
|
| 571 |
+
align-items: center;
|
| 572 |
+
justify-content: space-between;
|
| 573 |
+
gap: 16px;
|
| 574 |
+
padding: 18px 22px;
|
| 575 |
+
border-bottom: 1px solid rgba(255,255,255,0.08);
|
| 576 |
+
}
|
| 577 |
+
|
| 578 |
+
.demo-console__timeline {
|
| 579 |
+
justify-content: flex-start;
|
| 580 |
+
flex-wrap: wrap;
|
| 581 |
+
border-top: 1px solid rgba(255,255,255,0.08);
|
| 582 |
+
border-bottom: none;
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
.demo-console__tabs,
|
| 586 |
+
.demo-console__controls {
|
| 587 |
+
display: flex;
|
| 588 |
+
gap: 10px;
|
| 589 |
+
flex-wrap: wrap;
|
| 590 |
+
}
|
| 591 |
+
|
| 592 |
+
.chip-button {
|
| 593 |
+
display: inline-flex;
|
| 594 |
+
align-items: center;
|
| 595 |
+
justify-content: center;
|
| 596 |
+
min-height: 38px;
|
| 597 |
+
padding: 0 14px;
|
| 598 |
+
border-radius: 999px;
|
| 599 |
+
color: var(--muted-strong);
|
| 600 |
+
background: rgba(255,255,255,0.05);
|
| 601 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 602 |
+
transition: transform 180ms var(--ease), background 180ms var(--ease), border-color 180ms var(--ease), color 180ms var(--ease);
|
| 603 |
+
}
|
| 604 |
+
|
| 605 |
+
.chip-button.is-active {
|
| 606 |
+
color: #05121a;
|
| 607 |
+
background: linear-gradient(135deg, var(--cyan), var(--gold));
|
| 608 |
+
border-color: transparent;
|
| 609 |
+
}
|
| 610 |
+
|
| 611 |
+
.chip-button--small {
|
| 612 |
+
min-height: 32px;
|
| 613 |
+
padding: 0 12px;
|
| 614 |
+
font-size: 0.84rem;
|
| 615 |
+
}
|
| 616 |
+
|
| 617 |
+
.chip-button--link {
|
| 618 |
+
display: inline-flex;
|
| 619 |
+
margin-top: 10px;
|
| 620 |
+
}
|
| 621 |
+
|
| 622 |
+
.demo-console__progress {
|
| 623 |
+
position: relative;
|
| 624 |
+
height: 4px;
|
| 625 |
+
background: rgba(255,255,255,0.06);
|
| 626 |
+
}
|
| 627 |
+
|
| 628 |
+
.demo-console__progress-fill {
|
| 629 |
+
position: absolute;
|
| 630 |
+
inset: 0 auto 0 0;
|
| 631 |
+
width: 0;
|
| 632 |
+
background: linear-gradient(90deg, var(--cyan), var(--orange), var(--gold));
|
| 633 |
+
transition: width 320ms var(--ease);
|
| 634 |
+
}
|
| 635 |
+
|
| 636 |
+
.demo-console__body {
|
| 637 |
+
display: grid;
|
| 638 |
+
grid-template-columns: 0.92fr 1.08fr;
|
| 639 |
+
gap: 22px;
|
| 640 |
+
padding: 24px;
|
| 641 |
+
}
|
| 642 |
+
|
| 643 |
+
.demo-narrative,
|
| 644 |
+
.demo-graph-panel,
|
| 645 |
+
.demo-events-panel {
|
| 646 |
+
border-radius: 24px;
|
| 647 |
+
background: rgba(255,255,255,0.03);
|
| 648 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 649 |
+
padding: 20px;
|
| 650 |
+
}
|
| 651 |
+
|
| 652 |
+
.demo-label {
|
| 653 |
+
margin: 0;
|
| 654 |
+
color: var(--gold);
|
| 655 |
+
font-family: var(--font-mono);
|
| 656 |
+
text-transform: uppercase;
|
| 657 |
+
letter-spacing: 0.16em;
|
| 658 |
+
font-size: 0.76rem;
|
| 659 |
+
}
|
| 660 |
+
|
| 661 |
+
.demo-narrative h3 {
|
| 662 |
+
margin: 14px 0 10px;
|
| 663 |
+
font-family: var(--font-display);
|
| 664 |
+
font-size: clamp(2rem, 4vw, 3rem);
|
| 665 |
+
line-height: 0.98;
|
| 666 |
+
letter-spacing: -0.04em;
|
| 667 |
+
}
|
| 668 |
+
|
| 669 |
+
.demo-summary,
|
| 670 |
+
.demo-highlight {
|
| 671 |
+
margin: 0;
|
| 672 |
+
}
|
| 673 |
+
|
| 674 |
+
.demo-summary {
|
| 675 |
+
color: var(--muted-strong);
|
| 676 |
+
}
|
| 677 |
+
|
| 678 |
+
.demo-highlight {
|
| 679 |
+
margin-top: 14px;
|
| 680 |
+
color: var(--text);
|
| 681 |
+
font-weight: 600;
|
| 682 |
+
}
|
| 683 |
+
|
| 684 |
+
.demo-metrics {
|
| 685 |
+
display: grid;
|
| 686 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 687 |
+
gap: 12px;
|
| 688 |
+
margin: 22px 0;
|
| 689 |
+
}
|
| 690 |
+
|
| 691 |
+
.demo-metric {
|
| 692 |
+
padding: 14px 16px;
|
| 693 |
+
border-radius: 18px;
|
| 694 |
+
background: rgba(255,255,255,0.04);
|
| 695 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 696 |
+
}
|
| 697 |
+
|
| 698 |
+
.demo-metric span {
|
| 699 |
+
display: block;
|
| 700 |
+
color: var(--muted);
|
| 701 |
+
font-size: 0.84rem;
|
| 702 |
+
}
|
| 703 |
+
|
| 704 |
+
.demo-metric strong {
|
| 705 |
+
display: block;
|
| 706 |
+
margin-top: 8px;
|
| 707 |
+
font-size: 1.15rem;
|
| 708 |
+
}
|
| 709 |
+
|
| 710 |
+
.demo-code {
|
| 711 |
+
border-radius: 20px;
|
| 712 |
+
background: #050915;
|
| 713 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 714 |
+
overflow: hidden;
|
| 715 |
+
}
|
| 716 |
+
|
| 717 |
+
.demo-code__topline,
|
| 718 |
+
.panel-heading,
|
| 719 |
+
.docs-snippet__topline,
|
| 720 |
+
.docs-codeblock__topline {
|
| 721 |
+
display: flex;
|
| 722 |
+
align-items: center;
|
| 723 |
+
justify-content: space-between;
|
| 724 |
+
gap: 16px;
|
| 725 |
+
}
|
| 726 |
+
|
| 727 |
+
.demo-code__topline,
|
| 728 |
+
.docs-codeblock__topline {
|
| 729 |
+
padding: 14px 16px;
|
| 730 |
+
border-bottom: 1px solid rgba(255,255,255,0.08);
|
| 731 |
+
}
|
| 732 |
+
|
| 733 |
+
.demo-code pre,
|
| 734 |
+
.docs-codeblock pre,
|
| 735 |
+
.surface-card pre,
|
| 736 |
+
.docs-snippet pre {
|
| 737 |
+
overflow: auto;
|
| 738 |
+
}
|
| 739 |
+
|
| 740 |
+
.demo-code code,
|
| 741 |
+
.docs-codeblock code,
|
| 742 |
+
.surface-card code,
|
| 743 |
+
.docs-snippet code {
|
| 744 |
+
display: block;
|
| 745 |
+
padding: 16px;
|
| 746 |
+
color: #d4e0ff;
|
| 747 |
+
}
|
| 748 |
+
|
| 749 |
+
.demo-wall {
|
| 750 |
+
display: grid;
|
| 751 |
+
gap: 18px;
|
| 752 |
+
}
|
| 753 |
+
|
| 754 |
+
.panel-heading strong {
|
| 755 |
+
font-size: 0.9rem;
|
| 756 |
+
color: var(--muted-strong);
|
| 757 |
+
}
|
| 758 |
+
|
| 759 |
+
.graph-grid {
|
| 760 |
+
display: grid;
|
| 761 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 762 |
+
gap: 12px;
|
| 763 |
+
margin-top: 18px;
|
| 764 |
+
}
|
| 765 |
+
|
| 766 |
+
.graph-card {
|
| 767 |
+
padding: 15px 16px;
|
| 768 |
+
border-radius: 18px;
|
| 769 |
+
background: rgba(255,255,255,0.04);
|
| 770 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 771 |
+
min-height: 130px;
|
| 772 |
+
}
|
| 773 |
+
|
| 774 |
+
.graph-card__status {
|
| 775 |
+
display: inline-flex;
|
| 776 |
+
align-items: center;
|
| 777 |
+
gap: 8px;
|
| 778 |
+
color: var(--muted);
|
| 779 |
+
font-size: 0.8rem;
|
| 780 |
+
}
|
| 781 |
+
|
| 782 |
+
.graph-card__status::before {
|
| 783 |
+
content: "";
|
| 784 |
+
width: 8px;
|
| 785 |
+
height: 8px;
|
| 786 |
+
border-radius: 50%;
|
| 787 |
+
background: var(--cyan);
|
| 788 |
+
box-shadow: 0 0 12px rgba(0,209,255,0.7);
|
| 789 |
+
}
|
| 790 |
+
|
| 791 |
+
.graph-card__status.is-orange::before { background: var(--orange); box-shadow: 0 0 12px rgba(255,122,24,0.7); }
|
| 792 |
+
.graph-card__status.is-gold::before { background: var(--gold); box-shadow: 0 0 12px rgba(255,209,102,0.7); }
|
| 793 |
+
.graph-card__status.is-magenta::before { background: var(--magenta); box-shadow: 0 0 12px rgba(255,78,205,0.7); }
|
| 794 |
+
.graph-card__status.is-success::before { background: var(--success); box-shadow: 0 0 12px rgba(90,240,165,0.7); }
|
| 795 |
+
|
| 796 |
+
.graph-card h4 {
|
| 797 |
+
margin: 12px 0 8px;
|
| 798 |
+
font-size: 1.05rem;
|
| 799 |
+
}
|
| 800 |
+
|
| 801 |
+
.graph-card p {
|
| 802 |
+
margin: 0;
|
| 803 |
+
color: var(--muted);
|
| 804 |
+
font-size: 0.92rem;
|
| 805 |
+
}
|
| 806 |
+
|
| 807 |
+
.graph-card__meta {
|
| 808 |
+
display: flex;
|
| 809 |
+
flex-wrap: wrap;
|
| 810 |
+
gap: 8px;
|
| 811 |
+
margin-top: 14px;
|
| 812 |
+
}
|
| 813 |
+
|
| 814 |
+
.graph-card__meta span {
|
| 815 |
+
padding: 6px 10px;
|
| 816 |
+
border-radius: 999px;
|
| 817 |
+
background: rgba(255,255,255,0.04);
|
| 818 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 819 |
+
font-size: 0.76rem;
|
| 820 |
+
color: var(--muted-strong);
|
| 821 |
+
}
|
| 822 |
+
|
| 823 |
+
.event-stream {
|
| 824 |
+
list-style: none;
|
| 825 |
+
margin: 18px 0 0;
|
| 826 |
+
padding: 0;
|
| 827 |
+
display: grid;
|
| 828 |
+
gap: 12px;
|
| 829 |
+
}
|
| 830 |
+
|
| 831 |
+
.event-stream li {
|
| 832 |
+
position: relative;
|
| 833 |
+
padding: 14px 16px 14px 20px;
|
| 834 |
+
border-radius: 18px;
|
| 835 |
+
background: rgba(255,255,255,0.04);
|
| 836 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 837 |
+
color: var(--muted-strong);
|
| 838 |
+
}
|
| 839 |
+
|
| 840 |
+
.event-stream li::before {
|
| 841 |
+
content: "";
|
| 842 |
+
position: absolute;
|
| 843 |
+
top: 18px;
|
| 844 |
+
left: 10px;
|
| 845 |
+
width: 5px;
|
| 846 |
+
height: 5px;
|
| 847 |
+
border-radius: 50%;
|
| 848 |
+
background: var(--cyan);
|
| 849 |
+
}
|
| 850 |
+
|
| 851 |
+
.surface-grid,
|
| 852 |
+
.step-grid,
|
| 853 |
+
.docs-card-grid,
|
| 854 |
+
.docs-link-grid,
|
| 855 |
+
.docs-snippet-grid {
|
| 856 |
+
display: grid;
|
| 857 |
+
gap: 16px;
|
| 858 |
+
}
|
| 859 |
+
|
| 860 |
+
.surface-grid {
|
| 861 |
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
| 862 |
+
margin-top: 30px;
|
| 863 |
+
}
|
| 864 |
+
|
| 865 |
+
.surface-card {
|
| 866 |
+
padding: 20px;
|
| 867 |
+
border-radius: 24px;
|
| 868 |
+
}
|
| 869 |
+
|
| 870 |
+
.surface-card h3,
|
| 871 |
+
.step-card h3,
|
| 872 |
+
.docs-card h3,
|
| 873 |
+
.docs-link-card strong {
|
| 874 |
+
margin: 10px 0 10px;
|
| 875 |
+
font-family: var(--font-display);
|
| 876 |
+
font-size: 1.35rem;
|
| 877 |
+
letter-spacing: -0.03em;
|
| 878 |
+
}
|
| 879 |
+
|
| 880 |
+
.surface-card p,
|
| 881 |
+
.step-card p,
|
| 882 |
+
.docs-card p,
|
| 883 |
+
.docs-link-card span {
|
| 884 |
+
margin: 0;
|
| 885 |
+
color: var(--muted);
|
| 886 |
+
}
|
| 887 |
+
|
| 888 |
+
.surface-card pre {
|
| 889 |
+
margin-top: 16px;
|
| 890 |
+
border-radius: 18px;
|
| 891 |
+
background: #040815;
|
| 892 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 893 |
+
}
|
| 894 |
+
|
| 895 |
+
.surface-card .chip-button {
|
| 896 |
+
margin-top: 12px;
|
| 897 |
+
}
|
| 898 |
+
|
| 899 |
+
.step-grid {
|
| 900 |
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
| 901 |
+
margin-top: 28px;
|
| 902 |
+
}
|
| 903 |
+
|
| 904 |
+
.step-card {
|
| 905 |
+
padding: 18px;
|
| 906 |
+
border-radius: 22px;
|
| 907 |
+
background: rgba(255,255,255,0.04);
|
| 908 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 909 |
+
}
|
| 910 |
+
|
| 911 |
+
.step-card span {
|
| 912 |
+
color: var(--gold);
|
| 913 |
+
font-family: var(--font-mono);
|
| 914 |
+
font-size: 0.82rem;
|
| 915 |
+
}
|
| 916 |
+
|
| 917 |
+
.section--docs {
|
| 918 |
+
padding-top: 30px;
|
| 919 |
+
}
|
| 920 |
+
|
| 921 |
+
.docs-cta {
|
| 922 |
+
padding: 28px;
|
| 923 |
+
border-radius: 30px;
|
| 924 |
+
display: flex;
|
| 925 |
+
align-items: center;
|
| 926 |
+
justify-content: space-between;
|
| 927 |
+
gap: 24px;
|
| 928 |
+
}
|
| 929 |
+
|
| 930 |
+
.docs-layout {
|
| 931 |
+
display: grid;
|
| 932 |
+
grid-template-columns: 300px 1fr;
|
| 933 |
+
gap: 28px;
|
| 934 |
+
padding: 44px 0 70px;
|
| 935 |
+
}
|
| 936 |
+
|
| 937 |
+
.docs-sidebar {
|
| 938 |
+
position: sticky;
|
| 939 |
+
top: 94px;
|
| 940 |
+
align-self: start;
|
| 941 |
+
padding: 28px;
|
| 942 |
+
border-radius: 28px;
|
| 943 |
+
background:
|
| 944 |
+
linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02)),
|
| 945 |
+
var(--panel);
|
| 946 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 947 |
+
}
|
| 948 |
+
|
| 949 |
+
.docs-sidebar h1 {
|
| 950 |
+
font-size: clamp(2.2rem, 4vw, 3.8rem);
|
| 951 |
+
}
|
| 952 |
+
|
| 953 |
+
.docs-sidebar__nav {
|
| 954 |
+
display: grid;
|
| 955 |
+
gap: 10px;
|
| 956 |
+
margin-top: 24px;
|
| 957 |
+
}
|
| 958 |
+
|
| 959 |
+
.docs-sidebar__nav a {
|
| 960 |
+
padding: 10px 12px;
|
| 961 |
+
border-radius: 16px;
|
| 962 |
+
color: var(--muted);
|
| 963 |
+
background: rgba(255,255,255,0.03);
|
| 964 |
+
border: 1px solid transparent;
|
| 965 |
+
}
|
| 966 |
+
|
| 967 |
+
.docs-sidebar__nav a.is-current,
|
| 968 |
+
.docs-sidebar__nav a:hover,
|
| 969 |
+
.docs-sidebar__nav a:focus-visible {
|
| 970 |
+
color: var(--text);
|
| 971 |
+
border-color: rgba(255,255,255,0.12);
|
| 972 |
+
}
|
| 973 |
+
|
| 974 |
+
.docs-content {
|
| 975 |
+
display: grid;
|
| 976 |
+
gap: 18px;
|
| 977 |
+
}
|
| 978 |
+
|
| 979 |
+
.docs-section {
|
| 980 |
+
padding: 28px;
|
| 981 |
+
border-radius: 28px;
|
| 982 |
+
background:
|
| 983 |
+
linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02)),
|
| 984 |
+
var(--panel);
|
| 985 |
+
border: 1px solid rgba(255,255,255,0.08);
|
| 986 |
+
scroll-margin-top: 104px;
|
| 987 |
+
}
|
| 988 |
+
|
| 989 |
+
.docs-callout {
|
| 990 |
+
margin-top: 18px;
|
| 991 |
+
padding: 16px 18px;
|
| 992 |
+
border-radius: 20px;
|
| 993 |
+
}
|
| 994 |
+
|
| 995 |
+
.docs-callout strong {
|
| 996 |
+
display: inline-block;
|
| 997 |
+
margin-right: 8px;
|
| 998 |
+
}
|
| 999 |
+
|
| 1000 |
+
.docs-snippet-grid,
|
| 1001 |
+
.docs-card-grid {
|
| 1002 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 1003 |
+
margin-top: 20px;
|
| 1004 |
+
}
|
| 1005 |
+
|
| 1006 |
+
.docs-link-grid {
|
| 1007 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 1008 |
+
margin-top: 16px;
|
| 1009 |
+
}
|
| 1010 |
+
|
| 1011 |
+
.docs-snippet,
|
| 1012 |
+
.docs-card,
|
| 1013 |
+
.docs-link-card,
|
| 1014 |
+
.docs-codeblock {
|
| 1015 |
+
border-radius: 22px;
|
| 1016 |
+
}
|
| 1017 |
+
|
| 1018 |
+
.docs-snippet,
|
| 1019 |
+
.docs-card,
|
| 1020 |
+
.docs-link-card {
|
| 1021 |
+
padding: 18px;
|
| 1022 |
+
}
|
| 1023 |
+
|
| 1024 |
+
.docs-codeblock {
|
| 1025 |
+
margin-top: 18px;
|
| 1026 |
+
overflow: hidden;
|
| 1027 |
+
}
|
| 1028 |
+
|
| 1029 |
+
.docs-list {
|
| 1030 |
+
margin: 18px 0 0;
|
| 1031 |
+
padding-left: 20px;
|
| 1032 |
+
color: var(--muted-strong);
|
| 1033 |
+
}
|
| 1034 |
+
|
| 1035 |
+
.docs-list li + li {
|
| 1036 |
+
margin-top: 10px;
|
| 1037 |
+
}
|
| 1038 |
+
|
| 1039 |
+
.site-footer {
|
| 1040 |
+
padding: 30px 0 42px;
|
| 1041 |
+
border-top: 1px solid rgba(255,255,255,0.08);
|
| 1042 |
+
}
|
| 1043 |
+
|
| 1044 |
+
.site-footer__grid {
|
| 1045 |
+
display: flex;
|
| 1046 |
+
align-items: center;
|
| 1047 |
+
justify-content: space-between;
|
| 1048 |
+
gap: 18px;
|
| 1049 |
+
flex-wrap: wrap;
|
| 1050 |
+
}
|
| 1051 |
+
|
| 1052 |
+
.footer-links {
|
| 1053 |
+
display: flex;
|
| 1054 |
+
gap: 16px;
|
| 1055 |
+
flex-wrap: wrap;
|
| 1056 |
+
color: var(--muted);
|
| 1057 |
+
}
|
| 1058 |
+
|
| 1059 |
+
.footer-links a:hover,
|
| 1060 |
+
.footer-links a:focus-visible {
|
| 1061 |
+
color: var(--text);
|
| 1062 |
+
}
|
| 1063 |
+
|
| 1064 |
+
.toast {
|
| 1065 |
+
position: fixed;
|
| 1066 |
+
left: 50%;
|
| 1067 |
+
bottom: 24px;
|
| 1068 |
+
transform: translateX(-50%) translateY(30px);
|
| 1069 |
+
min-width: 180px;
|
| 1070 |
+
padding: 12px 18px;
|
| 1071 |
+
border-radius: 999px;
|
| 1072 |
+
background: rgba(7, 11, 26, 0.92);
|
| 1073 |
+
border: 1px solid rgba(255,255,255,0.1);
|
| 1074 |
+
color: var(--text);
|
| 1075 |
+
opacity: 0;
|
| 1076 |
+
pointer-events: none;
|
| 1077 |
+
transition: transform 220ms var(--ease), opacity 220ms var(--ease);
|
| 1078 |
+
z-index: 40;
|
| 1079 |
+
}
|
| 1080 |
+
|
| 1081 |
+
.toast.is-visible {
|
| 1082 |
+
opacity: 1;
|
| 1083 |
+
transform: translateX(-50%) translateY(0);
|
| 1084 |
+
}
|
| 1085 |
+
|
| 1086 |
+
.reveal {
|
| 1087 |
+
opacity: 0;
|
| 1088 |
+
transform: translateY(30px);
|
| 1089 |
+
transition: opacity 700ms var(--ease), transform 700ms var(--ease);
|
| 1090 |
+
}
|
| 1091 |
+
|
| 1092 |
+
.reveal.is-visible {
|
| 1093 |
+
opacity: 1;
|
| 1094 |
+
transform: translateY(0);
|
| 1095 |
+
}
|
| 1096 |
+
|
| 1097 |
+
.reveal-delay-1 {
|
| 1098 |
+
transition-delay: 100ms;
|
| 1099 |
+
}
|
| 1100 |
+
|
| 1101 |
+
@keyframes drift-a {
|
| 1102 |
+
0%, 100% { transform: translate3d(0, 0, 0); }
|
| 1103 |
+
50% { transform: translate3d(40px, -20px, 0); }
|
| 1104 |
+
}
|
| 1105 |
+
|
| 1106 |
+
@keyframes drift-b {
|
| 1107 |
+
0%, 100% { transform: translate3d(0, 0, 0); }
|
| 1108 |
+
50% { transform: translate3d(-35px, 24px, 0); }
|
| 1109 |
+
}
|
| 1110 |
+
|
| 1111 |
+
@keyframes drift-c {
|
| 1112 |
+
0%, 100% { transform: translate3d(0, 0, 0); }
|
| 1113 |
+
50% { transform: translate3d(18px, -28px, 0); }
|
| 1114 |
+
}
|
| 1115 |
+
|
| 1116 |
+
@media (max-width: 1100px) {
|
| 1117 |
+
.hero__grid,
|
| 1118 |
+
.demo-console__body,
|
| 1119 |
+
.docs-layout {
|
| 1120 |
+
grid-template-columns: 1fr;
|
| 1121 |
+
}
|
| 1122 |
+
|
| 1123 |
+
.docs-sidebar {
|
| 1124 |
+
position: static;
|
| 1125 |
+
}
|
| 1126 |
+
|
| 1127 |
+
.surface-grid {
|
| 1128 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 1129 |
+
}
|
| 1130 |
+
|
| 1131 |
+
.step-grid {
|
| 1132 |
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
| 1133 |
+
}
|
| 1134 |
+
}
|
| 1135 |
+
|
| 1136 |
+
@media (max-width: 720px) {
|
| 1137 |
+
.site-header__inner,
|
| 1138 |
+
.docs-cta,
|
| 1139 |
+
.site-footer__grid {
|
| 1140 |
+
flex-direction: column;
|
| 1141 |
+
align-items: flex-start;
|
| 1142 |
+
}
|
| 1143 |
+
|
| 1144 |
+
.hero {
|
| 1145 |
+
padding-top: 36px;
|
| 1146 |
+
}
|
| 1147 |
+
|
| 1148 |
+
.hero__stats,
|
| 1149 |
+
.surface-grid,
|
| 1150 |
+
.step-grid,
|
| 1151 |
+
.docs-card-grid,
|
| 1152 |
+
.docs-link-grid,
|
| 1153 |
+
.docs-snippet-grid,
|
| 1154 |
+
.graph-grid,
|
| 1155 |
+
.demo-metrics,
|
| 1156 |
+
.stage-panels {
|
| 1157 |
+
grid-template-columns: 1fr;
|
| 1158 |
+
}
|
| 1159 |
+
|
| 1160 |
+
.site-nav {
|
| 1161 |
+
gap: 12px;
|
| 1162 |
+
}
|
| 1163 |
+
|
| 1164 |
+
.shell {
|
| 1165 |
+
width: min(var(--shell), calc(100vw - 24px));
|
| 1166 |
+
}
|
| 1167 |
+
|
| 1168 |
+
.section,
|
| 1169 |
+
.docs-layout {
|
| 1170 |
+
padding-top: 54px;
|
| 1171 |
+
padding-bottom: 54px;
|
| 1172 |
+
}
|
| 1173 |
+
|
| 1174 |
+
.demo-console__toolbar,
|
| 1175 |
+
.demo-console__timeline,
|
| 1176 |
+
.demo-console__body,
|
| 1177 |
+
.docs-sidebar,
|
| 1178 |
+
.docs-section,
|
| 1179 |
+
.docs-cta,
|
| 1180 |
+
.stage-frame__content {
|
| 1181 |
+
padding: 18px;
|
| 1182 |
+
}
|
| 1183 |
+
}
|
| 1184 |
+
|
| 1185 |
+
@media (prefers-reduced-motion: reduce) {
|
| 1186 |
+
*,
|
| 1187 |
+
*::before,
|
| 1188 |
+
*::after {
|
| 1189 |
+
animation: none !important;
|
| 1190 |
+
transition-duration: 0.01ms !important;
|
| 1191 |
+
scroll-behavior: auto !important;
|
| 1192 |
+
}
|
| 1193 |
+
}
|
docs/index.html
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<meta name="description" content="GoalOS by AbteeX AI Labs documentation hub for Hugging Face visitors.">
|
| 7 |
+
<meta name="theme-color" content="#060816">
|
| 8 |
+
<meta name="color-scheme" content="dark">
|
| 9 |
+
<title>GoalOS Docs | AbteeX AI Labs</title>
|
| 10 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 11 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 12 |
+
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&family=Syne:wght@500;700;800&display=swap" rel="stylesheet">
|
| 13 |
+
<link rel="stylesheet" href="../assets/styles.css">
|
| 14 |
+
</head>
|
| 15 |
+
<body class="space-docs">
|
| 16 |
+
<a class="skip-link" href="#docs-main">Skip to content</a>
|
| 17 |
+
<div class="aurora aurora-a"></div>
|
| 18 |
+
<div class="aurora aurora-b"></div>
|
| 19 |
+
<div class="grid-noise"></div>
|
| 20 |
+
|
| 21 |
+
<header class="site-header site-header--docs">
|
| 22 |
+
<div class="shell site-header__inner">
|
| 23 |
+
<a class="brand" href="../index.html">
|
| 24 |
+
<span class="brand__mark brand__mark--small"></span>
|
| 25 |
+
<span>
|
| 26 |
+
<strong>GoalOS</strong>
|
| 27 |
+
<span>by AbteeX AI Labs</span>
|
| 28 |
+
</span>
|
| 29 |
+
</a>
|
| 30 |
+
|
| 31 |
+
<nav class="site-nav" aria-label="Docs navigation">
|
| 32 |
+
<a href="../index.html">Demo</a>
|
| 33 |
+
<a href="#quickstart">Quickstart</a>
|
| 34 |
+
<a href="#surfaces">Surfaces</a>
|
| 35 |
+
<a href="#transport">Transport</a>
|
| 36 |
+
</nav>
|
| 37 |
+
</div>
|
| 38 |
+
</header>
|
| 39 |
+
|
| 40 |
+
<main id="docs-main" class="docs-layout shell">
|
| 41 |
+
<aside class="docs-sidebar">
|
| 42 |
+
<p class="eyebrow">Docs Hub</p>
|
| 43 |
+
<h1>GoalOS docs for Hugging Face visitors.</h1>
|
| 44 |
+
<p class="docs-sidebar__lede">
|
| 45 |
+
Start here if you want the shortest path from “interesting idea” to “working implementation”.
|
| 46 |
+
</p>
|
| 47 |
+
|
| 48 |
+
<nav class="docs-sidebar__nav" data-section-nav>
|
| 49 |
+
<a href="#what-is-goalos">What is GoalOS</a>
|
| 50 |
+
<a href="#quickstart">Quickstart</a>
|
| 51 |
+
<a href="#surfaces">Package surfaces</a>
|
| 52 |
+
<a href="#graph-model">Graph model</a>
|
| 53 |
+
<a href="#transport">Transport layers</a>
|
| 54 |
+
<a href="#deploy">HF publish flow</a>
|
| 55 |
+
<a href="#deeper-links">Deeper links</a>
|
| 56 |
+
</nav>
|
| 57 |
+
</aside>
|
| 58 |
+
|
| 59 |
+
<article class="docs-content">
|
| 60 |
+
<section id="what-is-goalos" class="docs-section">
|
| 61 |
+
<p class="eyebrow">Overview</p>
|
| 62 |
+
<h2>What GoalOS actually is</h2>
|
| 63 |
+
<p>
|
| 64 |
+
GoalOS is a protocol and package surface for representing human intent in a structured graph that AI systems can reason over. It models goals, dependencies, permissions, status, priorities, and time horizons so multiple tools stop acting like isolated copilots and start coordinating against the same operational picture.
|
| 65 |
+
</p>
|
| 66 |
+
<div class="docs-callout">
|
| 67 |
+
<strong>Important:</strong>
|
| 68 |
+
<span>GoalOS is not just memory and not just task tracking. It is the intent layer that sits above both.</span>
|
| 69 |
+
</div>
|
| 70 |
+
</section>
|
| 71 |
+
|
| 72 |
+
<section id="quickstart" class="docs-section">
|
| 73 |
+
<p class="eyebrow">Quickstart</p>
|
| 74 |
+
<h2>Install the surface that matches your stack</h2>
|
| 75 |
+
|
| 76 |
+
<div class="docs-snippet-grid">
|
| 77 |
+
<article class="docs-snippet">
|
| 78 |
+
<div class="docs-snippet__topline">
|
| 79 |
+
<span>TypeScript core</span>
|
| 80 |
+
<button class="chip-button chip-button--small" type="button" data-copy="npm install @goalos/core">Copy</button>
|
| 81 |
+
</div>
|
| 82 |
+
<pre><code>npm install @goalos/core</code></pre>
|
| 83 |
+
</article>
|
| 84 |
+
|
| 85 |
+
<article class="docs-snippet">
|
| 86 |
+
<div class="docs-snippet__topline">
|
| 87 |
+
<span>Python SDK</span>
|
| 88 |
+
<button class="chip-button chip-button--small" type="button" data-copy="pip install goalos">Copy</button>
|
| 89 |
+
</div>
|
| 90 |
+
<pre><code>pip install goalos</code></pre>
|
| 91 |
+
</article>
|
| 92 |
+
|
| 93 |
+
<article class="docs-snippet">
|
| 94 |
+
<div class="docs-snippet__topline">
|
| 95 |
+
<span>CLI</span>
|
| 96 |
+
<button class="chip-button chip-button--small" type="button" data-copy="npm install -g goalos">Copy</button>
|
| 97 |
+
</div>
|
| 98 |
+
<pre><code>npm install -g goalos</code></pre>
|
| 99 |
+
</article>
|
| 100 |
+
|
| 101 |
+
<article class="docs-snippet">
|
| 102 |
+
<div class="docs-snippet__topline">
|
| 103 |
+
<span>MCP server</span>
|
| 104 |
+
<button class="chip-button chip-button--small" type="button" data-copy="npm install -g @goalos/mcp-server">Copy</button>
|
| 105 |
+
</div>
|
| 106 |
+
<pre><code>npm install -g @goalos/mcp-server</code></pre>
|
| 107 |
+
</article>
|
| 108 |
+
</div>
|
| 109 |
+
|
| 110 |
+
<div class="docs-codeblock">
|
| 111 |
+
<div class="docs-codeblock__topline">
|
| 112 |
+
<span>TypeScript example</span>
|
| 113 |
+
<button class="chip-button chip-button--small" type="button" data-copy-source="ts-example">Copy</button>
|
| 114 |
+
</div>
|
| 115 |
+
<pre><code id="ts-example">import { IntentGraphClass } from '@goalos/core';
|
| 116 |
+
|
| 117 |
+
const graph = IntentGraphClass.create('founder@abteex.com', 'Launch Board');
|
| 118 |
+
|
| 119 |
+
const launch = graph.addGoal({
|
| 120 |
+
title: 'Launch GoalOS public demo',
|
| 121 |
+
status: 'active',
|
| 122 |
+
priority: { level: 'critical' },
|
| 123 |
+
domain: 'product',
|
| 124 |
+
successCriteria: ['Space is live', 'Docs are public'],
|
| 125 |
+
});
|
| 126 |
+
|
| 127 |
+
graph.addGoal({
|
| 128 |
+
title: 'Ship Hugging Face cinematic demo',
|
| 129 |
+
parentId: launch.id,
|
| 130 |
+
status: 'active',
|
| 131 |
+
priority: { level: 'high' },
|
| 132 |
+
tags: ['launch', 'demo'],
|
| 133 |
+
});</code></pre>
|
| 134 |
+
</div>
|
| 135 |
+
|
| 136 |
+
<div class="docs-codeblock">
|
| 137 |
+
<div class="docs-codeblock__topline">
|
| 138 |
+
<span>Python example</span>
|
| 139 |
+
<button class="chip-button chip-button--small" type="button" data-copy-source="py-example">Copy</button>
|
| 140 |
+
</div>
|
| 141 |
+
<pre><code id="py-example">from goalos import IntentGraphManager, Priority
|
| 142 |
+
|
| 143 |
+
graph = IntentGraphManager.create(owner="abteex", name="Personal Chief of Staff")
|
| 144 |
+
|
| 145 |
+
graph.add_goal(
|
| 146 |
+
title="Protect deep work block",
|
| 147 |
+
priority=Priority(level="high", score=80),
|
| 148 |
+
domain="personal_ops",
|
| 149 |
+
)</code></pre>
|
| 150 |
+
</div>
|
| 151 |
+
</section>
|
| 152 |
+
|
| 153 |
+
<section id="surfaces" class="docs-section">
|
| 154 |
+
<p class="eyebrow">Surfaces</p>
|
| 155 |
+
<h2>Package surfaces</h2>
|
| 156 |
+
<div class="docs-card-grid">
|
| 157 |
+
<article class="docs-card">
|
| 158 |
+
<h3>@goalos/core</h3>
|
| 159 |
+
<p>The canonical TypeScript engine for goals, graphs, priority, validation, merge logic, permissions, and queries.</p>
|
| 160 |
+
</article>
|
| 161 |
+
<article class="docs-card">
|
| 162 |
+
<h3>goalos CLI</h3>
|
| 163 |
+
<p>Terminal-first graph creation, inspection, status review, prioritization, validation, import/export, and serving.</p>
|
| 164 |
+
</article>
|
| 165 |
+
<article class="docs-card">
|
| 166 |
+
<h3>@goalos/mcp-server</h3>
|
| 167 |
+
<p>Connect GoalOS to Claude Desktop and other MCP clients so they can read and update intent-aware context.</p>
|
| 168 |
+
</article>
|
| 169 |
+
<article class="docs-card">
|
| 170 |
+
<h3>goalos Python SDK</h3>
|
| 171 |
+
<p>Python-native graph modeling and automation workflows with strong typing and API-friendly data structures.</p>
|
| 172 |
+
</article>
|
| 173 |
+
</div>
|
| 174 |
+
</section>
|
| 175 |
+
|
| 176 |
+
<section id="graph-model" class="docs-section">
|
| 177 |
+
<p class="eyebrow">Model</p>
|
| 178 |
+
<h2>Core graph semantics</h2>
|
| 179 |
+
<ul class="docs-list">
|
| 180 |
+
<li><strong>Goal:</strong> a unit of intent with status, domain, priority, time horizon, and success criteria.</li>
|
| 181 |
+
<li><strong>Hierarchy:</strong> parent-child relationships for strategic goals and execution work.</li>
|
| 182 |
+
<li><strong>Dependency:</strong> explicit blockers, enablers, and related goals across teams or tools.</li>
|
| 183 |
+
<li><strong>Permissions:</strong> scoped capabilities so agents do not get global write access by default.</li>
|
| 184 |
+
<li><strong>Priority engine:</strong> dynamic urgency based on deadlines, blockers, and current execution state.</li>
|
| 185 |
+
</ul>
|
| 186 |
+
</section>
|
| 187 |
+
|
| 188 |
+
<section id="transport" class="docs-section">
|
| 189 |
+
<p class="eyebrow">Transport</p>
|
| 190 |
+
<h2>How GoalOS reaches other systems</h2>
|
| 191 |
+
<div class="docs-card-grid">
|
| 192 |
+
<article class="docs-card">
|
| 193 |
+
<h3>CLI</h3>
|
| 194 |
+
<p>Ideal for local graphs, shell-driven workflows, and automation glue.</p>
|
| 195 |
+
</article>
|
| 196 |
+
<article class="docs-card">
|
| 197 |
+
<h3>MCP</h3>
|
| 198 |
+
<p>Ideal for AI desktop clients and tool-calling agents that need structured context.</p>
|
| 199 |
+
</article>
|
| 200 |
+
<article class="docs-card">
|
| 201 |
+
<h3>OpenAPI</h3>
|
| 202 |
+
<p>Ideal for hosted clients, custom GPT actions, and HTTP-native orchestrators.</p>
|
| 203 |
+
</article>
|
| 204 |
+
</div>
|
| 205 |
+
|
| 206 |
+
<div class="docs-codeblock">
|
| 207 |
+
<div class="docs-codeblock__topline">
|
| 208 |
+
<span>MCP config sketch</span>
|
| 209 |
+
<button class="chip-button chip-button--small" type="button" data-copy-source="mcp-example">Copy</button>
|
| 210 |
+
</div>
|
| 211 |
+
<pre><code id="mcp-example">{
|
| 212 |
+
"mcpServers": {
|
| 213 |
+
"goalos": {
|
| 214 |
+
"command": "npx",
|
| 215 |
+
"args": ["@goalos/mcp-server"]
|
| 216 |
+
}
|
| 217 |
+
}
|
| 218 |
+
}</code></pre>
|
| 219 |
+
</div>
|
| 220 |
+
</section>
|
| 221 |
+
|
| 222 |
+
<section id="deploy" class="docs-section">
|
| 223 |
+
<p class="eyebrow">Publish</p>
|
| 224 |
+
<h2>How this Hugging Face Space is deployed</h2>
|
| 225 |
+
<p>
|
| 226 |
+
This repo includes a self-contained Static Space bundle in <code>hf/space/</code> plus helper scripts for verification and publishing.
|
| 227 |
+
</p>
|
| 228 |
+
|
| 229 |
+
<div class="docs-codeblock">
|
| 230 |
+
<div class="docs-codeblock__topline">
|
| 231 |
+
<span>Local commands</span>
|
| 232 |
+
<button class="chip-button chip-button--small" type="button" data-copy-source="publish-example">Copy</button>
|
| 233 |
+
</div>
|
| 234 |
+
<pre><code id="publish-example">pnpm hf:space:verify
|
| 235 |
+
pnpm hf:space:publish</code></pre>
|
| 236 |
+
</div>
|
| 237 |
+
|
| 238 |
+
<p>
|
| 239 |
+
The publish helper creates or reuses <code>AbteeXAILab/GoalOS</code> as a public Static Space and uploads the contents of <code>hf/space/</code>.
|
| 240 |
+
</p>
|
| 241 |
+
</section>
|
| 242 |
+
|
| 243 |
+
<section id="deeper-links" class="docs-section">
|
| 244 |
+
<p class="eyebrow">More</p>
|
| 245 |
+
<h2>Go deeper</h2>
|
| 246 |
+
<div class="docs-link-grid">
|
| 247 |
+
<a class="docs-link-card" href="https://github.com/Aimaghsoodi/GoalOS" target="_blank" rel="noopener noreferrer">
|
| 248 |
+
<strong>Canonical GitHub repository</strong>
|
| 249 |
+
<span>Source, packages, issues, and release history.</span>
|
| 250 |
+
</a>
|
| 251 |
+
<a class="docs-link-card" href="https://github.com/Aimaghsoodi/GoalOS/tree/main/spec" target="_blank" rel="noopener noreferrer">
|
| 252 |
+
<strong>Spec directory</strong>
|
| 253 |
+
<span>OpenAPI, schema files, examples, and protocol references.</span>
|
| 254 |
+
</a>
|
| 255 |
+
<a class="docs-link-card" href="https://github.com/Aimaghsoodi/GoalOS/tree/main/examples" target="_blank" rel="noopener noreferrer">
|
| 256 |
+
<strong>Examples</strong>
|
| 257 |
+
<span>Cloudflare Worker, Claude Desktop, LangChain, and CrewAI integrations.</span>
|
| 258 |
+
</a>
|
| 259 |
+
<a class="docs-link-card" href="https://aimaghsoodi.github.io/GoalOS/" target="_blank" rel="noopener noreferrer">
|
| 260 |
+
<strong>Existing website</strong>
|
| 261 |
+
<span>The broader public website this Space complements.</span>
|
| 262 |
+
</a>
|
| 263 |
+
</div>
|
| 264 |
+
</section>
|
| 265 |
+
</article>
|
| 266 |
+
</main>
|
| 267 |
+
|
| 268 |
+
<div class="toast" aria-live="polite" aria-atomic="true" data-toast></div>
|
| 269 |
+
|
| 270 |
+
<script src="../assets/app.js"></script>
|
| 271 |
+
</body>
|
| 272 |
+
</html>
|
index.html
CHANGED
|
@@ -1,19 +1,337 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<meta name="description" content="GoalOS by AbteeX AI Labs. A futurist Hugging Face Space for the intent layer that coordinates people, teams, and AI agents.">
|
| 7 |
+
<meta name="theme-color" content="#060816">
|
| 8 |
+
<meta name="color-scheme" content="dark">
|
| 9 |
+
<title>GoalOS by AbteeX AI Labs</title>
|
| 10 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 11 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 12 |
+
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&family=Syne:wght@500;700;800&display=swap" rel="stylesheet">
|
| 13 |
+
<link rel="stylesheet" href="./assets/styles.css">
|
| 14 |
+
</head>
|
| 15 |
+
<body class="space-home">
|
| 16 |
+
<a class="skip-link" href="#main">Skip to content</a>
|
| 17 |
+
<div class="aurora aurora-a"></div>
|
| 18 |
+
<div class="aurora aurora-b"></div>
|
| 19 |
+
<div class="aurora aurora-c"></div>
|
| 20 |
+
<div class="grid-noise"></div>
|
| 21 |
+
|
| 22 |
+
<header class="site-header" id="top">
|
| 23 |
+
<div class="shell site-header__inner">
|
| 24 |
+
<a class="brand" href="#top" aria-label="GoalOS by AbteeX AI Labs">
|
| 25 |
+
<span class="brand__mark">
|
| 26 |
+
<svg viewBox="0 0 64 64" aria-hidden="true">
|
| 27 |
+
<defs>
|
| 28 |
+
<linearGradient id="brandGradient" x1="8" y1="8" x2="56" y2="56" gradientUnits="userSpaceOnUse">
|
| 29 |
+
<stop offset="0%" stop-color="#00d1ff"></stop>
|
| 30 |
+
<stop offset="55%" stop-color="#ff7a18"></stop>
|
| 31 |
+
<stop offset="100%" stop-color="#ffd166"></stop>
|
| 32 |
+
</linearGradient>
|
| 33 |
+
</defs>
|
| 34 |
+
<path d="M32 4 56 18v28L32 60 8 46V18Z" fill="none" stroke="url(#brandGradient)" stroke-width="3"></path>
|
| 35 |
+
<circle cx="32" cy="20" r="6" fill="url(#brandGradient)"></circle>
|
| 36 |
+
<circle cx="19" cy="37" r="4" fill="#00d1ff"></circle>
|
| 37 |
+
<circle cx="45" cy="37" r="4" fill="#ff7a18"></circle>
|
| 38 |
+
<path d="M32 26 19 33M32 26l13 7M19 41h26" stroke="url(#brandGradient)" stroke-width="3" stroke-linecap="round"></path>
|
| 39 |
+
</svg>
|
| 40 |
+
</span>
|
| 41 |
+
<span>
|
| 42 |
+
<strong>GoalOS</strong>
|
| 43 |
+
<span>by AbteeX AI Labs</span>
|
| 44 |
+
</span>
|
| 45 |
+
</a>
|
| 46 |
+
|
| 47 |
+
<nav class="site-nav" aria-label="Primary">
|
| 48 |
+
<a href="#demo">Demo</a>
|
| 49 |
+
<a href="#surfaces">Surfaces</a>
|
| 50 |
+
<a href="./docs/index.html">Docs</a>
|
| 51 |
+
<a href="https://github.com/Aimaghsoodi/GoalOS" target="_blank" rel="noopener noreferrer">GitHub</a>
|
| 52 |
+
</nav>
|
| 53 |
+
</div>
|
| 54 |
+
</header>
|
| 55 |
+
|
| 56 |
+
<main id="main">
|
| 57 |
+
<section class="hero">
|
| 58 |
+
<div class="shell hero__grid">
|
| 59 |
+
<div class="hero__copy reveal">
|
| 60 |
+
<p class="eyebrow">Hugging Face Launch Surface</p>
|
| 61 |
+
<h1>One intent layer for teams, humans, and every AI agent in the loop.</h1>
|
| 62 |
+
<p class="hero__lede">
|
| 63 |
+
GoalOS gives engineering, research, marketing, founders, and AI copilots one shared graph of what matters now, what is blocked, and what must happen next.
|
| 64 |
+
</p>
|
| 65 |
+
|
| 66 |
+
<div class="hero__actions">
|
| 67 |
+
<a class="button button--primary" href="#demo">Play Cinematic Demo</a>
|
| 68 |
+
<a class="button button--ghost" href="./docs/index.html">Open Docs</a>
|
| 69 |
+
<a class="button button--ghost" href="https://github.com/Aimaghsoodi/GoalOS" target="_blank" rel="noopener noreferrer">View GitHub</a>
|
| 70 |
+
</div>
|
| 71 |
+
|
| 72 |
+
<div class="hero__stats">
|
| 73 |
+
<article class="metric-card">
|
| 74 |
+
<span class="metric-card__label">Team alignment</span>
|
| 75 |
+
<strong>Cross-agent context without prompt drift</strong>
|
| 76 |
+
</article>
|
| 77 |
+
<article class="metric-card">
|
| 78 |
+
<span class="metric-card__label">Surfaces</span>
|
| 79 |
+
<strong>TypeScript, Python, CLI, MCP, OpenAPI</strong>
|
| 80 |
+
</article>
|
| 81 |
+
<article class="metric-card">
|
| 82 |
+
<span class="metric-card__label">Launch mode</span>
|
| 83 |
+
<strong>Public HF Space + cinematic product demo</strong>
|
| 84 |
+
</article>
|
| 85 |
+
</div>
|
| 86 |
+
</div>
|
| 87 |
+
|
| 88 |
+
<div class="hero__stage reveal reveal-delay-1">
|
| 89 |
+
<div class="stage-frame">
|
| 90 |
+
<div class="stage-frame__chrome">
|
| 91 |
+
<span></span>
|
| 92 |
+
<span></span>
|
| 93 |
+
<span></span>
|
| 94 |
+
</div>
|
| 95 |
+
|
| 96 |
+
<div class="stage-frame__content">
|
| 97 |
+
<div class="stage-kicker">
|
| 98 |
+
<span class="status-dot"></span>
|
| 99 |
+
Mission board online
|
| 100 |
+
</div>
|
| 101 |
+
|
| 102 |
+
<div class="orbital-board">
|
| 103 |
+
<div class="orbital-board__center">
|
| 104 |
+
<span>Intent Core</span>
|
| 105 |
+
<strong>GoalOS</strong>
|
| 106 |
+
</div>
|
| 107 |
+
<div class="orbital-node orbital-node--cyan">Product</div>
|
| 108 |
+
<div class="orbital-node orbital-node--orange">Research</div>
|
| 109 |
+
<div class="orbital-node orbital-node--gold">Marketing</div>
|
| 110 |
+
<div class="orbital-node orbital-node--magenta">Personal Ops</div>
|
| 111 |
+
</div>
|
| 112 |
+
|
| 113 |
+
<div class="stage-tape">
|
| 114 |
+
<span>claude-desktop</span>
|
| 115 |
+
<span>langchain</span>
|
| 116 |
+
<span>crewai</span>
|
| 117 |
+
<span>custom openapi client</span>
|
| 118 |
+
</div>
|
| 119 |
+
|
| 120 |
+
<div class="stage-panels">
|
| 121 |
+
<article class="stage-panel">
|
| 122 |
+
<span>Today</span>
|
| 123 |
+
<strong>6 critical moves</strong>
|
| 124 |
+
<p>GoalOS ranks the graph using blockers, deadlines, and team-level dependencies.</p>
|
| 125 |
+
</article>
|
| 126 |
+
<article class="stage-panel">
|
| 127 |
+
<span>Now playing</span>
|
| 128 |
+
<strong>Team Command Center</strong>
|
| 129 |
+
<p>AI tools stop optimizing in isolation and start coordinating against the same launch graph.</p>
|
| 130 |
+
</article>
|
| 131 |
+
</div>
|
| 132 |
+
</div>
|
| 133 |
+
</div>
|
| 134 |
+
</div>
|
| 135 |
+
</div>
|
| 136 |
+
</section>
|
| 137 |
+
|
| 138 |
+
<section class="section section--demo" id="demo">
|
| 139 |
+
<div class="shell">
|
| 140 |
+
<div class="section-heading reveal">
|
| 141 |
+
<p class="eyebrow">Cinematic Demo</p>
|
| 142 |
+
<h2>Two stories. One graph. Zero context loss.</h2>
|
| 143 |
+
<p>
|
| 144 |
+
This demo is scripted to show the exact shift GoalOS creates: first at team level, then at personal level.
|
| 145 |
+
</p>
|
| 146 |
+
</div>
|
| 147 |
+
|
| 148 |
+
<div class="demo-console reveal reveal-delay-1" data-demo-root>
|
| 149 |
+
<div class="demo-console__toolbar">
|
| 150 |
+
<div class="demo-console__tabs" data-act-buttons></div>
|
| 151 |
+
<div class="demo-console__controls">
|
| 152 |
+
<button class="chip-button" type="button" data-demo-action="toggle">Pause</button>
|
| 153 |
+
<button class="chip-button" type="button" data-demo-action="replay">Replay</button>
|
| 154 |
+
</div>
|
| 155 |
+
</div>
|
| 156 |
+
|
| 157 |
+
<div class="demo-console__progress">
|
| 158 |
+
<div class="demo-console__progress-fill" data-demo-progress></div>
|
| 159 |
+
</div>
|
| 160 |
+
|
| 161 |
+
<div class="demo-console__body">
|
| 162 |
+
<div class="demo-narrative">
|
| 163 |
+
<p class="demo-label" data-scene-label></p>
|
| 164 |
+
<h3 data-scene-title></h3>
|
| 165 |
+
<p class="demo-summary" data-scene-summary></p>
|
| 166 |
+
<p class="demo-highlight" data-scene-highlight></p>
|
| 167 |
+
|
| 168 |
+
<div class="demo-metrics" data-scene-metrics></div>
|
| 169 |
+
|
| 170 |
+
<div class="demo-code">
|
| 171 |
+
<div class="demo-code__topline">
|
| 172 |
+
<span>Live action</span>
|
| 173 |
+
<button class="chip-button chip-button--small" type="button" data-copy-source="demo-code">Copy</button>
|
| 174 |
+
</div>
|
| 175 |
+
<pre><code id="demo-code" data-scene-code></code></pre>
|
| 176 |
+
</div>
|
| 177 |
+
</div>
|
| 178 |
+
|
| 179 |
+
<div class="demo-wall">
|
| 180 |
+
<div class="demo-graph-panel">
|
| 181 |
+
<div class="panel-heading">
|
| 182 |
+
<span>Intent graph snapshot</span>
|
| 183 |
+
<strong data-scene-counter></strong>
|
| 184 |
+
</div>
|
| 185 |
+
<div class="graph-grid" data-scene-graph></div>
|
| 186 |
+
</div>
|
| 187 |
+
|
| 188 |
+
<div class="demo-events-panel">
|
| 189 |
+
<div class="panel-heading">
|
| 190 |
+
<span>Agent event stream</span>
|
| 191 |
+
<strong>Live coordination</strong>
|
| 192 |
+
</div>
|
| 193 |
+
<ul class="event-stream" data-scene-events></ul>
|
| 194 |
+
</div>
|
| 195 |
+
</div>
|
| 196 |
+
</div>
|
| 197 |
+
|
| 198 |
+
<div class="demo-console__timeline" data-scene-buttons></div>
|
| 199 |
+
</div>
|
| 200 |
+
</div>
|
| 201 |
+
</section>
|
| 202 |
+
|
| 203 |
+
<section class="section" id="surfaces">
|
| 204 |
+
<div class="shell">
|
| 205 |
+
<div class="section-heading reveal">
|
| 206 |
+
<p class="eyebrow">Package Surfaces</p>
|
| 207 |
+
<h2>Everything you need to wire GoalOS into a real stack.</h2>
|
| 208 |
+
<p>
|
| 209 |
+
GoalOS is packaged for application code, automation pipelines, terminal workflows, MCP clients, and custom integrations.
|
| 210 |
+
</p>
|
| 211 |
+
</div>
|
| 212 |
+
|
| 213 |
+
<div class="surface-grid reveal reveal-delay-1">
|
| 214 |
+
<article class="surface-card">
|
| 215 |
+
<div class="surface-card__meta">TypeScript core</div>
|
| 216 |
+
<h3>@goalos/core</h3>
|
| 217 |
+
<p>Use the intent graph engine directly inside product code, orchestration services, or server-side workflows.</p>
|
| 218 |
+
<pre><code>npm install @goalos/core</code></pre>
|
| 219 |
+
<button class="chip-button" type="button" data-copy="npm install @goalos/core">Copy install</button>
|
| 220 |
+
</article>
|
| 221 |
+
|
| 222 |
+
<article class="surface-card">
|
| 223 |
+
<div class="surface-card__meta">Python SDK</div>
|
| 224 |
+
<h3>goalos</h3>
|
| 225 |
+
<p>Mirror GoalOS primitives in Python with typed models and API-friendly graph operations.</p>
|
| 226 |
+
<pre><code>pip install goalos</code></pre>
|
| 227 |
+
<button class="chip-button" type="button" data-copy="pip install goalos">Copy install</button>
|
| 228 |
+
</article>
|
| 229 |
+
|
| 230 |
+
<article class="surface-card">
|
| 231 |
+
<div class="surface-card__meta">CLI</div>
|
| 232 |
+
<h3>goalos</h3>
|
| 233 |
+
<p>Create, inspect, prioritize, validate, and serve your graph from the terminal.</p>
|
| 234 |
+
<pre><code>npm install -g goalos</code></pre>
|
| 235 |
+
<button class="chip-button" type="button" data-copy="npm install -g goalos">Copy install</button>
|
| 236 |
+
</article>
|
| 237 |
+
|
| 238 |
+
<article class="surface-card">
|
| 239 |
+
<div class="surface-card__meta">MCP server</div>
|
| 240 |
+
<h3>@goalos/mcp-server</h3>
|
| 241 |
+
<p>Expose GoalOS as a structured context provider to Claude Desktop and any MCP-compatible client.</p>
|
| 242 |
+
<pre><code>npm install -g @goalos/mcp-server</code></pre>
|
| 243 |
+
<button class="chip-button" type="button" data-copy="npm install -g @goalos/mcp-server">Copy install</button>
|
| 244 |
+
</article>
|
| 245 |
+
|
| 246 |
+
<article class="surface-card">
|
| 247 |
+
<div class="surface-card__meta">OpenAPI + spec</div>
|
| 248 |
+
<h3>spec/openapi.yaml</h3>
|
| 249 |
+
<p>Bring GoalOS into custom GPT actions, orchestrators, and HTTP-native integrations.</p>
|
| 250 |
+
<pre><code>spec/openapi.yaml</code></pre>
|
| 251 |
+
<a class="chip-button chip-button--link" href="https://github.com/Aimaghsoodi/GoalOS/tree/main/spec" target="_blank" rel="noopener noreferrer">Open spec</a>
|
| 252 |
+
</article>
|
| 253 |
+
</div>
|
| 254 |
+
</div>
|
| 255 |
+
</section>
|
| 256 |
+
|
| 257 |
+
<section class="section section--how">
|
| 258 |
+
<div class="shell">
|
| 259 |
+
<div class="section-heading reveal">
|
| 260 |
+
<p class="eyebrow">How It Works</p>
|
| 261 |
+
<h2>Define intent once. Let every tool reason against the same operating picture.</h2>
|
| 262 |
+
</div>
|
| 263 |
+
|
| 264 |
+
<div class="step-grid reveal reveal-delay-1">
|
| 265 |
+
<article class="step-card">
|
| 266 |
+
<span>01</span>
|
| 267 |
+
<h3>Model the graph</h3>
|
| 268 |
+
<p>Encode goals, sub-goals, deadlines, blockers, permissions, and success criteria in a structured graph.</p>
|
| 269 |
+
</article>
|
| 270 |
+
<article class="step-card">
|
| 271 |
+
<span>02</span>
|
| 272 |
+
<h3>Connect agents</h3>
|
| 273 |
+
<p>Expose GoalOS via code, CLI, MCP, or OpenAPI so your tools read from a shared context layer.</p>
|
| 274 |
+
</article>
|
| 275 |
+
<article class="step-card">
|
| 276 |
+
<span>03</span>
|
| 277 |
+
<h3>Resolve collisions</h3>
|
| 278 |
+
<p>Priorities shift automatically when blockers appear, deadlines move, or team focus changes.</p>
|
| 279 |
+
</article>
|
| 280 |
+
<article class="step-card">
|
| 281 |
+
<span>04</span>
|
| 282 |
+
<h3>Coordinate outcomes</h3>
|
| 283 |
+
<p>Founders, operators, and AI systems now act against one stateful picture instead of isolated prompts.</p>
|
| 284 |
+
</article>
|
| 285 |
+
</div>
|
| 286 |
+
</div>
|
| 287 |
+
</section>
|
| 288 |
+
|
| 289 |
+
<section class="section section--docs">
|
| 290 |
+
<div class="shell">
|
| 291 |
+
<div class="docs-cta reveal">
|
| 292 |
+
<div>
|
| 293 |
+
<p class="eyebrow">Docs Hub</p>
|
| 294 |
+
<h2>Walk from launch page into real implementation detail.</h2>
|
| 295 |
+
<p>
|
| 296 |
+
The in-Space docs cover quickstart installs, package surfaces, CLI and MCP setup, graph semantics, and the Hugging Face publish flow used for this launch.
|
| 297 |
+
</p>
|
| 298 |
+
</div>
|
| 299 |
+
|
| 300 |
+
<div class="docs-cta__actions">
|
| 301 |
+
<a class="button button--primary" href="./docs/index.html">Read the docs</a>
|
| 302 |
+
<a class="button button--ghost" href="https://github.com/Aimaghsoodi/GoalOS/tree/main/examples" target="_blank" rel="noopener noreferrer">Open examples</a>
|
| 303 |
+
</div>
|
| 304 |
+
</div>
|
| 305 |
+
</div>
|
| 306 |
+
</section>
|
| 307 |
+
</main>
|
| 308 |
+
|
| 309 |
+
<footer class="site-footer">
|
| 310 |
+
<div class="shell site-footer__grid">
|
| 311 |
+
<div>
|
| 312 |
+
<div class="brand brand--footer">
|
| 313 |
+
<span class="brand__mark brand__mark--small"></span>
|
| 314 |
+
<span>
|
| 315 |
+
<strong>GoalOS</strong>
|
| 316 |
+
<span>by AbteeX AI Labs</span>
|
| 317 |
+
</span>
|
| 318 |
+
</div>
|
| 319 |
+
<p>
|
| 320 |
+
Public Hugging Face launch surface for the open-source intent layer that keeps people and AI agents aligned.
|
| 321 |
+
</p>
|
| 322 |
+
</div>
|
| 323 |
+
|
| 324 |
+
<div class="footer-links">
|
| 325 |
+
<a href="./docs/index.html">Docs</a>
|
| 326 |
+
<a href="https://github.com/Aimaghsoodi/GoalOS" target="_blank" rel="noopener noreferrer">GitHub</a>
|
| 327 |
+
<a href="https://aimaghsoodi.github.io/GoalOS/" target="_blank" rel="noopener noreferrer">Website</a>
|
| 328 |
+
<a href="https://github.com/Aimaghsoodi/GoalOS/blob/main/LICENSE" target="_blank" rel="noopener noreferrer">MIT License</a>
|
| 329 |
+
</div>
|
| 330 |
+
</div>
|
| 331 |
+
</footer>
|
| 332 |
+
|
| 333 |
+
<div class="toast" aria-live="polite" aria-atomic="true" data-toast></div>
|
| 334 |
+
|
| 335 |
+
<script src="./assets/app.js"></script>
|
| 336 |
+
</body>
|
| 337 |
</html>
|