@feltdb/core 0.7.3 → 0.7.4

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 (95) hide show
  1. package/dist/application-development.d.ts +76 -0
  2. package/dist/application-development.d.ts.map +1 -0
  3. package/dist/application-development.js +137 -0
  4. package/dist/application-manifest.d.ts +5 -1
  5. package/dist/application-manifest.d.ts.map +1 -1
  6. package/dist/application-manifest.js +10 -3
  7. package/dist/canonical-application.d.ts +26 -0
  8. package/dist/canonical-application.d.ts.map +1 -0
  9. package/dist/canonical-application.js +45 -0
  10. package/dist/cli/ai-model-config.js +97 -0
  11. package/dist/cli/commands.js +466 -105
  12. package/dist/cli/index.js +1 -1
  13. package/dist/cli/proposal-client.js +54 -0
  14. package/dist/cli/publish-engine.js +162 -0
  15. package/dist/cli/source-sync.js +139 -0
  16. package/dist/create/cli.js +1 -1
  17. package/dist/create/create.js +30 -6
  18. package/dist/create/managed-account.js +14 -7
  19. package/dist/create/package-versions.js +1 -1
  20. package/dist/create/server-source/crates/feltdb/src/application.rs +31 -1
  21. package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +84 -6
  22. package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +126 -38
  23. package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +72 -34
  24. package/dist/create/server-source/crates/feltdb-server/src/identity.rs +46 -3
  25. package/dist/create/server-source/crates/feltdb-server/src/main.rs +315 -16
  26. package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +20 -0
  27. package/dist/create/template/default-project/README.md +57 -0
  28. package/dist/create/template/default-project/agents/activity-assistant.ts +18 -0
  29. package/dist/create/template/default-project/agents/project-assistant.ts +19 -0
  30. package/dist/create/template/default-project/capabilities/activity-summary.ts +14 -0
  31. package/dist/create/template/default-project/capabilities/project-search.ts +16 -0
  32. package/dist/create/template/default-project/capabilities/project-summary.ts +15 -0
  33. package/dist/create/template/default-project/feltdb.flow +169 -0
  34. package/dist/create/template/default-project/src/App.tsx +20 -0
  35. package/dist/create/template/default-project/src/context/AuthContext.tsx +27 -0
  36. package/dist/create/template/default-project/src/feltdb.ts +87 -0
  37. package/dist/create/template/default-project/src/index.tsx +14 -0
  38. package/dist/create/template/default-project/src/pages/Activity.tsx +7 -0
  39. package/dist/create/template/default-project/src/pages/Agents.tsx +15 -0
  40. package/dist/create/template/default-project/src/pages/Dashboard.tsx +17 -0
  41. package/dist/create/template/default-project/src/pages/Invitations.tsx +11 -0
  42. package/dist/create/template/default-project/src/pages/Projects.tsx +11 -0
  43. package/dist/create/template/default-project/src/pages/SignIn.tsx +8 -0
  44. package/dist/create/template/default-project/src/pages/SignUp.tsx +8 -0
  45. package/dist/create/template/default-project/src/styles-application.css +21 -0
  46. package/dist/create/template/default-project/src/styles.css +1 -0
  47. package/dist/create/template/default-project/workflows/agent-assisted-summary.ts +1 -0
  48. package/dist/create/template/default-project/workflows/invitation.ts +30 -0
  49. package/dist/create/template/default-project/workflows/project-created.ts +2 -0
  50. package/dist/db.d.ts +49 -1
  51. package/dist/db.d.ts.map +1 -1
  52. package/dist/db.js +77 -0
  53. package/dist/error-codes.d.ts +20 -1
  54. package/dist/error-codes.d.ts.map +1 -1
  55. package/dist/error-codes.js +25 -0
  56. package/dist/flowspec.d.ts.map +1 -1
  57. package/dist/flowspec.js +27 -6
  58. package/dist/http-db.d.ts +15 -2
  59. package/dist/http-db.d.ts.map +1 -1
  60. package/dist/http-db.js +113 -5
  61. package/dist/index-core.d.ts +3 -0
  62. package/dist/index-core.d.ts.map +1 -1
  63. package/dist/index-core.js +3 -0
  64. package/dist/proposal.d.ts +85 -0
  65. package/dist/proposal.d.ts.map +1 -0
  66. package/dist/proposal.js +105 -0
  67. package/dist/studio/app.d.ts +3 -1
  68. package/dist/studio/app.d.ts.map +1 -1
  69. package/dist/studio/components/ApplicationDesigner.d.ts +2 -1
  70. package/dist/studio/components/ApplicationDesigner.d.ts.map +1 -1
  71. package/dist/studio/components/AskFeltDB.d.ts +20 -0
  72. package/dist/studio/components/AskFeltDB.d.ts.map +1 -0
  73. package/dist/studio/components/ProposalBrowser.d.ts +3 -0
  74. package/dist/studio/components/ProposalBrowser.d.ts.map +1 -0
  75. package/dist/studio/components/index.d.ts +2 -0
  76. package/dist/studio/components/index.d.ts.map +1 -1
  77. package/dist/studio/components/index.js +4 -4
  78. package/dist/studio/{components-Dxuhrv8_.js → components-Bm4sjhcX.js} +335 -5
  79. package/dist/studio/index.js +168 -157
  80. package/dist/studio/studio.css +1 -1
  81. package/dist/studio-app/assets/dist-DA1MYSzp.js +1 -0
  82. package/dist/studio-app/assets/{feltdb_wasm-DVKsw75S.js → feltdb_wasm-B-Ccgccb.js} +1 -1
  83. package/dist/studio-app/assets/feltdb_wasm_bg-wH3enJIA.wasm +0 -0
  84. package/dist/studio-app/assets/{index-C1GWyazR.css → index-BRrmvaKw.css} +1 -1
  85. package/dist/studio-app/assets/index-CEIqowCh.js +42 -0
  86. package/dist/studio-app/assets/lib-B2_7fcn7.js +69 -0
  87. package/dist/studio-app/assets/worker-CARZ5g7K.js +69 -0
  88. package/dist/studio-app/index.html +2 -2
  89. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  90. package/dist/workspace/local-development-authority.d.ts +3 -0
  91. package/dist/workspace/local-development-authority.d.ts.map +1 -1
  92. package/dist/workspace/local-development-authority.js +62 -1
  93. package/package.json +1 -1
  94. package/dist/studio-app/assets/feltdb_wasm_bg-DNyNf0yy.wasm +0 -0
  95. package/dist/studio-app/assets/index-B5tnmvSD.js +0 -28
@@ -1,325 +1,336 @@
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-Dxuhrv8_.js";
2
- import { t as x } from "./KeyManagementPanel-DZuSeWBK.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";
1
+ import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y, v as b, x, y as S } from "./components-Bm4sjhcX.js";
2
+ import { t as C } from "./KeyManagementPanel-DZuSeWBK.js";
3
+ import { ManagedInstanceUtil as w } from "./utils/managed-instance.js";
4
+ import { ManagedInstancePanel as T } from "./components/ManagedInstancePanel.js";
5
+ import { capitalize as E, fetchDashboardStats as D, fetchDiagnostics as O, fetchPeers as k, fetchProvenance as A, formatBytes as j, formatReference as M, formatRelativeTime as N, formatTime as P, searchReferences as F } from "./utils/index.js";
6
+ import { useEffect as I, useState as L } from "react";
7
+ import { BrowserRouter as R, Link as z, Route as B, Routes as V } from "react-router-dom";
8
+ import { Fragment as H, jsx as U, jsxs as W } from "react/jsx-runtime";
9
+ import { parseFlowSpec as G } from "@feltdb/core";
10
10
  //#region src/app.tsx
11
- function U({ db: s, remoteUrl: b = "", token: S = "", namespace: C = "default", deploymentRuntime: w = "browser", applicationUrl: T = "", developmentSession: E, managedPublish: D, onConnect: O }) {
12
- let [k, A] = F(null), j = e(s || null, C), M = o(s || null, k, C), { diagnostics: N } = n(s || null), U = v(s || null), [W, G] = F(), K = w !== "browser" || !!b, [q, J] = F([]), [Y, X] = F([]), [Z, Q] = F(0), $ = (e) => ({
11
+ function K({ db: n, remoteUrl: x = "", token: w = "", namespace: T = "default", deploymentRuntime: E = "browser", applicationUrl: D = "", developmentSession: O, managedPublish: k, sourceSync: A, onConnect: j }) {
12
+ let [M, N] = L(null), P = S(n || null, T), F = b(n || null, M, T), { diagnostics: K } = t(n || null), ee = i(n || null), [te, ne] = L(), q = E !== "browser" || !!x, [J, Y] = L([]), [X, Z] = L([]), [Q, re] = L(0), $ = (e) => ({
13
13
  pathname: e,
14
14
  search: window.location.search
15
15
  });
16
- return P(() => {
16
+ return I(() => {
17
17
  let e = !0;
18
18
  return fetch("/_feltdb/project", { cache: "no-store" }).then(async (t) => {
19
19
  if (!t.ok) throw Error("No project model endpoint");
20
20
  let n = await t.json();
21
- e && A(H(n.source));
21
+ e && N(G(n.source));
22
22
  }).catch(async () => {
23
- let t = s ? await s.collection("_flow_apps").all() : [];
24
- e && t[0]?.spec && A(t[0].spec);
23
+ let t = n ? await n.collection("_flow_apps").all() : [];
24
+ e && t[0]?.spec && N(t[0].spec);
25
25
  }), () => {
26
26
  e = !1;
27
27
  };
28
- }, [s]), P(() => {
29
- if (!E?.sessionId) return;
28
+ }, [n]), I(() => {
29
+ if (!O?.sessionId) return;
30
30
  let e = !0, t = () => void fetch("/_feltdb/runtime", { cache: "no-store" }).then((e) => e.ok ? e.json() : { runtimes: [] }).then((t) => {
31
- e && J(t.runtimes || []);
31
+ e && Y(t.runtimes || []);
32
32
  }).catch(() => {
33
- e && J([]);
33
+ e && Y([]);
34
34
  });
35
35
  t();
36
36
  let n = window.setInterval(t, 2e3);
37
37
  return () => {
38
38
  e = !1, window.clearInterval(n);
39
39
  };
40
- }, [E?.sessionId]), P(() => {
41
- let e = q[0]?.runtimeInstanceId;
40
+ }, [O?.sessionId]), I(() => {
41
+ let e = J[0]?.runtimeInstanceId;
42
42
  if (!e) {
43
- X([]);
43
+ Z([]);
44
44
  return;
45
45
  }
46
46
  let t = !0, n = 0, r = () => void fetch(`/_feltdb/observations?runtimeInstanceId=${encodeURIComponent(e)}&cursor=${n}&limit=100`, { cache: "no-store" }).then((e) => e.ok ? e.json() : { observations: [] }).then((e) => {
47
- t && (n = e.nextCursor ?? n, Q(e.dropped || 0), X((t) => [...t, ...e.observations || []].slice(-200)));
47
+ t && (n = e.nextCursor ?? n, re(e.dropped || 0), Z((t) => [...t, ...e.observations || []].slice(-200)));
48
48
  }).catch(() => void 0);
49
49
  r();
50
50
  let i = window.setInterval(r, 1e3);
51
51
  return () => {
52
52
  t = !1, window.clearInterval(i);
53
53
  };
54
- }, [q[0]?.runtimeInstanceId]), /* @__PURE__ */ B(I, { children: /* @__PURE__ */ V("div", {
54
+ }, [J[0]?.runtimeInstanceId]), /* @__PURE__ */ U(R, { children: /* @__PURE__ */ W("div", {
55
55
  className: "studio-app",
56
- children: [/* @__PURE__ */ V("nav", {
56
+ children: [/* @__PURE__ */ W("nav", {
57
57
  className: "studio-nav",
58
58
  children: [
59
- /* @__PURE__ */ V("div", {
59
+ /* @__PURE__ */ W("div", {
60
60
  className: "nav-header",
61
- children: [/* @__PURE__ */ B("h1", { children: "FeltDB Studio" }), j && /* @__PURE__ */ B("div", {
61
+ children: [/* @__PURE__ */ U("h1", { children: "FeltDB Studio" }), P && /* @__PURE__ */ U("div", {
62
62
  className: "instance-info",
63
- children: j.namespace
63
+ children: P.namespace
64
64
  })]
65
65
  }),
66
- /* @__PURE__ */ B("div", {
66
+ /* @__PURE__ */ U("div", {
67
67
  className: "nav-search",
68
- children: /* @__PURE__ */ B(d, {
69
- db: s,
70
- model: k
68
+ children: /* @__PURE__ */ U(u, {
69
+ db: n,
70
+ model: M
71
71
  })
72
72
  }),
73
- /* @__PURE__ */ V("ul", {
73
+ /* @__PURE__ */ W("ul", {
74
74
  className: "nav-menu",
75
75
  children: [
76
- /* @__PURE__ */ B("li", {
76
+ /* @__PURE__ */ U("li", {
77
77
  className: "nav-section",
78
78
  children: "Design"
79
79
  }),
80
- /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
80
+ /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
81
81
  to: $("/"),
82
82
  children: "Application"
83
83
  }) }),
84
- /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
84
+ /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
85
85
  to: $("/capabilities"),
86
86
  children: "Capabilities"
87
87
  }) }),
88
- /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
88
+ /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
89
89
  to: $("/workflows"),
90
90
  children: "Workflows"
91
91
  }) }),
92
- /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
92
+ /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
93
93
  to: $("/agents"),
94
94
  children: "Agents"
95
95
  }) }),
96
- /* @__PURE__ */ B("li", {
96
+ /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
97
+ to: $("/proposals"),
98
+ children: "Proposals"
99
+ }) }),
100
+ /* @__PURE__ */ U("li", {
97
101
  className: "nav-section",
98
102
  children: "Observe"
99
103
  }),
100
- E?.sessionId && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
104
+ O?.sessionId && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
101
105
  to: $("/activity"),
102
106
  children: "Live Activity"
103
107
  }) }),
104
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
108
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
105
109
  to: $("/overview"),
106
110
  children: "Overview"
107
111
  }) }),
108
- /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
112
+ /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
109
113
  to: $("/data"),
110
114
  children: "Data"
111
115
  }) }),
112
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
116
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
113
117
  to: $("/references"),
114
118
  children: "References"
115
119
  }) }),
116
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
120
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
117
121
  to: $("/operations"),
118
122
  children: "Operations"
119
123
  }) }),
120
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
124
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
121
125
  to: $("/executions"),
122
126
  children: "Executions"
123
127
  }) }),
124
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
128
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
125
129
  to: $("/peers"),
126
130
  children: "Peers"
127
131
  }) }),
128
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
132
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
129
133
  to: $("/provenance"),
130
134
  children: "Provenance"
131
135
  }) }),
132
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
136
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
133
137
  to: $("/conflicts"),
134
138
  children: "Conflicts"
135
139
  }) }),
136
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
140
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
137
141
  to: $("/health"),
138
142
  children: "Health"
139
143
  }) }),
140
- /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
144
+ /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
141
145
  to: $("/settings"),
142
146
  children: "Settings"
143
147
  }) }),
144
- K && /* @__PURE__ */ B("li", { children: /* @__PURE__ */ B(L, {
148
+ q && /* @__PURE__ */ U("li", { children: /* @__PURE__ */ U(z, {
145
149
  to: $("/api-keys"),
146
150
  children: "API Keys"
147
151
  }) })
148
152
  ]
149
153
  })
150
154
  ]
151
- }), /* @__PURE__ */ V("main", {
155
+ }), /* @__PURE__ */ W("main", {
152
156
  className: "studio-content",
153
157
  children: [
154
- E?.sessionId && /* @__PURE__ */ V("div", {
158
+ O?.sessionId && /* @__PURE__ */ W("div", {
155
159
  className: "runtime-notice",
156
- children: ["Application runtime: ", q.length ? `Connected ✓ (${q[0].runtime}, ${q[0].namespace})` : "Not connected"]
160
+ children: ["Application runtime: ", J.length ? `Connected ✓ (${J[0].runtime}, ${J[0].namespace})` : "Not connected"]
157
161
  }),
158
- !K && /* @__PURE__ */ B("div", {
162
+ !q && /* @__PURE__ */ U("div", {
159
163
  className: "runtime-notice",
160
164
  children: "Browser data is read live from the generated application origin through the local Studio bridge."
161
165
  }),
162
- /* @__PURE__ */ V(z, { children: [
163
- /* @__PURE__ */ B(R, {
166
+ /* @__PURE__ */ W(V, { children: [
167
+ /* @__PURE__ */ U(B, {
164
168
  path: "/",
165
- element: /* @__PURE__ */ B(g, {
166
- db: s,
167
- namespace: C,
168
- projectSpec: k,
169
- managedPublish: D,
170
- onSpecChange: A
171
- })
169
+ element: /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(p, {
170
+ configuration: A,
171
+ onApplied: () => window.location.reload()
172
+ }), /* @__PURE__ */ U(g, {
173
+ db: n,
174
+ namespace: T,
175
+ projectSpec: M,
176
+ managedPublish: k,
177
+ onSpecChange: N
178
+ })] })
172
179
  }),
173
- /* @__PURE__ */ B(R, {
180
+ /* @__PURE__ */ U(B, {
174
181
  path: "/overview",
175
- element: /* @__PURE__ */ B(y, { stats: M })
182
+ element: /* @__PURE__ */ U(e, { stats: F })
176
183
  }),
177
- /* @__PURE__ */ B(R, {
184
+ /* @__PURE__ */ U(B, {
178
185
  path: "/activity",
179
- element: /* @__PURE__ */ V("div", {
186
+ element: /* @__PURE__ */ W("div", {
180
187
  className: "runtime-activity",
181
188
  children: [
182
- /* @__PURE__ */ B("h1", { children: "Live Activity" }),
183
- /* @__PURE__ */ V("p", { children: [
184
- Y.some((e) => Date.now() - e.timestamp < 5e3) ? "Active" : "Idle",
189
+ /* @__PURE__ */ U("h1", { children: "Live Activity" }),
190
+ /* @__PURE__ */ W("p", { children: [
191
+ X.some((e) => Date.now() - e.timestamp < 5e3) ? "Active" : "Idle",
185
192
  " · Runtime ",
186
- q[0]?.runtimeInstanceId || "not connected"
193
+ J[0]?.runtimeInstanceId || "not connected"
187
194
  ] }),
188
- Z > 0 && /* @__PURE__ */ V("p", {
195
+ Q > 0 && /* @__PURE__ */ W("p", {
189
196
  className: "runtime-notice",
190
197
  children: [
191
198
  "Observation is incomplete: ",
192
- Z,
199
+ Q,
193
200
  " events dropped."
194
201
  ]
195
202
  }),
196
- /* @__PURE__ */ V("table", { children: [/* @__PURE__ */ B("thead", { children: /* @__PURE__ */ V("tr", { children: [
197
- /* @__PURE__ */ B("th", { children: "Time" }),
198
- /* @__PURE__ */ B("th", { children: "Operation" }),
199
- /* @__PURE__ */ B("th", { children: "Collection" }),
200
- /* @__PURE__ */ B("th", { children: "Status" }),
201
- /* @__PURE__ */ B("th", { children: "Duration" })
202
- ] }) }), /* @__PURE__ */ B("tbody", { children: [...Y].reverse().map((e) => /* @__PURE__ */ V("tr", { children: [
203
- /* @__PURE__ */ B("td", { children: new Date(e.timestamp).toLocaleTimeString() }),
204
- /* @__PURE__ */ B("td", { children: e.operation?.type }),
205
- /* @__PURE__ */ B("td", { children: e.operation?.collection || "—" }),
206
- /* @__PURE__ */ B("td", { children: e.status }),
207
- /* @__PURE__ */ B("td", { children: e.durationMs === void 0 ? "—" : `${e.durationMs} ms` })
203
+ /* @__PURE__ */ W("table", { children: [/* @__PURE__ */ U("thead", { children: /* @__PURE__ */ W("tr", { children: [
204
+ /* @__PURE__ */ U("th", { children: "Time" }),
205
+ /* @__PURE__ */ U("th", { children: "Operation" }),
206
+ /* @__PURE__ */ U("th", { children: "Collection" }),
207
+ /* @__PURE__ */ U("th", { children: "Status" }),
208
+ /* @__PURE__ */ U("th", { children: "Duration" })
209
+ ] }) }), /* @__PURE__ */ U("tbody", { children: [...X].reverse().map((e) => /* @__PURE__ */ W("tr", { children: [
210
+ /* @__PURE__ */ U("td", { children: new Date(e.timestamp).toLocaleTimeString() }),
211
+ /* @__PURE__ */ U("td", { children: e.operation?.type }),
212
+ /* @__PURE__ */ U("td", { children: e.operation?.collection || "—" }),
213
+ /* @__PURE__ */ U("td", { children: e.status }),
214
+ /* @__PURE__ */ U("td", { children: e.durationMs === void 0 ? "—" : `${e.durationMs} ms` })
208
215
  ] }, e.cursor || e.eventId)) })] })
209
216
  ]
210
217
  })
211
218
  }),
212
- /* @__PURE__ */ B(R, {
219
+ /* @__PURE__ */ U(B, {
213
220
  path: "/data",
214
- element: /* @__PURE__ */ B(u, {
215
- db: s,
216
- model: k,
217
- namespace: C,
218
- applicationUrl: w === "browser" ? T : "",
219
- developmentSession: E
221
+ element: /* @__PURE__ */ U(c, {
222
+ db: n,
223
+ model: M,
224
+ namespace: T,
225
+ applicationUrl: E === "browser" ? D : "",
226
+ developmentSession: O
220
227
  })
221
228
  }),
222
- /* @__PURE__ */ B(R, {
229
+ /* @__PURE__ */ U(B, {
223
230
  path: "/state",
224
- element: /* @__PURE__ */ B(u, {
225
- db: s,
226
- model: k,
227
- namespace: C,
228
- applicationUrl: w === "browser" ? T : "",
229
- developmentSession: E
231
+ element: /* @__PURE__ */ U(c, {
232
+ db: n,
233
+ model: M,
234
+ namespace: T,
235
+ applicationUrl: E === "browser" ? D : "",
236
+ developmentSession: O
230
237
  })
231
238
  }),
232
- /* @__PURE__ */ B(R, {
239
+ /* @__PURE__ */ U(B, {
233
240
  path: "/references",
234
- element: /* @__PURE__ */ B(p, {
235
- db: s,
236
- model: k,
237
- namespace: C
241
+ element: /* @__PURE__ */ U(l, {
242
+ db: n,
243
+ model: M,
244
+ namespace: T
238
245
  })
239
246
  }),
240
- /* @__PURE__ */ B(R, {
247
+ /* @__PURE__ */ U(B, {
241
248
  path: "/operations",
242
- element: /* @__PURE__ */ B(a, {
243
- db: s,
244
- model: k,
245
- namespace: C
249
+ element: /* @__PURE__ */ U(f, {
250
+ db: n,
251
+ model: M,
252
+ namespace: T
246
253
  })
247
254
  }),
248
- /* @__PURE__ */ B(R, {
255
+ /* @__PURE__ */ U(B, {
249
256
  path: "/peers",
250
- element: /* @__PURE__ */ B(i, {
251
- peers: U,
252
- localInstance: j?.instanceId
257
+ element: /* @__PURE__ */ U(h, {
258
+ peers: ee,
259
+ localInstance: P?.instanceId
253
260
  })
254
261
  }),
255
- /* @__PURE__ */ B(R, {
262
+ /* @__PURE__ */ U(B, {
256
263
  path: "/capabilities",
257
- element: /* @__PURE__ */ B(_, {
258
- db: s,
259
- model: k
264
+ element: /* @__PURE__ */ U(s, {
265
+ db: n,
266
+ model: M
260
267
  })
261
268
  }),
262
- /* @__PURE__ */ B(R, {
269
+ /* @__PURE__ */ U(B, {
263
270
  path: "/executions",
264
- element: /* @__PURE__ */ B(l, {
265
- db: s,
266
- model: k
271
+ element: /* @__PURE__ */ U(o, {
272
+ db: n,
273
+ model: M
267
274
  })
268
275
  }),
269
- /* @__PURE__ */ B(R, {
276
+ /* @__PURE__ */ U(B, {
270
277
  path: "/workflows",
271
- element: /* @__PURE__ */ B(h, {
272
- db: s,
273
- model: k
278
+ element: /* @__PURE__ */ U(d, {
279
+ db: n,
280
+ model: M
274
281
  })
275
282
  }),
276
- /* @__PURE__ */ B(R, {
283
+ /* @__PURE__ */ U(B, {
277
284
  path: "/agents",
278
- element: /* @__PURE__ */ B(f, {
279
- db: s,
280
- model: k
285
+ element: /* @__PURE__ */ U(a, {
286
+ db: n,
287
+ model: M
281
288
  })
282
289
  }),
283
- /* @__PURE__ */ B(R, {
290
+ /* @__PURE__ */ U(B, {
291
+ path: "/proposals",
292
+ element: /* @__PURE__ */ U(v, {})
293
+ }),
294
+ /* @__PURE__ */ U(B, {
284
295
  path: "/provenance",
285
- element: /* @__PURE__ */ B(t, {
286
- db: s,
287
- model: k,
288
- namespace: C,
289
- reference: W
296
+ element: /* @__PURE__ */ U(_, {
297
+ db: n,
298
+ model: M,
299
+ namespace: T,
300
+ reference: te
290
301
  })
291
302
  }),
292
- /* @__PURE__ */ B(R, {
303
+ /* @__PURE__ */ U(B, {
293
304
  path: "/conflicts",
294
- element: /* @__PURE__ */ B(r, {
295
- db: s,
296
- diagnostics: N
305
+ element: /* @__PURE__ */ U(y, {
306
+ db: n,
307
+ diagnostics: K
297
308
  })
298
309
  }),
299
- /* @__PURE__ */ B(R, {
310
+ /* @__PURE__ */ U(B, {
300
311
  path: "/health",
301
- element: /* @__PURE__ */ B(c, {
302
- diagnostics: N,
303
- model: k
312
+ element: /* @__PURE__ */ U(m, {
313
+ diagnostics: K,
314
+ model: M
304
315
  })
305
316
  }),
306
- /* @__PURE__ */ B(R, {
317
+ /* @__PURE__ */ U(B, {
307
318
  path: "/settings",
308
- element: /* @__PURE__ */ B(m, {
309
- db: s,
310
- remoteUrl: b,
311
- token: S,
312
- onConnect: O
319
+ element: /* @__PURE__ */ U(r, {
320
+ db: n,
321
+ remoteUrl: x,
322
+ token: w,
323
+ onConnect: j
313
324
  })
314
325
  }),
315
- /* @__PURE__ */ B(R, {
326
+ /* @__PURE__ */ U(B, {
316
327
  path: "/api-keys",
317
- element: /* @__PURE__ */ V("div", {
328
+ element: /* @__PURE__ */ W("div", {
318
329
  style: { padding: "2rem" },
319
- children: [/* @__PURE__ */ B("h1", { children: "API Key Management" }), /* @__PURE__ */ B(x, {
320
- apiUrl: b,
321
- token: S,
322
- namespace: C,
330
+ children: [/* @__PURE__ */ U("h1", { children: "API Key Management" }), /* @__PURE__ */ U(C, {
331
+ apiUrl: x,
332
+ token: w,
333
+ namespace: T,
323
334
  onConfigure: () => window.location.assign("/settings")
324
335
  })]
325
336
  })
@@ -330,4 +341,4 @@ function U({ db: s, remoteUrl: b = "", token: S = "", namespace: C = "default",
330
341
  }) });
331
342
  }
332
343
  //#endregion
333
- 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 };
344
+ export { a as AgentExplorer, g as ApplicationDesigner, p as AskFeltDB, s as CapabilityExplorer, y as ConflictExplorer, o as ExecutionViewer, u as GlobalSearch, m as HealthCenter, C as KeyManagementPanel, T as ManagedInstancePanel, w as ManagedInstanceUtil, f as OperationsExplorer, e as OverviewDashboard, h as PeerMap, v as ProposalBrowser, _ as ProvenanceViewer, l as ReferenceExplorer, r as SettingsPanel, c as StateExplorer, K as StudioApp, d as WorkflowVisualizer, E as capitalize, D as fetchDashboardStats, O as fetchDiagnostics, k as fetchPeers, A as fetchProvenance, j as formatBytes, M as formatReference, N as formatRelativeTime, P as formatTime, F as searchReferences, n as useCollection, b as useDashboardStats, S as useFeltDB, i as usePeers, x as useProvenance, t as useRuntimeDiagnostics };
@@ -1,2 +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}.runtime-notice{color:#65551d;background:#fff9df;border:1px solid #d8c98d;border-radius:8px;max-width:1280px;margin:0 auto 20px;padding:12px 16px;font-size:13px;line-height:1.45}.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}.studio-data-bridge{opacity:0;pointer-events:none;border:0;width:1px;height:1px;position:absolute}.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}}
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}.runtime-notice{color:#65551d;background:#fff9df;border:1px solid #d8c98d;border-radius:8px;max-width:1280px;margin:0 auto 20px;padding:12px 16px;font-size:13px;line-height:1.45}.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}.studio-data-bridge{opacity:0;pointer-events:none;border:0;width:1px;height:1px;position:absolute}.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}}.ask-feltdb{color:#1d3127;background:linear-gradient(135deg,#f7fbf8,#eef7f2);border:1px solid #cbdad1;border-radius:12px;margin:0 0 18px;padding:18px}.ask-feltdb h2{margin:4px 0;font:26px Georgia,serif}.ask-feltdb p{color:#607268;margin:5px 0 12px}.ask-feltdb textarea{box-sizing:border-box;resize:vertical;background:#fff;border:1px solid #b9cfc2;border-radius:8px;width:100%;min-height:76px;margin:8px 0;padding:12px}.ask-feltdb progress{width:100%}.ai-unavailable,.ai-status,.proposal-boundary{font-size:12px}.proposal-review{border-top:1px solid #cbdad1;margin-top:14px;padding-top:14px}.proposal-review h3{margin:0 0 8px}.proposal-review li{margin:4px 0;font-family:monospace}.proposal-review pre{color:#dcebe2;white-space:pre-wrap;background:#14231c;border-radius:8px;max-height:360px;padding:12px;overflow:auto}.proposal-warning{color:#714c08;background:#fff1d7;border-radius:7px;margin:8px 0;padding:10px}.authorization-approval{color:#77301f;background:#fff5f1;border:2px solid #b65439;border-radius:8px;gap:9px;margin:10px 0;padding:12px;display:flex}.proposal-app-preview{background:#fff;border:1px solid #bfd2c6;border-radius:9px;margin:12px 0;padding:12px}.proposal-app-preview nav{border-bottom:1px solid #e1e9e4;flex-wrap:wrap;gap:6px;padding-bottom:10px;display:flex}.proposal-app-preview nav span{color:#1f6549;background:#e5f3eb;border-radius:999px;padding:4px 8px;font-size:11px}.proposal-app-preview section{border-bottom:1px solid #edf1ee;justify-content:space-between;gap:12px;padding:9px 2px;display:flex}.proposal-app-preview small{color:#718079;text-align:right}.proposal-browser>header{margin-bottom:18px}.proposal-browser>header h1{margin:4px 0;font:36px Georgia,serif}.proposal-browser-layout{grid-template-columns:minmax(280px,.7fr) minmax(360px,1.3fr);gap:16px;display:grid}.proposal-list-row{text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid #e4ebe7;justify-content:space-between;gap:12px;width:100%;padding:12px 2px;display:flex}.proposal-list-row span{flex-direction:column;gap:3px;display:flex}.proposal-list-row small{color:#7c8982}.proposal-list-row b{color:#267052;text-transform:uppercase;font-size:10px}.proposal-detail pre{color:#dcebe2;white-space:pre-wrap;background:#14231c;border-radius:8px;padding:12px;overflow:auto}@media (max-width:800px){.proposal-browser-layout{grid-template-columns:1fr}}
2
2
  /*$vite$:1*/