@fallen-8/studio 0.0.35 → 0.0.37

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 (50) hide show
  1. package/dist-lib/{Canvas3D-C5og4ZIQ.js → Canvas3D-CmDAo5BT.js} +1 -1
  2. package/dist-lib/{F8GraphCanvas-Db7vzDtJ.js → F8GraphCanvas-COQKIUas.js} +826 -812
  3. package/dist-lib/canvas.js +1 -1
  4. package/dist-lib/{cssMode-C_3o84wD.js → cssMode-Cm-p9yGb.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-DU-Ctapi.js} +1 -1
  8. package/dist-lib/{handlebars-CpHr0qpx.js → handlebars-BsqZtC5a.js} +1 -1
  9. package/dist-lib/{html-Bug9RG5l.js → html-CUyknR5b.js} +1 -1
  10. package/dist-lib/{htmlMode-Ml4537rc.js → htmlMode-DjyPljE2.js} +1 -1
  11. package/dist-lib/{index-B9b5xEwe.js → index-BQbFjItv.js} +26366 -25874
  12. package/dist-lib/{javascript-DvuxCyB4.js → javascript-CVQBymBa.js} +1 -1
  13. package/dist-lib/{jsonMode-BU3w8kmM.js → jsonMode-B3hcJ0l3.js} +1 -1
  14. package/dist-lib/{liquid-r_J0hX64.js → liquid-DLrt4Cls.js} +1 -1
  15. package/dist-lib/{mdx-5vg3Qy8b.js → mdx-DePkemui.js} +1 -1
  16. package/dist-lib/{python-DlLCDuTf.js → python-CUe0bWsE.js} +1 -1
  17. package/dist-lib/{razor-D-OmEXY0.js → razor-DD_zUh3z.js} +1 -1
  18. package/dist-lib/{tsMode-Dophy2cR.js → tsMode-Ae3UtOmp.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 +2 -12
  24. package/dist-lib/types/app/routes.d.ts +7 -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/components/StoredQueriesPanel.d.ts +16 -11
  30. package/dist-lib/types/components/StoredQueryControls.d.ts +3 -4
  31. package/dist-lib/types/delegate/nl/useNlRun.d.ts +7 -0
  32. package/dist-lib/types/firstrun/FirstRunOverlay.d.ts +37 -4
  33. package/dist-lib/types/firstrun/FirstRunShow.d.ts +4 -4
  34. package/dist-lib/types/instances/registry.d.ts +8 -2
  35. package/dist-lib/types/lib/embeddingProperties.d.ts +22 -0
  36. package/dist-lib/types/lib/findSimilar.d.ts +21 -0
  37. package/dist-lib/types/lib/pollIntervals.d.ts +13 -0
  38. package/dist-lib/types/lib/samples.d.ts +1 -1
  39. package/dist-lib/types/lib/storedQueries.d.ts +10 -0
  40. package/dist-lib/types/screens/IntegrationsScreen.d.ts +4 -3
  41. package/dist-lib/types/screens/PathScreen.d.ts +3 -0
  42. package/dist-lib/types/screens/SamplesScreen.d.ts +3 -3
  43. package/dist-lib/types/screens/TraverseScreen.d.ts +1 -0
  44. package/dist-lib/types/state/instanceStore.d.ts +51 -0
  45. package/dist-lib/types/state/status.d.ts +20 -1
  46. package/dist-lib/{typescript-oqqsXxrY.js → typescript-LNGesWYR.js} +1 -1
  47. package/dist-lib/{xml-pmqwhaBA.js → xml-BuD_-6ib.js} +1 -1
  48. package/dist-lib/{yaml-DN1I59zm.js → yaml-DCzPbyTS.js} +1 -1
  49. package/package.json +1 -1
  50. package/dist-lib/types/screens/DashboardScreen.d.ts +0 -13
@@ -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;
@@ -5,5 +5,8 @@
5
5
  * editor - /path swallows compile errors, so an empty result here is "no paths found",
6
6
  * never an error (FR-13). Filters come from inline fragments or a stored query — the
7
7
  * source toggle keeps the two mutually exclusive (concept spec §5.1).
8
+ *
9
+ * Rendered as the "Path finding" tab of the Traverse screen (feature studio-traverse-merge),
10
+ * which also owns the stored-query library this screen used to host at its foot.
8
11
  */
9
12
  export declare function PathScreen(): 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;
@@ -0,0 +1 @@
1
+ export declare function TraverseScreen(): import("react").JSX.Element;
@@ -67,6 +67,19 @@ export interface ResultSet {
67
67
  }
68
68
  /** Where a path/subgraph run takes its fragments from (concept spec §5.1). */
69
69
  export type FilterSource = "inline" | "stored";
70
+ /**
71
+ * The tabs of the merged Traverse screen (feature studio-traverse-merge), in strip order.
72
+ * ONE home for the ids: the tab strip renders them, the route validates `?tab=` against them,
73
+ * and the persisted `traverseTab` remembers the last one per instance-and-namespace.
74
+ */
75
+ export declare const TRAVERSE_TABS: readonly ["path", "subgraph", "stored"];
76
+ export type TraverseTab = (typeof TRAVERSE_TABS)[number];
77
+ /** The tab a fresh workspace opens on: path finding is the more frequent scenario. */
78
+ export declare const DEFAULT_TRAVERSE_TAB: TraverseTab;
79
+ /** Guard for the two untrusted sources of a tab id: the `?tab=` search param and storage. */
80
+ export declare const isTraverseTab: (value: unknown) => value is TraverseTab;
81
+ /** The scenario tab a stored query of this kind belongs to (its `kind` is `string | null`). */
82
+ export declare const traverseTabForKind: (kind: string | null | undefined) => TraverseTab;
70
83
  export interface PathDraft {
71
84
  from: string;
72
85
  to: string;
@@ -199,12 +212,41 @@ export declare const DEFAULT_CANVAS_TOOLS_DRAFT: CanvasToolsDraft;
199
212
  /** One-shot navigation intent: "open Query with this index preselected" (cleared on consume). */
200
213
  export interface ScanPrefill {
201
214
  indexId: string;
215
+ /**
216
+ * A query vector to search WITH, in the bracketed form the vector box parses. Set by the
217
+ * "find similar" gesture, which reads it off the source element's own stored embedding: the
218
+ * search surface takes a vector, never an element id, so the element-as-query gesture is
219
+ * composed on this side rather than asked of the server.
220
+ */
221
+ vectorText?: string;
222
+ /**
223
+ * The element the vector came from, so it can be dropped from its own results. There is no
224
+ * self-exclusion anywhere in the engine or the REST contract, so an unfiltered search returns
225
+ * the source element at rank 1 every time.
226
+ */
227
+ sourceElementId?: number;
228
+ /**
229
+ * The source element's label, inherited as the search constraint. Not a convenience: several
230
+ * entity kinds embed as little more than their identifier, so an unconstrained similarity
231
+ * search over such a graph ranks identifier-shaped noise against real matches.
232
+ */
233
+ label?: string;
234
+ kind?: "any" | "vertex" | "edge";
202
235
  }
203
236
  export interface WorkspaceState {
204
237
  /** The Events panel's interest filter (feature studio-event-feed, see feedFilter.ts). */
205
238
  feedFilter: FeedFilterDraft;
206
239
  /** One-shot navigation intent: "open the Browser inspecting this element id". */
207
240
  inspectPrefill: number | null;
241
+ /**
242
+ * The integration identity whose run this instance is watching, or null.
243
+ *
244
+ * PERSISTED, unlike the one-shot prefills, and that is the point: a run outlives the request that
245
+ * started it and can take hours, so reopening the screen - or reloading the page - has to re-attach
246
+ * to it rather than lose it. The identity is enough to re-find the run, because the runtime keys its
247
+ * slot by exactly that.
248
+ */
249
+ integrationWatch: string | null;
208
250
  canvasNodes: Record<number, CanvasNode>;
209
251
  canvasEdges: Record<number, CanvasEdge>;
210
252
  styleConfig: StyleConfig;
@@ -217,6 +259,13 @@ export interface WorkspaceState {
217
259
  browserDraft: BrowserDraft;
218
260
  analyticsDraft: AnalyticsDraft;
219
261
  canvasToolsDraft: CanvasToolsDraft;
262
+ /**
263
+ * The Traverse tab last left open (feature studio-traverse-merge). Persisted rather than
264
+ * URL-only because switching namespace or instance rewrites the leaf WITHOUT the search
265
+ * param (see app/scopedRoute.ts), and being dumped on another tab by a context switch is
266
+ * the same "lose what you were looking at" the switchers exist to avoid.
267
+ */
268
+ traverseTab: TraverseTab;
220
269
  scanPrefill: ScanPrefill | null;
221
270
  mergeIntoCanvas: (vertices: VertexREST[], edges: EdgeREST[]) => void;
222
271
  removeFromCanvas: (kind: "node" | "edge", id: number) => void;
@@ -237,9 +286,11 @@ export interface WorkspaceState {
237
286
  setAnalyticsDraft: (patch: Partial<AnalyticsDraft>) => void;
238
287
  resetAnalyticsDraft: () => void;
239
288
  setCanvasToolsDraft: (patch: Partial<CanvasToolsDraft>) => void;
289
+ setTraverseTab: (tab: TraverseTab) => void;
240
290
  setScanPrefill: (prefill: ScanPrefill | null) => void;
241
291
  setFeedFilter: (patch: Partial<FeedFilterDraft>) => void;
242
292
  setInspectPrefill: (id: number | null) => void;
293
+ setIntegrationWatch: (instanceId: string | null) => void;
243
294
  }
244
295
  type WorkspaceStore = UseBoundStore<StoreApi<WorkspaceState>>;
245
296
  /**
@@ -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-BQbFjItv.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-BQbFjItv.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-BQbFjItv.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.37",
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;