@fallen-8/studio 0.0.35 → 0.0.36

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 (45) hide show
  1. package/dist-lib/{Canvas3D-C5og4ZIQ.js → Canvas3D-BXYc6PEP.js} +1 -1
  2. package/dist-lib/{F8GraphCanvas-Db7vzDtJ.js → F8GraphCanvas-Ckq0NuuE.js} +8 -2
  3. package/dist-lib/canvas.js +1 -1
  4. package/dist-lib/{cssMode-C_3o84wD.js → cssMode-nGncvC5m.js} +1 -1
  5. package/dist-lib/f8-studio.css +1 -1
  6. package/dist-lib/f8-studio.js +2 -2
  7. package/dist-lib/{freemarker2-2fqgZiA6.js → freemarker2-CP74sa8J.js} +1 -1
  8. package/dist-lib/{handlebars-CpHr0qpx.js → handlebars-QALLOIn0.js} +1 -1
  9. package/dist-lib/{html-Bug9RG5l.js → html-85a-cm74.js} +1 -1
  10. package/dist-lib/{htmlMode-Ml4537rc.js → htmlMode-BgQACh7e.js} +1 -1
  11. package/dist-lib/{index-B9b5xEwe.js → index-CQF9rZdm.js} +25575 -25158
  12. package/dist-lib/{javascript-DvuxCyB4.js → javascript-C5gSrEJX.js} +1 -1
  13. package/dist-lib/{jsonMode-BU3w8kmM.js → jsonMode-CPyHCN9i.js} +1 -1
  14. package/dist-lib/{liquid-r_J0hX64.js → liquid-C-WFafiu.js} +1 -1
  15. package/dist-lib/{mdx-5vg3Qy8b.js → mdx-Cqij6eG9.js} +1 -1
  16. package/dist-lib/{python-DlLCDuTf.js → python-DxKmSiUE.js} +1 -1
  17. package/dist-lib/{razor-D-OmEXY0.js → razor-C_PJXRiv.js} +1 -1
  18. package/dist-lib/{tsMode-Dophy2cR.js → tsMode-BPfWv0l3.js} +1 -1
  19. package/dist-lib/types/api/client.d.ts +40 -0
  20. package/dist-lib/types/api/endpoints.d.ts +28 -2
  21. package/dist-lib/types/api/types.d.ts +96 -2
  22. package/dist-lib/types/app/namespaceSignals.d.ts +41 -0
  23. package/dist-lib/types/app/nav.d.ts +0 -5
  24. package/dist-lib/types/app/routes.d.ts +2 -2
  25. package/dist-lib/types/app/scopedRoute.d.ts +24 -0
  26. package/dist-lib/types/components/DurabilityNotice.d.ts +22 -7
  27. package/dist-lib/types/components/FileDropzone.d.ts +7 -2
  28. package/dist-lib/types/components/Stat.d.ts +1 -1
  29. package/dist-lib/types/delegate/nl/useNlRun.d.ts +7 -0
  30. package/dist-lib/types/firstrun/FirstRunOverlay.d.ts +37 -4
  31. package/dist-lib/types/firstrun/FirstRunShow.d.ts +4 -4
  32. package/dist-lib/types/instances/registry.d.ts +8 -2
  33. package/dist-lib/types/lib/embeddingProperties.d.ts +22 -0
  34. package/dist-lib/types/lib/findSimilar.d.ts +21 -0
  35. package/dist-lib/types/lib/pollIntervals.d.ts +13 -0
  36. package/dist-lib/types/lib/samples.d.ts +1 -1
  37. package/dist-lib/types/screens/IntegrationsScreen.d.ts +4 -3
  38. package/dist-lib/types/screens/SamplesScreen.d.ts +3 -3
  39. package/dist-lib/types/state/instanceStore.d.ts +30 -0
  40. package/dist-lib/types/state/status.d.ts +20 -1
  41. package/dist-lib/{typescript-oqqsXxrY.js → typescript-CmUu7z19.js} +1 -1
  42. package/dist-lib/{xml-pmqwhaBA.js → xml-BID2APnO.js} +1 -1
  43. package/dist-lib/{yaml-DN1I59zm.js → yaml-CpQ-mN6F.js} +1 -1
  44. package/package.json +1 -1
  45. package/dist-lib/types/screens/DashboardScreen.d.ts +0 -13
@@ -4,15 +4,30 @@ import type { DurabilityREST } from "../api/types";
4
4
  *
5
5
  * The engine has published this on /status for a while and a machine already acts on it - the
6
6
  * integrations runtime refuses to delete anything while it is unhealthy - but nothing showed it to
7
- * the person watching. That was the gap: "a client writes into a degraded log and nobody watching a
8
- * dashboard finds out" was the failure this signal existed to prevent, and it stopped one hop short.
7
+ * the person watching. That was the gap the signal exists to close: "a client writes into a
8
+ * degraded log and nobody watching finds out". It is rendered by the app shell, so it reaches that
9
+ * person on whatever screen they are on rather than on one they had to think to open.
9
10
  *
10
- * Deliberately SILENT when everything is fine. A dashboard that always carries a green durability
11
- * badge trains people to stop reading it, and the three states worth interrupting for are all
12
- * exceptional: the log is degraded (commits are landing in memory only), the last recovery was
13
- * truncated (the graph is a prefix of history, so anything reconciling against it is reasoning from
14
- * incomplete data), or the last checkpoint dropped indexes (they are gone after the next load).
11
+ * Deliberately SILENT when everything is fine. A banner that is always there stops being read, and
12
+ * the three states worth interrupting for are all exceptional: the log is degraded (commits are
13
+ * landing in memory only), the last recovery was truncated (the graph is a prefix of history, so
14
+ * anything reconciling against it is reasoning from incomplete data), or the last checkpoint
15
+ * dropped indexes (they are gone after the next load).
15
16
  */
17
+ /** One thing worth interrupting for: what is wrong, and what it means for this graph. */
18
+ export interface DurabilityProblem {
19
+ title: string;
20
+ detail: string;
21
+ }
22
+ /**
23
+ * The three exceptional states, as prose - and the ONE home for "is durability worth saying
24
+ * something about", which the shell also asks (an empty namespace whose recovery was truncated
25
+ * gets this warning instead of the first-run welcome; see AppShell).
26
+ *
27
+ * Absent is not healthy: an older server simply does not report, and saying nothing is honest,
28
+ * whereas rendering "durable" from missing data would be an invention.
29
+ */
30
+ export declare function durabilityProblems(durability: DurabilityREST | null | undefined): DurabilityProblem[];
16
31
  export declare function DurabilityNotice({ durability }: {
17
32
  durability: DurabilityREST | null | undefined;
18
33
  }): import("react").JSX.Element | null;
@@ -10,8 +10,13 @@ import { type ReactNode } from "react";
10
10
  * what that screen needs it to mean.
11
11
  */
12
12
  export declare function FileDropzone(props: {
13
- /** Called with the dropped file. */
14
- onFile: (file: File) => void;
13
+ /** Called with the dropped files, in the order the browser reported them, and never with none. */
14
+ onFiles: (files: File[]) => void;
15
+ /**
16
+ * Takes every file of one drop rather than the first. A source handed over as a SET of files
17
+ * needs it: without it the rest of the drop is silently ignored, which reads as a lost file.
18
+ */
19
+ multiple?: boolean;
15
20
  /** Greys the target out and refuses drops, for a screen that is not ready to take one. */
16
21
  disabled?: boolean;
17
22
  /** What the target says when nothing is being dragged over it. */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * One labeled stat cell (Dashboard counts, benchmark results, Graph shape numbers, and
2
+ * One labeled stat cell (benchmark results, Graph shape numbers, and
3
3
  * value tiles fed user/algorithm-controlled strings such as the embedding model id or an
4
4
  * analytics statistic key). Both lines truncate with a full-value title so an unbounded
5
5
  * label or value can never overflow the fixed-width tile.
@@ -1,3 +1,4 @@
1
+ import type { NlAssistConfig } from "./config";
1
2
  /**
2
3
  * Run lifecycle shared by both NL panels (the delegate editor's and the plugin editor's).
3
4
  * It exists because the two panels had the same two defects in duplicate:
@@ -22,3 +23,9 @@ export declare function useNlRun(): {
22
23
  * the original hang was reported.
23
24
  */
24
25
  export declare function useElapsedSeconds(active: boolean): number;
26
+ /**
27
+ * Informational-only reachability read (nl-assist-ux FR-2), shared by both NL panels: custom mode
28
+ * probes the configured endpoint, instance mode reports nothing (its reachability is the instance
29
+ * connection itself, shown on Connect). Never gates generation.
30
+ */
31
+ export declare function useReachabilityProbe(configured: boolean, isInstance: boolean, effective: NlAssistConfig): boolean | null;
@@ -1,10 +1,43 @@
1
+ import type { NamespaceSignals } from "../app/namespaceSignals";
1
2
  /**
2
- * Manual-replay overlay (feature studio-first-run). Renders the SAME <FirstRunShow> the
3
- * Dashboard auto-shows, on top of the current screen, from beat 1. Radix Dialog gives the focus
4
- * trap, Escape-to-close, and focus restore for free. Closing never touches the dismissed flag.
3
+ * The first-run show's ONE host (feature studio-first-run), rendered once by the app shell. Radix
4
+ * Dialog gives the focus trap, Escape-to-close, and focus restore for free.
5
+ *
6
+ * It opens on two paths, and the difference is entirely in what closing means:
7
+ *
8
+ * - **auto** - the operator is on a screen ABOUT a graph and that graph was empty WHEN THEY
9
+ * ARRIVED at the namespace (see the `arrival` latch: emptiness is live, arrival is not), and
10
+ * they have not dismissed the show for it. Closing by ANY route (Close, Escape, the scrim,
11
+ * "Explore on my own") records the dismissal; an auto-opening modal that came back on the next
12
+ * navigation would be unusable. The memory is per namespace and re-armed the moment that
13
+ * namespace is seen non-empty, so a graph that genuinely empties later shows the intro again the
14
+ * next time you arrive at it.
15
+ * - **replay** - the rail's Intro button, available at any time regardless of the connection
16
+ * state, the graph being empty, or the dismissal. Closing it leaves the flag alone UNLESS the
17
+ * auto path is armed for this namespace, in which case closing counts for both (see `armed`).
5
18
  *
6
19
  * The show creates NOTHING: its handoff buttons only navigate (to the Sample gallery or the
7
20
  * import screen) or dismiss. The unit-test graph endpoint is deliberately never wired in (see
8
21
  * CLAUDE.md); newcomers reach a populated graph through the curated Sample gallery.
9
22
  */
10
- export declare function FirstRunOverlay(): import("react").JSX.Element;
23
+ export declare function FirstRunOverlay({ signals, connected, onGraphScreen, }: {
24
+ /** The active namespace's shell-level signals - what decides the auto path. */
25
+ signals: NamespaceSignals;
26
+ /**
27
+ * Whether the active instance answered AND authorized. /status reports real counts to an
28
+ * unauthorized caller too, so without this an instance that rejected the credential would greet
29
+ * the operator with a walkthrough on top of the "rejected the credential" guard.
30
+ */
31
+ connected: boolean;
32
+ /**
33
+ * Whether the current route is a namespace-scoped screen (`/q/{ns}/…`).
34
+ *
35
+ * The auto path is deliberately silent on the Fallen-8-level screens - Connect, Save games,
36
+ * Integrations. The walkthrough is about a GRAPH, and those three are where you wire one up:
37
+ * registering an instance, naming namespaces, restoring a checkpoint, pointing an integration at
38
+ * a system. Interrupting that with a modal is not onboarding, it is an ambush, and the very
39
+ * first thing a newcomer does after connecting is click a rail entry - which lands them on a
40
+ * scoped screen, where the show opens with nothing half-finished behind it.
41
+ */
42
+ onGraphScreen: boolean;
43
+ }): import("react").JSX.Element;
@@ -5,12 +5,12 @@
5
5
  *
6
6
  * It CREATES NOTHING: it renders a hardcoded mock as SVG and animates it with CSS. It issues no
7
7
  * network request of its own. Only the handoff buttons perform a real action, on click, through
8
- * the injected handlers - so the auto-show (rendered inline by the Dashboard on an empty graph)
9
- * and the manual replay (rendered by <FirstRunOverlay>) are the SAME component with the same
10
- * contract; only the entry point differs. Prev/Next/dots let a viewer step through at their pace.
8
+ * the injected handlers - so the auto-show (opened for a newcomer on an empty namespace) and the
9
+ * manual replay (the rail's Intro button) are the SAME component with the same contract, hosted by
10
+ * the same <FirstRunOverlay>; only the entry point differs. Prev/Next/dots let a viewer step through at their pace.
11
11
  */
12
12
  export interface FirstRunShowProps {
13
- /** "auto" = inline empty-state on the Dashboard; "replay" = manual overlay. Used only for labels. */
13
+ /** "auto" = a newcomer on an empty namespace; "replay" = the rail's Intro. Used only for labels. */
14
14
  variant: "auto" | "replay";
15
15
  /** Dismiss into the app (auto: remember dismissal; replay: close the overlay). */
16
16
  onExplore: () => void;
@@ -70,8 +70,7 @@ export declare function useActiveInstance(): InstanceConfig | null;
70
70
  /**
71
71
  * The active instance plus its per-namespace workspace store - the preamble every connected
72
72
  * screen needs (the AppShell connection gate guarantees an active instance, hence the non-null).
73
- * The returned instance is NAMESPACE-BOUND (feature graph-namespaces): its API calls address
74
- * /ns/{activeNamespace}/… explicitly, and the workspace store is keyed per namespace so
73
+ * The instance is bound per `boundInstance`, and the workspace store is keyed per namespace so
75
74
  * results, drafts and canvas state never cross namespaces.
76
75
  */
77
76
  export declare function useInstanceStore(): {
@@ -81,3 +80,10 @@ export declare function useInstanceStore(): {
81
80
  <U>(selector: (state: import("../state/instanceStore").WorkspaceState) => U): U;
82
81
  } & import("zustand").StoreApi<import("../state/instanceStore").WorkspaceState>;
83
82
  };
83
+ /**
84
+ * The bound active instance for SHELL-level consumers, or null when no instance is active.
85
+ * `useInstanceStore` is this plus the workspace store, but it asserts an instance because it is
86
+ * only ever called from a screen behind the connection gate; the shell itself (the durability
87
+ * banner, the first-run auto-show) renders before that gate and must tolerate "none".
88
+ */
89
+ export declare function useBoundInstance(): InstanceConfig | null;
@@ -1,5 +1,27 @@
1
1
  /** A property is reserved (embedding state) when it uses either embedding prefix. */
2
2
  export declare function isReservedEmbeddingProperty(propertyId: string): boolean;
3
+ /**
4
+ * The element's own properties first, engine-written embedding state last, order otherwise
5
+ * preserved. For a TRUNCATED preview (the element table's properties cell), which is the only
6
+ * place this matters: a reserved marker is bookkeeping the operator did not write and cannot edit
7
+ * here, so spending the character budget on it before their own data is backwards.
8
+ *
9
+ * It was not hypothetical. On a graph with embeddings, `$embeddingModel:default=bge-m3#1024#Cosine`
10
+ * is ~44 of the ~80 available characters, and the REST egress emits properties in no guaranteed
11
+ * order - so a movie row rendered as "year=2010, $embeddingModel:default=…, plot=A thief who
12
+ * steals…" with `title=` cut off entirely, and the published semantic-search screenshot showed no
13
+ * film title in any of its ten rows.
14
+ */
15
+ export declare function userPropertiesFirst<T extends {
16
+ propertyId: string;
17
+ }>(properties: T[]): T[];
18
+ /**
19
+ * The stored vector as the Query screen's vector box wants it: the WHOLE bracketed list, where
20
+ * previewVector deliberately gives four components and a dimension. Both shapes the REST egress
21
+ * can send are accepted (a Single[] array, or the bracketed string form). Null when the value is
22
+ * not a vector at all.
23
+ */
24
+ export declare function vectorQueryText(value: unknown): string | null;
3
25
  /** A one-line preview of a stored vector value. The REST egress sends Single[] values as
4
26
  * the bracketed string form (see AGraphElement.FormatPropertyValue), so both shapes are
5
27
  * truncated — a 1024-dim embedding must never dump raw into the table. */
@@ -0,0 +1,21 @@
1
+ import type { EdgeREST, IndexDescription, VertexREST } from "../api/types";
2
+ import type { ScanPrefill } from "../state/instanceStore";
3
+ /**
4
+ * "Find elements like this one", composed entirely on the client (feature element-similarity-search).
5
+ *
6
+ * There is no element-as-query mode anywhere in the product: `/embedding/search` takes text and
7
+ * `/scan/index/vector` takes a vector, so the only way to ask "what is like THIS" is to read the
8
+ * element's own stored embedding and search with it. That read is free - the vector is already in
9
+ * the element's properties, which the caller has already fetched.
10
+ *
11
+ * The searchable index is the one BOUND to that embedding name. An unbound index holds vectors that
12
+ * exist nowhere else, so it cannot be expected to contain this element at all, and a bound index of
13
+ * a different name projects different vectors. No bound index means the gesture has nowhere to run,
14
+ * which is a reason to show rather than a button to grey out silently.
15
+ */
16
+ export interface SimilarSearch {
17
+ prefill: ScanPrefill;
18
+ embeddingName: string;
19
+ }
20
+ /** Every embedding this element carries that a bound vector index actually projects. */
21
+ export declare function similarSearchesFor(element: VertexREST | EdgeREST, indices: IndexDescription[] | null | undefined, isEdge: boolean): SimilarSearch[];
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The poll cadence shared by every observer of an instance's two cheap discovery routes:
3
+ * `/status` (the connection probe, the durability banner, the Instances row health cell) and
4
+ * `/ns` (the namespace inventory, read by the switcher, NamespacesPanel and the namespace-recover
5
+ * screen). All of them key their query on `[instanceId, "status"]` or `[instanceId, "namespaces"]`,
6
+ * and TanStack times `refetchInterval` PER OBSERVER: two observers of one key with two different
7
+ * intervals do not give each consumer its own poll rate, they refresh the shared row on the union
8
+ * of both cadences, so neither consumer gets the interval it declared and the shorter one sets the
9
+ * floor for both. One constant removes the possibility.
10
+ *
11
+ * Tune the number here, not per call site.
12
+ */
13
+ export declare const STATUS_POLL_MS = 15000;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Sample-graph manifest types (feature sample-graphs): the contract between the build
3
3
  * script (scripts/build-samples.ts, which writes public/samples/index.json) and the
4
- * Dashboard's Sample graphs section, which renders the card grid and runs the loader
4
+ * Samples screen, which renders the card grid and runs the loader
5
5
  * purely from this data. Adding a static sample is a script + manifest change — no UI
6
6
  * code.
7
7
  */
@@ -7,8 +7,9 @@
7
7
  * needed its own component would be a contract failure rather than a UI task, and the agent that
8
8
  * writes the fourth integration cannot write a React component for it anyway.
9
9
  *
10
- * There is no schedule, no run history and no saved job list here, because the runtime keeps none:
11
- * timing belongs to whoever wants the data, and a Studio-side copy would be a second home for a
12
- * decision this screen cannot judge. Submitting is a one-shot action.
10
+ * Submitting STARTS a run and does not wait for it: the runtime answers a run id, and this screen
11
+ * then watches that run - the phase it is in, and its report once it ends. That is not a run history
12
+ * (the boundary is on IntegrationRunState), so there is no schedule, no list of past runs and no
13
+ * saved job list here; timing belongs to whoever wants the data.
13
14
  */
14
15
  export declare function IntegrationsScreen(): import("react").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Samples (feature sample-graphs): the one-click demo gallery, promoted from the Dashboard
3
- * to its own rail entry so every card spans the full width and carries its "what you can
4
- * test" steps, with a tag bar to filter by capability. Namespace-scoped — a load replaces
2
+ * Samples (feature sample-graphs): the one-click demo gallery. It has its own rail entry so every
3
+ * card spans the full width and carries its "what you can test" steps, with a tag bar to filter
4
+ * by capability. Namespace-scoped - a load replaces
5
5
  * the active namespace's graph (SampleGraphsPanel owns the loader + typed-confirm wipe).
6
6
  */
7
7
  export declare function SamplesScreen(): import("react").JSX.Element;
@@ -199,12 +199,41 @@ export declare const DEFAULT_CANVAS_TOOLS_DRAFT: CanvasToolsDraft;
199
199
  /** One-shot navigation intent: "open Query with this index preselected" (cleared on consume). */
200
200
  export interface ScanPrefill {
201
201
  indexId: string;
202
+ /**
203
+ * A query vector to search WITH, in the bracketed form the vector box parses. Set by the
204
+ * "find similar" gesture, which reads it off the source element's own stored embedding: the
205
+ * search surface takes a vector, never an element id, so the element-as-query gesture is
206
+ * composed on this side rather than asked of the server.
207
+ */
208
+ vectorText?: string;
209
+ /**
210
+ * The element the vector came from, so it can be dropped from its own results. There is no
211
+ * self-exclusion anywhere in the engine or the REST contract, so an unfiltered search returns
212
+ * the source element at rank 1 every time.
213
+ */
214
+ sourceElementId?: number;
215
+ /**
216
+ * The source element's label, inherited as the search constraint. Not a convenience: several
217
+ * entity kinds embed as little more than their identifier, so an unconstrained similarity
218
+ * search over such a graph ranks identifier-shaped noise against real matches.
219
+ */
220
+ label?: string;
221
+ kind?: "any" | "vertex" | "edge";
202
222
  }
203
223
  export interface WorkspaceState {
204
224
  /** The Events panel's interest filter (feature studio-event-feed, see feedFilter.ts). */
205
225
  feedFilter: FeedFilterDraft;
206
226
  /** One-shot navigation intent: "open the Browser inspecting this element id". */
207
227
  inspectPrefill: number | null;
228
+ /**
229
+ * The integration identity whose run this instance is watching, or null.
230
+ *
231
+ * PERSISTED, unlike the one-shot prefills, and that is the point: a run outlives the request that
232
+ * started it and can take hours, so reopening the screen - or reloading the page - has to re-attach
233
+ * to it rather than lose it. The identity is enough to re-find the run, because the runtime keys its
234
+ * slot by exactly that.
235
+ */
236
+ integrationWatch: string | null;
208
237
  canvasNodes: Record<number, CanvasNode>;
209
238
  canvasEdges: Record<number, CanvasEdge>;
210
239
  styleConfig: StyleConfig;
@@ -240,6 +269,7 @@ export interface WorkspaceState {
240
269
  setScanPrefill: (prefill: ScanPrefill | null) => void;
241
270
  setFeedFilter: (patch: Partial<FeedFilterDraft>) => void;
242
271
  setInspectPrefill: (id: number | null) => void;
272
+ setIntegrationWatch: (instanceId: string | null) => void;
243
273
  }
244
274
  type WorkspaceStore = UseBoundStore<StoreApi<WorkspaceState>>;
245
275
  /**
@@ -4,8 +4,27 @@ import type { InstanceConfig } from "../instances/types";
4
4
  * consumer reads one cache row and rides its periodic refresh; /status is the cheap
5
5
  * discovery surface (available plugins + live index inventory — feature
6
6
  * studio-index-discovery), unlike the budgeted Graph-shape pass in graphShape.ts.
7
+ *
8
+ * Accepts null and then asks nothing: the shell-level readers (the durability banner, the
9
+ * first-run auto-show) render outside the connection gate, so "no instance yet" is a state they
10
+ * pass through rather than an assertion they can make.
11
+ *
12
+ * Pass poll: true to drive the shared row on a timer. Exactly one caller does - the app shell,
13
+ * on the same 15s cadence as its instance health probe - because the durability banner is a
14
+ * warning nobody goes looking for: it has to arrive while the operator is on some other screen.
15
+ * Every other observer rides that refresh through the shared cache row and asks for nothing.
16
+ *
17
+ * Polling implies `retry: 0`, matching the health probe, and that pairing is load-bearing rather
18
+ * than tidy: on a server that predates namespaces the bound view collapses to the raw instance, so
19
+ * this row and the probe become the SAME query key. react-query takes `retry` from whichever
20
+ * observer initiated the current fetch, so without this the probe's deliberate fail-fast became a
21
+ * coin flip against a default of three retries - and for the ~7s of backoff that won, a dead
22
+ * instance still read "online" with the nav unlocked. There is no point retrying a 15s poll anyway;
23
+ * the next tick is the retry.
7
24
  */
8
- export declare function useStatus(instance: InstanceConfig): import("@tanstack/react-query").UseQueryResult<NoInfer<import("../api/types").StatusREST | null>, Error>;
25
+ export declare function useStatus(instance: InstanceConfig | null, options?: {
26
+ poll?: boolean;
27
+ }): import("@tanstack/react-query").UseQueryResult<NoInfer<import("../api/types").StatusREST | null>, Error>;
9
28
  /**
10
29
  * The instance's configuration (features instance-config and writable-instance-config): the setting
11
30
  * inventory, the semantic providers and the observability posture behind the Connect Configuration
@@ -1,4 +1,4 @@
1
- import { m as s } from "./index-B9b5xEwe.js";
1
+ import { m as s } from "./index-CQF9rZdm.js";
2
2
  var c = Object.defineProperty, a = Object.getOwnPropertyDescriptor, p = Object.getOwnPropertyNames, g = Object.prototype.hasOwnProperty, l = (t, e, o, i) => {
3
3
  if (e && typeof e == "object" || typeof e == "function")
4
4
  for (let n of p(e))
@@ -1,4 +1,4 @@
1
- import { m as r } from "./index-B9b5xEwe.js";
1
+ import { m as r } from "./index-CQF9rZdm.js";
2
2
  var m = Object.defineProperty, c = Object.getOwnPropertyDescriptor, l = Object.getOwnPropertyNames, d = Object.prototype.hasOwnProperty, p = (t, e, o, i) => {
3
3
  if (e && typeof e == "object" || typeof e == "function")
4
4
  for (let n of l(e))
@@ -1,4 +1,4 @@
1
- import { m as l } from "./index-B9b5xEwe.js";
1
+ import { m as l } from "./index-CQF9rZdm.js";
2
2
  var i = Object.defineProperty, c = Object.getOwnPropertyDescriptor, u = Object.getOwnPropertyNames, s = Object.prototype.hasOwnProperty, d = (n, e, r, o) => {
3
3
  if (e && typeof e == "object" || typeof e == "function")
4
4
  for (let t of u(e))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fallen-8/studio",
3
- "version": "0.0.35",
3
+ "version": "0.0.36",
4
4
  "description": "F8 Studio - browser frontend for Fallen-8 instances, and its graph canvas as a standalone component",
5
5
  "license": "MIT",
6
6
  "author": "Henning Rauch",
@@ -1,13 +0,0 @@
1
- /**
2
- * Dashboard (FR-2/3/4): the status overview for the active namespace — vertex/edge counts
3
- * and memory, from /status. It is deliberately lean: the sample gallery, the persistence/
4
- * administration actions, the stored-query library, the plugin registry, and the instance
5
- * configuration (semantic providers, observability) each have their own home (Samples, Save
6
- * games, Query, Plugins, and the Connect Configuration section).
7
- *
8
- * On an empty, not-yet-dismissed namespace this is also the home of the first-run show
9
- * (feature studio-first-run): instead of three zeroed tiles a newcomer gets an animated,
10
- * read-only walkthrough that creates nothing. It is dismissed per namespace and re-armed the
11
- * moment the namespace is seen non-empty, so a returning user is never nagged.
12
- */
13
- export declare function DashboardScreen(): import("react").JSX.Element;