@feltdb/core 0.4.4 → 0.4.5

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 (121) hide show
  1. package/README.md +13 -0
  2. package/dist/migrate/analyzer/index.d.ts +2 -0
  3. package/dist/migrate/analyzer/index.js +34 -0
  4. package/dist/migrate/benchmark/index.d.ts +13 -0
  5. package/dist/migrate/benchmark/index.js +8 -0
  6. package/dist/migrate/capability-gate/index.d.ts +3 -0
  7. package/dist/migrate/capability-gate/index.js +3 -0
  8. package/dist/migrate/classifier/index.d.ts +3 -0
  9. package/dist/migrate/classifier/index.js +53 -0
  10. package/dist/migrate/cli/index.d.ts +2 -0
  11. package/dist/migrate/cli/index.js +201 -0
  12. package/dist/migrate/domain-model/index.d.ts +2 -0
  13. package/dist/migrate/domain-model/index.js +4 -0
  14. package/dist/migrate/generator/index.d.ts +2 -0
  15. package/dist/migrate/generator/index.js +21 -0
  16. package/dist/migrate/index.d.ts +16 -0
  17. package/dist/migrate/index.js +16 -0
  18. package/dist/migrate/measurement/index.d.ts +7 -0
  19. package/dist/migrate/measurement/index.js +1 -0
  20. package/dist/migrate/migrator/index.d.ts +2 -0
  21. package/dist/migrate/migrator/index.js +35 -0
  22. package/dist/migrate/planner/index.d.ts +2 -0
  23. package/dist/migrate/planner/index.js +12 -0
  24. package/dist/migrate/prover/index.d.ts +9 -0
  25. package/dist/migrate/prover/index.js +3 -0
  26. package/dist/migrate/reporter/index.d.ts +4 -0
  27. package/dist/migrate/reporter/index.js +1 -0
  28. package/dist/migrate/runtime-dependencies/index.d.ts +13 -0
  29. package/dist/migrate/runtime-dependencies/index.js +112 -0
  30. package/dist/migrate/state-contract/index.d.ts +13 -0
  31. package/dist/migrate/state-contract/index.js +49 -0
  32. package/dist/migrate/types/index.d.ts +228 -0
  33. package/dist/migrate/types/index.js +1 -0
  34. package/dist/migrate/ui-wiring/index.d.ts +18 -0
  35. package/dist/migrate/ui-wiring/index.js +2 -0
  36. package/dist/migrate/util.d.ts +5 -0
  37. package/dist/migrate/util.js +10 -0
  38. package/dist/react/index.d.ts +7 -0
  39. package/dist/react/index.d.ts.map +1 -0
  40. package/dist/react/index.js +6 -0
  41. package/dist/react/useCapability.d.ts +11 -0
  42. package/dist/react/useCapability.d.ts.map +1 -0
  43. package/dist/react/useCapability.js +30 -0
  44. package/dist/react/useCollection.d.ts +17 -0
  45. package/dist/react/useCollection.d.ts.map +1 -0
  46. package/dist/react/useCollection.js +69 -0
  47. package/dist/react/useFeltDB.d.ts +136 -0
  48. package/dist/react/useFeltDB.d.ts.map +1 -0
  49. package/dist/react/useFeltDB.js +350 -0
  50. package/dist/studio/.gitkeep +1 -0
  51. package/dist/studio/KeyManagementPanel-BOvWTRyH.js +246 -0
  52. package/dist/studio/app.d.ts +10 -0
  53. package/dist/studio/app.d.ts.map +1 -0
  54. package/dist/studio/components/AgentExplorer.d.ts +9 -0
  55. package/dist/studio/components/AgentExplorer.d.ts.map +1 -0
  56. package/dist/studio/components/ApplicationDesigner.d.ts +11 -0
  57. package/dist/studio/components/ApplicationDesigner.d.ts.map +1 -0
  58. package/dist/studio/components/CapabilityExplorer.d.ts +9 -0
  59. package/dist/studio/components/CapabilityExplorer.d.ts.map +1 -0
  60. package/dist/studio/components/ConflictExplorer.d.ts +9 -0
  61. package/dist/studio/components/ConflictExplorer.d.ts.map +1 -0
  62. package/dist/studio/components/ExecutionViewer.d.ts +9 -0
  63. package/dist/studio/components/ExecutionViewer.d.ts.map +1 -0
  64. package/dist/studio/components/GlobalSearch.d.ts +10 -0
  65. package/dist/studio/components/GlobalSearch.d.ts.map +1 -0
  66. package/dist/studio/components/HealthCenter.d.ts +9 -0
  67. package/dist/studio/components/HealthCenter.d.ts.map +1 -0
  68. package/dist/studio/components/KeyManagementPanel.d.ts +9 -0
  69. package/dist/studio/components/KeyManagementPanel.d.ts.map +1 -0
  70. package/dist/studio/components/KeyManagementPanel.js +2 -0
  71. package/dist/studio/components/ManagedInstancePanel.d.ts +4 -0
  72. package/dist/studio/components/ManagedInstancePanel.d.ts.map +1 -0
  73. package/dist/studio/components/ManagedInstancePanel.js +281 -0
  74. package/dist/studio/components/OperationsExplorer.d.ts +10 -0
  75. package/dist/studio/components/OperationsExplorer.d.ts.map +1 -0
  76. package/dist/studio/components/OverviewDashboard.d.ts +8 -0
  77. package/dist/studio/components/OverviewDashboard.d.ts.map +1 -0
  78. package/dist/studio/components/PeerMap.d.ts +8 -0
  79. package/dist/studio/components/PeerMap.d.ts.map +1 -0
  80. package/dist/studio/components/ProvenanceViewer.d.ts +11 -0
  81. package/dist/studio/components/ProvenanceViewer.d.ts.map +1 -0
  82. package/dist/studio/components/ReferenceExplorer.d.ts +10 -0
  83. package/dist/studio/components/ReferenceExplorer.d.ts.map +1 -0
  84. package/dist/studio/components/SettingsPanel.d.ts +7 -0
  85. package/dist/studio/components/SettingsPanel.d.ts.map +1 -0
  86. package/dist/studio/components/StateExplorer.d.ts +10 -0
  87. package/dist/studio/components/StateExplorer.d.ts.map +1 -0
  88. package/dist/studio/components/WorkflowVisualizer.d.ts +9 -0
  89. package/dist/studio/components/WorkflowVisualizer.d.ts.map +1 -0
  90. package/dist/studio/components/index.d.ts +24 -0
  91. package/dist/studio/components/index.d.ts.map +1 -0
  92. package/dist/studio/components/index.js +4 -0
  93. package/dist/studio/components-BRYUceo9.js +1711 -0
  94. package/dist/studio/hooks/index.d.ts +37 -0
  95. package/dist/studio/hooks/index.d.ts.map +1 -0
  96. package/dist/studio/index.d.ts +27 -0
  97. package/dist/studio/index.d.ts.map +1 -0
  98. package/dist/studio/index.html +30 -0
  99. package/dist/studio/index.js +236 -0
  100. package/dist/studio/main.d.ts +1 -0
  101. package/dist/studio/main.d.ts.map +1 -0
  102. package/dist/studio/studio.css +2 -0
  103. package/dist/studio/types/index.d.ts +133 -0
  104. package/dist/studio/types/index.d.ts.map +1 -0
  105. package/dist/studio/utils/api.d.ts +27 -0
  106. package/dist/studio/utils/api.d.ts.map +1 -0
  107. package/dist/studio/utils/format.d.ts +24 -0
  108. package/dist/studio/utils/format.d.ts.map +1 -0
  109. package/dist/studio/utils/index.d.ts +7 -0
  110. package/dist/studio/utils/index.d.ts.map +1 -0
  111. package/dist/studio/utils/index.js +75 -0
  112. package/dist/studio/utils/managed-instance.d.ts +40 -0
  113. package/dist/studio/utils/managed-instance.d.ts.map +1 -0
  114. package/dist/studio/utils/managed-instance.js +51 -0
  115. package/dist/studio-app/.gitkeep +1 -0
  116. package/dist/studio-app/assets/feltdb_wasm-BXMn9UxO.js +1 -0
  117. package/dist/studio-app/assets/feltdb_wasm_bg-bYYbZeRM.wasm +0 -0
  118. package/dist/studio-app/assets/index-B-lZjdtI.js +28 -0
  119. package/dist/studio-app/assets/index-CB-Eed9V.css +1 -0
  120. package/dist/studio-app/index.html +3 -0
  121. package/package.json +33 -4
@@ -0,0 +1,37 @@
1
+ import { StateFirstDB, RuntimeDiagnostics, FlowSpec } from '@feltdb/core';
2
+ import { StudioContext, DashboardStats } from '../types';
3
+ export declare function useFeltDB(db: StateFirstDB | null, namespace?: string): StudioContext | null;
4
+ /**
5
+ * useDashboardStats Hook - Get runtime statistics
6
+ */
7
+ export declare function useDashboardStats(db: StateFirstDB | null, model?: FlowSpec | null, namespace?: string): DashboardStats | null;
8
+ /**
9
+ * useRuntimeDiagnostics Hook - Get health status
10
+ */
11
+ export declare function useRuntimeDiagnostics(db: StateFirstDB | null): {
12
+ diagnostics: RuntimeDiagnostics | null;
13
+ loading: boolean;
14
+ error: string | null;
15
+ refresh: () => Promise<void>;
16
+ };
17
+ /**
18
+ * useCollection Hook - Subscribe to collection changes
19
+ */
20
+ export declare function useCollection<T>(db: StateFirstDB | null, collectionName: string): {
21
+ items: T[];
22
+ loading: boolean;
23
+ error: string | null;
24
+ };
25
+ /**
26
+ * usePeers Hook - Monitor connected peers
27
+ */
28
+ export declare function usePeers(db: StateFirstDB | null): string[];
29
+ /**
30
+ * useProvenance Hook - Get provenance graph
31
+ */
32
+ export declare function useProvenance(db: StateFirstDB | null, reference: string): {
33
+ provenance: any;
34
+ loading: boolean;
35
+ error: string | null;
36
+ };
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE9D,wBAAgB,SAAS,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,SAAS,SAAY,GAAG,aAAa,GAAG,IAAI,CA2B9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,KAAK,GAAE,QAAQ,GAAG,IAAW,EAAE,SAAS,SAAY,GAAG,cAAc,GAAG,IAAI,CA0CtI;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;;;;;EA0B5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,cAAc,EAAE,MAAM;;;;EA4B/E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,YAyB/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM;;;;EA6BvE"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * FeltDB Studio - Main Export
3
+ *
4
+ * Interactive browser-based developer interface for FeltDB
5
+ */
6
+ export * from './app';
7
+ export * from './components';
8
+ export * from './hooks';
9
+ export * from './types';
10
+ export * from './utils';
11
+ export { StudioApp } from './app';
12
+ export { OverviewDashboard } from './components/OverviewDashboard';
13
+ export { StateExplorer } from './components/StateExplorer';
14
+ export { ReferenceExplorer } from './components/ReferenceExplorer';
15
+ export { OperationsExplorer } from './components/OperationsExplorer';
16
+ export { PeerMap } from './components/PeerMap';
17
+ export { CapabilityExplorer } from './components/CapabilityExplorer';
18
+ export { ExecutionViewer } from './components/ExecutionViewer';
19
+ export { ConflictExplorer } from './components/ConflictExplorer';
20
+ export { WorkflowVisualizer } from './components/WorkflowVisualizer';
21
+ export { AgentExplorer } from './components/AgentExplorer';
22
+ export { ProvenanceViewer } from './components/ProvenanceViewer';
23
+ export { HealthCenter } from './components/HealthCenter';
24
+ export { SettingsPanel } from './components/SettingsPanel';
25
+ export { GlobalSearch } from './components/GlobalSearch';
26
+ export { ApplicationDesigner } from './components/ApplicationDesigner';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,30 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/feltdb-icon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>FeltDB Studio</title>
8
+ <style>
9
+ * {
10
+ margin: 0;
11
+ padding: 0;
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ html, body {
16
+ width: 100%;
17
+ height: 100%;
18
+ }
19
+
20
+ #root {
21
+ width: 100%;
22
+ height: 100%;
23
+ }
24
+ </style>
25
+ </head>
26
+ <body>
27
+ <div id="root"></div>
28
+ <script type="module" src="/src/main.tsx"></script>
29
+ </body>
30
+ </html>
@@ -0,0 +1,236 @@
1
+ import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, n as d, o as f, p, r as m, s as h, t as g, u as _, v, x as y, y as b } from "./components-BRYUceo9.js";
2
+ import { t as x } from "./KeyManagementPanel-BOvWTRyH.js";
3
+ import { ManagedInstanceUtil as S } from "./utils/managed-instance.js";
4
+ import { ManagedInstancePanel as C } from "./components/ManagedInstancePanel.js";
5
+ import { capitalize as w, fetchDashboardStats as T, fetchDiagnostics as E, fetchPeers as D, fetchProvenance as O, formatBytes as k, formatReference as A, formatRelativeTime as j, formatTime as M, searchReferences as N } from "./utils/index.js";
6
+ import { useEffect as P, useState as F } from "react";
7
+ import { BrowserRouter as I, Link as L, Route as R, Routes as z } from "react-router-dom";
8
+ import { jsx as B, jsxs as V } from "react/jsx-runtime";
9
+ import { parseFlowSpec as H } from "@feltdb/core";
10
+ //#region src/app.tsx
11
+ function U({ db: s, remoteUrl: b, namespace: S = "default" }) {
12
+ let [C, w] = F(null), T = e(s || null, S), E = o(s || null, C, S), { diagnostics: D } = n(s || null), O = v(s || null), [k, A] = F();
13
+ return P(() => {
14
+ let e = !0;
15
+ return fetch("/_feltdb/project", { cache: "no-store" }).then(async (t) => {
16
+ if (!t.ok) throw Error("No project model endpoint");
17
+ let n = await t.json();
18
+ e && w(H(n.source));
19
+ }).catch(async () => {
20
+ let t = s ? await s.collection("_flow_apps").all() : [];
21
+ e && t[0]?.spec && w(t[0].spec);
22
+ }), () => {
23
+ e = !1;
24
+ };
25
+ }, [s]), /* @__PURE__ */ B(I, { children: /* @__PURE__ */ V("div", {
26
+ className: "studio-app",
27
+ children: [/* @__PURE__ */ V("nav", {
28
+ className: "studio-nav",
29
+ children: [
30
+ /* @__PURE__ */ V("div", {
31
+ className: "nav-header",
32
+ children: [/* @__PURE__ */ B("h1", { children: "FeltDB Studio" }), T && /* @__PURE__ */ B("div", {
33
+ className: "instance-info",
34
+ children: T.namespace
35
+ })]
36
+ }),
37
+ /* @__PURE__ */ B("div", {
38
+ className: "nav-search",
39
+ children: /* @__PURE__ */ B(d, {
40
+ db: s,
41
+ model: C
42
+ })
43
+ }),
44
+ /* @__PURE__ */ V("ul", {
45
+ className: "nav-menu",
46
+ children: [
47
+ /* @__PURE__ */ B("li", {
48
+ className: "nav-section",
49
+ children: "Design"
50
+ }),
51
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
52
+ to: "/",
53
+ children: "Application"
54
+ }) }),
55
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
56
+ to: "/capabilities",
57
+ children: "Capabilities"
58
+ }) }),
59
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
60
+ to: "/workflows",
61
+ children: "Workflows"
62
+ }) }),
63
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
64
+ to: "/agents",
65
+ children: "Agents"
66
+ }) }),
67
+ /* @__PURE__ */ B("li", {
68
+ className: "nav-section",
69
+ children: "Observe"
70
+ }),
71
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
72
+ to: "/overview",
73
+ children: "Overview"
74
+ }) }),
75
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
76
+ to: "/state",
77
+ children: "State"
78
+ }) }),
79
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
80
+ to: "/references",
81
+ children: "References"
82
+ }) }),
83
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
84
+ to: "/operations",
85
+ children: "Operations"
86
+ }) }),
87
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
88
+ to: "/peers",
89
+ children: "Peers"
90
+ }) }),
91
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
92
+ to: "/executions",
93
+ children: "Executions"
94
+ }) }),
95
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
96
+ to: "/provenance",
97
+ children: "Provenance"
98
+ }) }),
99
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
100
+ to: "/conflicts",
101
+ children: "Conflicts"
102
+ }) }),
103
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
104
+ to: "/health",
105
+ children: "Health"
106
+ }) }),
107
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
108
+ to: "/settings",
109
+ children: "Settings"
110
+ }) }),
111
+ /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
112
+ to: "/api-keys",
113
+ children: "API Keys"
114
+ }) })
115
+ ]
116
+ })
117
+ ]
118
+ }), /* @__PURE__ */ B("main", {
119
+ className: "studio-content",
120
+ children: /* @__PURE__ */ V(z, { children: [
121
+ /* @__PURE__ */ B(R, {
122
+ path: "/",
123
+ element: /* @__PURE__ */ B(g, {
124
+ db: s,
125
+ namespace: S,
126
+ projectSpec: C,
127
+ onSpecChange: w
128
+ })
129
+ }),
130
+ /* @__PURE__ */ B(R, {
131
+ path: "/overview",
132
+ element: /* @__PURE__ */ B(y, { stats: E })
133
+ }),
134
+ /* @__PURE__ */ B(R, {
135
+ path: "/state",
136
+ element: /* @__PURE__ */ B(u, {
137
+ db: s,
138
+ model: C,
139
+ namespace: S
140
+ })
141
+ }),
142
+ /* @__PURE__ */ B(R, {
143
+ path: "/references",
144
+ element: /* @__PURE__ */ B(p, {
145
+ db: s,
146
+ model: C,
147
+ namespace: S
148
+ })
149
+ }),
150
+ /* @__PURE__ */ B(R, {
151
+ path: "/operations",
152
+ element: /* @__PURE__ */ B(a, {
153
+ db: s,
154
+ model: C,
155
+ namespace: S
156
+ })
157
+ }),
158
+ /* @__PURE__ */ B(R, {
159
+ path: "/peers",
160
+ element: /* @__PURE__ */ B(i, {
161
+ peers: O,
162
+ localInstance: T?.instanceId
163
+ })
164
+ }),
165
+ /* @__PURE__ */ B(R, {
166
+ path: "/capabilities",
167
+ element: /* @__PURE__ */ B(_, {
168
+ db: s,
169
+ model: C
170
+ })
171
+ }),
172
+ /* @__PURE__ */ B(R, {
173
+ path: "/executions",
174
+ element: /* @__PURE__ */ B(l, {
175
+ db: s,
176
+ model: C
177
+ })
178
+ }),
179
+ /* @__PURE__ */ B(R, {
180
+ path: "/workflows",
181
+ element: /* @__PURE__ */ B(h, {
182
+ db: s,
183
+ model: C
184
+ })
185
+ }),
186
+ /* @__PURE__ */ B(R, {
187
+ path: "/agents",
188
+ element: /* @__PURE__ */ B(f, {
189
+ db: s,
190
+ model: C
191
+ })
192
+ }),
193
+ /* @__PURE__ */ B(R, {
194
+ path: "/provenance",
195
+ element: /* @__PURE__ */ B(t, {
196
+ db: s,
197
+ model: C,
198
+ namespace: S,
199
+ reference: k
200
+ })
201
+ }),
202
+ /* @__PURE__ */ B(R, {
203
+ path: "/conflicts",
204
+ element: /* @__PURE__ */ B(r, {
205
+ db: s,
206
+ diagnostics: D
207
+ })
208
+ }),
209
+ /* @__PURE__ */ B(R, {
210
+ path: "/health",
211
+ element: /* @__PURE__ */ B(c, {
212
+ diagnostics: D,
213
+ model: C
214
+ })
215
+ }),
216
+ /* @__PURE__ */ B(R, {
217
+ path: "/settings",
218
+ element: /* @__PURE__ */ B(m, { db: s })
219
+ }),
220
+ /* @__PURE__ */ B(R, {
221
+ path: "/api-keys",
222
+ element: /* @__PURE__ */ V("div", {
223
+ style: { padding: "2rem" },
224
+ children: [/* @__PURE__ */ B("h1", { children: "API Key Management" }), /* @__PURE__ */ B(x, {
225
+ apiUrl: b || "http://localhost:8080",
226
+ token: "",
227
+ namespace: S
228
+ })]
229
+ })
230
+ })
231
+ ] })
232
+ })]
233
+ }) });
234
+ }
235
+ //#endregion
236
+ export { f as AgentExplorer, g as ApplicationDesigner, _ as CapabilityExplorer, r as ConflictExplorer, l as ExecutionViewer, d as GlobalSearch, c as HealthCenter, x as KeyManagementPanel, C as ManagedInstancePanel, S as ManagedInstanceUtil, a as OperationsExplorer, y as OverviewDashboard, i as PeerMap, t as ProvenanceViewer, p as ReferenceExplorer, m as SettingsPanel, u as StateExplorer, U as StudioApp, h as WorkflowVisualizer, w as capitalize, T as fetchDashboardStats, E as fetchDiagnostics, D as fetchPeers, O as fetchProvenance, k as formatBytes, A as formatReference, j as formatRelativeTime, M as formatTime, N as searchReferences, s as useCollection, o as useDashboardStats, e as useFeltDB, v as usePeers, b as useProvenance, n as useRuntimeDiagnostics };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ ._panel_1cbba_1{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:2rem}._header_1cbba_8{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;display:flex}._header_1cbba_8 h2{color:var(--text-primary);margin:0;font-size:1.5rem}._createButton_1cbba_23{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:4px;padding:.5rem 1rem;font-weight:600;transition:background-color .2s}._createButton_1cbba_23:hover{background:var(--accent-hover)}._error_1cbba_38{background:var(--error-bg);border:1px solid var(--error-border);color:var(--error-text);border-radius:4px;margin-bottom:1rem;padding:1rem}._createForm_1cbba_47{background:var(--surface-alt);border:1px solid var(--border);border-radius:4px;margin-bottom:2rem;padding:1.5rem}._formGroup_1cbba_55{margin-bottom:1.5rem}._formGroup_1cbba_55 label{color:var(--text-primary);margin-bottom:.5rem;font-weight:600;display:block}._formGroup_1cbba_55 input[type=text]{border:1px solid var(--border);background:var(--input-bg);width:100%;color:var(--text-primary);border-radius:4px;padding:.5rem;font-family:inherit}._scopeList_1cbba_76{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;display:grid}._scopeCheckbox_1cbba_82{cursor:pointer;color:var(--text-primary);align-items:center;display:flex}._scopeCheckbox_1cbba_82 input{cursor:pointer;margin-right:.5rem}._submitButton_1cbba_94{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:4px;width:100%;padding:.75rem 1.5rem;font-weight:600}._submitButton_1cbba_94:hover{background:var(--accent-hover)}._empty_1cbba_109{text-align:center;color:var(--text-secondary);background:var(--surface-alt);border-radius:4px;padding:2rem}._keysList_1cbba_117{flex-direction:column;gap:1rem;display:flex}._keyCard_1cbba_123{border:1px solid var(--border);background:var(--surface-alt);border-radius:4px;padding:1.5rem;transition:border-color .2s}._keyCard_1cbba_123:hover{border-color:var(--accent)}._keyHeader_1cbba_135{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;margin-bottom:1rem;padding-bottom:1rem;display:flex}._keyHeader_1cbba_135 h3{color:var(--text-primary);margin:0 0 .25rem;font-size:1.1rem}._namespace_1cbba_150{color:var(--text-secondary);margin:0;font-size:.85rem}._status_1cbba_156{border-radius:12px;padding:.25rem .75rem;font-size:.85rem;font-weight:600}._status_1cbba_156._active_1cbba_163{background:var(--success-bg);color:var(--success-text)}._status_1cbba_156._expired_1cbba_168{background:var(--warning-bg);color:var(--warning-text)}._keyDetails_1cbba_173{gap:1rem;margin-bottom:1rem;display:grid}._detail_1cbba_179{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}._detail_1cbba_179 strong{color:var(--text-primary)}._detail_1cbba_179 span,._detail_1cbba_179 code{color:var(--text-secondary)}._detail_1cbba_179 code{background:var(--code-bg);border-radius:3px;padding:.25rem .5rem;font-family:monospace;font-size:.9rem}._copyBtn_1cbba_203{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:3px;padding:.25rem .5rem;font-size:.85rem}._copyBtn_1cbba_203:hover{background:var(--accent-hover)}._daysLeft_1cbba_217{color:var(--warning-text);font-size:.85rem;font-weight:600}._scopes_1cbba_223{margin-top:.75rem}._scopeTags_1cbba_227{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}._scopeTag_1cbba_227{background:var(--tag-bg);color:var(--tag-text);border-radius:12px;padding:.25rem .75rem;font-family:monospace;font-size:.85rem}._keyActions_1cbba_243{border-top:1px solid var(--border);gap:.5rem;padding-top:1rem;display:flex}._revokeBtn_1cbba_250{background:var(--error-bg);color:var(--error-text);border:1px solid var(--error-border);cursor:pointer;border-radius:4px;padding:.5rem 1rem;font-weight:600;transition:background-color .2s}._revokeBtn_1cbba_250:hover{background:var(--error-hover-bg)}._info_1cbba_265{background:var(--info-bg);color:var(--text-secondary);border-radius:4px;margin-top:2rem;padding:1rem;font-size:.9rem}._info_1cbba_265 p{margin:0}:root{--surface:#fff;--surface-alt:#f5f5f5;--text-primary:#000;--text-secondary:#666;--border:#e0e0e0;--accent:#007bff;--accent-hover:#0056b3;--error-bg:#f8d7da;--error-border:#f5c6cb;--error-text:#721c24;--error-hover-bg:#f5c6cb;--success-bg:#d4edda;--success-text:#155724;--warning-bg:#fff3cd;--warning-text:#856404;--info-bg:#e2e3e5;--input-bg:#fff;--code-bg:#f4f4f4;--tag-bg:#e9ecef;--tag-text:#495057}@media (prefers-color-scheme:dark){:root{--surface:#1e1e1e;--surface-alt:#2d2d2d;--text-primary:#fff;--text-secondary:#b0b0b0;--border:#404040;--accent:#0d6efd;--accent-hover:#0a58ca;--error-bg:#3d1f1f;--error-border:#664141;--error-text:#f8b7bc;--error-hover-bg:#4a2828;--success-bg:#1f3f1f;--success-text:#7ddc7d;--warning-bg:#3f3f1f;--warning-text:#ffdd57;--info-bg:#2d2d3d;--input-bg:#2d2d2d;--code-bg:#2d2d2d;--tag-bg:#3d3d4d;--tag-text:#b0b0b0}}.studio-app{color:#333;background:#f5f5f5;height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;display:flex}.studio-nav{color:#fff;background:#1a1a1a;border-right:1px solid #333;width:250px;padding:20px;overflow-y:auto}.nav-header h1{margin:0 0 30px;font-size:18px;font-weight:600}.instance-info{color:#999;border-bottom:1px solid #333;margin-top:-20px;margin-bottom:20px;padding-bottom:10px;font-size:12px}.nav-search{margin-bottom:20px}.nav-search .search-input{color:#fff;background:#2a2a2a;border:1px solid #444;border-radius:4px;width:100%;padding:8px;font-size:12px}.nav-menu{margin:0;padding:0;list-style:none}.nav-menu li{margin-bottom:8px}.nav-menu .nav-section{color:#71717a;letter-spacing:.14em;text-transform:uppercase;margin:22px 14px 7px;font-size:10px;font-weight:800}.application-designer{--ink:#17211b;--muted:#68756d;--line:#dce4de;--paper:#fbfcf9;min-height:100%;color:var(--ink)}.designer-header{justify-content:space-between;align-items:flex-end;gap:24px;padding:8px 4px 22px;display:flex}.designer-header h1{letter-spacing:-.03em;font-family:Georgia,serif;font-size:34px}.designer-header p{color:var(--muted);margin-top:5px}.eyebrow{color:#287052;letter-spacing:.18em;text-transform:uppercase;font-size:10px;font-weight:800}.designer-actions{flex-wrap:wrap;gap:8px;display:flex}.btn-ghost{color:#33443a;border:1px solid var(--line);background:#fff}.designer-actions .btn-primary{background:#1f684c}.cloud-publisher{background:#fff;border:1px solid #cbdad0;border-radius:10px;gap:14px;margin-bottom:12px;padding:18px;display:grid;box-shadow:0 10px 28px #26372d1a}.cloud-publisher-heading{justify-content:space-between;gap:18px;display:flex}.cloud-publisher-heading h2{margin-top:3px;font:600 20px/1.2 Georgia,serif}.cloud-publisher-heading p{color:var(--muted);margin-top:4px;font-size:12px}.cloud-publisher-heading>button{color:#718078;cursor:pointer;background:0 0;border:0;align-self:flex-start;font-size:22px}.cloud-fields{grid-template-columns:1.4fr .7fr 1fr;gap:10px;display:grid}.cloud-fields label{color:#65736a;letter-spacing:.07em;text-transform:uppercase;gap:5px;font-size:9px;font-weight:800;display:grid}.cloud-fields input{color:#20342a;background:#f9fbf9;border:1px solid #cbd8cf;border-radius:6px;outline:0;width:100%;padding:9px 10px;font-size:12px}.cloud-fields input:focus{border-color:#398166;box-shadow:0 0 0 2px #39816624}.cloud-destructive{color:#8b4d22;align-items:center;gap:7px;font-size:11px;display:flex}.cloud-destructive input{accent-color:#a55d2b}.local-destructive{color:#8b4d22;background:#fff7ed;border:1px solid #f0d7bb;border-radius:7px;align-items:center;gap:7px;margin-bottom:12px;padding:9px 12px;font-size:11px;display:flex}.local-destructive input{accent-color:#a55d2b}.cloud-error{color:#9b2c2c;background:#fff0f0;border:1px solid #f1caca;border-radius:6px;padding:8px 10px;font-size:11px}.cloud-actions{justify-content:flex-end;gap:8px;display:flex}.cloud-actions .btn:disabled{cursor:wait;opacity:.65}.designer-status{color:#286046;background:#eaf5ee;border:1px solid #cce5d5;border-radius:8px;justify-content:space-between;margin-bottom:12px;padding:9px 13px;font-size:12px;display:flex}.designer-status.error{color:#9b2c2c;background:#fff0f0;border-color:#f1caca}.designer-grid{background:var(--paper);border:1px solid var(--line);border-radius:12px;grid-template-columns:190px minmax(420px,1fr) minmax(340px,.8fr);height:calc(100vh - 150px);min-height:620px;display:grid;overflow:hidden;box-shadow:0 12px 40px #26372d14}.model-tree,.model-canvas,.dsl-panel{min-width:0}.model-tree{border-right:1px solid var(--line);background:#f2f5f0;padding:14px;overflow:auto}.panel-title{color:#34463b;letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:38px;font-size:12px;font-weight:800;display:flex}.panel-title button{color:#286046;cursor:pointer;background:#dce9df;border:0;border-radius:6px;width:25px;height:25px}.model-tree section{margin-top:16px}.model-tree section h3{color:#7a857e;letter-spacing:.12em;text-transform:uppercase;margin:0 7px 6px;font-size:10px}.tree-item,.tree-empty{border-radius:6px;padding:6px 8px;font-size:12px}.tree-item{color:#27372e;background:#ffffffb3;margin-bottom:3px}.tree-empty{color:#9aa39d;font-style:italic}.collection-editor{background:#fff;border:1px solid #d3ded6;border-radius:7px;gap:7px;margin-top:10px;padding:9px;display:grid}.collection-editor label{color:#65736a;letter-spacing:.06em;text-transform:uppercase;gap:4px;font-size:9px;font-weight:800;display:grid}.collection-editor input{color:#20342a;border:1px solid #cbd8cf;border-radius:5px;outline:0;width:100%;min-width:0;padding:7px 8px;font-size:11px}.collection-editor input:focus{border-color:#398166;box-shadow:0 0 0 2px #39816624}.collection-editor>div:last-child{justify-content:flex-end;gap:4px;display:flex}.collection-editor button{color:#526158;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:4px 7px;font-size:10px}.collection-editor .collection-save{color:#fff;background:#287052}.model-canvas{background-color:#f8faf6;background-image:radial-gradient(#d8e0da 1px,#0000 1px);background-size:18px 18px;flex-direction:column;padding:14px;display:flex;overflow:hidden}.graph-legend{color:#859189;text-transform:none;letter-spacing:0;font-weight:500}.graph-board{flex:1;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));align-content:start;gap:16px;padding:22px 8px;display:grid;overflow:auto}.model-node{background:#fff;border:1px solid #cfdbd2;border-top:3px solid #327258;border-radius:9px;padding:14px;position:relative;box-shadow:0 5px 14px #273d3014}.model-node.workflow-node{border-top-color:#9b6a2f}.model-node.agent-node{border-top-color:#70539b}.node-kind{color:#849087;letter-spacing:.14em;text-transform:uppercase;font-size:9px;font-weight:800}.model-node h3{margin:3px 0 10px;font-family:Georgia,serif;font-size:18px}.node-field,.node-step{border-top:1px solid #eef1ee;justify-content:space-between;gap:8px;padding:5px 0;font-size:11px;display:flex}.node-field code{color:#527060;font-size:10px}.node-step{color:#59675f;display:block}.node-add{color:#357257;cursor:pointer;background:#f0f7f2;border:1px dashed #b9d2c1;border-radius:5px;margin-top:9px;padding:4px 7px;font-size:10px}.field-editor{background:#f5f8f5;border:1px solid #d7e2da;border-radius:7px;gap:9px;margin-top:10px;padding:11px;display:grid}.field-editor label{color:#65736a;letter-spacing:.06em;text-transform:uppercase;gap:4px;font-size:9px;font-weight:700;display:grid}.field-editor input[type=text],.field-editor input:not([type]),.field-editor select{color:#20342a;background:#fff;border:1px solid #cbd8cf;border-radius:5px;outline:0;width:100%;min-width:0;padding:7px 8px;font:11px/1.2 inherit}.field-editor input:focus,.field-editor select:focus{border-color:#398166;box-shadow:0 0 0 2px #39816624}.field-editor-row{grid-template-columns:1fr 1fr;gap:7px;display:grid}.field-editor .field-optional{color:#43564a;letter-spacing:0;text-transform:none;align-items:center;gap:6px;font-size:10px;font-weight:500;display:flex}.field-optional input{accent-color:#287052}.field-error{color:#a13d3d;font-size:10px}.field-editor-actions{justify-content:flex-end;gap:6px;display:flex}.field-editor-actions button{color:#526158;cursor:pointer;background:0 0;border:0;border-radius:5px;padding:5px 8px;font-size:10px}.field-editor-actions .field-save{color:#fff;background:#287052}.change-strip{border-top:1px solid var(--line);white-space:nowrap;background:#ffffffeb;align-items:center;gap:12px;min-height:42px;padding:7px 10px;font-size:10px;display:flex;overflow:auto}.change-strip .added{color:#24714f}.change-strip .changed{color:#94611e}.change-strip .removed{color:#a13d3d}.dsl-panel{color:#d9e4dc;background:#17211b;border-left:1px solid #0c1510;flex-direction:column;padding:14px;display:flex}.dsl-panel .panel-title{color:#aebdb3;border-color:#344139}.dsl-panel .panel-title span:last-child{color:#6f8276;text-transform:none;font-weight:500}.dsl-panel textarea{resize:none;color:#d9e4dc;-moz-tab-size:2;tab-size:2;background:0 0;border:0;outline:0;flex:1;width:100%;padding:15px 2px;font:12px/1.65 ui-monospace,SFMono-Regular,Menlo,monospace}.diagnostics{border-top:1px solid #344139;max-height:120px;padding-top:8px;font:10px/1.5 ui-monospace,monospace;overflow:auto}.diagnostics .error{color:#ff9f9f}.diagnostics .warning{color:#f3d18a}@media (max-width:1100px){.designer-grid{grid-template-columns:160px 1fr;height:auto}.dsl-panel{grid-column:1/-1;height:480px}.designer-header{flex-direction:column;align-items:flex-start}.cloud-fields{grid-template-columns:1fr}}.nav-menu a{color:#ccc;border-radius:4px;padding:10px 15px;text-decoration:none;transition:all .2s;display:block}.nav-menu a:hover{color:#fff;background:#333}.studio-content{flex:1;padding:20px;overflow-y:auto}.search-input{border:1px solid #ddd;border-radius:4px;width:100%;padding:10px;font-size:14px}.filter-select{cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:4px;padding:8px;font-size:14px}.btn{cursor:pointer;border:none;border-radius:4px;padding:10px 15px;font-size:14px;font-weight:500;transition:all .2s}.btn-primary{color:#fff;background:#007bff}.btn-primary:hover{background:#0056b3}.overview-dashboard{background:#fff;border-radius:8px;padding:30px;box-shadow:0 1px 3px #0000001a}.dashboard-header{border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:15px;display:flex}.dashboard-header h1{margin:0;font-size:28px}.namespace-badge{color:#fff;background:#007bff;border-radius:20px;padding:5px 15px;font-size:12px;font-weight:600}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;display:grid}.stat-card{text-align:center;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:6px;padding:15px}.stat-card label{color:#666;margin-bottom:8px;font-size:12px;font-weight:600;display:block}.stat-card .status-indicator{margin-right:5px;font-size:20px}.stat-card .status-indicator.healthy{color:#28a745}.stat-card .status-indicator.degraded{color:#ffc107}.stat-card .status-indicator.unhealthy{color:#dc3545}.stat-number{color:#007bff;font-size:24px;font-weight:700;display:block}.explorer-placeholder,.capabilities-placeholder,.executions-placeholder,.provenance-placeholder,.peer-placeholder,.empty-message,.placeholder-text{text-align:center;color:#999;background:#f9f9f9;border:2px dashed #ddd;border-radius:6px;margin-top:20px;padding:40px}.placeholder-text{border:none;padding:20px}.peer-list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:15px;margin-top:20px;display:grid}.peer-item{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:6px;align-items:center;gap:10px;padding:15px;display:flex}.peer-status{font-size:12px}.peer-status.online{color:#28a745}.peer-name{font-weight:500}.health-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;margin-top:20px;display:grid}.health-item{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:6px;align-items:center;gap:10px;padding:15px;display:flex}.health-item.status-healthy{background:#f8f9fa;border-color:#d4edda}.health-item.status-warning{background:#fffbf0;border-color:#fff3cd}.health-item.status-error{background:#fff5f5;border-color:#f8d7da}.status-icon{font-size:16px;font-weight:700}.health-item.status-healthy .status-icon{color:#28a745}.health-item.status-warning .status-icon{color:#ffc107}.health-item.status-error .status-icon{color:#dc3545}.component-name{font-weight:500}.reference-explorer{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.search-box{margin-bottom:20px}.reference-details{margin-top:20px}.detail-row{border-bottom:1px solid #f0f0f0;justify-content:space-between;padding:10px 0;display:flex}.detail-row label{color:#666;font-weight:600}.detail-row span{color:#333}.status-materialized{color:#28a745;font-weight:500}.operations-explorer{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.filter-controls{margin-bottom:20px}.operations-table{border-collapse:collapse;width:100%;margin-top:20px}.operations-table th{text-align:left;background:#f5f5f5;border-bottom:2px solid #ddd;padding:10px;font-weight:600}.operations-table td{border-bottom:1px solid #f0f0f0;padding:10px}.conflict-explorer{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.conflict-summary{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;margin-top:20px;display:grid}.summary-stat{text-align:center;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:6px;padding:15px}.summary-stat label{color:#666;margin-bottom:8px;font-size:12px;font-weight:600;display:block}.workflow-visualizer{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.workflow-controls{margin-bottom:20px}.workflows-list,.workflow-detail{margin-top:20px}.agent-explorer{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.agents-grid,.agent-detail{margin-top:20px}.provenance-viewer{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.provenance-content{margin-top:20px}.settings-panel{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a}.settings-tabs{border-bottom:1px solid #e0e0e0;gap:10px;margin:20px 0;display:flex}.tab{cursor:pointer;color:#666;background:0 0;border:none;border-bottom:3px solid #0000;padding:10px 15px;font-weight:500;transition:all .2s}.tab.active{color:#007bff;border-bottom-color:#007bff}.settings-content{margin-top:20px}.keys-list,.connection-info{margin:20px 0}.info-row{border-bottom:1px solid #f0f0f0;justify-content:space-between;padding:10px 0;display:flex}.info-row label{color:#666;font-weight:600}.monospace{font-family:Monaco,Courier New,monospace;font-size:12px}.global-search{position:relative}.search-input.global{margin-bottom:10px}.search-results{z-index:1000;background:#fff;border:1px solid #ddd;border-radius:4px;max-height:400px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 2px 8px #0000001a}.results-group{border-bottom:1px solid #f0f0f0;padding:10px}.results-group h4{color:#666;text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:600}.results-group .empty-message{color:#999;background:0 0;border:none;padding:5px 0;font-size:12px}@media (max-width:768px){.studio-app{flex-direction:column}.studio-nav{border-bottom:1px solid #333;border-right:none;width:100%;max-height:200px}.nav-menu{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.nav-menu a{padding:8px 5px;font-size:12px}}.studio-model-page{color:#19251f;max-width:1280px;margin:0 auto}.studio-model-page>header{margin-bottom:22px}.studio-model-page>header h1{margin:4px 0 6px;font-family:Georgia,serif;font-size:36px}.studio-model-page>header p{color:#68776f;margin:0}.eyebrow,.card-kind{color:#217052;letter-spacing:.18em;text-transform:uppercase;font-size:10px;font-weight:800}.model-summary{flex-wrap:wrap;gap:10px;margin:0 0 18px;display:flex}.model-summary>span,.model-summary select{color:#426052;background:#f8fbf9;border:1px solid #d6e1da;border-radius:999px;padding:7px 12px;font-size:12px}.studio-card-grid,.state-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.studio-card{background:#fff;border:1px solid #d7e0da;border-radius:12px;padding:18px;box-shadow:0 6px 22px #1937280d}.studio-card h2{margin:6px 0 14px;font-family:Georgia,serif;font-size:22px}.model-empty{color:#75847c;text-align:center;background:#fafcfb;border:1px dashed #cbd8d0;border-radius:10px;grid-column:1/-1;padding:34px}.model-empty.compact{padding:20px 10px}.state-collection>header{justify-content:space-between;align-items:center;display:flex}.state-collection>header h2{margin-bottom:8px}.state-collection>header strong{color:#237154;font:30px Georgia,serif}.state-row{text-align:left;color:#26372f;cursor:pointer;background:0 0;border:0;border-top:1px solid #e8edea;grid-template-columns:1fr auto;gap:8px;width:100%;padding:12px 2px;display:grid}.state-row span:first-child{flex-direction:column;gap:3px;display:flex}.state-row small{color:#859189}.state-row pre{color:#dcebe2;background:#13231b;border-radius:8px;grid-column:1/-1;margin:4px 0 0;padding:12px;overflow:auto}.table-shell{background:#fff;border:1px solid #d7e0da;border-radius:12px;overflow:auto}.table-shell table{width:100%;margin:0}.event-pill{text-transform:uppercase;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800;display:inline-block}.event-pill.put{color:#176443;background:#dff4e9}.event-pill.delete{color:#963e2c;background:#fbe4df}.reference-query{gap:8px;margin-bottom:18px;display:flex}.reference-query input{border:1px solid #cad7cf;border-radius:8px;flex:1;padding:12px 14px;font-family:monospace}.reference-query button{color:#fff;cursor:pointer;background:#1f7152;border:0;border-radius:8px;padding:0 20px;font-weight:700}.reference-layout{grid-template-columns:minmax(220px,.35fr) 1fr;gap:16px;display:grid}.reference-example{cursor:pointer;background:0 0;border:0;border-top:1px solid #e8edea;justify-content:space-between;width:100%;padding:12px 0;display:flex}.reference-example small{color:#829087}.reference-result pre,.execution-row pre{color:#dcebe2;background:#14231c;border-radius:8px;padding:14px;overflow:auto}.execution-list{gap:10px;margin-bottom:20px;display:grid}.execution-row{background:#fff;border:1px solid #d8e1db;border-radius:10px;grid-template-columns:1fr auto;gap:10px;padding:14px;display:grid}.execution-row>div{flex-direction:column;display:flex}.execution-row small{color:#829087}.execution-row pre{grid-column:1/-1;max-height:180px;margin:0}.execution-empty{margin-top:14px}.provenance-nodes{flex-wrap:wrap;gap:10px;display:flex}.provenance-nodes>div,.provenance-event{border:1px solid #d8e1db;border-radius:8px;flex-direction:column;gap:3px;padding:12px;display:flex}.provenance-nodes small,.provenance-event small{color:#849087}.provenance-event{grid-template-columns:45px 1fr 1fr auto;margin-top:8px;display:grid}.peer-topology{align-items:center;gap:10px;padding:30px 4px;display:flex;overflow:auto}.peer-node{background:#fff;border:1px solid #cad8cf;border-radius:12px;min-width:230px;padding:18px}.peer-node.local{color:#eef7f2;background:#183429}.peer-node span,.peer-node small{opacity:.7;font-size:11px}.peer-node h2{margin:6px 0;font-size:15px}.peer-link{background:#81a893;width:45px;height:2px}.metric-grid{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px;display:grid}.metric-grid article{color:#fff;background:#183429;border-radius:10px;flex-direction:column;padding:18px;display:flex}.metric-grid b{font:32px Georgia,serif}.metric-grid span{opacity:.7;text-transform:uppercase;letter-spacing:.12em;font-size:10px}.health-item{align-items:center;gap:12px;display:flex}.health-item div{flex-direction:column;gap:3px;display:flex}.health-item small{color:#78857e}.health-issue{background:#fff2dc;border-radius:8px;margin:10px 0;padding:12px}.search-result{border-top:1px solid #edf0ee;grid-template-columns:1fr auto;gap:2px 8px;padding:8px 0;display:grid}.search-result span{color:#287254;text-transform:uppercase;font-size:10px}.search-result small{color:#829087;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;overflow:hidden}@media (max-width:800px){.reference-layout,.metric-grid{grid-template-columns:1fr}.provenance-event{grid-template-columns:35px 1fr}.provenance-event code,.provenance-event small{grid-column:2}}
2
+ /*$vite$:1*/
@@ -0,0 +1,133 @@
1
+ /**
2
+ * FeltDB Studio Types
3
+ */
4
+ export interface StudioContext {
5
+ db: any;
6
+ connected: boolean;
7
+ namespace: string;
8
+ instanceId: string;
9
+ environment: 'browser' | 'self-hosted' | 'remote';
10
+ }
11
+ export interface DashboardStats {
12
+ namespace: string;
13
+ status: 'healthy' | 'degraded' | 'unhealthy';
14
+ storageBackend: string;
15
+ persistence: 'durable' | 'volatile';
16
+ peersCount: number;
17
+ objectsCount: number;
18
+ operationsCount: number;
19
+ capabilitiesCount: number;
20
+ executionsCount: number;
21
+ workflowsCount: number;
22
+ agentsCount: number;
23
+ conflictsCount: number;
24
+ }
25
+ export interface Peer {
26
+ id: string;
27
+ status: 'online' | 'offline' | 'syncing';
28
+ stateVersion: number;
29
+ capabilities: number;
30
+ objects: number;
31
+ operations: number;
32
+ lastSync: number;
33
+ compatibility: 'current' | 'outdated' | 'incompatible';
34
+ }
35
+ export interface Capability {
36
+ id: string;
37
+ name: string;
38
+ version: number;
39
+ providers: number;
40
+ state: 'compatible' | 'incompatible';
41
+ execution: 'available' | 'unavailable';
42
+ authorization: 'allowed' | 'denied';
43
+ }
44
+ export interface Execution {
45
+ executionId: string;
46
+ capability: string;
47
+ inputs: string[];
48
+ requestedBy: string;
49
+ selectedProvider: string;
50
+ stateVersion: string;
51
+ status: 'queued' | 'running' | 'completed' | 'failed';
52
+ startedAt?: number;
53
+ completedAt?: number;
54
+ result?: string;
55
+ }
56
+ export interface Workflow {
57
+ id: string;
58
+ name: string;
59
+ status: 'running' | 'completed' | 'blocked' | 'failed' | 'waiting';
60
+ owner: string;
61
+ currentStep?: string;
62
+ steps: WorkflowStep[];
63
+ inputs?: Record<string, any>;
64
+ outputs?: Record<string, any>;
65
+ }
66
+ export interface WorkflowStep {
67
+ name: string;
68
+ status: 'pending' | 'running' | 'completed' | 'failed';
69
+ capability?: string;
70
+ execution?: string;
71
+ inputs?: any[];
72
+ outputs?: any;
73
+ }
74
+ export interface Agent {
75
+ name: string;
76
+ status: 'running' | 'idle' | 'waiting' | 'failed';
77
+ owner: string;
78
+ goal?: string;
79
+ currentWorkflow?: string;
80
+ currentStep?: string;
81
+ capabilities: string[];
82
+ observedReferences: number;
83
+ outputs: number;
84
+ }
85
+ export interface ProvenanceNode {
86
+ id: string;
87
+ type: string;
88
+ label: string;
89
+ timestamp: number;
90
+ metadata?: Record<string, any>;
91
+ }
92
+ export interface ProvenanceEdge {
93
+ from: string;
94
+ to: string;
95
+ edgeType: string;
96
+ metadata?: Record<string, any>;
97
+ }
98
+ export interface ProvenanceGraph {
99
+ root: ProvenanceNode;
100
+ nodes: ProvenanceNode[];
101
+ edges: ProvenanceEdge[];
102
+ }
103
+ export interface Operation {
104
+ id: number;
105
+ type: string;
106
+ reference: string;
107
+ instance: string;
108
+ timestamp: number;
109
+ vectorClock: Record<string, number>;
110
+ contentHash?: string;
111
+ provenance?: string;
112
+ }
113
+ export interface Conflict {
114
+ reference: string;
115
+ operationA: string;
116
+ operationB: string;
117
+ relationship: 'concurrent' | 'causally-related';
118
+ winner: string;
119
+ resolution: string;
120
+ converged: boolean;
121
+ }
122
+ export interface HealthStatus {
123
+ component: string;
124
+ status: 'healthy' | 'warning' | 'error';
125
+ message?: string;
126
+ action?: string;
127
+ }
128
+ export interface RTCConnection {
129
+ peerId: string;
130
+ connected: boolean;
131
+ latency?: number;
132
+ }
133
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { StateFirstDB } from '@feltdb/core';
2
+ import { DashboardStats, Peer } from '../types';
3
+ /**
4
+ * Fetch dashboard statistics from the database
5
+ */
6
+ export declare function fetchDashboardStats(db: StateFirstDB): Promise<DashboardStats>;
7
+ /**
8
+ * Fetch connected peers
9
+ */
10
+ export declare function fetchPeers(db: StateFirstDB): Promise<Peer[]>;
11
+ /**
12
+ * Search for a reference or object
13
+ */
14
+ export declare function searchReferences(db: StateFirstDB, query: string): Promise<Array<{
15
+ type: string;
16
+ id: string;
17
+ label: string;
18
+ }>>;
19
+ /**
20
+ * Fetch provenance graph for a reference
21
+ */
22
+ export declare function fetchProvenance(db: StateFirstDB, reference: string): Promise<import('@feltdb/core').ProvenanceGraph | null>;
23
+ /**
24
+ * Get runtime diagnostics
25
+ */
26
+ export declare function fetchDiagnostics(db: StateFirstDB): Promise<import('@feltdb/core').RuntimeDiagnostics | null>;
27
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EAML,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAkBnF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAalE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAI7D;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,0DAOxE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,YAAY,6DAOtD"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Utility functions for formatting and display
3
+ */
4
+ /**
5
+ * Format a timestamp for display
6
+ */
7
+ export declare function formatTime(ms: number): string;
8
+ /**
9
+ * Format a relative time (e.g., "2 minutes ago")
10
+ */
11
+ export declare function formatRelativeTime(ms: number): string;
12
+ /**
13
+ * Format bytes for display
14
+ */
15
+ export declare function formatBytes(bytes: number): string;
16
+ /**
17
+ * Shorten a reference for display
18
+ */
19
+ export declare function formatReference(ref: string): string;
20
+ /**
21
+ * Capitalize first letter
22
+ */
23
+ export declare function capitalize(str: string): string;
24
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAYrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utilities index
3
+ */
4
+ export * from './api';
5
+ export * from './format';
6
+ export * from './managed-instance';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC"}