@wenathlan/saddle 2.0.154 → 2.0.155

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.
Files changed (307) hide show
  1. package/Dockerfile +112 -41
  2. package/README.md +58 -59
  3. package/browser.ts +482 -0
  4. package/cli.ts +274 -0
  5. package/distribution.ts +731 -0
  6. package/docker.config +29 -8
  7. package/docs/artifactavailability.md +2 -2
  8. package/docs/browser.md +18 -1
  9. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  10. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  11. package/docs/extension.md +13 -2
  12. package/docs/libraryapi.md +1 -1
  13. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  14. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  15. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  16. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  17. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  18. package/docs/todo.md +2 -2
  19. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  20. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  21. package/execution.ts +677 -0
  22. package/foundation.ts +314 -0
  23. package/index.ts +35 -27
  24. package/isolation.ts +84 -0
  25. package/modes.ts +170 -0
  26. package/mttg.config +1 -1
  27. package/orchestrator.ts +49 -15
  28. package/package.json +90 -75
  29. package/qemu.config +2 -2
  30. package/sandbox.ts +2094 -0
  31. package/scheduler.ts +1 -1
  32. package/server.ts +52 -0
  33. package/tsconfig.json +11 -12
  34. package/virtual.ts +1105 -0
  35. package/virtualgpu.ts +1 -1
  36. package/virtualization.ts +1 -1
  37. package/workloadlaw.ts +293 -0
  38. package/dist/App.d.ts +0 -5
  39. package/dist/App.js +0 -52
  40. package/dist/Sol/Sol.d.ts +0 -3
  41. package/dist/Sol/Sol.js +0 -46
  42. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  43. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  44. package/dist/Sol/architecture/architecture.d.ts +0 -9
  45. package/dist/Sol/architecture/architecture.js +0 -93
  46. package/dist/Sol/compute/compute.d.ts +0 -9
  47. package/dist/Sol/compute/compute.js +0 -22
  48. package/dist/Sol/console/console.d.ts +0 -15
  49. package/dist/Sol/console/console.js +0 -292
  50. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  51. package/dist/Sol/dashboard/dashboard.js +0 -181
  52. package/dist/Sol/docs/docs.d.ts +0 -9
  53. package/dist/Sol/docs/docs.js +0 -28
  54. package/dist/Sol/home/home.d.ts +0 -35
  55. package/dist/Sol/home/home.js +0 -239
  56. package/dist/Sol/integrations/integrations.d.ts +0 -9
  57. package/dist/Sol/integrations/integrations.js +0 -83
  58. package/dist/Sol/intro/intro.d.ts +0 -7
  59. package/dist/Sol/intro/intro.js +0 -102
  60. package/dist/Sol/login/login.d.ts +0 -16
  61. package/dist/Sol/login/login.js +0 -49
  62. package/dist/Sol/notfound/notfound.d.ts +0 -9
  63. package/dist/Sol/notfound/notfound.js +0 -15
  64. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  65. package/dist/Sol/onboarding/onboarding.js +0 -60
  66. package/dist/Sol/playground/playground.d.ts +0 -9
  67. package/dist/Sol/playground/playground.js +0 -127
  68. package/dist/Sol/register/register.d.ts +0 -16
  69. package/dist/Sol/register/register.js +0 -193
  70. package/dist/Sol/shell/Shell.d.ts +0 -124
  71. package/dist/Sol/shell/Shell.js +0 -335
  72. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  73. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  74. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  75. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  76. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  77. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  78. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  79. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  80. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  81. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  82. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  83. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  84. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  85. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  86. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  87. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  88. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  89. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  90. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  91. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  92. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  93. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  94. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  95. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  96. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  97. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  98. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  100. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  102. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  103. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  104. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  105. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  106. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  107. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  108. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  109. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  110. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  111. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  112. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  113. package/dist/Sol/wingets/LoginForm.js +0 -141
  114. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  115. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  116. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  117. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  118. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  119. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  120. package/dist/Sol/wingets/index.d.ts +0 -39
  121. package/dist/Sol/wingets/index.js +0 -39
  122. package/dist/alternatives.d.ts +0 -508
  123. package/dist/alternatives.js +0 -950
  124. package/dist/api.d.ts +0 -154
  125. package/dist/api.js +0 -174
  126. package/dist/auth.d.ts +0 -268
  127. package/dist/auth.js +0 -476
  128. package/dist/automation.d.ts +0 -425
  129. package/dist/automation.js +0 -566
  130. package/dist/browser.d.ts +0 -561
  131. package/dist/browser.js +0 -1058
  132. package/dist/capacitor.config.d.ts +0 -45
  133. package/dist/capacitor.config.js +0 -48
  134. package/dist/catalog.d.ts +0 -43
  135. package/dist/catalog.js +0 -44
  136. package/dist/cli.d.ts +0 -16
  137. package/dist/cli.js +0 -168
  138. package/dist/communication.d.ts +0 -181
  139. package/dist/communication.js +0 -376
  140. package/dist/compute.d.ts +0 -1160
  141. package/dist/compute.js +0 -2272
  142. package/dist/dashboardlib.d.ts +0 -58
  143. package/dist/dashboardlib.js +0 -161
  144. package/dist/db.d.ts +0 -569
  145. package/dist/db.js +0 -1080
  146. package/dist/distribution.d.ts +0 -528
  147. package/dist/distribution.js +0 -810
  148. package/dist/drizzle.config.d.ts +0 -20
  149. package/dist/drizzle.config.js +0 -18
  150. package/dist/edgelandes.d.ts +0 -70
  151. package/dist/edgelandes.host.d.ts +0 -26
  152. package/dist/edgelandes.host.js +0 -1089
  153. package/dist/edgelandes.inproc.d.ts +0 -27
  154. package/dist/edgelandes.inproc.js +0 -952
  155. package/dist/edgelandes.js +0 -1133
  156. package/dist/edgelandes.ninety.d.ts +0 -31
  157. package/dist/edgelandes.ninety.js +0 -174
  158. package/dist/edgelandes.virtual.d.ts +0 -25
  159. package/dist/edgelandes.virtual.js +0 -629
  160. package/dist/edgeplane.d.ts +0 -121
  161. package/dist/edgeplane.js +0 -341
  162. package/dist/examplelocaljob.d.ts +0 -1
  163. package/dist/examplelocaljob.js +0 -14
  164. package/dist/execution.d.ts +0 -529
  165. package/dist/execution.js +0 -760
  166. package/dist/family.d.ts +0 -16
  167. package/dist/family.js +0 -42
  168. package/dist/familyurl.d.ts +0 -21
  169. package/dist/familyurl.js +0 -24
  170. package/dist/format.d.ts +0 -18
  171. package/dist/format.js +0 -59
  172. package/dist/foundation.d.ts +0 -172
  173. package/dist/foundation.js +0 -312
  174. package/dist/index.d.ts +0 -735
  175. package/dist/index.js +0 -1020
  176. package/dist/integration.d.ts +0 -235
  177. package/dist/integration.js +0 -228
  178. package/dist/intelligence.d.ts +0 -93
  179. package/dist/intelligence.js +0 -144
  180. package/dist/isolation.d.ts +0 -128
  181. package/dist/isolation.js +0 -95
  182. package/dist/labels.d.ts +0 -665
  183. package/dist/labels.js +0 -707
  184. package/dist/localauth.d.ts +0 -127
  185. package/dist/localauth.js +0 -413
  186. package/dist/media.d.ts +0 -343
  187. package/dist/media.js +0 -985
  188. package/dist/mesh.d.ts +0 -177
  189. package/dist/mesh.js +0 -468
  190. package/dist/modalityregistry.d.ts +0 -109
  191. package/dist/modalityregistry.js +0 -1386
  192. package/dist/modes.d.ts +0 -358
  193. package/dist/modes.js +0 -133
  194. package/dist/onboardingstate.d.ts +0 -79
  195. package/dist/onboardingstate.js +0 -282
  196. package/dist/orchestrator.d.ts +0 -1338
  197. package/dist/orchestrator.js +0 -4310
  198. package/dist/packager/targetcli.js +0 -4
  199. package/dist/paths.d.ts +0 -2
  200. package/dist/paths.js +0 -14
  201. package/dist/performance.d.ts +0 -415
  202. package/dist/performance.js +0 -826
  203. package/dist/quantum.d.ts +0 -809
  204. package/dist/quantum.js +0 -2072
  205. package/dist/render.d.ts +0 -380
  206. package/dist/render.js +0 -1072
  207. package/dist/runall.d.ts +0 -2
  208. package/dist/runall.js +0 -39
  209. package/dist/runtimeprobe.d.ts +0 -4
  210. package/dist/runtimeprobe.js +0 -8
  211. package/dist/sandbox.d.ts +0 -355
  212. package/dist/sandbox.js +0 -1721
  213. package/dist/sandboxenvprofile.d.ts +0 -29
  214. package/dist/sandboxenvprofile.js +0 -89
  215. package/dist/sandboxprofile.d.ts +0 -137
  216. package/dist/sandboxprofile.js +0 -241
  217. package/dist/sandboxqueue.d.ts +0 -108
  218. package/dist/sandboxqueue.js +0 -201
  219. package/dist/sandboxquota.d.ts +0 -121
  220. package/dist/sandboxquota.js +0 -236
  221. package/dist/scheduler.d.ts +0 -595
  222. package/dist/scheduler.js +0 -1258
  223. package/dist/scriptlanes.d.ts +0 -182
  224. package/dist/scriptlanes.js +0 -660
  225. package/dist/scripts.buildengine.d.ts +0 -1
  226. package/dist/scripts.buildengine.js +0 -39
  227. package/dist/scripts.securitygate.d.ts +0 -1
  228. package/dist/scripts.securitygate.js +0 -68
  229. package/dist/scripts.validateflatnative.d.ts +0 -1
  230. package/dist/scripts.validateflatnative.js +0 -72
  231. package/dist/security.d.ts +0 -500
  232. package/dist/security.js +0 -1169
  233. package/dist/seedcatalog.d.ts +0 -13
  234. package/dist/seedcatalog.js +0 -46
  235. package/dist/server.d.ts +0 -20
  236. package/dist/server.js +0 -53
  237. package/dist/speccatalog.d.ts +0 -31
  238. package/dist/speccatalog.js +0 -163
  239. package/dist/tiers.d.ts +0 -1001
  240. package/dist/tiers.js +0 -2169
  241. package/dist/utils.d.ts +0 -2
  242. package/dist/utils.js +0 -5
  243. package/dist/vaulthandoff.d.ts +0 -141
  244. package/dist/vaulthandoff.js +0 -444
  245. package/dist/virtual.d.ts +0 -640
  246. package/dist/virtual.js +0 -1284
  247. package/dist/virtualcpu.d.ts +0 -315
  248. package/dist/virtualcpu.js +0 -1180
  249. package/dist/virtualgpu.d.ts +0 -344
  250. package/dist/virtualgpu.js +0 -1000
  251. package/dist/virtualization.d.ts +0 -606
  252. package/dist/virtualization.js +0 -1186
  253. package/dist/virtualmemory.d.ts +0 -817
  254. package/dist/virtualmemory.js +0 -1795
  255. package/dist/vite.config.d.ts +0 -3
  256. package/dist/vite.config.js +0 -48
  257. package/dist/vitest.config.d.ts +0 -2
  258. package/dist/vitest.config.js +0 -25
  259. package/dist/webserver.d.ts +0 -166
  260. package/dist/webserver.js +0 -2226
  261. package/dist/workloadlaw.d.ts +0 -133
  262. package/dist/workloadlaw.js +0 -193
  263. package/manifest.json +0 -20
  264. package/media.ts +0 -1337
  265. /package/docs/{architecture.1.8.19.md → architecture1819.md} +0 -0
  266. /package/docs/{architecture.1.8.19.mmd → architecture1819.mmd} +0 -0
  267. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  268. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  269. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  270. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  271. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  272. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  273. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  274. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  275. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  276. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  277. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  278. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  279. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  280. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  281. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  282. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  283. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  284. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  285. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  286. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  287. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  288. /package/docs/{repo.analysis.1.8.21.json → repoanalysis1821.json} +0 -0
  289. /package/docs/{repo.candidates.1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
  290. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  291. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  292. /package/docs/{repo.selected.1.8.21.json → reposelected1821.json} +0 -0
  293. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  294. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  295. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  296. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  297. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  298. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  299. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  300. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  301. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  302. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  303. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  304. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  305. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  306. /package/docs/{web.ideas.md → webideas.md} +0 -0
  307. /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
@@ -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
- }
@@ -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;
@@ -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;
@@ -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;
@@ -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
- }