@fallen-8/studio 0.0.32

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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/dist-lib/Canvas3D-C5og4ZIQ.js +62011 -0
  4. package/dist-lib/F8GraphCanvas-Db7vzDtJ.js +11085 -0
  5. package/dist-lib/abap-Bs8kvjsq.js +1398 -0
  6. package/dist-lib/apex-Dspwrl5m.js +326 -0
  7. package/dist-lib/azcli-k1BiOau1.js +68 -0
  8. package/dist-lib/bat-BIP72KWc.js +100 -0
  9. package/dist-lib/bicep-VhQeYhS3.js +102 -0
  10. package/dist-lib/cameligo-DnuAXtHg.js +174 -0
  11. package/dist-lib/canvas.js +13 -0
  12. package/dist-lib/clojure-BAuDPsal.js +761 -0
  13. package/dist-lib/coffee-BV06qSnj.js +232 -0
  14. package/dist-lib/cpp-Cz8Jeyrf.js +389 -0
  15. package/dist-lib/csharp-F6hhlXFb.js +326 -0
  16. package/dist-lib/csp-KzlEHCyI.js +53 -0
  17. package/dist-lib/css-e4FKntZ3.js +187 -0
  18. package/dist-lib/cssMode-Czf2vRA3.js +1571 -0
  19. package/dist-lib/cypher-CpvDGKRr.js +263 -0
  20. package/dist-lib/dart-DdHeFWR0.js +281 -0
  21. package/dist-lib/dockerfile-aoNXDcio.js +130 -0
  22. package/dist-lib/ecl-C4Q0DYuA.js +456 -0
  23. package/dist-lib/elixir-C9X42b0T.js +569 -0
  24. package/dist-lib/f8-studio.css +1 -0
  25. package/dist-lib/f8-studio.js +16 -0
  26. package/dist-lib/flow9-Bff42pfB.js +142 -0
  27. package/dist-lib/freemarker2-BtInkOsd.js +989 -0
  28. package/dist-lib/fsharp-C6vPAsHG.js +217 -0
  29. package/dist-lib/go-DEr8zx9f.js +218 -0
  30. package/dist-lib/graphql-BiNBBRFh.js +151 -0
  31. package/dist-lib/handlebars-UwZ7mBGA.js +419 -0
  32. package/dist-lib/hcl-2T9lKuFg.js +183 -0
  33. package/dist-lib/html-BXX93YIe.js +308 -0
  34. package/dist-lib/htmlMode-BCqQu1PO.js +1581 -0
  35. package/dist-lib/index-DFm6T7Un.js +132450 -0
  36. package/dist-lib/ini-CZGtssYM.js +71 -0
  37. package/dist-lib/java-B260NeH3.js +232 -0
  38. package/dist-lib/javascript-CK1z7Ynl.js +70 -0
  39. package/dist-lib/jsonMode-C4Q3fVvV.js +1996 -0
  40. package/dist-lib/julia-kuNLM9c5.js +511 -0
  41. package/dist-lib/kotlin-Bz6kAefA.js +253 -0
  42. package/dist-lib/less-AZUtS89I.js +162 -0
  43. package/dist-lib/lexon-BcmgnyRb.js +157 -0
  44. package/dist-lib/liquid-BnCUERBj.js +240 -0
  45. package/dist-lib/lua-Dz1RbATg.js +162 -0
  46. package/dist-lib/m3-CIMooLFn.js +210 -0
  47. package/dist-lib/markdown-C1BsCK9P.js +229 -0
  48. package/dist-lib/mdx-D2enmFMs.js +165 -0
  49. package/dist-lib/mips-BovsnfLQ.js +198 -0
  50. package/dist-lib/msdax-CiRB2ZB-.js +375 -0
  51. package/dist-lib/mysql-BwdpPE19.js +878 -0
  52. package/dist-lib/objective-c-D4nfHfso.js +183 -0
  53. package/dist-lib/pascal--j5-PYtz.js +251 -0
  54. package/dist-lib/pascaligo-C7TcJxNL.js +164 -0
  55. package/dist-lib/perl-BzEWqUb5.js +626 -0
  56. package/dist-lib/pgsql-B_KZ0mGX.js +851 -0
  57. package/dist-lib/php-A19QHzQV.js +500 -0
  58. package/dist-lib/pla-COeKY1hA.js +137 -0
  59. package/dist-lib/postiats-BfMp7zJL.js +907 -0
  60. package/dist-lib/powerquery-B0TS_5Gb.js +890 -0
  61. package/dist-lib/powershell-5jSbKdYB.js +239 -0
  62. package/dist-lib/protobuf-YgnOutn3.js +420 -0
  63. package/dist-lib/pug-DLej6kn5.js +402 -0
  64. package/dist-lib/python-DJvSF53q.js +301 -0
  65. package/dist-lib/qsharp-AhjqtSHB.js +301 -0
  66. package/dist-lib/r-D-F4P80w.js +243 -0
  67. package/dist-lib/razor-RerkagjP.js +550 -0
  68. package/dist-lib/redis-hwwIlMnV.js +302 -0
  69. package/dist-lib/redshift-Bcm_kjEG.js +809 -0
  70. package/dist-lib/restructuredtext-CrdzfPP-.js +174 -0
  71. package/dist-lib/ruby-QC2UNm1s.js +511 -0
  72. package/dist-lib/rust-5aqiQ3L5.js +343 -0
  73. package/dist-lib/sb-B1g1ZfLJ.js +115 -0
  74. package/dist-lib/scala-C2U4R5Gb.js +370 -0
  75. package/dist-lib/scheme-DeFRbslr.js +108 -0
  76. package/dist-lib/scss-RSTCiCmI.js +262 -0
  77. package/dist-lib/shell-BpF-iNu8.js +221 -0
  78. package/dist-lib/solidity-C00r2mbQ.js +1367 -0
  79. package/dist-lib/sophia-DVW5ZKDB.js +199 -0
  80. package/dist-lib/sparql-B0nmpxeX.js +201 -0
  81. package/dist-lib/sql-CJwKPERn.js +853 -0
  82. package/dist-lib/st-DPlKG5DT.js +416 -0
  83. package/dist-lib/swift-YZBAbVHV.js +309 -0
  84. package/dist-lib/systemverilog-CDQSaH63.js +576 -0
  85. package/dist-lib/tcl-Dlu8sp6Q.js +232 -0
  86. package/dist-lib/tsMode-C-6d-f_-.js +886 -0
  87. package/dist-lib/twig-C5TO7-kw.js +392 -0
  88. package/dist-lib/types/api/changefeed.d.ts +113 -0
  89. package/dist-lib/types/api/client.d.ts +81 -0
  90. package/dist-lib/types/api/endpoints.d.ts +197 -0
  91. package/dist-lib/types/api/queries.d.ts +8 -0
  92. package/dist-lib/types/api/types.d.ts +1032 -0
  93. package/dist-lib/types/app/AppShell.d.ts +10 -0
  94. package/dist-lib/types/app/NamespaceScope.d.ts +11 -0
  95. package/dist-lib/types/app/applyStudioConfig.d.ts +18 -0
  96. package/dist-lib/types/app/mount.d.ts +19 -0
  97. package/dist-lib/types/app/nav.d.ts +91 -0
  98. package/dist-lib/types/app/routes.d.ts +9 -0
  99. package/dist-lib/types/app/studioConfig.d.ts +106 -0
  100. package/dist-lib/types/canvas/Canvas2D.d.ts +18 -0
  101. package/dist-lib/types/canvas/Canvas3D.d.ts +14 -0
  102. package/dist-lib/types/canvas/ConnectPanel.d.ts +10 -0
  103. package/dist-lib/types/canvas/FindPanel.d.ts +14 -0
  104. package/dist-lib/types/canvas/GraphCanvas.d.ts +66 -0
  105. package/dist-lib/types/canvas/StylePanel.d.ts +7 -0
  106. package/dist-lib/types/canvas/eclipse.d.ts +136 -0
  107. package/dist-lib/types/canvas/imageAssets.d.ts +3 -0
  108. package/dist-lib/types/canvas/styleConfig.d.ts +48 -0
  109. package/dist-lib/types/canvas/styleEngine.d.ts +125 -0
  110. package/dist-lib/types/canvas/styling.d.ts +15 -0
  111. package/dist-lib/types/components/AdjacencyPanel.d.ts +11 -0
  112. package/dist-lib/types/components/AnalyticsRunner.d.ts +1 -0
  113. package/dist-lib/types/components/ConfigurationPanel.d.ts +1 -0
  114. package/dist-lib/types/components/ConfirmDialog.d.ts +18 -0
  115. package/dist-lib/types/components/DurabilityNotice.d.ts +18 -0
  116. package/dist-lib/types/components/ElementDetail.d.ts +11 -0
  117. package/dist-lib/types/components/ElementTable.d.ts +19 -0
  118. package/dist-lib/types/components/EmbeddingsTab.d.ts +15 -0
  119. package/dist-lib/types/components/ErrorBox.d.ts +8 -0
  120. package/dist-lib/types/components/EventFeedBell.d.ts +16 -0
  121. package/dist-lib/types/components/EventFeedPanel.d.ts +10 -0
  122. package/dist-lib/types/components/Field.d.ts +14 -0
  123. package/dist-lib/types/components/GraphShapePanel.d.ts +1 -0
  124. package/dist-lib/types/components/InspectLink.d.ts +5 -0
  125. package/dist-lib/types/components/ListCapNote.d.ts +10 -0
  126. package/dist-lib/types/components/MutationsPanel.d.ts +1 -0
  127. package/dist-lib/types/components/NamespaceSwitcher.d.ts +22 -0
  128. package/dist-lib/types/components/NamespacesPanel.d.ts +11 -0
  129. package/dist-lib/types/components/NeighborhoodPreview.d.ts +10 -0
  130. package/dist-lib/types/components/PluginsPanel.d.ts +9 -0
  131. package/dist-lib/types/components/PropertiesTab.d.ts +4 -0
  132. package/dist-lib/types/components/PropertyListEditor.d.ts +26 -0
  133. package/dist-lib/types/components/SampleGraphsPanel.d.ts +3 -0
  134. package/dist-lib/types/components/SectionHelp.d.ts +11 -0
  135. package/dist-lib/types/components/SemanticBlockEditor.d.ts +29 -0
  136. package/dist-lib/types/components/SemanticQueryEditor.d.ts +15 -0
  137. package/dist-lib/types/components/SettingRow.d.ts +15 -0
  138. package/dist-lib/types/components/Stat.d.ts +10 -0
  139. package/dist-lib/types/components/StoredQueriesPanel.d.ts +14 -0
  140. package/dist-lib/types/components/StoredQueryControls.d.ts +29 -0
  141. package/dist-lib/types/components/Truncated.d.ts +17 -0
  142. package/dist-lib/types/components/TruncationBadge.d.ts +6 -0
  143. package/dist-lib/types/components/TypedLiteralEditor.d.ts +13 -0
  144. package/dist-lib/types/components/VertexFilterSlot.d.ts +25 -0
  145. package/dist-lib/types/delegate/DelegateEditor.d.ts +10 -0
  146. package/dist-lib/types/delegate/DelegateSlot.d.ts +18 -0
  147. package/dist-lib/types/delegate/editorOptions.d.ts +25 -0
  148. package/dist-lib/types/delegate/kinds.d.ts +19 -0
  149. package/dist-lib/types/delegate/markers.d.ts +21 -0
  150. package/dist-lib/types/delegate/monacoSetup.d.ts +3 -0
  151. package/dist-lib/types/delegate/nl/NlAssistPanel.d.ts +10 -0
  152. package/dist-lib/types/delegate/nl/NlBackendConfig.d.ts +12 -0
  153. package/dist-lib/types/delegate/nl/NlDraftList.d.ts +42 -0
  154. package/dist-lib/types/delegate/nl/config.d.ts +105 -0
  155. package/dist-lib/types/delegate/nl/feedback.d.ts +30 -0
  156. package/dist-lib/types/delegate/nl/format.d.ts +6 -0
  157. package/dist-lib/types/delegate/nl/generate.d.ts +57 -0
  158. package/dist-lib/types/delegate/nl/prompt.d.ts +21 -0
  159. package/dist-lib/types/delegate/nl/useNlRun.d.ts +24 -0
  160. package/dist-lib/types/delegate/providers.d.ts +26 -0
  161. package/dist-lib/types/delegate/snippets.d.ts +25 -0
  162. package/dist-lib/types/embed/F8GraphCanvas.d.ts +37 -0
  163. package/dist-lib/types/embed/canvas.d.ts +23 -0
  164. package/dist-lib/types/embed/index.d.ts +14 -0
  165. package/dist-lib/types/firstrun/FirstRunOverlay.d.ts +10 -0
  166. package/dist-lib/types/firstrun/FirstRunShow.d.ts +22 -0
  167. package/dist-lib/types/firstrun/beats.d.ts +23 -0
  168. package/dist-lib/types/firstrun/firstRunStore.d.ts +38 -0
  169. package/dist-lib/types/firstrun/mockGraph.d.ts +56 -0
  170. package/dist-lib/types/firstrun/useBeatTimeline.d.ts +35 -0
  171. package/dist-lib/types/firstrun/useReducedMotion.d.ts +7 -0
  172. package/dist-lib/types/instances/registry.d.ts +83 -0
  173. package/dist-lib/types/instances/types.d.ts +49 -0
  174. package/dist-lib/types/lib/canvasCap.d.ts +7 -0
  175. package/dist-lib/types/lib/connectPaths.d.ts +55 -0
  176. package/dist-lib/types/lib/embeddingProperties.d.ts +6 -0
  177. package/dist-lib/types/lib/fieldHelp.d.ts +139 -0
  178. package/dist-lib/types/lib/format.d.ts +16 -0
  179. package/dist-lib/types/lib/hydrate.d.ts +37 -0
  180. package/dist-lib/types/lib/indexCapabilities.d.ts +17 -0
  181. package/dist-lib/types/lib/jsonlGraph.d.ts +42 -0
  182. package/dist-lib/types/lib/listCaps.d.ts +48 -0
  183. package/dist-lib/types/lib/literals.d.ts +36 -0
  184. package/dist-lib/types/lib/namespaceName.d.ts +10 -0
  185. package/dist-lib/types/lib/neighborhood.d.ts +37 -0
  186. package/dist-lib/types/lib/patternValidation.d.ts +12 -0
  187. package/dist-lib/types/lib/restartCopy.d.ts +11 -0
  188. package/dist-lib/types/lib/sampleLoader.d.ts +95 -0
  189. package/dist-lib/types/lib/samples.d.ts +87 -0
  190. package/dist-lib/types/lib/sbomGraph.d.ts +58 -0
  191. package/dist-lib/types/lib/sectionHelp.d.ts +39 -0
  192. package/dist-lib/types/lib/semantic.d.ts +95 -0
  193. package/dist-lib/types/lib/storedQueries.d.ts +43 -0
  194. package/dist-lib/types/lib/truncate.d.ts +34 -0
  195. package/dist-lib/types/lib/truncation.d.ts +7 -0
  196. package/dist-lib/types/lib/vector.d.ts +13 -0
  197. package/dist-lib/types/main.d.ts +1 -0
  198. package/dist-lib/types/plugin/PluginEditor.d.ts +20 -0
  199. package/dist-lib/types/plugin/nl/PluginNlAssistPanel.d.ts +13 -0
  200. package/dist-lib/types/plugin/nl/pluginPrompt.d.ts +48 -0
  201. package/dist-lib/types/plugin/scaffolds.d.ts +26 -0
  202. package/dist-lib/types/screens/AnalyticsScreen.d.ts +8 -0
  203. package/dist-lib/types/screens/BenchmarkScreen.d.ts +1 -0
  204. package/dist-lib/types/screens/BrowserScreen.d.ts +6 -0
  205. package/dist-lib/types/screens/CanvasScreen.d.ts +10 -0
  206. package/dist-lib/types/screens/ConnectScreen.d.ts +1 -0
  207. package/dist-lib/types/screens/DashboardScreen.d.ts +13 -0
  208. package/dist-lib/types/screens/IndexesScreen.d.ts +8 -0
  209. package/dist-lib/types/screens/IntegrationsScreen.d.ts +14 -0
  210. package/dist-lib/types/screens/KnowledgeScreen.d.ts +1 -0
  211. package/dist-lib/types/screens/PathScreen.d.ts +9 -0
  212. package/dist-lib/types/screens/PluginsScreen.d.ts +1 -0
  213. package/dist-lib/types/screens/QueryScreen.d.ts +1 -0
  214. package/dist-lib/types/screens/SamplesScreen.d.ts +7 -0
  215. package/dist-lib/types/screens/SaveGamesScreen.d.ts +7 -0
  216. package/dist-lib/types/screens/SubgraphScreen.d.ts +1 -0
  217. package/dist-lib/types/state/eventFeed.d.ts +63 -0
  218. package/dist-lib/types/state/feedFilter.d.ts +42 -0
  219. package/dist-lib/types/state/graphShape.d.ts +37 -0
  220. package/dist-lib/types/state/instanceStore.d.ts +280 -0
  221. package/dist-lib/types/state/integrations.d.ts +25 -0
  222. package/dist-lib/types/state/liveFeed.d.ts +37 -0
  223. package/dist-lib/types/state/scopeKey.d.ts +8 -0
  224. package/dist-lib/types/state/status.d.ts +21 -0
  225. package/dist-lib/typescript-aCo3H3H0.js +343 -0
  226. package/dist-lib/typespec-BsmjDEu7.js +117 -0
  227. package/dist-lib/vb-ChHvIDrk.js +372 -0
  228. package/dist-lib/wgsl-XEp1ju8c.js +439 -0
  229. package/dist-lib/xml-CSt-F-dl.js +95 -0
  230. package/dist-lib/yaml-kSsc3ru_.js +206 -0
  231. package/package.json +98 -0
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from "react";
2
+ /**
3
+ * App shell: left icon rail + top bar with the instance / namespace pair (FR-1b +
4
+ * feature graph-namespaces). Every screen renders under a bar that names the active
5
+ * instance, the active namespace, and the resulting endpoint prefix, so production is
6
+ * never mistaken for local and namespaces are never implicit.
7
+ */
8
+ export declare function AppShell({ children }: {
9
+ children: ReactNode;
10
+ }): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Layout under /q/$ns/… (feature graph-namespaces): keeps the registry's active namespace
3
+ * in sync with the URL (the URL is the deep-link source of truth), and renders the
4
+ * "recreate or switch" recover state — never a blank screen — when the URL names a
5
+ * namespace this Fallen-8 does not hold (dropped elsewhere, stale link).
6
+ *
7
+ * Its third branch is a namespace that EXISTS but was not loaded into the running process
8
+ * (feature namespace-startup-load), which is a different situation with a different answer:
9
+ * see the comment on that branch for why it must not reuse the recover state.
10
+ */
11
+ export declare function NamespaceScope(): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { type StudioConfig } from "./studioConfig";
2
+ /**
3
+ * Make a mount's config the active one BEFORE anything renders (feature studio-embeddable).
4
+ *
5
+ * The three module-level persisted stores are re-pointed at the (possibly prefixed) storage
6
+ * keys and hydrated - their first and only hydration, since they skip the import-time one -
7
+ * which also injects the host's managed instances and namespace pin via the registry's
8
+ * merge. Each of those merges derives its persisted fields from storage plus config alone,
9
+ * so a mount that switches `storageNamespace` starts clean instead of inheriting the
10
+ * previous mount's state. The per-instance workspace stores bake their key in at creation,
11
+ * so the previous mount's memoized ones are dropped here rather than handed to this one.
12
+ *
13
+ * localStorage is synchronous, so all of this state is in place when the first render reads
14
+ * it. Idempotent on purpose: StrictMode double-invokes the initializer that calls it.
15
+ *
16
+ * Lives outside mount.tsx so it is exercisable (and testable) without the React shell.
17
+ */
18
+ export declare function applyStudioConfig(config: StudioConfig): void;
@@ -0,0 +1,19 @@
1
+ import { QueryClient } from "@tanstack/react-query";
2
+ import { type StudioConfig } from "./studioConfig";
3
+ import "../index.css";
4
+ /**
5
+ * How to mount Studio: `mountStudio(container, config?)` for an imperative or
6
+ * framework-free host, `<F8Studio config={...}/>` for a React host, and no config at all
7
+ * for the standalone app (main.tsx). The config is read once per mount, so changing it
8
+ * means remounting; the contract itself lives in ./studioConfig.ts.
9
+ */
10
+ /** Studio's own QueryClient - the exact defaults the standalone app has always used. */
11
+ export declare function createStudioQueryClient(): QueryClient;
12
+ /** React-host embedding. No StrictMode wrapper - that is the host's call. */
13
+ export declare function F8Studio({ config }: {
14
+ config?: StudioConfig;
15
+ }): import("react").JSX.Element;
16
+ /** Imperative mounting - the standalone entry (main.tsx) and framework-free hosts. */
17
+ export declare function mountStudio(el: HTMLElement, config?: StudioConfig): {
18
+ unmount(): void;
19
+ };
@@ -0,0 +1,91 @@
1
+ /**
2
+ * The Studio navigation: the single source of truth for the shell's icon rail and for anything
3
+ * keyed by section (e.g. the per-section help in lib/sectionHelp.ts). Connect, Save games and
4
+ * Integrations are Fallen-8-level (flat routes); the rest operate on the ACTIVE NAMESPACE and
5
+ * live under /q/{ns}/… (feature graph-namespaces).
6
+ *
7
+ * An entry may declare a `capability`, which the shell reads to HIDE it rather than disable it. Only
8
+ * one does: an instance either has an integrations runtime or has nothing to say about integrations,
9
+ * and a permanently disabled icon would advertise a deployable that is not there.
10
+ */
11
+ export declare const NAV: readonly [{
12
+ readonly leaf: "/";
13
+ readonly label: "Connect";
14
+ readonly icon: "◉";
15
+ readonly scoped: false;
16
+ }, {
17
+ readonly leaf: "dashboard";
18
+ readonly label: "Dashboard";
19
+ readonly icon: "▦";
20
+ readonly scoped: true;
21
+ }, {
22
+ readonly leaf: "samples";
23
+ readonly label: "Samples";
24
+ readonly icon: "◈";
25
+ readonly scoped: true;
26
+ }, {
27
+ readonly leaf: "/save-games";
28
+ readonly label: "Save games";
29
+ readonly icon: "⭯";
30
+ readonly scoped: false;
31
+ }, {
32
+ readonly leaf: "browser";
33
+ readonly label: "Browser";
34
+ readonly icon: "☰";
35
+ readonly scoped: true;
36
+ }, {
37
+ readonly leaf: "query";
38
+ readonly label: "Query";
39
+ readonly icon: "∴";
40
+ readonly scoped: true;
41
+ }, {
42
+ readonly leaf: "indexes";
43
+ readonly label: "Indexes";
44
+ readonly icon: "⌗";
45
+ readonly scoped: true;
46
+ }, {
47
+ readonly leaf: "path";
48
+ readonly label: "Path";
49
+ readonly icon: "↝";
50
+ readonly scoped: true;
51
+ }, {
52
+ readonly leaf: "subgraphs";
53
+ readonly label: "Subgraph";
54
+ readonly icon: "◫";
55
+ readonly scoped: true;
56
+ }, {
57
+ readonly leaf: "analytics";
58
+ readonly label: "Analytics";
59
+ readonly icon: "∑";
60
+ readonly scoped: true;
61
+ }, {
62
+ readonly leaf: "plugins";
63
+ readonly label: "Plugins";
64
+ readonly icon: "⧉";
65
+ readonly scoped: true;
66
+ }, {
67
+ readonly leaf: "canvas";
68
+ readonly label: "Canvas";
69
+ readonly icon: "❉";
70
+ readonly scoped: true;
71
+ }, {
72
+ readonly leaf: "benchmarks";
73
+ readonly label: "Benchmark";
74
+ readonly icon: "◔";
75
+ readonly scoped: true;
76
+ }, {
77
+ readonly leaf: "knowledge";
78
+ readonly label: "Knowledge";
79
+ readonly icon: "▤";
80
+ readonly scoped: true;
81
+ }, {
82
+ readonly leaf: "/integrations";
83
+ readonly label: "Integrations";
84
+ readonly icon: "⇄";
85
+ readonly scoped: false;
86
+ readonly capability: "integrations";
87
+ }];
88
+ /** One navigation entry. */
89
+ export type NavItem = (typeof NAV)[number];
90
+ /** The capability an entry needs, or undefined when it always belongs in the rail. */
91
+ export declare function navCapability(item: NavItem): "integrations" | undefined;
@@ -0,0 +1,9 @@
1
+ import type { StudioConfig } from "./studioConfig";
2
+ /**
3
+ * The router, parameterized by the embed seams (feature studio-embeddable): `basepath`
4
+ * mounts every route under the host's prefix (default "": root, as standalone), and
5
+ * `history: "memory"` keeps Studio out of the address bar when the host owns the URL.
6
+ */
7
+ export declare function createStudioRouter(config?: Pick<StudioConfig, "basepath" | "history">): import("@tanstack/router-core").RouterCore<import("@tanstack/router-core").Route<import("@tanstack/react-router").Register, any, "/", "/", string, "__root__", undefined, {}, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, readonly [import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/", "/", string, "/", undefined, import("@tanstack/router-core").ResolveParams<"/">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/save-games", "/save-games", string, "/save-games", undefined, import("@tanstack/router-core").ResolveParams<"/save-games">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/integrations", "/integrations", string, "/integrations", undefined, import("@tanstack/router-core").ResolveParams<"/integrations">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/router-core").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, readonly [import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "dashboard", "/q/$ns/dashboard", string, "/q/$ns/dashboard", undefined, import("@tanstack/router-core").ResolveParams<"dashboard">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "samples", "/q/$ns/samples", string, "/q/$ns/samples", undefined, import("@tanstack/router-core").ResolveParams<"samples">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "browser", "/q/$ns/browser", string, "/q/$ns/browser", undefined, import("@tanstack/router-core").ResolveParams<"browser">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "knowledge", "/q/$ns/knowledge", string, "/q/$ns/knowledge", undefined, import("@tanstack/router-core").ResolveParams<"knowledge">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "documents", "/q/$ns/documents", string, "/q/$ns/documents", undefined, import("@tanstack/router-core").ResolveParams<"documents">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, ({ params }: import("@tanstack/router-core").BeforeLoadContextOptions<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, undefined, import("@tanstack/router-core").ResolveParams<"documents">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, "/q/$ns/documents", unknown, undefined>) => never, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "query", "/q/$ns/query", string, "/q/$ns/query", undefined, import("@tanstack/router-core").ResolveParams<"query">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "indexes", "/q/$ns/indexes", string, "/q/$ns/indexes", undefined, import("@tanstack/router-core").ResolveParams<"indexes">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "path", "/q/$ns/path", string, "/q/$ns/path", undefined, import("@tanstack/router-core").ResolveParams<"path">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "subgraphs", "/q/$ns/subgraphs", string, "/q/$ns/subgraphs", undefined, import("@tanstack/router-core").ResolveParams<"subgraphs">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "analytics", "/q/$ns/analytics", string, "/q/$ns/analytics", undefined, import("@tanstack/router-core").ResolveParams<"analytics">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "plugins", "/q/$ns/plugins", string, "/q/$ns/plugins", undefined, import("@tanstack/router-core").ResolveParams<"plugins">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "canvas", "/q/$ns/canvas", string, "/q/$ns/canvas", undefined, import("@tanstack/router-core").ResolveParams<"canvas">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "benchmarks", "/q/$ns/benchmarks", string, "/q/$ns/benchmarks", undefined, import("@tanstack/router-core").ResolveParams<"benchmarks">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>], unknown, unknown, unknown, undefined>, ...import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks", "/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks", string, "/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks", undefined, import("@tanstack/router-core").ResolveParams<"/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, () => never, {}, undefined, unknown, unknown, unknown, unknown, undefined>[]], unknown, unknown, unknown, undefined>, "never", false, import("@tanstack/history").RouterHistory, Record<string, any>>;
8
+ /** The standalone router: root basepath, browser history - exactly the pre-seam behavior. */
9
+ export declare const router: import("@tanstack/router-core").RouterCore<import("@tanstack/router-core").Route<import("@tanstack/react-router").Register, any, "/", "/", string, "__root__", undefined, {}, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, readonly [import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/", "/", string, "/", undefined, import("@tanstack/router-core").ResolveParams<"/">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/save-games", "/save-games", string, "/save-games", undefined, import("@tanstack/router-core").ResolveParams<"/save-games">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/integrations", "/integrations", string, "/integrations", undefined, import("@tanstack/router-core").ResolveParams<"/integrations">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/router-core").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, readonly [import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "dashboard", "/q/$ns/dashboard", string, "/q/$ns/dashboard", undefined, import("@tanstack/router-core").ResolveParams<"dashboard">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "samples", "/q/$ns/samples", string, "/q/$ns/samples", undefined, import("@tanstack/router-core").ResolveParams<"samples">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "browser", "/q/$ns/browser", string, "/q/$ns/browser", undefined, import("@tanstack/router-core").ResolveParams<"browser">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "knowledge", "/q/$ns/knowledge", string, "/q/$ns/knowledge", undefined, import("@tanstack/router-core").ResolveParams<"knowledge">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "documents", "/q/$ns/documents", string, "/q/$ns/documents", undefined, import("@tanstack/router-core").ResolveParams<"documents">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, ({ params }: import("@tanstack/router-core").BeforeLoadContextOptions<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, undefined, import("@tanstack/router-core").ResolveParams<"documents">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, "/q/$ns/documents", unknown, undefined>) => never, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "query", "/q/$ns/query", string, "/q/$ns/query", undefined, import("@tanstack/router-core").ResolveParams<"query">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "indexes", "/q/$ns/indexes", string, "/q/$ns/indexes", undefined, import("@tanstack/router-core").ResolveParams<"indexes">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "path", "/q/$ns/path", string, "/q/$ns/path", undefined, import("@tanstack/router-core").ResolveParams<"path">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "subgraphs", "/q/$ns/subgraphs", string, "/q/$ns/subgraphs", undefined, import("@tanstack/router-core").ResolveParams<"subgraphs">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "analytics", "/q/$ns/analytics", string, "/q/$ns/analytics", undefined, import("@tanstack/router-core").ResolveParams<"analytics">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "plugins", "/q/$ns/plugins", string, "/q/$ns/plugins", undefined, import("@tanstack/router-core").ResolveParams<"plugins">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "canvas", "/q/$ns/canvas", string, "/q/$ns/canvas", undefined, import("@tanstack/router-core").ResolveParams<"canvas">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/q/$ns", "/q/$ns", string, "/q/$ns", undefined, import("@tanstack/router-core").ResolveParams<"/q/$ns">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "benchmarks", "/q/$ns/benchmarks", string, "/q/$ns/benchmarks", undefined, import("@tanstack/router-core").ResolveParams<"benchmarks">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>], unknown, unknown, unknown, undefined>, ...import("@tanstack/react-router").Route<unknown, import("@tanstack/react-router").RootRoute<import("@tanstack/react-router").Register, undefined, {}, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks", "/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks", string, "/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks", undefined, import("@tanstack/router-core").ResolveParams<"/dashboard" | "/browser" | "/query" | "/indexes" | "/path" | "/subgraphs" | "/analytics" | "/canvas" | "/benchmarks">, import("@tanstack/router-core").AnyContext, import("@tanstack/router-core").AnyContext, () => never, {}, undefined, unknown, unknown, unknown, unknown, undefined>[]], unknown, unknown, unknown, undefined>, "never", false, import("@tanstack/history").RouterHistory, Record<string, any>>;
@@ -0,0 +1,106 @@
1
+ import type { QueryClient } from "@tanstack/react-query";
2
+ import type { InstanceConfig } from "../instances/types";
3
+ /**
4
+ * The host-facing embed contract (feature studio-embeddable) and its runtime state: the
5
+ * active config, the live-mount count, and the `storageKey` prefix every persisted key goes
6
+ * through. Every field is optional and omitting it reproduces the standalone app's behavior.
7
+ * How to mount is documented on ./mount.tsx; the feature's story is in
8
+ * features/done/studio-embeddable/spec.md.
9
+ */
10
+ /**
11
+ * The themable design tokens: the `@theme` custom properties in index.css, camel-cased.
12
+ * Overrides land as inline CSS variables on the `.f8-studio` root, so they win over the
13
+ * stylesheet defaults without touching it (Tailwind v4 utilities resolve through var()).
14
+ */
15
+ export interface ThemeTokens {
16
+ ink: string;
17
+ panel: string;
18
+ panel2: string;
19
+ line: string;
20
+ fg: string;
21
+ fgDim: string;
22
+ fgFaint: string;
23
+ accent: string;
24
+ accent2: string;
25
+ warn: string;
26
+ danger: string;
27
+ fontMono: string;
28
+ }
29
+ export interface StudioConfig {
30
+ /** Host-supplied managed instances (default: the config.js-seeded same-origin instance). */
31
+ instances?: InstanceConfig[];
32
+ activeInstanceId?: string;
33
+ /** Hide the register/edit/remove affordances when the host owns the instance list. */
34
+ lockInstances?: boolean;
35
+ /** Seed the active namespace for the host-supplied instances (default: "default"). */
36
+ namespace?: string;
37
+ /** Hide the namespace switcher and management when the embed is scoped to one graph. */
38
+ lockNamespace?: boolean;
39
+ /** Router basepath (default "": root, as standalone). */
40
+ basepath?: string;
41
+ /** "memory" keeps Studio out of the address bar when the host owns the URL. */
42
+ history?: "browser" | "memory";
43
+ /** Prefix for every persisted localStorage key (default "": today's bare f8.* keys). */
44
+ storageNamespace?: string;
45
+ /** Token overrides; anything omitted keeps today's dark defaults. */
46
+ theme?: Partial<ThemeTokens>;
47
+ /** Reuse the host's QueryClient (default: Studio creates its own, as today). */
48
+ queryClient?: QueryClient;
49
+ /**
50
+ * NL-assist policy for an embed. "disabled" removes the NL panels entirely;
51
+ * "instance-only" locks the model transport to the active instance's POST /chat. Both
52
+ * hold structurally, not just in the UI: the browser-direct transports (chatWithModel and
53
+ * the reachability probe) refuse under any policy, and the NL store is policy-resolved at
54
+ * rehydrate (the persist merge in delegate/nl/config.ts), so an instance-only embed
55
+ * neither holds nor re-persists a custom-mode config or its third-party key. Consequence
56
+ * when an embed shares an UNPREFIXED storage with a standalone Studio on the same origin:
57
+ * a settings write from inside the embed persists the policy-clean shape, dropping any
58
+ * stored custom key rather than carrying it. Absent: standalone behavior (instance mode
59
+ * default, custom mode available).
60
+ */
61
+ nlAssist?: "disabled" | "instance-only";
62
+ }
63
+ export declare function getStudioConfig(): StudioConfig;
64
+ export declare function setStudioConfig(config: StudioConfig): void;
65
+ /**
66
+ * Registers a mounted tree; the returned callback releases it on unmount. Throws on a
67
+ * second LIVE registration: setStudioConfig's guard is identity-based (it must tolerate
68
+ * StrictMode re-rendering the same config object), so two mounts sharing one config object
69
+ * would slip past it - this count-based guard catches that shape too, in the second tree's
70
+ * mount effect. StrictMode's mount/cleanup/mount cycle is sequential and never trips it.
71
+ */
72
+ export declare function registerStudioMount(): () => void;
73
+ /**
74
+ * Returns the module-level config to the standalone default once no mount is live, so a
75
+ * dead embed's policy and storage prefix cannot outlive it (an in-flight store write after
76
+ * teardown would otherwise still go through the old tenant's storageKey prefix). Called
77
+ * from mountStudio's unmount handle - the imperative path is the one that can know teardown
78
+ * is real; a React host's effect cleanup cannot distinguish StrictMode's rehearsal from a
79
+ * genuine unmount, so <F8Studio> keeps the config until the next mount replaces it.
80
+ */
81
+ export declare function resetStudioConfig(): void;
82
+ /**
83
+ * Every persisted localStorage key goes through here (registry, workspace stores, NL-assist,
84
+ * first-run), so a host embed with `storageNamespace` keeps its state separate from a
85
+ * standalone Studio on the same origin. Default prefix is empty: existing users' f8.* keys
86
+ * are untouched. Separation holds for what is WRITTEN under the prefix; the module-level
87
+ * stores additionally skip their import-time hydration so bare-key state cannot bleed in
88
+ * (see the persist options in instances/registry.ts).
89
+ */
90
+ export declare function storageKey(name: string): string;
91
+ /** The config.theme overrides as inline style variables for the `.f8-studio` root. */
92
+ export declare function themeStyle(theme: Partial<ThemeTokens> | undefined): Record<string, string>;
93
+ /**
94
+ * Component access to the mount's config. Defaults to the standalone config, so components
95
+ * rendered without a provider (unit tests, storybooks) behave exactly like today's app.
96
+ */
97
+ export declare const StudioConfigContext: import("react").Context<StudioConfig>;
98
+ export declare function useStudioConfig(): StudioConfig;
99
+ /**
100
+ * Where Radix portals render. The mount supplies the `.f8-studio` root so overlays stay
101
+ * inside the scoped, themable subtree (required once the style primitives are scoped to it,
102
+ * and it keeps modals inside a host region instead of escaping to document.body). Without a
103
+ * provider (unit tests rendering a dialog directly) Radix falls back to document.body.
104
+ */
105
+ export declare const PortalContainerContext: import("react").Context<HTMLElement | undefined>;
106
+ export declare function usePortalContainer(): HTMLElement | undefined;
@@ -0,0 +1,18 @@
1
+ import { type Ref } from "react";
2
+ import { type CanvasEdge, type CanvasNode } from "../state/instanceStore";
3
+ import type { StyleConfig } from "./styleConfig";
4
+ import type { ResolvedStyles } from "./styleEngine";
5
+ import { type ElementRef, type F8GraphCanvasHandle } from "./GraphCanvas";
6
+ /**
7
+ * Sigma.js (WebGL) 2D projection. Renders resolved styles only — the mapping rules
8
+ * live in styleEngine.ts; the layout/label/arrow options come from the style config.
9
+ */
10
+ export declare function Canvas2D({ nodes, edges, styles, config, highlightId, onSelect, ref, }: {
11
+ nodes: Record<number, CanvasNode>;
12
+ edges: Record<number, CanvasEdge>;
13
+ styles: ResolvedStyles;
14
+ config: StyleConfig;
15
+ highlightId?: number | null;
16
+ onSelect: (ref: ElementRef | null) => void;
17
+ ref?: Ref<F8GraphCanvasHandle>;
18
+ }): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { type Ref } from "react";
2
+ import { type CanvasEdge, type CanvasNode } from "../state/instanceStore";
3
+ import type { StyleConfig } from "./styleConfig";
4
+ import type { ResolvedStyles } from "./styleEngine";
5
+ import { type ElementRef, type F8GraphCanvasHandle } from "./GraphCanvas";
6
+ export declare function Canvas3D({ nodes, edges, styles, config, highlightId, onSelect, ref, }: {
7
+ nodes: Record<number, CanvasNode>;
8
+ edges: Record<number, CanvasEdge>;
9
+ styles: ResolvedStyles;
10
+ config: StyleConfig;
11
+ highlightId?: number | null;
12
+ onSelect: (ref: ElementRef | null) => void;
13
+ ref?: Ref<F8GraphCanvasHandle>;
14
+ }): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Canvas "Connect" tab (feature canvas-find-connect): connect the vertices already on the canvas
3
+ * by running Fallen-8's shortest-path search (BLS) over every unordered pair, up to a max-hop
4
+ * bound, then add or retract each found path selectively. The whole pairwise sweep must fit under
5
+ * CONNECT_PAIR_CAP - a partial sweep would falsely report "unreachable" for pairs it never tried,
6
+ * so above the cap the run is refused and the pick list is the way to narrow. Add/remove is
7
+ * reference-counted against the run baseline (connectPaths.ts): a shared intermediate survives
8
+ * until the last path claiming it is removed. Inputs persist; picks and results are ephemeral.
9
+ */
10
+ export declare function ConnectPanel(): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import type { ElementRef } from "./GraphCanvas";
2
+ /**
3
+ * Canvas "Find" tab (feature canvas-find-connect): the all-property discovery search
4
+ * (POST /scan/graph/properties, the same primitive the Query screen's "any property" scope
5
+ * uses) brought onto the canvas so you can grow the working set without leaving. Results show
6
+ * whether each element is already on the canvas and add it (or all of them) in one click; a row
7
+ * click selects the element into the Detail panel for the full property view. Inputs persist in
8
+ * the per-instance canvasToolsDraft; results are ephemeral (re-run on demand).
9
+ */
10
+ export declare function FindPanel({ onSelect, onHover, }: {
11
+ onSelect: (ref: ElementRef) => void;
12
+ /** Spotlight the hovered result's node on the canvas (feature canvas-find-connect). */
13
+ onHover?: (ref: ElementRef | null) => void;
14
+ }): import("react").JSX.Element;
@@ -0,0 +1,66 @@
1
+ import { type Ref } from "react";
2
+ import type { CanvasEdge, CanvasNode } from "../state/instanceStore";
3
+ import type { PathREST } from "../api/types";
4
+ import type { StyleConfig } from "./styleConfig";
5
+ export type ElementRef = {
6
+ kind: "node" | "edge";
7
+ id: number;
8
+ };
9
+ /**
10
+ * Imperative camera control on a mounted canvas (feature canvas-host-controls). A host embedding
11
+ * the canvas has no other way to reach the camera, so this is the whole surface: frame everything,
12
+ * read the zoom, set the zoom.
13
+ *
14
+ * `ratio` is sigma's camera ratio in BOTH renderers: 1 means the graph just fits the padded
15
+ * viewport and 2 is twice as far out. It is DERIVED on every call rather than stored, so 1 still
16
+ * means "fits" after the graph grows, the container changes, or the renderer remounts.
17
+ *
18
+ * Multiplying it by k spreads the layout over 1/k of the distance but shrinks each element to
19
+ * 1/sqrt(k) of its size, because sigma scales lengths by `sqrt(ratio)` (`scaleSize`) while it scales
20
+ * positions by the ratio itself. So zooming out is not a uniform shrink, and a host computing sizes
21
+ * needs the square root. Labels do not scale at all.
22
+ *
23
+ * Two renderer differences worth knowing. `setCameraRatio` keeps the pan in 2D but re-aims at the
24
+ * graph origin in 3D (which is what a fit does there). And only 3D bounds the number: its orbit
25
+ * controls cap the camera distance at the sky radius, whereas 2D applies any finite positive ratio
26
+ * verbatim, because sigma's `minCameraRatio`/`maxCameraRatio` are left unset. A host driving the
27
+ * ratio from a slider therefore owns the range check in 2D; `fitToView()` is always the way back.
28
+ *
29
+ * `paddingPx` is CSS px of inset around the graph, and omitting it asks for the renderer's own
30
+ * framing rather than a shared number: 2D uses sigma's live `stagePadding`, 3D uses
31
+ * `FIT_PADDING_PX`. The two are not comparable (3D padding shrinks the field of view against
32
+ * container HEIGHT only), so copying one renderer's digit into the other would be false precision.
33
+ * The arithmetic for both lives in canvas/eclipse.ts.
34
+ */
35
+ export interface F8GraphCanvasHandle {
36
+ fitToView(durationMs?: number, paddingPx?: number): void;
37
+ getCameraRatio(): number;
38
+ setCameraRatio(ratio: number): void;
39
+ }
40
+ /** Fit tween length in ms. Canvas3D has framed its mount auto-fit at 600 since day one. */
41
+ export declare const FIT_DURATION_MS = 600;
42
+ /** Elements to emphasize with the overlay visuals WITHOUT dimming the rest (adjacency-preview). */
43
+ type EmphasisSet = {
44
+ nodeIds: readonly number[];
45
+ edgeIds: readonly number[];
46
+ };
47
+ /**
48
+ * The one renderer boundary (design §4): everything outside talks CanvasNode/CanvasEdge +
49
+ * callbacks. Styles are resolved once here (styleEngine) and handed to the projection the
50
+ * style config selects — Sigma (2D) or three.js (3D) — so path/subgraph overlays and all
51
+ * "send to canvas" flows behave identically in both (studio-canvas-viz FR-9).
52
+ */
53
+ export declare function GraphCanvas({ nodes, edges, config, pathOverlay, emphasis, highlight, onSelect, ref, }: {
54
+ nodes: Record<number, CanvasNode>;
55
+ edges: Record<number, CanvasEdge>;
56
+ config: StyleConfig;
57
+ pathOverlay: PathREST | null;
58
+ emphasis?: EmphasisSet | null;
59
+ /** Transient hover spotlight (feature canvas-find-connect): the "eclipse" corona is drawn over
60
+ * this node while a Find result row is hovered. Only a node kind spotlights; edges are ignored. */
61
+ highlight?: ElementRef | null;
62
+ onSelect: (ref: ElementRef | null) => void;
63
+ /** Camera handle, forwarded to whichever renderer is mounted (React 19 passes ref as a prop). */
64
+ ref?: Ref<F8GraphCanvasHandle>;
65
+ }): import("react").JSX.Element;
66
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { StyleConfig } from "./styleConfig";
2
+ export declare function StylePanel({ config, onChange, nodePropertyKeys, edgePropertyKeys, }: {
3
+ config: StyleConfig;
4
+ onChange: (patch: Partial<StyleConfig>) => void;
5
+ nodePropertyKeys: string[];
6
+ edgePropertyKeys: string[];
7
+ }): import("react").JSX.Element;