@feltdb/core 0.4.3 → 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,246 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ var i = {
4
+ panel: "_panel_1cbba_1",
5
+ header: "_header_1cbba_8",
6
+ createButton: "_createButton_1cbba_23",
7
+ error: "_error_1cbba_38",
8
+ createForm: "_createForm_1cbba_47",
9
+ formGroup: "_formGroup_1cbba_55",
10
+ scopeList: "_scopeList_1cbba_76",
11
+ scopeCheckbox: "_scopeCheckbox_1cbba_82",
12
+ submitButton: "_submitButton_1cbba_94",
13
+ empty: "_empty_1cbba_109",
14
+ keysList: "_keysList_1cbba_117",
15
+ keyCard: "_keyCard_1cbba_123",
16
+ keyHeader: "_keyHeader_1cbba_135",
17
+ namespace: "_namespace_1cbba_150",
18
+ status: "_status_1cbba_156",
19
+ active: "_active_1cbba_163",
20
+ expired: "_expired_1cbba_168",
21
+ keyDetails: "_keyDetails_1cbba_173",
22
+ detail: "_detail_1cbba_179",
23
+ copyBtn: "_copyBtn_1cbba_203",
24
+ daysLeft: "_daysLeft_1cbba_217",
25
+ scopes: "_scopes_1cbba_223",
26
+ scopeTags: "_scopeTags_1cbba_227",
27
+ scopeTag: "_scopeTag_1cbba_227",
28
+ keyActions: "_keyActions_1cbba_243",
29
+ revokeBtn: "_revokeBtn_1cbba_250",
30
+ info: "_info_1cbba_265"
31
+ }, a = ({ apiUrl: a, token: o, namespace: s = "app-store-sherpa" }) => {
32
+ let [c, l] = t([]), [u, d] = t(!0), [f, p] = t(null), [m, h] = t(!1), [g, _] = t(null), [v, y] = t(""), [b, x] = t([
33
+ "state:read",
34
+ "state:write",
35
+ "events:read"
36
+ ]), S = [
37
+ "state:read",
38
+ "state:write",
39
+ "events:read",
40
+ "backup:create",
41
+ "backup:restore",
42
+ "admin:logs",
43
+ "admin:restart"
44
+ ], C = [
45
+ "state:read",
46
+ "state:write",
47
+ "events:read",
48
+ "backup:create",
49
+ "backup:restore",
50
+ "admin:logs",
51
+ "admin:restart"
52
+ ];
53
+ e(() => {
54
+ w();
55
+ }, []);
56
+ let w = async () => {
57
+ try {
58
+ d(!0), p(null);
59
+ let e = await fetch(`${a}/api/keys`, { headers: { Authorization: `Bearer ${o}` } });
60
+ if (!e.ok) throw Error(`Failed to fetch keys: ${e.statusText}`);
61
+ let t = await e.json();
62
+ l(t.tokens || []);
63
+ } catch (e) {
64
+ p(e instanceof Error ? e.message : "Failed to fetch keys");
65
+ } finally {
66
+ d(!1);
67
+ }
68
+ }, T = async (e) => {
69
+ e.preventDefault();
70
+ try {
71
+ let e = await fetch(`${a}/api/keys`, {
72
+ method: "POST",
73
+ headers: {
74
+ Authorization: `Bearer ${o}`,
75
+ "Content-Type": "application/json"
76
+ },
77
+ body: JSON.stringify({
78
+ id: v || `key-${Date.now()}`,
79
+ namespace: s,
80
+ scopes: b.length > 0 ? b : C,
81
+ expiresIn: 90
82
+ })
83
+ });
84
+ if (!e.ok) throw Error(`Failed to create key: ${e.statusText}`);
85
+ y(""), x(C), h(!1), await w();
86
+ } catch (e) {
87
+ p(e instanceof Error ? e.message : "Failed to create key");
88
+ }
89
+ }, E = async (e) => {
90
+ if (confirm(`Revoke key "${e}"? This cannot be undone.`)) try {
91
+ let t = await fetch(`${a}/api/keys/${e}`, {
92
+ method: "DELETE",
93
+ headers: { Authorization: `Bearer ${o}` }
94
+ });
95
+ if (!t.ok) throw Error(`Failed to revoke key: ${t.statusText}`);
96
+ await w();
97
+ } catch (e) {
98
+ p(e instanceof Error ? e.message : "Failed to revoke key");
99
+ }
100
+ }, D = (e, t) => {
101
+ navigator.clipboard.writeText(e), _(t), setTimeout(() => _(null), 2e3);
102
+ }, O = (e) => new Date(e).toLocaleDateString("en-US", {
103
+ year: "numeric",
104
+ month: "short",
105
+ day: "numeric",
106
+ hour: "2-digit",
107
+ minute: "2-digit"
108
+ }), k = (e) => new Date(e) < /* @__PURE__ */ new Date(), A = (e) => Math.ceil((new Date(e).getTime() - (/* @__PURE__ */ new Date()).getTime()) / 864e5);
109
+ return u ? /* @__PURE__ */ n("div", {
110
+ className: i.panel,
111
+ children: "Loading keys..."
112
+ }) : /* @__PURE__ */ r("div", {
113
+ className: i.panel,
114
+ children: [
115
+ /* @__PURE__ */ r("div", {
116
+ className: i.header,
117
+ children: [/* @__PURE__ */ n("h2", { children: "API Key Management" }), /* @__PURE__ */ n("button", {
118
+ className: i.createButton,
119
+ onClick: () => h(!m),
120
+ children: m ? "✕ Cancel" : "+ New Key"
121
+ })]
122
+ }),
123
+ f && /* @__PURE__ */ r("div", {
124
+ className: i.error,
125
+ children: ["⚠ ", f]
126
+ }),
127
+ m && /* @__PURE__ */ r("form", {
128
+ onSubmit: T,
129
+ className: i.createForm,
130
+ children: [
131
+ /* @__PURE__ */ r("div", {
132
+ className: i.formGroup,
133
+ children: [/* @__PURE__ */ n("label", { children: "Key Name (optional)" }), /* @__PURE__ */ n("input", {
134
+ type: "text",
135
+ value: v,
136
+ onChange: (e) => y(e.target.value),
137
+ placeholder: "e.g., staging-key-001"
138
+ })]
139
+ }),
140
+ /* @__PURE__ */ r("div", {
141
+ className: i.formGroup,
142
+ children: [/* @__PURE__ */ n("label", { children: "Scopes" }), /* @__PURE__ */ n("div", {
143
+ className: i.scopeList,
144
+ children: S.map((e) => /* @__PURE__ */ r("label", {
145
+ className: i.scopeCheckbox,
146
+ children: [/* @__PURE__ */ n("input", {
147
+ type: "checkbox",
148
+ checked: b.includes(e),
149
+ onChange: (t) => {
150
+ t.target.checked ? x([...b, e]) : x(b.filter((t) => t !== e));
151
+ }
152
+ }), e]
153
+ }, e))
154
+ })]
155
+ }),
156
+ /* @__PURE__ */ n("button", {
157
+ type: "submit",
158
+ className: i.submitButton,
159
+ children: "Create Key"
160
+ })
161
+ ]
162
+ }),
163
+ c.length === 0 ? /* @__PURE__ */ n("div", {
164
+ className: i.empty,
165
+ children: "No API keys configured. Create one to get started."
166
+ }) : /* @__PURE__ */ n("div", {
167
+ className: i.keysList,
168
+ children: c.map((e) => /* @__PURE__ */ r("div", {
169
+ className: i.keyCard,
170
+ children: [
171
+ /* @__PURE__ */ r("div", {
172
+ className: i.keyHeader,
173
+ children: [/* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("h3", { children: e.id }), /* @__PURE__ */ r("p", {
174
+ className: i.namespace,
175
+ children: ["Namespace: ", e.namespace]
176
+ })] }), /* @__PURE__ */ n("span", {
177
+ className: `${i.status} ${k(e.expires_at) ? i.expired : i.active}`,
178
+ children: k(e.expires_at) ? "Expired" : "Active"
179
+ })]
180
+ }),
181
+ /* @__PURE__ */ r("div", {
182
+ className: i.keyDetails,
183
+ children: [
184
+ /* @__PURE__ */ r("div", {
185
+ className: i.detail,
186
+ children: [
187
+ /* @__PURE__ */ n("strong", { children: "Secret:" }),
188
+ /* @__PURE__ */ r("code", { children: [e.secret.substring(0, 20), "..."] }),
189
+ /* @__PURE__ */ n("button", {
190
+ className: i.copyBtn,
191
+ onClick: () => D(e.secret, e.id),
192
+ children: g === e.id ? "✓ Copied" : "Copy"
193
+ })
194
+ ]
195
+ }),
196
+ /* @__PURE__ */ r("div", {
197
+ className: i.detail,
198
+ children: [/* @__PURE__ */ n("strong", { children: "Created:" }), /* @__PURE__ */ n("span", { children: O(e.created_at) })]
199
+ }),
200
+ /* @__PURE__ */ r("div", {
201
+ className: i.detail,
202
+ children: [/* @__PURE__ */ n("strong", { children: "Expires:" }), /* @__PURE__ */ r("span", { children: [O(e.expires_at), !k(e.expires_at) && /* @__PURE__ */ r("span", {
203
+ className: i.daysLeft,
204
+ children: [
205
+ "(",
206
+ A(e.expires_at),
207
+ " days)"
208
+ ]
209
+ })] })]
210
+ }),
211
+ e.last_used && /* @__PURE__ */ r("div", {
212
+ className: i.detail,
213
+ children: [/* @__PURE__ */ n("strong", { children: "Last Used:" }), /* @__PURE__ */ n("span", { children: O(e.last_used) })]
214
+ }),
215
+ /* @__PURE__ */ r("div", {
216
+ className: i.scopes,
217
+ children: [/* @__PURE__ */ n("strong", { children: "Scopes:" }), /* @__PURE__ */ n("div", {
218
+ className: i.scopeTags,
219
+ children: e.scopes.map((e) => /* @__PURE__ */ n("span", {
220
+ className: i.scopeTag,
221
+ children: e
222
+ }, e))
223
+ })]
224
+ })
225
+ ]
226
+ }),
227
+ /* @__PURE__ */ n("div", {
228
+ className: i.keyActions,
229
+ children: /* @__PURE__ */ n("button", {
230
+ className: i.revokeBtn,
231
+ onClick: () => E(e.id),
232
+ children: "Revoke"
233
+ })
234
+ })
235
+ ]
236
+ }, e.id))
237
+ }),
238
+ /* @__PURE__ */ n("div", {
239
+ className: i.info,
240
+ children: /* @__PURE__ */ r("p", { children: [/* @__PURE__ */ n("strong", { children: "Security:" }), " Store tokens securely. Never commit to version control. Tokens expire after 90 days."] })
241
+ })
242
+ ]
243
+ });
244
+ };
245
+ //#endregion
246
+ export { a as t };
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ import { StateFirstDB } from '@feltdb/core';
3
+ export interface StudioAppProps {
4
+ db?: StateFirstDB;
5
+ remoteUrl?: string;
6
+ namespace?: string;
7
+ }
8
+ export declare function StudioApp({ db, remoteUrl, namespace }: StudioAppProps): React.JSX.Element;
9
+ export default StudioApp;
10
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAmBnD,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,WAAW,CAAC;AAEnB,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,YAAY,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,SAAqB,EAAE,EAAE,cAAc,qBA2GjF;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { FlowSpec, StateFirstDB } from '@feltdb/core';
3
+ export interface AgentExplorerProps {
4
+ db?: StateFirstDB;
5
+ model?: FlowSpec | null;
6
+ }
7
+ export declare function AgentExplorer({ model }: AgentExplorerProps): React.JSX.Element;
8
+ export default AgentExplorer;
9
+ //# sourceMappingURL=AgentExplorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentExplorer.d.ts","sourceRoot":"","sources":["../../src/components/AgentExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IAAG,EAAE,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE;AAElF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,qBAK1D;AACD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { default as React } from 'react';
2
+ import { StateFirstDB, FlowSpec } from '@feltdb/core';
3
+ export interface ApplicationDesignerProps {
4
+ db?: StateFirstDB;
5
+ namespace?: string;
6
+ projectSpec?: FlowSpec | null;
7
+ onSpecChange?: (spec: FlowSpec) => void;
8
+ }
9
+ export declare function ApplicationDesigner({ db, namespace, projectSpec, onSpecChange }: ApplicationDesignerProps): React.JSX.Element;
10
+ export default ApplicationDesigner;
11
+ //# sourceMappingURL=ApplicationDesigner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationDesigner.d.ts","sourceRoot":"","sources":["../../src/components/ApplicationDesigner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAkB,MAAM,cAAc,CAAC;AAU3E,MAAM,WAAW,wBAAwB;IAAG,EAAE,CAAC,EAAE,YAAY,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CAAE;AAE3J,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,SAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,wBAAwB,qBAsGrH;AACD,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { FlowSpec, StateFirstDB } from '@feltdb/core';
3
+ export interface CapabilityExplorerProps {
4
+ db?: StateFirstDB;
5
+ model?: FlowSpec | null;
6
+ }
7
+ export declare function CapabilityExplorer({ model }: CapabilityExplorerProps): React.JSX.Element;
8
+ export default CapabilityExplorer;
9
+ //# sourceMappingURL=CapabilityExplorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CapabilityExplorer.d.ts","sourceRoot":"","sources":["../../src/components/CapabilityExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IAAG,EAAE,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE;AAEvF,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,qBAMpE;AACD,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { RuntimeDiagnostics, StateFirstDB } from '@feltdb/core';
3
+ export interface ConflictExplorerProps {
4
+ db?: StateFirstDB;
5
+ diagnostics?: RuntimeDiagnostics | null;
6
+ }
7
+ export declare function ConflictExplorer({ db, diagnostics }: ConflictExplorerProps): React.JSX.Element;
8
+ export default ConflictExplorer;
9
+ //# sourceMappingURL=ConflictExplorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConflictExplorer.d.ts","sourceRoot":"","sources":["../../src/components/ConflictExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrE,MAAM,WAAW,qBAAqB;IAAG,EAAE,CAAC,EAAE,YAAY,CAAC;IAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE;AACrG,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,qBAAqB,qBAG1E;AACD,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { FlowSpec, StateFirstDB } from '@feltdb/core';
3
+ export interface ExecutionViewerProps {
4
+ db?: StateFirstDB;
5
+ model?: FlowSpec | null;
6
+ }
7
+ export declare function ExecutionViewer({ db, model }: ExecutionViewerProps): React.JSX.Element;
8
+ export default ExecutionViewer;
9
+ //# sourceMappingURL=ExecutionViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionViewer.d.ts","sourceRoot":"","sources":["../../src/components/ExecutionViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D,MAAM,WAAW,oBAAoB;IAAG,EAAE,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE;AAQpF,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,oBAAoB,qBAOlE;AACD,eAAe,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ import { FlowSpec, StateFirstDB } from '@feltdb/core';
3
+ export interface GlobalSearchProps {
4
+ db?: StateFirstDB;
5
+ model?: FlowSpec | null;
6
+ onSearch?: (term: string) => void;
7
+ }
8
+ export declare function GlobalSearch({ db, model, onSearch }: GlobalSearchProps): React.JSX.Element;
9
+ export default GlobalSearch;
10
+ //# sourceMappingURL=GlobalSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalSearch.d.ts","sourceRoot":"","sources":["../../src/components/GlobalSearch.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,YAAY,CAAC;IAClB,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBA2CtE;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { FlowSpec, RuntimeDiagnostics } from '@feltdb/core';
3
+ export interface HealthCenterProps {
4
+ diagnostics?: RuntimeDiagnostics | null;
5
+ model?: FlowSpec | null;
6
+ }
7
+ export declare function HealthCenter({ diagnostics, model }: HealthCenterProps): React.JSX.Element;
8
+ export default HealthCenter;
9
+ //# sourceMappingURL=HealthCenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HealthCenter.d.ts","sourceRoot":"","sources":["../../src/components/HealthCenter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjE,MAAM,WAAW,iBAAiB;IAAG,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE;AACvG,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,iBAAiB,qBAKrE;AACD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ interface KeyManagementPanelProps {
3
+ apiUrl: string;
4
+ token: string;
5
+ namespace?: string;
6
+ }
7
+ export declare const KeyManagementPanel: React.FC<KeyManagementPanelProps>;
8
+ export {};
9
+ //# sourceMappingURL=KeyManagementPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyManagementPanel.d.ts","sourceRoot":"","sources":["../../src/components/KeyManagementPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAanD,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAwRhE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../KeyManagementPanel-BOvWTRyH.js";
2
+ export { e as KeyManagementPanel };
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+ export declare const ManagedInstancePanel: React.FC;
3
+ export default ManagedInstancePanel;
4
+ //# sourceMappingURL=ManagedInstancePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagedInstancePanel.d.ts","sourceRoot":"","sources":["../../src/components/ManagedInstancePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAuRxC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,281 @@
1
+ import { ManagedInstanceUtil as e } from "../utils/managed-instance.js";
2
+ import { useState as t } from "react";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ //#region src/components/ManagedInstancePanel.tsx
5
+ var i = () => {
6
+ let [i, a] = t("app-store-sherpa"), [o, s] = t(""), [c, l] = t("90"), [u, d] = t(null), [f, p] = t(null), [m, h] = t(!1), g = [
7
+ "state:read",
8
+ "state:write",
9
+ "events:read",
10
+ "backup:create",
11
+ "backup:restore",
12
+ "admin:logs",
13
+ "admin:restart"
14
+ ], _ = () => {
15
+ let t = o || `token-${Date.now()}`, n = e.createToken({
16
+ id: t,
17
+ namespace: i,
18
+ scopes: g,
19
+ expiresIn: parseInt(c, 10)
20
+ });
21
+ d(n), s("");
22
+ }, v = (e) => {
23
+ navigator.clipboard.writeText(e), p(e), setTimeout(() => p(null), 2e3);
24
+ };
25
+ return /* @__PURE__ */ r("div", {
26
+ style: {
27
+ padding: "20px",
28
+ maxWidth: "800px",
29
+ fontFamily: "monospace"
30
+ },
31
+ children: [/* @__PURE__ */ n("h2", { children: "🔑 Managed Instance API Token Generator" }), u ? /* @__PURE__ */ r("div", {
32
+ style: {
33
+ backgroundColor: "#f5f5f5",
34
+ padding: "20px",
35
+ borderRadius: "4px",
36
+ marginBottom: "20px"
37
+ },
38
+ children: [
39
+ /* @__PURE__ */ n("h3", { children: "✓ Token Generated" }),
40
+ /* @__PURE__ */ r("div", {
41
+ style: { marginBottom: "15px" },
42
+ children: [/* @__PURE__ */ n("strong", { children: "Token ID:" }), /* @__PURE__ */ n("div", {
43
+ style: {
44
+ color: "#666",
45
+ fontSize: "12px"
46
+ },
47
+ children: u.id
48
+ })]
49
+ }),
50
+ /* @__PURE__ */ r("div", {
51
+ style: { marginBottom: "15px" },
52
+ children: [/* @__PURE__ */ n("strong", { children: "Secret (57 chars):" }), /* @__PURE__ */ r("div", {
53
+ style: {
54
+ backgroundColor: "#fff",
55
+ padding: "10px",
56
+ borderRadius: "4px",
57
+ fontFamily: "monospace",
58
+ fontSize: "12px",
59
+ wordBreak: "break-all",
60
+ marginTop: "8px",
61
+ display: "flex",
62
+ justifyContent: "space-between",
63
+ alignItems: "center"
64
+ },
65
+ children: [/* @__PURE__ */ n("span", { children: u.secret }), /* @__PURE__ */ n("button", {
66
+ onClick: () => v(u.secret),
67
+ style: {
68
+ padding: "5px 10px",
69
+ backgroundColor: f === u.secret ? "#28a745" : "#6c757d",
70
+ color: "white",
71
+ border: "none",
72
+ borderRadius: "4px",
73
+ cursor: "pointer",
74
+ fontSize: "12px",
75
+ marginLeft: "10px",
76
+ whiteSpace: "nowrap"
77
+ },
78
+ children: f === u.secret ? "✓ Copied" : "Copy"
79
+ })]
80
+ })]
81
+ }),
82
+ /* @__PURE__ */ r("div", {
83
+ style: { marginBottom: "15px" },
84
+ children: [/* @__PURE__ */ n("strong", { children: "Created:" }), /* @__PURE__ */ n("div", {
85
+ style: {
86
+ color: "#666",
87
+ fontSize: "12px"
88
+ },
89
+ children: new Date(u.createdAt).toLocaleString()
90
+ })]
91
+ }),
92
+ /* @__PURE__ */ r("div", {
93
+ style: { marginBottom: "15px" },
94
+ children: [/* @__PURE__ */ n("strong", { children: "Expires:" }), /* @__PURE__ */ n("div", {
95
+ style: {
96
+ color: "#666",
97
+ fontSize: "12px"
98
+ },
99
+ children: new Date(u.expiresAt).toLocaleString()
100
+ })]
101
+ }),
102
+ /* @__PURE__ */ r("div", {
103
+ style: { marginBottom: "15px" },
104
+ children: [/* @__PURE__ */ n("button", {
105
+ onClick: () => {
106
+ if (!u) return;
107
+ let t = e.generateEnvContent({
108
+ url: `https://${i}-feltdb.fly.dev`,
109
+ token: u.secret,
110
+ namespace: u.namespace,
111
+ applicationId: i,
112
+ revisionId: "v0.5-alpha",
113
+ environment: "staging"
114
+ }), n = new Blob([t], { type: "text/plain" }), r = URL.createObjectURL(n), a = document.createElement("a");
115
+ a.href = r, a.download = ".env.local", document.body.appendChild(a), a.click(), document.body.removeChild(a), URL.revokeObjectURL(r);
116
+ },
117
+ style: {
118
+ padding: "10px 20px",
119
+ backgroundColor: "#28a745",
120
+ color: "white",
121
+ border: "none",
122
+ borderRadius: "4px",
123
+ cursor: "pointer",
124
+ fontSize: "14px",
125
+ marginRight: "10px"
126
+ },
127
+ children: "Download .env.local"
128
+ }), /* @__PURE__ */ n("button", {
129
+ onClick: () => d(null),
130
+ style: {
131
+ padding: "10px 20px",
132
+ backgroundColor: "#6c757d",
133
+ color: "white",
134
+ border: "none",
135
+ borderRadius: "4px",
136
+ cursor: "pointer",
137
+ fontSize: "14px"
138
+ },
139
+ children: "Generate Another"
140
+ })]
141
+ }),
142
+ /* @__PURE__ */ r("details", {
143
+ style: { marginTop: "20px" },
144
+ children: [/* @__PURE__ */ n("summary", {
145
+ style: {
146
+ cursor: "pointer",
147
+ color: "#0070f3"
148
+ },
149
+ children: "Show API Keys JSON"
150
+ }), m && /* @__PURE__ */ n("pre", {
151
+ style: {
152
+ backgroundColor: "#fff",
153
+ padding: "10px",
154
+ borderRadius: "4px",
155
+ fontSize: "11px",
156
+ overflow: "auto",
157
+ marginTop: "10px"
158
+ },
159
+ children: e.generateApiKeysJson([u])
160
+ })]
161
+ }),
162
+ /* @__PURE__ */ r("div", {
163
+ style: {
164
+ backgroundColor: "#fff3cd",
165
+ padding: "10px",
166
+ borderRadius: "4px",
167
+ marginTop: "20px",
168
+ fontSize: "12px"
169
+ },
170
+ children: [/* @__PURE__ */ n("strong", { children: "⚠ Security:" }), /* @__PURE__ */ r("ul", {
171
+ style: { margin: "8px 0 0 20px" },
172
+ children: [
173
+ /* @__PURE__ */ n("li", { children: "This secret is shown only once" }),
174
+ /* @__PURE__ */ n("li", { children: "Store it securely (1Password, AWS Secrets Manager)" }),
175
+ /* @__PURE__ */ n("li", { children: "Never commit to version control" }),
176
+ /* @__PURE__ */ n("li", { children: "Regenerate if exposed" })
177
+ ]
178
+ })]
179
+ })
180
+ ]
181
+ }) : /* @__PURE__ */ r("div", {
182
+ style: { marginBottom: "20px" },
183
+ children: [
184
+ /* @__PURE__ */ r("div", {
185
+ style: { marginBottom: "15px" },
186
+ children: [/* @__PURE__ */ n("label", {
187
+ style: {
188
+ display: "block",
189
+ marginBottom: "5px"
190
+ },
191
+ children: "Namespace:"
192
+ }), /* @__PURE__ */ n("input", {
193
+ type: "text",
194
+ value: i,
195
+ onChange: (e) => a(e.target.value),
196
+ style: {
197
+ width: "100%",
198
+ padding: "8px",
199
+ fontSize: "14px",
200
+ fontFamily: "monospace",
201
+ border: "1px solid #ccc",
202
+ borderRadius: "4px"
203
+ }
204
+ })]
205
+ }),
206
+ /* @__PURE__ */ r("div", {
207
+ style: { marginBottom: "15px" },
208
+ children: [/* @__PURE__ */ n("label", {
209
+ style: {
210
+ display: "block",
211
+ marginBottom: "5px"
212
+ },
213
+ children: "Token Name (optional):"
214
+ }), /* @__PURE__ */ n("input", {
215
+ type: "text",
216
+ value: o,
217
+ onChange: (e) => s(e.target.value),
218
+ placeholder: "e.g., production-key",
219
+ style: {
220
+ width: "100%",
221
+ padding: "8px",
222
+ fontSize: "14px",
223
+ fontFamily: "monospace",
224
+ border: "1px solid #ccc",
225
+ borderRadius: "4px"
226
+ }
227
+ })]
228
+ }),
229
+ /* @__PURE__ */ r("div", {
230
+ style: { marginBottom: "15px" },
231
+ children: [/* @__PURE__ */ n("label", {
232
+ style: {
233
+ display: "block",
234
+ marginBottom: "5px"
235
+ },
236
+ children: "Expires In (days):"
237
+ }), /* @__PURE__ */ n("input", {
238
+ type: "number",
239
+ value: c,
240
+ onChange: (e) => l(e.target.value),
241
+ min: "1",
242
+ style: {
243
+ width: "100%",
244
+ padding: "8px",
245
+ fontSize: "14px",
246
+ fontFamily: "monospace",
247
+ border: "1px solid #ccc",
248
+ borderRadius: "4px"
249
+ }
250
+ })]
251
+ }),
252
+ /* @__PURE__ */ r("div", {
253
+ style: { marginBottom: "15px" },
254
+ children: [/* @__PURE__ */ n("strong", { children: "Scopes (fixed):" }), /* @__PURE__ */ n("div", {
255
+ style: {
256
+ fontSize: "12px",
257
+ color: "#666",
258
+ marginTop: "8px"
259
+ },
260
+ children: g.map((e) => /* @__PURE__ */ r("div", { children: ["• ", e] }, e))
261
+ })]
262
+ }),
263
+ /* @__PURE__ */ n("button", {
264
+ onClick: _,
265
+ style: {
266
+ padding: "10px 20px",
267
+ backgroundColor: "#0070f3",
268
+ color: "white",
269
+ border: "none",
270
+ borderRadius: "4px",
271
+ cursor: "pointer",
272
+ fontSize: "14px"
273
+ },
274
+ children: "Generate Token"
275
+ })
276
+ ]
277
+ })]
278
+ });
279
+ };
280
+ //#endregion
281
+ export { i as ManagedInstancePanel, i as default };