@wenathlan/saddle 2.0.154 → 2.0.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +167 -1334
- package/README.md +59 -60
- package/biome.jsonc +3 -3
- package/browser.ts +482 -0
- package/cli.ts +274 -0
- package/distribution.ts +731 -0
- package/docker.config +29 -8
- package/docs/{architecture.1.8.19.mmd → architecture1819.md} +6 -0
- package/docs/artifactavailability.md +2 -2
- package/docs/browser.md +18 -1
- package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
- package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
- package/docs/extension.md +13 -2
- package/docs/features.md +5 -0
- package/docs/libraryapi.md +1 -1
- package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
- package/docs/{planning.ninety.md → planningninety.md} +6 -6
- package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
- package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
- package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
- package/docs/todo.md +2 -2
- package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
- package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
- package/execution.ts +677 -0
- package/foundation.ts +314 -0
- package/index.ts +36 -34
- package/isolation.ts +84 -0
- package/modalityregistry.ts +189 -145
- package/modes.ts +170 -0
- package/mttg.config +1 -1
- package/orchestrator.ts +49 -15
- package/package.json +105 -89
- package/qemu.config +2 -2
- package/sandbox.ts +3279 -0
- package/scheduler.ts +1 -1
- package/server.ts +52 -0
- package/tsconfig.json +12 -13
- package/virtual.ts +7528 -0
- package/workloadlaw.ts +293 -0
- package/dist/App.d.ts +0 -5
- package/dist/App.js +0 -52
- package/dist/Sol/Sol.d.ts +0 -3
- package/dist/Sol/Sol.js +0 -46
- package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
- package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
- package/dist/Sol/architecture/architecture.d.ts +0 -9
- package/dist/Sol/architecture/architecture.js +0 -93
- package/dist/Sol/compute/compute.d.ts +0 -9
- package/dist/Sol/compute/compute.js +0 -22
- package/dist/Sol/console/console.d.ts +0 -15
- package/dist/Sol/console/console.js +0 -292
- package/dist/Sol/dashboard/dashboard.d.ts +0 -10
- package/dist/Sol/dashboard/dashboard.js +0 -181
- package/dist/Sol/docs/docs.d.ts +0 -9
- package/dist/Sol/docs/docs.js +0 -28
- package/dist/Sol/home/home.d.ts +0 -35
- package/dist/Sol/home/home.js +0 -239
- package/dist/Sol/integrations/integrations.d.ts +0 -9
- package/dist/Sol/integrations/integrations.js +0 -83
- package/dist/Sol/intro/intro.d.ts +0 -7
- package/dist/Sol/intro/intro.js +0 -102
- package/dist/Sol/login/login.d.ts +0 -16
- package/dist/Sol/login/login.js +0 -49
- package/dist/Sol/notfound/notfound.d.ts +0 -9
- package/dist/Sol/notfound/notfound.js +0 -15
- package/dist/Sol/onboarding/onboarding.d.ts +0 -25
- package/dist/Sol/onboarding/onboarding.js +0 -60
- package/dist/Sol/playground/playground.d.ts +0 -9
- package/dist/Sol/playground/playground.js +0 -127
- package/dist/Sol/register/register.d.ts +0 -16
- package/dist/Sol/register/register.js +0 -193
- package/dist/Sol/shell/Shell.d.ts +0 -124
- package/dist/Sol/shell/Shell.js +0 -335
- package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
- package/dist/Sol/wingets/ComputeBootladder.js +0 -71
- package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
- package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
- package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
- package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
- package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
- package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
- package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
- package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
- package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
- package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
- package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
- package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
- package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
- package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
- package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
- package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
- package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
- package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
- package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
- package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
- package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
- package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
- package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
- package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
- package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
- package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
- package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
- package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
- package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
- package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
- package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
- package/dist/Sol/wingets/DashboardUserstable.js +0 -78
- package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
- package/dist/Sol/wingets/HomeEntrygate.js +0 -73
- package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
- package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
- package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
- package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
- package/dist/Sol/wingets/LoginForm.d.ts +0 -19
- package/dist/Sol/wingets/LoginForm.js +0 -141
- package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
- package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
- package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
- package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
- package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
- package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
- package/dist/Sol/wingets/index.d.ts +0 -39
- package/dist/Sol/wingets/index.js +0 -39
- package/dist/alternatives.d.ts +0 -508
- package/dist/alternatives.js +0 -950
- package/dist/api.d.ts +0 -154
- package/dist/api.js +0 -174
- package/dist/auth.d.ts +0 -268
- package/dist/auth.js +0 -476
- package/dist/automation.d.ts +0 -425
- package/dist/automation.js +0 -566
- package/dist/browser.d.ts +0 -561
- package/dist/browser.js +0 -1058
- package/dist/capacitor.config.d.ts +0 -45
- package/dist/capacitor.config.js +0 -48
- package/dist/catalog.d.ts +0 -43
- package/dist/catalog.js +0 -44
- package/dist/cli.d.ts +0 -16
- package/dist/cli.js +0 -168
- package/dist/communication.d.ts +0 -181
- package/dist/communication.js +0 -376
- package/dist/compute.d.ts +0 -1160
- package/dist/compute.js +0 -2272
- package/dist/dashboardlib.d.ts +0 -58
- package/dist/dashboardlib.js +0 -161
- package/dist/db.d.ts +0 -569
- package/dist/db.js +0 -1080
- package/dist/distribution.d.ts +0 -528
- package/dist/distribution.js +0 -810
- package/dist/drizzle.config.d.ts +0 -20
- package/dist/drizzle.config.js +0 -18
- package/dist/edgelandes.d.ts +0 -70
- package/dist/edgelandes.host.d.ts +0 -26
- package/dist/edgelandes.host.js +0 -1089
- package/dist/edgelandes.inproc.d.ts +0 -27
- package/dist/edgelandes.inproc.js +0 -952
- package/dist/edgelandes.js +0 -1133
- package/dist/edgelandes.ninety.d.ts +0 -31
- package/dist/edgelandes.ninety.js +0 -174
- package/dist/edgelandes.virtual.d.ts +0 -25
- package/dist/edgelandes.virtual.js +0 -629
- package/dist/edgeplane.d.ts +0 -121
- package/dist/edgeplane.js +0 -341
- package/dist/examplelocaljob.d.ts +0 -1
- package/dist/examplelocaljob.js +0 -14
- package/dist/execution.d.ts +0 -529
- package/dist/execution.js +0 -760
- package/dist/family.d.ts +0 -16
- package/dist/family.js +0 -42
- package/dist/familyurl.d.ts +0 -21
- package/dist/familyurl.js +0 -24
- package/dist/format.d.ts +0 -18
- package/dist/format.js +0 -59
- package/dist/foundation.d.ts +0 -172
- package/dist/foundation.js +0 -312
- package/dist/index.d.ts +0 -735
- package/dist/index.js +0 -1020
- package/dist/integration.d.ts +0 -235
- package/dist/integration.js +0 -228
- package/dist/intelligence.d.ts +0 -93
- package/dist/intelligence.js +0 -144
- package/dist/isolation.d.ts +0 -128
- package/dist/isolation.js +0 -95
- package/dist/labels.d.ts +0 -665
- package/dist/labels.js +0 -707
- package/dist/localauth.d.ts +0 -127
- package/dist/localauth.js +0 -413
- package/dist/media.d.ts +0 -343
- package/dist/media.js +0 -985
- package/dist/mesh.d.ts +0 -177
- package/dist/mesh.js +0 -468
- package/dist/modalityregistry.d.ts +0 -109
- package/dist/modalityregistry.js +0 -1386
- package/dist/modes.d.ts +0 -358
- package/dist/modes.js +0 -133
- package/dist/onboardingstate.d.ts +0 -79
- package/dist/onboardingstate.js +0 -282
- package/dist/orchestrator.d.ts +0 -1338
- package/dist/orchestrator.js +0 -4310
- package/dist/packager/targetcli.js +0 -4
- package/dist/paths.d.ts +0 -2
- package/dist/paths.js +0 -14
- package/dist/performance.d.ts +0 -415
- package/dist/performance.js +0 -826
- package/dist/quantum.d.ts +0 -809
- package/dist/quantum.js +0 -2072
- package/dist/render.d.ts +0 -380
- package/dist/render.js +0 -1072
- package/dist/runall.d.ts +0 -2
- package/dist/runall.js +0 -39
- package/dist/runtimeprobe.d.ts +0 -4
- package/dist/runtimeprobe.js +0 -8
- package/dist/sandbox.d.ts +0 -355
- package/dist/sandbox.js +0 -1721
- package/dist/sandboxenvprofile.d.ts +0 -29
- package/dist/sandboxenvprofile.js +0 -89
- package/dist/sandboxprofile.d.ts +0 -137
- package/dist/sandboxprofile.js +0 -241
- package/dist/sandboxqueue.d.ts +0 -108
- package/dist/sandboxqueue.js +0 -201
- package/dist/sandboxquota.d.ts +0 -121
- package/dist/sandboxquota.js +0 -236
- package/dist/scheduler.d.ts +0 -595
- package/dist/scheduler.js +0 -1258
- package/dist/scriptlanes.d.ts +0 -182
- package/dist/scriptlanes.js +0 -660
- package/dist/scripts.buildengine.d.ts +0 -1
- package/dist/scripts.buildengine.js +0 -39
- package/dist/scripts.securitygate.d.ts +0 -1
- package/dist/scripts.securitygate.js +0 -68
- package/dist/scripts.validateflatnative.d.ts +0 -1
- package/dist/scripts.validateflatnative.js +0 -72
- package/dist/security.d.ts +0 -500
- package/dist/security.js +0 -1169
- package/dist/seedcatalog.d.ts +0 -13
- package/dist/seedcatalog.js +0 -46
- package/dist/server.d.ts +0 -20
- package/dist/server.js +0 -53
- package/dist/speccatalog.d.ts +0 -31
- package/dist/speccatalog.js +0 -163
- package/dist/tiers.d.ts +0 -1001
- package/dist/tiers.js +0 -2169
- package/dist/utils.d.ts +0 -2
- package/dist/utils.js +0 -5
- package/dist/vaulthandoff.d.ts +0 -141
- package/dist/vaulthandoff.js +0 -444
- package/dist/virtual.d.ts +0 -640
- package/dist/virtual.js +0 -1284
- package/dist/virtualcpu.d.ts +0 -315
- package/dist/virtualcpu.js +0 -1180
- package/dist/virtualgpu.d.ts +0 -344
- package/dist/virtualgpu.js +0 -1000
- package/dist/virtualization.d.ts +0 -606
- package/dist/virtualization.js +0 -1186
- package/dist/virtualmemory.d.ts +0 -817
- package/dist/virtualmemory.js +0 -1795
- package/dist/vite.config.d.ts +0 -3
- package/dist/vite.config.js +0 -48
- package/dist/vitest.config.d.ts +0 -2
- package/dist/vitest.config.js +0 -25
- package/dist/webserver.d.ts +0 -166
- package/dist/webserver.js +0 -2226
- package/dist/workloadlaw.d.ts +0 -133
- package/dist/workloadlaw.js +0 -193
- package/docs/.gitkeep +0 -0
- package/docs/architecture.1.8.19.md +0 -76
- package/docs/logs/examplesession.json +0 -54
- package/docs/repo.analysis.1.8.21.json +0 -2617
- package/docs/repo.candidates.1.8.21.jsonl +0 -666
- package/docs/repo.selected.1.8.21.json +0 -786
- package/manifest.json +0 -20
- package/media.ts +0 -1337
- package/virtualcpu.ts +0 -1274
- package/virtualgpu.ts +0 -1182
- package/virtualization.ts +0 -1628
- package/virtualmemory.ts +0 -2303
- /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
- /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
- /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
- /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
- /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
- /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
- /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
- /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
- /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
- /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
- /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
- /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
- /package/docs/{planning.engine.md → planningengine.md} +0 -0
- /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
- /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
- /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
- /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
- /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
- /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
- /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
- /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
- /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
- /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
- /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
- /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
- /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
- /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
- /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
- /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
- /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
- /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
- /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
- /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
- /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
- /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
- /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
- /package/docs/{web.ideas.md → webideas.md} +0 -0
- /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
package/dist/Sol/docs/docs.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* docs page anchor — layer 3 of the anchor architecture.
|
|
4
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
5
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
6
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
7
|
-
* this file. This anchor carries the former main component of the folder,
|
|
8
|
-
* which now lives here as the page mount itself.
|
|
9
|
-
*/
|
|
10
|
-
// Signal & Ledger: documentation as an operations index, with short paths and preserved context.
|
|
11
|
-
import { ArrowUpRightRegular as ArrowUpRight, BookOpenRegular as BookOpen, BracesRegular as Braces, CodeRegular as FileCode2, FlagRegular as Flag, RecordRegular as GitCommitHorizontal, PlayCircleRegular as PlayCircle, } from '@fluentui/react-icons';
|
|
12
|
-
import { PageShell } from '../shell/Shell.tsx';
|
|
13
|
-
import { label, labelfill } from '../../labels.ts';
|
|
14
|
-
/** the operations index: the glyph and the two-digit index are presentation
|
|
15
|
-
* code, every word rides the store under the docs.note.* family. */
|
|
16
|
-
const docs = [
|
|
17
|
-
{ icon: BookOpen, index: '00', key: 'thesis' },
|
|
18
|
-
{ icon: Braces, index: '01', key: 'session' },
|
|
19
|
-
{ icon: GitCommitHorizontal, index: '02', key: 'repo' },
|
|
20
|
-
{ icon: FileCode2, index: '03', key: 'chain' },
|
|
21
|
-
{ icon: Flag, index: '04', key: 'gates' },
|
|
22
|
-
];
|
|
23
|
-
export default function Docs() {
|
|
24
|
-
return (_jsxs(PageShell, { section: label('docs.shell.section'), label: label('docs.shell.label'), title: label('docs.shell.title'), intro: label('docs.shell.intro'), children: [_jsxs("section", { className: "content-section split-content", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: label('docs.split.eyebrow') }), _jsx("h2", { className: "section-title", children: label('docs.split.title') })] }), _jsxs("div", { className: "prose-copy", children: [_jsx("p", { children: label('docs.split.body1') }), _jsx("p", { children: label('docs.split.body2') })] })] }), _jsxs("section", { className: "content-section docs-list", children: [_jsxs("div", { className: "content-section-heading", children: [_jsx("p", { className: "eyebrow", children: label('docs.index.eyebrow') }), _jsx("span", { className: "mono-label", children: labelfill('docs.index.mono', { n: String(docs.length) }) })] }), docs.map((doc) => {
|
|
25
|
-
const Icon = doc.icon;
|
|
26
|
-
return (_jsxs("button", { type: "button", className: "doc-row", onClick: (event) => event.preventDefault(), children: [_jsx("span", { className: "doc-index", children: doc.index }), _jsx(Icon, { fontSize: 20, strokeWidth: 1.5 }), _jsxs("div", { className: "doc-copy", children: [_jsx("span", { children: label(`docs.note.${doc.key}.meta`) }), _jsx("strong", { children: label(`docs.note.${doc.key}.title`) }), _jsx("p", { children: label(`docs.note.${doc.key}.body`) })] }), _jsx(ArrowUpRight, { fontSize: 17 })] }, doc.key));
|
|
27
|
-
})] }), _jsxs("section", { className: "content-section docs-cta", children: [_jsx(PlayCircle, { fontSize: 22 }), _jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: label('docs.cta.eyebrow') }), _jsx("h3", { children: label('docs.cta.title') }), _jsx("p", { children: label('docs.cta.body') })] }), _jsxs("a", { href: "https://github.com/wenathlan/saddle", target: "_blank", rel: "noreferrer", className: "button button-dark", children: [label('docs.cta.link'), _jsx(ArrowUpRight, { fontSize: 15 })] })] })] }));
|
|
28
|
-
}
|
package/dist/Sol/home/home.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* home page anchor — layer 3 of the anchor architecture.
|
|
3
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
4
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
5
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
6
|
-
* this file. This anchor carries the former main component of the folder,
|
|
7
|
-
* which now lives here as the page mount itself.
|
|
8
|
-
*
|
|
9
|
-
* R3-saddle: home is the LANDING of the platform — one sand light over the
|
|
10
|
-
* window stage, the prompt-giga field where the operator declares a sandbox
|
|
11
|
-
* (a giant mono input with the embedded boot key and the real declared
|
|
12
|
-
* vocabulary of sandboxprofile.ts as chips), the sandbox matrix as a
|
|
13
|
-
* hairline ledger of the three runtime bases (base / guests / arch / vgpu /
|
|
14
|
-
* ceiling — the documented development bootstrap limits of
|
|
15
|
-
* sandboxenvprofile.ts), the thesis, the runtime chain, the surfaces
|
|
16
|
-
* ledger, the 01–03 steps and the footer meta-quad. The boot key parses the
|
|
17
|
-
* draft against the declared vocabulary and hands the parsed declaration to
|
|
18
|
-
* the console over the `saddle.declared` session key — the console reads
|
|
19
|
-
* and spends it once on mount (a real handoff: the hardware identities stay
|
|
20
|
-
* caller choices there).
|
|
21
|
-
*
|
|
22
|
-
* The flow law rides this anchor: the default export is the ENTRY GATE
|
|
23
|
-
* (entrygate.tsx, beside this anchor) — the seen flags are consulted before
|
|
24
|
-
* the landing shows, an unfinished flow is replaced at /intro or
|
|
25
|
-
* /onboarding, and only a visitor that finished both stages ever sees the
|
|
26
|
-
* surface below.
|
|
27
|
-
*/
|
|
28
|
-
export * from '../wingets';
|
|
29
|
-
/**
|
|
30
|
-
* The home page anchor: the entry gate rides the surface — the flow law
|
|
31
|
-
* (intro → onboarding → the platform) is consulted before the home shows.
|
|
32
|
-
*
|
|
33
|
-
* @returns the gated home element.
|
|
34
|
-
*/
|
|
35
|
-
export default function Home(): import("react").JSX.Element;
|
package/dist/Sol/home/home.js
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* home page anchor — layer 3 of the anchor architecture.
|
|
4
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
5
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
6
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
7
|
-
* this file. This anchor carries the former main component of the folder,
|
|
8
|
-
* which now lives here as the page mount itself.
|
|
9
|
-
*
|
|
10
|
-
* R3-saddle: home is the LANDING of the platform — one sand light over the
|
|
11
|
-
* window stage, the prompt-giga field where the operator declares a sandbox
|
|
12
|
-
* (a giant mono input with the embedded boot key and the real declared
|
|
13
|
-
* vocabulary of sandboxprofile.ts as chips), the sandbox matrix as a
|
|
14
|
-
* hairline ledger of the three runtime bases (base / guests / arch / vgpu /
|
|
15
|
-
* ceiling — the documented development bootstrap limits of
|
|
16
|
-
* sandboxenvprofile.ts), the thesis, the runtime chain, the surfaces
|
|
17
|
-
* ledger, the 01–03 steps and the footer meta-quad. The boot key parses the
|
|
18
|
-
* draft against the declared vocabulary and hands the parsed declaration to
|
|
19
|
-
* the console over the `saddle.declared` session key — the console reads
|
|
20
|
-
* and spends it once on mount (a real handoff: the hardware identities stay
|
|
21
|
-
* caller choices there).
|
|
22
|
-
*
|
|
23
|
-
* The flow law rides this anchor: the default export is the ENTRY GATE
|
|
24
|
-
* (entrygate.tsx, beside this anchor) — the seen flags are consulted before
|
|
25
|
-
* the landing shows, an unfinished flow is replaced at /intro or
|
|
26
|
-
* /onboarding, and only a visitor that finished both stages ever sees the
|
|
27
|
-
* surface below.
|
|
28
|
-
*/
|
|
29
|
-
import { ArrowDownRightRegular as ArrowDownRight, ArrowUpRightRegular as ArrowUpRight, PlugConnectedRegular as Cable, KeyboardRegular as Command, LayerRegular as Layers3, ArrowRightRegular as MoveRight, BoxRegular as Package, } from '@fluentui/react-icons';
|
|
30
|
-
// Signal & Ledger: home as the landing — declare the sandbox, read the matrix, boot the console.
|
|
31
|
-
import { useEffect, useMemo, useState } from 'react';
|
|
32
|
-
import { Link, useLocation } from 'wouter';
|
|
33
|
-
import { SectionRail } from '../shell/Shell.tsx';
|
|
34
|
-
import { mediaSlots } from '../../catalog';
|
|
35
|
-
import { label, labelfill } from '../../labels.ts';
|
|
36
|
-
import { specenvlimits } from '../../sandboxenvprofile.ts';
|
|
37
|
-
import { SANDBOXARCHES, SANDBOXBASES, SANDBOXFORMS, SANDBOXOSES, } from '../../sandboxprofile.ts';
|
|
38
|
-
import { HomeEntrygate as EntryGate } from '../wingets';
|
|
39
|
-
import { MetricStrip as MetricStrip } from '../wingets';
|
|
40
|
-
import { RuntimeDiagram as RuntimeDiagram } from '../wingets';
|
|
41
|
-
export * from '../wingets';
|
|
42
|
-
/** the session key the boot key writes and the console reads (once, then spent). */
|
|
43
|
-
const DECLARED_KEY = 'saddle.declared';
|
|
44
|
-
/** parses one draft line against the declared vocabularies of sandboxprofile. */
|
|
45
|
-
function parsedraft(raw) {
|
|
46
|
-
const words = raw
|
|
47
|
-
.toLowerCase()
|
|
48
|
-
.split(/[^a-z0-9]+/)
|
|
49
|
-
.filter(Boolean);
|
|
50
|
-
return {
|
|
51
|
-
base: SANDBOXBASES.find((entry) => words.includes(entry)) ?? null,
|
|
52
|
-
os: SANDBOXOSES.find((entry) => words.includes(entry)) ?? null,
|
|
53
|
-
arch: SANDBOXARCHES.find((entry) => words.includes(entry)) ?? null,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/** the chip groups of the hero: the three fixed vocabularies — the tokens
|
|
57
|
-
* are the declared data, the group labels ride the store. */
|
|
58
|
-
function chipgroups() {
|
|
59
|
-
return [
|
|
60
|
-
{ key: 'base', label: label('home.chips.base'), items: SANDBOXBASES },
|
|
61
|
-
{ key: 'os', label: label('home.chips.guest'), items: SANDBOXOSES },
|
|
62
|
-
{ key: 'arch', label: label('home.chips.arch'), items: SANDBOXARCHES },
|
|
63
|
-
];
|
|
64
|
-
}
|
|
65
|
-
/** the surfaces ledger: one engine, three shells (the labels ride the store). */
|
|
66
|
-
function surfaces() {
|
|
67
|
-
return [
|
|
68
|
-
{
|
|
69
|
-
index: '01',
|
|
70
|
-
icon: Cable,
|
|
71
|
-
title: label('home.surface.browser.title'),
|
|
72
|
-
body: label('home.surface.browser.body'),
|
|
73
|
-
href: '/agent-browser',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
index: '02',
|
|
77
|
-
icon: Layers3,
|
|
78
|
-
title: label('home.surface.compute.title'),
|
|
79
|
-
body: label('home.surface.compute.body'),
|
|
80
|
-
href: '/compute',
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
index: '03',
|
|
84
|
-
icon: Package,
|
|
85
|
-
title: label('home.surface.packages.title'),
|
|
86
|
-
body: label('home.surface.packages.body'),
|
|
87
|
-
href: '/integrations',
|
|
88
|
-
},
|
|
89
|
-
];
|
|
90
|
-
}
|
|
91
|
-
/** the 01–03 steps of the landing: declare → boot → keep. */
|
|
92
|
-
function steps() {
|
|
93
|
-
return [
|
|
94
|
-
{
|
|
95
|
-
index: '01',
|
|
96
|
-
title: label('home.steps.declare.title'),
|
|
97
|
-
body: label('home.steps.declare.body'),
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
index: '02',
|
|
101
|
-
title: label('home.steps.boot.title'),
|
|
102
|
-
body: label('home.steps.boot.body'),
|
|
103
|
-
href: '/console',
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
index: '03',
|
|
107
|
-
title: label('home.steps.keep.title'),
|
|
108
|
-
body: label('home.steps.keep.body'),
|
|
109
|
-
href: '/dashboard',
|
|
110
|
-
},
|
|
111
|
-
];
|
|
112
|
-
}
|
|
113
|
-
/** the footer meta-quad: the four moves of the platform. */
|
|
114
|
-
function quad() {
|
|
115
|
-
return [
|
|
116
|
-
{
|
|
117
|
-
index: '01',
|
|
118
|
-
title: label('home.quad.boot.title'),
|
|
119
|
-
body: label('home.quad.boot.body'),
|
|
120
|
-
href: '/console',
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
index: '02',
|
|
124
|
-
title: label('home.quad.operate.title'),
|
|
125
|
-
body: label('home.quad.operate.body'),
|
|
126
|
-
href: '/dashboard',
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
index: '03',
|
|
130
|
-
title: label('home.quad.chain.title'),
|
|
131
|
-
body: label('home.quad.chain.body'),
|
|
132
|
-
href: '/compute',
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
index: '04',
|
|
136
|
-
title: label('home.quad.thesis.title'),
|
|
137
|
-
body: label('home.quad.thesis.body'),
|
|
138
|
-
href: '/architecture',
|
|
139
|
-
},
|
|
140
|
-
];
|
|
141
|
-
}
|
|
142
|
-
/** the landing surface: the hero stage, the ledgers and the footer quad
|
|
143
|
-
* (mounted only when the entry gate lets the flow through). */
|
|
144
|
-
function HomeSurface() {
|
|
145
|
-
const [, navigate] = useLocation();
|
|
146
|
-
const [media, setMedia] = useState([]);
|
|
147
|
-
const [draft, setDraft] = useState('');
|
|
148
|
-
useEffect(() => {
|
|
149
|
-
void mediaSlots().then(setMedia);
|
|
150
|
-
}, []);
|
|
151
|
-
const runtimeSlot = media.find((slot) => slot.id === 'media.runtime.map');
|
|
152
|
-
/** the live parse: chips and the typed draft share one source of truth. */
|
|
153
|
-
const parsed = useMemo(() => parsedraft(draft), [draft]);
|
|
154
|
-
const declaredbits = [
|
|
155
|
-
parsed.base !== null ? labelfill('home.declared.base', { value: parsed.base }) : null,
|
|
156
|
-
parsed.os !== null ? labelfill('home.declared.guest', { value: parsed.os }) : null,
|
|
157
|
-
parsed.arch !== null ? labelfill('home.declared.arch', { value: parsed.arch }) : null,
|
|
158
|
-
].filter(Boolean);
|
|
159
|
-
const declaredline = declaredbits.length > 0
|
|
160
|
-
? labelfill('home.declared.line', { parts: declaredbits.join(' · ') })
|
|
161
|
-
: label('home.declared.none');
|
|
162
|
-
/** toggles one vocabulary token inside the draft line. */
|
|
163
|
-
const toggletoken = (token) => {
|
|
164
|
-
setDraft((prev) => {
|
|
165
|
-
const words = prev
|
|
166
|
-
.toLowerCase()
|
|
167
|
-
.split(/[^a-z0-9]+/)
|
|
168
|
-
.filter(Boolean);
|
|
169
|
-
const next = words.includes(token)
|
|
170
|
-
? words.filter((word) => word !== token)
|
|
171
|
-
: [...words, token];
|
|
172
|
-
return next.join(' · ');
|
|
173
|
-
});
|
|
174
|
-
};
|
|
175
|
-
/** the boot key: parse, hand the declaration over, open the console. */
|
|
176
|
-
const spin = () => {
|
|
177
|
-
try {
|
|
178
|
-
sessionStorage.setItem(DECLARED_KEY, JSON.stringify(parsedraft(draft)));
|
|
179
|
-
}
|
|
180
|
-
catch {
|
|
181
|
-
/* storage unavailable: the boot key still navigates */
|
|
182
|
-
}
|
|
183
|
-
navigate('/console');
|
|
184
|
-
};
|
|
185
|
-
/** the sandbox matrix: the three bases over the documented bootstrap limits. */
|
|
186
|
-
const limits = specenvlimits({}).bases;
|
|
187
|
-
const matrixrows = ['lite', 'balanced', 'max'].map((id) => {
|
|
188
|
-
const row = limits[id];
|
|
189
|
-
return {
|
|
190
|
-
id,
|
|
191
|
-
featured: id === 'max',
|
|
192
|
-
guests: labelfill('home.matrix.guests', { n: String(SANDBOXOSES.length) }),
|
|
193
|
-
arch: label('home.matrix.archValue'),
|
|
194
|
-
vgpu: row.maxvgpus === 0
|
|
195
|
-
? label('home.matrix.vgpuNone')
|
|
196
|
-
: labelfill(row.maxvgpus === 1 ? 'home.matrix.vgpuOne' : 'home.matrix.vgpuMany', { n: String(row.maxvgpus) }),
|
|
197
|
-
ceiling: labelfill('home.matrix.ceiling', {
|
|
198
|
-
vcpus: String(row.maxvcpus),
|
|
199
|
-
ram: String(row.maxramgb),
|
|
200
|
-
disk: String(row.maxdiskgb),
|
|
201
|
-
minutes: String(Math.round(row.maxtimeoutseconds / 60)),
|
|
202
|
-
}),
|
|
203
|
-
};
|
|
204
|
-
});
|
|
205
|
-
return (_jsxs("div", { className: "site-frame home-page", children: [_jsxs("main", { children: [_jsx("section", { className: "r3-hero halftone", "aria-labelledby": "r3herotitle", children: _jsxs("div", { className: "r3-hero-inner", children: [_jsxs("div", { className: "r3-hero-copy", children: [_jsxs("p", { className: "eyebrow r3-hero-eyebrow", children: [_jsx("span", { className: "status-dot" }), " ", label('home.hero.eyebrow')] }), _jsxs("h1", { className: "r3-display", id: "r3herotitle", children: [label('home.hero.titleLine1'), _jsx("br", {}), _jsx("em", { children: label('home.hero.titleLine2') })] }), _jsx("p", { className: "r3-hero-lede", children: label('home.hero.lede') }), _jsxs("form", { className: "r3-prompt", "aria-label": label('home.hero.formAria'), onSubmit: (event) => {
|
|
206
|
-
event.preventDefault();
|
|
207
|
-
spin();
|
|
208
|
-
}, children: [_jsx("label", { className: "r3-prompt-label", htmlFor: "r3declare", children: label('home.hero.declareLabel') }), _jsx("input", { id: "r3declare", className: "r3-prompt-input", type: "text", value: draft, placeholder: label('home.hero.placeholder'), spellCheck: false, autoComplete: "off", onChange: (event) => setDraft(event.target.value) }), _jsxs("button", { className: "r3-prompt-key", type: "submit", children: [label('home.hero.boot'), _jsx(ArrowDownRight, { fontSize: 15, "aria-hidden": "true" })] })] }), _jsxs("fieldset", { className: "r3-chips", children: [_jsx("legend", { className: "r3-chips-legend", children: label('home.hero.chipsLegend') }), chipgroups().map((group) => (_jsxs("div", { className: "r3-chipgroup", children: [_jsx("span", { className: "r3-chipgroup-label", children: group.label }), group.items.map((token) => (_jsx("button", { type: "button", className: parsed[group.key] === token ? 'r3-chip is-on' : 'r3-chip', "aria-pressed": parsed[group.key] === token, onClick: () => toggletoken(token), children: token }, token)))] }, group.key)))] }), _jsx("p", { className: "r3-declared", role: "status", "aria-live": "polite", children: declaredline })] }), _jsxs("aside", { className: "r3-matrix", "aria-label": label('home.matrix.aria'), children: [_jsxs("div", { className: "r3-matrix-head", children: [_jsx("span", { children: label('home.matrix.title') }), _jsx("span", { className: "mono-label", children: label('home.matrix.subtitle') })] }), _jsxs("table", { className: "r3-matrix-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: label('home.matrix.colBase') }), _jsx("th", { scope: "col", children: label('home.matrix.colGuests') }), _jsx("th", { scope: "col", children: label('home.matrix.colArch') }), _jsx("th", { scope: "col", children: label('home.matrix.colVgpu') }), _jsx("th", { scope: "col", children: label('home.matrix.colCeiling') })] }) }), _jsx("tbody", { children: matrixrows.map((row) => (_jsxs("tr", { className: row.featured ? 'is-featured' : undefined, children: [_jsx("th", { scope: "row", children: row.id }), _jsx("td", { children: row.guests }), _jsx("td", { children: row.arch }), _jsx("td", { children: row.vgpu }), _jsx("td", { children: row.ceiling })] }, row.id))) })] }), _jsx("p", { className: "r3-matrix-note", children: labelfill('home.matrix.note', { oses: SANDBOXOSES.join(' · ') }) })] })] }) }), _jsx("section", { className: "metric-section container", children: _jsx(MetricStrip, { metrics: [
|
|
209
|
-
{
|
|
210
|
-
value: String(SANDBOXBASES.length).padStart(2, '0'),
|
|
211
|
-
label: label('home.metric.bases.label'),
|
|
212
|
-
detail: label('home.metric.bases.detail'),
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
value: label('home.metric.storage.value'),
|
|
216
|
-
label: label('home.metric.storage.label'),
|
|
217
|
-
detail: label('home.metric.storage.detail'),
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
value: String(SANDBOXFORMS.length).padStart(2, '0'),
|
|
221
|
-
label: label('home.metric.forms.label'),
|
|
222
|
-
detail: label('home.metric.forms.detail'),
|
|
223
|
-
},
|
|
224
|
-
] }) }), _jsxs("section", { id: "thesis", className: "thesis-section container section-with-rail", children: [_jsx(SectionRail, { number: "01", label: label('home.thesis.railLabel') }), _jsxs("div", { className: "thesis-content", children: [_jsx("p", { className: "eyebrow", children: label('home.thesis.eyebrow') }), _jsxs("h2", { className: "section-title", children: [label('home.thesis.title'), _jsx("span", { children: label('home.thesis.titleAccent') })] }), _jsxs("div", { className: "thesis-grid", children: [_jsxs("p", { children: [label('home.thesis.bodyLead'), _jsx("b", { children: label('home.thesis.keep') }), label('home.thesis.join'), _jsx("b", { children: label('home.thesis.process') }), label('home.thesis.bodyTail')] }), _jsxs("div", { className: "evidence-card", children: [_jsxs("div", { className: "evidence-card-head", children: [_jsx(Command, { fontSize: 16 }), _jsx("span", { children: label('home.evidence.head') }), _jsx("span", { className: "card-index", children: label('home.evidence.index') })] }), _jsxs("div", { className: "evidence-equation", children: [_jsx("span", { children: label('home.evidence.storage') }), _jsx("b", { children: label('home.evidence.equals') }), _jsx("span", { children: label('home.evidence.memory') })] }), _jsxs("div", { className: "evidence-card-foot", children: [_jsx("span", { children: label('home.evidence.difference') }), _jsx("b", { children: label('home.evidence.usageFlag') })] })] })] })] })] }), _jsx("section", { className: "runtime-section", children: _jsxs("div", { className: "container section-with-rail", children: [_jsx(SectionRail, { number: "02", label: label('home.chain.railLabel') }), _jsxs("div", { className: "runtime-content", children: [_jsxs("div", { className: "section-heading-row", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: label('home.chain.eyebrow') }), _jsx("h2", { className: "section-title", children: label('home.chain.title') })] }), _jsxs(Link, { href: "/architecture", className: "small-arrow-link", children: [label('home.chain.archLink'), _jsx(MoveRight, { fontSize: 15 })] })] }), _jsxs("div", { className: "runtime-layout", children: [_jsx(RuntimeDiagram, {}), _jsxs("div", { className: "runtime-art-frame", children: [runtimeSlot && (_jsx("figure", { className: "media-area", style: { aspectRatio: runtimeSlot.ratio }, "aria-label": label('home.media.area'), children: _jsxs("figcaption", { children: [_jsx("span", { children: runtimeSlot.label }), _jsx("span", { children: runtimeSlot.caption })] }) })), _jsx("span", { children: label('home.chain.fig') })] })] })] })] }) }), _jsxs("section", { className: "surfaces-section container section-with-rail", children: [_jsx(SectionRail, { number: "03", label: label('home.surfaces.railLabel') }), _jsxs("div", { className: "surfaces-content", children: [_jsxs("div", { className: "section-heading-row", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: label('home.surfaces.eyebrow') }), _jsxs("h2", { className: "section-title", children: [label('home.surfaces.titleLine1'), _jsx("br", {}), label('home.surfaces.titleLine2')] })] }), _jsx("span", { className: "mono-label", children: labelfill('home.surfaces.available', {
|
|
225
|
-
n: String(surfaces().length).padStart(2, '0'),
|
|
226
|
-
}) })] }), _jsx("div", { className: "surface-list", children: surfaces().map((surface) => {
|
|
227
|
-
const Icon = surface.icon;
|
|
228
|
-
return (_jsxs(Link, { className: "surface-row", href: surface.href, children: [_jsx("span", { className: "surface-number", children: surface.index }), _jsx(Icon, { fontSize: 21, strokeWidth: 1.5, "aria-hidden": "true" }), _jsxs("div", { className: "surface-copy", children: [_jsx("h3", { children: surface.title }), _jsx("p", { children: surface.body })] }), _jsx(ArrowUpRight, { className: "surface-arrow", fontSize: 18, "aria-hidden": "true" })] }, surface.title));
|
|
229
|
-
}) })] })] }), _jsx("section", { className: "r3-steps container", "aria-label": label('home.steps.aria'), children: steps().map((step) => (_jsxs("div", { className: "r3-step", children: [_jsx("span", { className: "r3-step-index", children: step.index }), _jsx("h3", { className: "r3-step-title", children: step.title }), _jsx("p", { className: "r3-step-body", children: step.body }), step.href && (_jsxs(Link, { className: "r3-step-link", href: step.href, children: [labelfill('home.steps.link', { title: step.title }), _jsx(ArrowUpRight, { fontSize: 14, "aria-hidden": "true" })] }))] }, step.index))) })] }), _jsxs("footer", { className: "r3-quad", children: [_jsx("div", { className: "r3-quad-grid container", children: quad().map((cell) => (_jsxs(Link, { className: "r3-quad-cell", href: cell.href, children: [_jsx("span", { className: "r3-quad-index", children: cell.index }), _jsx("span", { className: "r3-quad-title", children: cell.title }), _jsx("span", { className: "r3-quad-body", children: cell.body })] }, cell.index))) }), _jsxs("div", { className: "site-footer container", children: [_jsx("span", { children: label('home.footer.copyright') }), _jsx("span", { className: "mono-label", children: label('home.footer.mono') })] })] })] }));
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* The home page anchor: the entry gate rides the surface — the flow law
|
|
233
|
-
* (intro → onboarding → the platform) is consulted before the home shows.
|
|
234
|
-
*
|
|
235
|
-
* @returns the gated home element.
|
|
236
|
-
*/
|
|
237
|
-
export default function Home() {
|
|
238
|
-
return (_jsx(EntryGate, { children: _jsx(HomeSurface, {}) }));
|
|
239
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* integrations page anchor — layer 3 of the anchor architecture.
|
|
3
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
4
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
5
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
6
|
-
* this file. This anchor carries the former main component of the folder,
|
|
7
|
-
* which now lives here as the page mount itself.
|
|
8
|
-
*/
|
|
9
|
-
export default function Integrations(): import("react").JSX.Element;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* integrations page anchor — layer 3 of the anchor architecture.
|
|
4
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
5
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
6
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
7
|
-
* this file. This anchor carries the former main component of the folder,
|
|
8
|
-
* which now lives here as the page mount itself.
|
|
9
|
-
*/
|
|
10
|
-
// Signal & Ledger: integrations as surfaces of the same engine, not
|
|
11
|
-
// disconnected products. The glyphs are presentation code; every word rides
|
|
12
|
-
// the label store (labels.ts — the copy law).
|
|
13
|
-
import { FoodAppleRegular as Apple, BotRegular as Bot, BoxRegular as Box, BoxRegular as Container, BranchForkRegular as GitBranch, GlobeRegular as Globe, PhoneRegular as Smartphone, WindowConsoleRegular as Terminal, } from '@fluentui/react-icons';
|
|
14
|
-
import { PageShell } from '../shell/Shell.tsx';
|
|
15
|
-
import { label, labelfill } from '../../labels.ts';
|
|
16
|
-
/** the surface groups: the glyph is presentation code, the group and item
|
|
17
|
-
* words ride the store (integrations.group.* / integrations.item.*). */
|
|
18
|
-
const integrationGroups = [
|
|
19
|
-
{
|
|
20
|
-
labelkey: 'integrations.group.package.label',
|
|
21
|
-
items: [
|
|
22
|
-
{
|
|
23
|
-
icon: Box,
|
|
24
|
-
namekey: 'integrations.item.npm.name',
|
|
25
|
-
bodykey: 'integrations.item.npm.body',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
icon: Terminal,
|
|
29
|
-
namekey: 'integrations.item.cli.name',
|
|
30
|
-
bodykey: 'integrations.item.cli.body',
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
icon: Container,
|
|
34
|
-
namekey: 'integrations.item.container.name',
|
|
35
|
-
bodykey: 'integrations.item.container.body',
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
labelkey: 'integrations.group.client.label',
|
|
41
|
-
items: [
|
|
42
|
-
{
|
|
43
|
-
icon: Globe,
|
|
44
|
-
namekey: 'integrations.item.crx.name',
|
|
45
|
-
bodykey: 'integrations.item.crx.body',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
icon: Smartphone,
|
|
49
|
-
namekey: 'integrations.item.mobile.name',
|
|
50
|
-
bodykey: 'integrations.item.mobile.body',
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
icon: Apple,
|
|
54
|
-
namekey: 'integrations.item.desktop.name',
|
|
55
|
-
bodykey: 'integrations.item.desktop.body',
|
|
56
|
-
},
|
|
57
|
-
],
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
labelkey: 'integrations.group.bot.label',
|
|
61
|
-
items: [
|
|
62
|
-
{
|
|
63
|
-
icon: GitBranch,
|
|
64
|
-
namekey: 'integrations.item.forge.name',
|
|
65
|
-
bodykey: 'integrations.item.forge.body',
|
|
66
|
-
},
|
|
67
|
-
{ icon: Bot, namekey: 'integrations.item.n8n.name', bodykey: 'integrations.item.n8n.body' },
|
|
68
|
-
{
|
|
69
|
-
icon: Terminal,
|
|
70
|
-
namekey: 'integrations.item.webhook.name',
|
|
71
|
-
bodykey: 'integrations.item.webhook.body',
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
},
|
|
75
|
-
];
|
|
76
|
-
export default function Integrations() {
|
|
77
|
-
return (_jsxs(PageShell, { section: label('integrations.shell.section'), label: label('integrations.shell.label'), title: label('integrations.shell.title'), intro: label('integrations.shell.intro'), children: [_jsxs("section", { className: "content-section split-content", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: label('integrations.split.eyebrow') }), _jsx("h2", { className: "section-title", children: label('integrations.split.title') })] }), _jsxs("div", { className: "prose-copy", children: [_jsx("p", { children: label('integrations.split.body1') }), _jsx("p", { children: label('integrations.split.body2') })] })] }), _jsx("section", { className: "content-section integration-groups", children: integrationGroups.map((group) => (_jsxs("div", { className: "integration-group", children: [_jsxs("div", { className: "content-section-heading", children: [_jsx("p", { className: "eyebrow", children: label(group.labelkey) }), _jsx("span", { className: "mono-label", children: labelfill('integrations.group.mono', {
|
|
78
|
-
n: String(group.items.length),
|
|
79
|
-
}) })] }), _jsx("div", { className: "integration-grid", children: group.items.map((item) => {
|
|
80
|
-
const Icon = item.icon;
|
|
81
|
-
return (_jsxs("div", { className: "integration-card", children: [_jsx(Icon, { fontSize: 20, strokeWidth: 1.5 }), _jsx("strong", { children: label(item.namekey) }), _jsx("span", { children: label(item.bodykey) })] }, item.namekey));
|
|
82
|
-
}) })] }, group.labelkey))) }), _jsxs("section", { className: "content-section integration-quote", children: [_jsx("p", { children: label('integrations.quote.body') }), _jsx("span", { className: "mono-label", children: label('integrations.quote.mono') })] })] }));
|
|
83
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The intro page: the brand lands, holds ~1.6s, slides up and hands the
|
|
3
|
-
* surface to the onboarding. Click, any key or reduced motion skips.
|
|
4
|
-
*
|
|
5
|
-
* @returns the intro element (null while the seen state resolves).
|
|
6
|
-
*/
|
|
7
|
-
export default function Intro(): import("react").JSX.Element;
|
package/dist/Sol/intro/intro.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// the saddle intro of the theme.
|
|
3
|
-
/**
|
|
4
|
-
* intro.tsx — the opening splash of the APPLICATION: the akash floor. The
|
|
5
|
-
* drawn mark lands with the Akash spring (the overshoot curve
|
|
6
|
-
* cubic-bezier(.34,1.56,.64,1)), the name rises with the backOut lift and
|
|
7
|
-
* the honest role line fades in under the 1.6s hold. The exit slides the
|
|
8
|
-
* whole stage up over 0.8s (cubic-bezier(0.76,0,0.24,1)) and hands the
|
|
9
|
-
* surface DIRECTLY to the onboarding at /onboarding — the intro itself
|
|
10
|
-
* advances the flow. No loading dots, no spinner: the mark speaks. A click,
|
|
11
|
-
* any key or prefers-reduced-motion skips. The seen flags ride the one
|
|
12
|
-
* accessor (onboardingstate.ts — the database, the offline cache, the
|
|
13
|
-
* memory): while the state resolves the page renders null, a finished flow
|
|
14
|
-
* replaces straight back to the home (the close-caption relaunch lands
|
|
15
|
-
* there, the intro never replays) and a mid-flow visitor resumes at
|
|
16
|
-
* /onboarding.
|
|
17
|
-
*/
|
|
18
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
19
|
-
import { useLocation } from 'wouter';
|
|
20
|
-
import { loadOnboardingState, markIntroSeen, readOnboardingState, } from '../../onboardingstate.ts';
|
|
21
|
-
import { label } from '../../labels.ts';
|
|
22
|
-
import { SaddleMark } from '../shell/Shell.tsx';
|
|
23
|
-
/** how long the brand holds before the exit (ms) — the doctrine asks ~1.6s */
|
|
24
|
-
const HOLD_MS = 1600;
|
|
25
|
-
/** how long the slide-up exit runs before the hand-over (ms) */
|
|
26
|
-
const LEAVE_MS = 800;
|
|
27
|
-
/**
|
|
28
|
-
* The intro page: the brand lands, holds ~1.6s, slides up and hands the
|
|
29
|
-
* surface to the onboarding. Click, any key or reduced motion skips.
|
|
30
|
-
*
|
|
31
|
-
* @returns the intro element (null while the seen state resolves).
|
|
32
|
-
*/
|
|
33
|
-
export default function Intro() {
|
|
34
|
-
const [, navigate] = useLocation();
|
|
35
|
-
const [phase, setPhase] = useState('pending');
|
|
36
|
-
const seenRef = useRef({ introseen: false, onboardingseen: false });
|
|
37
|
-
const leftRef = useRef(false);
|
|
38
|
-
/** the hand-over route: the onboarding, unless the flow already finished. */
|
|
39
|
-
const handover = useCallback(() => (seenRef.current.onboardingseen ? '/' : '/onboarding'), []);
|
|
40
|
-
/** the leave: the intro counts as seen (leaving counts — the visitor
|
|
41
|
-
* answered the stage), the stage slides, the hand-over follows. One
|
|
42
|
-
* guarded run — the skip listeners and the hold timer share it. */
|
|
43
|
-
const leave = useCallback(() => {
|
|
44
|
-
if (leftRef.current)
|
|
45
|
-
return;
|
|
46
|
-
leftRef.current = true;
|
|
47
|
-
markIntroSeen();
|
|
48
|
-
setPhase('leaving');
|
|
49
|
-
window.setTimeout(() => navigate(handover()), LEAVE_MS);
|
|
50
|
-
}, [handover, navigate]);
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
let live = true;
|
|
53
|
-
const known = readOnboardingState();
|
|
54
|
-
if (known)
|
|
55
|
-
seenRef.current = known;
|
|
56
|
-
loadOnboardingState().then((state) => {
|
|
57
|
-
if (!live)
|
|
58
|
-
return;
|
|
59
|
-
seenRef.current = state;
|
|
60
|
-
// the flow law: a finished visitor never replays the opening (the
|
|
61
|
-
// close-caption relaunch lands home); a mid-flow one resumes ahead
|
|
62
|
-
if (state.onboardingseen)
|
|
63
|
-
navigate('/', { replace: true });
|
|
64
|
-
else if (state.introseen)
|
|
65
|
-
navigate('/onboarding', { replace: true });
|
|
66
|
-
else
|
|
67
|
-
setPhase('playing');
|
|
68
|
-
});
|
|
69
|
-
return () => {
|
|
70
|
-
live = false;
|
|
71
|
-
};
|
|
72
|
-
}, [navigate]);
|
|
73
|
-
useEffect(() => {
|
|
74
|
-
if (phase !== 'playing')
|
|
75
|
-
return;
|
|
76
|
-
// reduced motion skips the choreography and hands over at once
|
|
77
|
-
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
|
78
|
-
if (!leftRef.current) {
|
|
79
|
-
leftRef.current = true;
|
|
80
|
-
markIntroSeen();
|
|
81
|
-
navigate(handover());
|
|
82
|
-
}
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const hold = window.setTimeout(leave, HOLD_MS);
|
|
86
|
-
const skip = (event) => {
|
|
87
|
-
if (event.type === 'keydown' || event.button === 0)
|
|
88
|
-
leave();
|
|
89
|
-
};
|
|
90
|
-
window.addEventListener('keydown', skip);
|
|
91
|
-
window.addEventListener('pointerdown', skip);
|
|
92
|
-
return () => {
|
|
93
|
-
window.clearTimeout(hold);
|
|
94
|
-
window.removeEventListener('keydown', skip);
|
|
95
|
-
window.removeEventListener('pointerdown', skip);
|
|
96
|
-
};
|
|
97
|
-
}, [handover, leave, navigate, phase]);
|
|
98
|
-
// the state read holds the page: nothing renders, the canvas alone shows — no flash
|
|
99
|
-
if (phase === 'pending')
|
|
100
|
-
return null;
|
|
101
|
-
return (_jsxs("div", { className: "winintro", "data-leaving": phase === 'leaving' ? 'true' : undefined, role: "status", "aria-label": label('intro.status'), children: [_jsxs("div", { className: "winintro__stage", children: [_jsx("span", { className: "winintro__mark", "aria-hidden": "true", children: _jsx(SaddleMark, { size: 96 }) }), _jsx("h1", { className: "winintro__name", children: label('intro.name') }), _jsx("p", { className: "winintro__role", children: label('intro.role') })] }), _jsx("p", { className: "winintro__skip", "aria-hidden": "true", children: label('intro.skip') })] }));
|
|
102
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* login page anchor — layer 3 of the anchor architecture.
|
|
3
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
4
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
5
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
6
|
-
* this file. This anchor carries the former main component of the folder,
|
|
7
|
-
* which now lives here as the page mount itself.
|
|
8
|
-
*/
|
|
9
|
-
export * from '../wingets';
|
|
10
|
-
/** meta description carried by the absorbed static page. */
|
|
11
|
-
export declare const loginpagedescription = "saddle sign in: username and password only, session in a secure cookie";
|
|
12
|
-
/**
|
|
13
|
-
* the sign-in page frame: brand lockup, the instrument card (form beside
|
|
14
|
-
* the trust rail) and the static-edge footer notes.
|
|
15
|
-
*/
|
|
16
|
-
export default function Login(): import("react").JSX.Element;
|
package/dist/Sol/login/login.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* login page anchor — layer 3 of the anchor architecture.
|
|
4
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
5
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
6
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
7
|
-
* this file. This anchor carries the former main component of the folder,
|
|
8
|
-
* which now lives here as the page mount itself.
|
|
9
|
-
*/
|
|
10
|
-
// Sign-in page: faithful absorption of login.html — the account panel with
|
|
11
|
-
// the login form, the api status line and the project footer. the session
|
|
12
|
-
// is carried exclusively by the saddlesession cookie (nothing sensitive is
|
|
13
|
-
// ever stored in localstorage). R3-saddle: one instrument card with an
|
|
14
|
-
// asymmetric interior — the form (1.2fr) beside the trust rail (1fr) that
|
|
15
|
-
// carries the real session facts; 44px inputs, the sand focus ring.
|
|
16
|
-
import { Link } from 'wouter';
|
|
17
|
-
import { label } from '../../labels.ts';
|
|
18
|
-
import { LoginForm as LoginForm } from '../wingets';
|
|
19
|
-
export * from '../wingets';
|
|
20
|
-
/** meta description carried by the absorbed static page. */
|
|
21
|
-
export const loginpagedescription = 'saddle sign in: username and password only, session in a secure cookie';
|
|
22
|
-
/** the real session facts of the trust rail: the labels ride the store. */
|
|
23
|
-
function trustfacts() {
|
|
24
|
-
return [
|
|
25
|
-
{
|
|
26
|
-
label: label('login.trust.sessionLabel'),
|
|
27
|
-
body: label('login.trust.sessionBody'),
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
label: label('login.trust.transportLabel'),
|
|
31
|
-
body: label('login.trust.transportBody'),
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
label: label('login.trust.errorsLabel'),
|
|
35
|
-
body: label('login.trust.errorsBody'),
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
label: label('login.trust.fallbackLabel'),
|
|
39
|
-
body: label('login.trust.fallbackBody'),
|
|
40
|
-
},
|
|
41
|
-
];
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* the sign-in page frame: brand lockup, the instrument card (form beside
|
|
45
|
-
* the trust rail) and the static-edge footer notes.
|
|
46
|
-
*/
|
|
47
|
-
export default function Login() {
|
|
48
|
-
return (_jsx("div", { className: "auth-frame", children: _jsxs("div", { className: "r3-authcard", children: [_jsxs("header", { className: "auth-head", children: [_jsx(Link, { href: "/", className: "brand-lockup", children: _jsx("span", { className: "brand-wordmark", children: label('login.brand') }) }), _jsx("span", { className: "auth-tagline", children: label('login.tagline') })] }), _jsxs("main", { className: "r3-authgrid", children: [_jsxs("section", { className: "auth-panel", "aria-labelledby": "formtitle", children: [_jsx("h2", { className: "auth-panel-title", id: "formtitle", children: label('login.panel.title') }), _jsx(LoginForm, {})] }), _jsxs("aside", { className: "r3-authtrust", "aria-label": label('login.trust.aria'), children: [_jsx("p", { className: "eyebrow", children: label('login.trust.eyebrow') }), _jsx("ul", { className: "r3-trustlist", children: trustfacts().map((fact) => (_jsxs("li", { className: "r3-trustfact", children: [_jsx("span", { className: "r3-trustlabel", children: fact.label }), _jsx("span", { className: "r3-trustbody", children: fact.body })] }, fact.label))) })] })] }), _jsxs("footer", { className: "auth-foot", children: [_jsx("span", { children: label('login.footer.cookie') }), _jsx("span", { className: "auth-foot-right", children: label('login.footer.api') })] })] }) }));
|
|
49
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* notfound page anchor — layer 3 of the anchor architecture.
|
|
3
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
4
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
5
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
6
|
-
* this file. This anchor carries the former main component of the folder,
|
|
7
|
-
* which now lives here as the page mount itself.
|
|
8
|
-
*/
|
|
9
|
-
export default function NotFound(): import("react").JSX.Element;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* notfound page anchor — layer 3 of the anchor architecture.
|
|
4
|
-
* The file carrying the folder's own name is the path manager of the page:
|
|
5
|
-
* it imports the loose components beside it, mounts the page and re-exports
|
|
6
|
-
* the public component surface. Only the theme anchor (Sol/Sol.tsx) consumes
|
|
7
|
-
* this file. This anchor carries the former main component of the folder,
|
|
8
|
-
* which now lives here as the page mount itself.
|
|
9
|
-
*/
|
|
10
|
-
// # NotFound — the 404 of the saddle theme: a route the static edge never mapped.
|
|
11
|
-
import { Link } from 'wouter';
|
|
12
|
-
import { label } from '../../labels.ts';
|
|
13
|
-
export default function NotFound() {
|
|
14
|
-
return (_jsx("div", { className: "site-frame notfound-page", children: _jsx("main", { children: _jsxs("section", { className: "container notfound-frame", children: [_jsx("p", { className: "eyebrow", children: label('notfound.eyebrow') }), _jsx("h1", { children: label('notfound.title') }), _jsx("p", { children: label('notfound.body') }), _jsxs("div", { className: "notfound-actions", children: [_jsx(Link, { href: "/", className: "button button-primary", children: label('notfound.backHome') }), _jsx(Link, { href: "/agent-browser", className: "button", children: label('notfound.agentBrowser') })] })] }) }) }));
|
|
15
|
-
}
|