@burdenoff/microfe-devportal 2026.1108.2 → 2026.1109.2

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 (29) hide show
  1. package/dist/devportal/DevportalRoot.js +68 -61
  2. package/dist/devportal/DevportalRoot.js.map +1 -1
  3. package/dist/devportal/DevportalRoutes.js +137 -133
  4. package/dist/devportal/DevportalRoutes.js.map +1 -1
  5. package/dist/devportal/components/SectionNav.js.map +1 -1
  6. package/dist/devportal/pages/ApplicationVersionsPage.js +229 -217
  7. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  8. package/dist/devportal/pages/NodeLifecyclePage.js +2 -0
  9. package/dist/devportal/pages/NodeLifecyclePage.js.map +1 -1
  10. package/dist/devportal/pages/TimeCampusAppletsPage.d.ts +2 -0
  11. package/dist/devportal/pages/TimeCampusAppletsPage.js +490 -0
  12. package/dist/devportal/pages/TimeCampusAppletsPage.js.map +1 -0
  13. package/dist/devportal/utils/constants.js +5 -1
  14. package/dist/devportal/utils/constants.js.map +1 -1
  15. package/dist/devportal/utils/timecampusApplets.d.ts +98 -0
  16. package/dist/devportal/utils/timecampusApplets.js +130 -0
  17. package/dist/devportal/utils/timecampusApplets.js.map +1 -0
  18. package/dist/generated/global-operations.d.ts +46 -5
  19. package/dist/generated/global-operations.js.map +1 -1
  20. package/dist/generated/global-types.d.ts +3901 -638
  21. package/dist/generated/global-types.js.map +1 -1
  22. package/dist/generated/wspace-operations.d.ts +678 -2
  23. package/dist/generated/wspace-operations.js +203 -4
  24. package/dist/generated/wspace-operations.js.map +1 -1
  25. package/dist/generated/wspace-types.d.ts +166197 -34713
  26. package/dist/translations/en.d.ts +46 -0
  27. package/dist/translations/en.js +47 -1
  28. package/dist/translations/en.js.map +1 -1
  29. package/package.json +1 -1
@@ -6,19 +6,19 @@ import { EmptyState as ce } from "../components/EmptyState.js";
6
6
  import { InputField as le } from "../components/FormField.js";
7
7
  import { MarkdownEditor as i } from "../components/MarkdownEditor.js";
8
8
  import { ConfirmDialog as a } from "../components/ConfirmDialog.js";
9
- import { SelectionCheckbox as ue } from "../components/SelectionCheckbox.js";
10
- import { PermissionGuard as de } from "../components/PermissionGuard.js";
11
- import { ManifestViewer as fe } from "../components/ManifestViewer.js";
12
- import { PackageValidationPanel as pe, readPackageValidationState as me } from "../components/PackageValidationPanel.js";
13
- import he from "../../node_modules/date-fns/format.js";
9
+ import { SelectionCheckbox as o } from "../components/SelectionCheckbox.js";
10
+ import { PermissionGuard as ue } from "../components/PermissionGuard.js";
11
+ import { ManifestViewer as de } from "../components/ManifestViewer.js";
12
+ import { PackageValidationPanel as fe, readPackageValidationState as pe } from "../components/PackageValidationPanel.js";
13
+ import me from "../../node_modules/date-fns/format.js";
14
14
  import "../hooks/index.js";
15
15
  import "../components/index.js";
16
- import { DEVPORTAL_PERMISSIONS as ge } from "../constants/permissions.js";
17
- import { useDevportalPermission as _e } from "../hooks/usePermission.js";
18
- import { useDevportal as ve } from "../providers/DevportalProvider.js";
19
- import { usePackageUpload as ye } from "../hooks/usePackageUpload.js";
20
- import { useCallback as o, useEffect as be, useMemo as s, useRef as c, useState as l } from "react";
21
- import { AlertCircle as u, Archive as xe, Building2 as Se, CheckCircle as Ce, Clock as we, Loader2 as d, Package as Te, Plus as Ee, Rocket as De, Send as f, Upload as p, XCircle as Oe } from "lucide-react";
16
+ import { DEVPORTAL_PERMISSIONS as he } from "../constants/permissions.js";
17
+ import { useDevportalPermission as ge } from "../hooks/usePermission.js";
18
+ import { useDevportal as _e } from "../providers/DevportalProvider.js";
19
+ import { usePackageUpload as ve } from "../hooks/usePackageUpload.js";
20
+ import { useCallback as s, useEffect as ye, useMemo as c, useRef as l, useState as u } from "react";
21
+ import { AlertCircle as d, Archive as be, Building2 as xe, CheckCircle as Se, Clock as Ce, Loader2 as we, Package as Te, Plus as Ee, Rocket as De, Send as f, Upload as p, XCircle as Oe } from "lucide-react";
22
22
  import { useParams as ke } from "react-router";
23
23
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
24
24
  import { useI18n as Ae } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
@@ -41,15 +41,17 @@ var Me = () => {
41
41
  let { t: Me } = Ae(), v = (e, t) => {
42
42
  let n = Me(e);
43
43
  return n === e ? t : n;
44
- }, { allowed: Ne } = _e(ge.APP_VERSION_CREATE), { allowed: y } = _e(ge.APP_VERSION_PUBLISH), { allowed: b } = _e(ge.APP_VERSION_DEPRECATE), { appId: x } = ke(), { workspacesGatewayUrl: Pe, authToken: Fe, workspaceId: S, getWorkspaceToken: Ie, navigate: Le, basePath: Re } = ve(), { upload: C, uploading: w, progress: ze, error: T } = ye(Pe, Fe, S, Ie), Be = c(null), Ve = c(null), He = c(null), Ue = c(null), [We, Ge] = l(null), [Ke, E] = l(null), [qe, D] = l(!1), [O, k] = l(null), [A, j] = l({
44
+ }, { allowed: y } = ge(he.APP_VERSION_CREATE), { allowed: b } = ge(he.APP_VERSION_PUBLISH), { allowed: x } = ge(he.APP_VERSION_DEPRECATE), { appId: S } = ke(), { workspacesGatewayUrl: Ne, authToken: Pe, workspaceId: C, getWorkspaceToken: Fe, navigate: Ie, basePath: Le } = _e(), { upload: w, uploading: T, progress: Re, error: E } = ve(Ne, Pe, C, Fe), ze = l(null), Be = l(null), Ve = l(null), He = l(null), [Ue, D] = u(null), [We, O] = u(null), [Ge, k] = u(!1), [A, j] = u(null), [M, N] = u({
45
45
  version: "",
46
46
  releaseNotes: "",
47
47
  changelog: "",
48
48
  packageUrl: "",
49
+ packageFileId: "",
50
+ packageWorkspaceId: "",
49
51
  packageSize: "",
50
52
  manifestJson: "",
51
53
  requiredScopes: ""
52
- }), [Je, M] = l(null), [Ye, N] = l(null), [Xe, P] = l(null), [Ze, F] = l(null), [I, L] = l(/* @__PURE__ */ new Set()), [R, Qe] = l(null), [z, B] = l(""), $e = o((e) => {
54
+ }), [Ke, P] = u(null), [qe, F] = u(null), [Je, I] = u(null), [Ye, L] = u(null), [R, Xe] = u(/* @__PURE__ */ new Set()), [z, Ze] = u(null), [B, Qe] = u(""), $e = s((e) => {
53
55
  let t = e.target.files?.[0];
54
56
  if (!t) return;
55
57
  let n = new FileReader();
@@ -57,16 +59,16 @@ var Me = () => {
57
59
  let n = e.target?.result;
58
60
  if (typeof n == "string") {
59
61
  let e = _(n);
60
- j((t) => ({
62
+ N((t) => ({
61
63
  ...t,
62
64
  manifestJson: n,
63
65
  ...e ? { version: e } : {}
64
- })), Ge(t.name);
66
+ })), D(t.name);
65
67
  }
66
68
  }, n.readAsText(t), e.target.value = "";
67
- }, []), [et, V] = l(null), [tt, nt] = l(null), { data: H } = te({
68
- variables: { id: x ?? "" },
69
- skip: !x,
69
+ }, []), [et, V] = u(null), [tt, nt] = u(null), { data: H } = te({
70
+ variables: { id: S ?? "" },
71
+ skip: !S,
70
72
  fetchPolicy: "cache-first"
71
73
  }), U = H?.application?.appType === "WORKFLOW", W = H?.application?.appType === "NODE", G = [
72
74
  "WORKFLOW",
@@ -74,183 +76,191 @@ var Me = () => {
74
76
  "WIDGET",
75
77
  "DASHBOARD"
76
78
  ].includes(H?.application?.appType ?? ""), rt = !G && !W, it = W && H?.application?.visibility === "PRIVATE", K = H?.application, at = K?.pricingDetails ?? {}, ot = K?.pricingType === "FREE" || K?.pricingType === "PAID" && typeof at.price == "number" && at.price > 0, st = !!K?.shortDescription?.trim() && !!K?.privacyPolicyUrl?.trim() && !!K?.termsOfServiceUrl?.trim(), q = ot && st, ct = [...st ? [] : ["Complete your store listing (short description, privacy policy, terms of service)"], ...ot ? [] : ["Set pricing in the Pricing tab"]];
77
- be(() => {
79
+ ye(() => {
78
80
  let e = H?.application?.name;
79
- if (!x || !e) return;
81
+ if (!S || !e) return;
80
82
  let t = window.__breadcrumbRegistry;
81
- return t?.register(x, e), () => t?.unregister(x);
82
- }, [x, H?.application?.name]);
83
+ return t?.register(S, e), () => t?.unregister(S);
84
+ }, [S, H?.application?.name]);
83
85
  let { data: J, loading: lt, error: ut } = ne({
84
- variables: { applicationId: x },
85
- skip: !x,
86
+ variables: { applicationId: S },
87
+ skip: !S,
86
88
  fetchPolicy: "cache-and-network"
87
- }), [dt, { loading: ft }] = r({ refetchQueries: ["GetApplicationVersions"] }), [pt, { loading: mt }] = oe({ refetchQueries: ["GetApplicationVersions"] }), [ht] = re({ refetchQueries: ["GetApplicationVersions"] }), [gt, { loading: _t }] = ie({ refetchQueries: ["GetApplicationVersions", "GetApplication"] }), [vt] = ee({ refetchQueries: ["GetApplicationVersions"] }), [yt] = n({ refetchQueries: ["GetApplicationVersions"] }), [bt] = ae({ refetchQueries: ["GetApplicationVersions"] }), Y = s(() => J?.application?.versions?.edges?.map((e) => e.node) ?? [], [J?.application?.versions]), X = s(() => Y.filter((e) => I.has(e.id)), [Y, I]), Z = s(() => X.filter((e) => e.status === "draft" || e.status === "rejected"), [X]), Q = s(() => Y.some((e) => e.status === "pending_review"), [Y]), $ = s(() => X.filter((e) => e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest), [X]), xt = Y.length > 0 && Y.every((e) => I.has(e.id)), St = Y.some((e) => I.has(e.id)) && !xt, Ct = (e) => {
88
- Le?.(`${Re}/apps/${x}/versions/${e}/lifecycle`);
89
+ }), [dt, { loading: ft }] = r({ refetchQueries: ["GetApplicationVersions"] }), [pt, { loading: mt }] = oe({ refetchQueries: ["GetApplicationVersions"] }), [ht] = re({ refetchQueries: ["GetApplicationVersions"] }), [gt, { loading: _t }] = ie({ refetchQueries: ["GetApplicationVersions", "GetApplication"] }), [vt] = ee({ refetchQueries: ["GetApplicationVersions"] }), [yt] = n({ refetchQueries: ["GetApplicationVersions"] }), [bt] = ae({ refetchQueries: ["GetApplicationVersions"] }), Y = c(() => J?.application?.versions?.edges?.map((e) => e.node) ?? [], [J?.application?.versions]), X = c(() => Y.filter((e) => R.has(e.id)), [Y, R]), Z = c(() => X.filter((e) => e.status === "draft" || e.status === "rejected"), [X]), Q = c(() => Y.some((e) => e.status === "pending_review"), [Y]), $ = c(() => X.filter((e) => e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest), [X]), xt = Y.length > 0 && Y.every((e) => R.has(e.id)), St = Y.some((e) => R.has(e.id)) && !xt, Ct = (e) => {
90
+ Ie?.(`${Le}/apps/${S}/versions/${e}/lifecycle`);
89
91
  }, wt = async () => {
90
- if (!x || !A.version.trim()) return;
91
- P(null);
92
+ if (!S || !M.version.trim()) return;
93
+ I(null);
92
94
  let e;
93
95
  if (G) {
94
- if (!A.manifestJson.trim()) {
95
- P(U ? "Workflow Definition (JSON) is required — paste the {nodes, edges} object." : "Manifest (JSON) is required.");
96
+ if (!M.manifestJson.trim()) {
97
+ I(U ? "Workflow Definition (JSON) is required — paste the {nodes, edges} object." : "Manifest (JSON) is required.");
96
98
  return;
97
99
  }
98
100
  try {
99
- e = JSON.parse(A.manifestJson);
101
+ e = JSON.parse(M.manifestJson);
100
102
  } catch {
101
- P(U ? "Invalid JSON in Workflow Definition — please check your input." : "Invalid JSON in Manifest — please check your input.");
103
+ I(U ? "Invalid JSON in Workflow Definition — please check your input." : "Invalid JSON in Manifest — please check your input.");
102
104
  return;
103
105
  }
104
106
  } else if (W) {
105
- if (!A.packageUrl) {
106
- P("Package zip is required for Node versions — upload a .zip file before creating.");
107
+ if (!M.packageUrl) {
108
+ I("Package zip is required for Node versions — upload a .zip file before creating.");
107
109
  return;
108
110
  }
109
- if (!A.manifestJson.trim()) {
110
- P("manifest.json is required for Node versions — upload or paste your manifest before creating.");
111
+ if (!M.manifestJson.trim()) {
112
+ I("manifest.json is required for Node versions — upload or paste your manifest before creating.");
111
113
  return;
112
114
  }
113
115
  try {
114
- e = JSON.parse(A.manifestJson);
116
+ e = JSON.parse(M.manifestJson);
115
117
  } catch {
116
- P("Invalid JSON in manifest — please check your input.");
118
+ I("Invalid JSON in manifest — please check your input.");
117
119
  return;
118
120
  }
119
- } else if (A.manifestJson.trim()) try {
120
- e = JSON.parse(A.manifestJson);
121
+ } else if (M.manifestJson.trim()) try {
122
+ e = JSON.parse(M.manifestJson);
121
123
  } catch {
122
- P("Invalid JSON in manifest — please check your input.");
124
+ I("Invalid JSON in manifest — please check your input.");
123
125
  return;
124
126
  }
125
- let t = rt && A.requiredScopes.trim() ? A.requiredScopes.split(",").map((e) => e.trim()).filter(Boolean) : void 0;
127
+ let t = rt && M.requiredScopes.trim() ? M.requiredScopes.split(",").map((e) => e.trim()).filter(Boolean) : void 0;
126
128
  try {
127
129
  let n = await dt({ variables: {
128
- applicationId: x,
130
+ applicationId: S,
129
131
  input: {
130
- version: A.version,
131
- releaseNotes: A.releaseNotes || void 0,
132
- changelog: A.changelog || void 0,
133
- packageUrl: A.packageUrl || void 0,
134
- packageSize: A.packageSize || void 0,
132
+ version: M.version,
133
+ releaseNotes: M.releaseNotes || void 0,
134
+ changelog: M.changelog || void 0,
135
+ packageUrl: M.packageUrl || void 0,
136
+ packageFileId: M.packageFileId || void 0,
137
+ packageWorkspaceId: M.packageWorkspaceId || void 0,
138
+ packageSize: M.packageSize || void 0,
135
139
  manifest: e,
136
140
  requiredScopes: t
137
141
  }
138
142
  } });
139
- D(!1), Ge(null), j({
143
+ k(!1), D(null), N({
140
144
  version: "",
141
145
  releaseNotes: "",
142
146
  changelog: "",
143
147
  packageUrl: "",
148
+ packageFileId: "",
149
+ packageWorkspaceId: "",
144
150
  packageSize: "",
145
151
  manifestJson: "",
146
152
  requiredScopes: ""
147
- }), N(v("devportal.versionCreatedSuccess", "Version created successfully"));
153
+ }), F(v("devportal.versionCreatedSuccess", "Version created successfully"));
148
154
  let r = n.data?.createApplicationVersion?.id;
149
155
  W && r && Ct(r);
150
156
  } catch (e) {
151
- M(e instanceof Error ? e.message : v("devportal.versionCreateFailed", "Failed to create version"));
157
+ P(e instanceof Error ? e.message : v("devportal.versionCreateFailed", "Failed to create version"));
152
158
  }
153
- }, Tt = o(async (e) => {
159
+ }, Tt = s(async (e) => {
154
160
  let t = e.target.files?.[0];
155
161
  if (t) {
156
162
  e.target.value = "";
157
163
  try {
158
- let e = await C(t);
159
- j((n) => ({
164
+ let e = await w(t);
165
+ N((n) => ({
160
166
  ...n,
161
167
  packageUrl: e.downloadUrl,
168
+ packageFileId: e.fileId,
169
+ packageWorkspaceId: C ?? "",
162
170
  packageSize: String(t.size)
163
171
  }));
164
172
  } catch {}
165
173
  }
166
- }, [C]), Et = o(async (e) => {
174
+ }, [w, C]), Et = s(async (e) => {
167
175
  let t = e.target.files?.[0];
168
176
  if (t) {
169
177
  e.target.value = "";
170
178
  try {
171
- let e = await C(t);
172
- k((n) => n && {
179
+ let e = await w(t);
180
+ j((n) => n && {
173
181
  ...n,
174
182
  newPackageUrl: e.downloadUrl,
183
+ newPackageFileId: e.fileId,
184
+ newPackageWorkspaceId: C ?? "",
175
185
  newPackageSize: String(t.size)
176
186
  });
177
187
  } catch {}
178
188
  }
179
- }, [C]), Dt = o((e) => {
189
+ }, [w, C]), Dt = s((e) => {
180
190
  let t = e.target.files?.[0];
181
191
  if (!t) return;
182
192
  let n = new FileReader();
183
193
  n.onload = (e) => {
184
194
  let n = e.target?.result;
185
- typeof n == "string" && (k((e) => e && {
195
+ typeof n == "string" && (j((e) => e && {
186
196
  ...e,
187
197
  manifestJson: n
188
- }), E(t.name));
198
+ }), O(t.name));
189
199
  }, n.readAsText(t), e.target.value = "";
190
200
  }, []), Ot = async () => {
191
- if (!O) return;
192
- F(null);
193
- let e = O.manifestJson.trim() !== O.originalManifestJson.trim(), t;
194
- if (e && O.manifestJson.trim()) try {
195
- t = JSON.parse(O.manifestJson);
201
+ if (!A) return;
202
+ L(null);
203
+ let e = A.manifestJson.trim() !== A.originalManifestJson.trim(), t;
204
+ if (e && A.manifestJson.trim()) try {
205
+ t = JSON.parse(A.manifestJson);
196
206
  } catch {
197
- F("Invalid JSON in manifest — please check your input.");
207
+ L("Invalid JSON in manifest — please check your input.");
198
208
  return;
199
209
  }
200
210
  let n = {};
201
- O.releaseNotes.trim() && (n.releaseNotes = O.releaseNotes), O.changelog.trim() && (n.changelog = O.changelog), O.newPackageUrl && (n.packageUrl = O.newPackageUrl, n.packageSize = O.newPackageSize), t && (n.manifest = t);
211
+ A.releaseNotes.trim() && (n.releaseNotes = A.releaseNotes), A.changelog.trim() && (n.changelog = A.changelog), A.newPackageUrl && (n.packageUrl = A.newPackageUrl, n.packageFileId = A.newPackageFileId || void 0, n.packageWorkspaceId = A.newPackageWorkspaceId || void 0, n.packageSize = A.newPackageSize), t && (n.manifest = t);
202
212
  try {
203
213
  await pt({ variables: {
204
- id: O.versionId,
214
+ id: A.versionId,
205
215
  input: n
206
- } }), k(null), E(null), N(v("devportal.versionUpdatedSuccess", "Version updated successfully"));
216
+ } }), j(null), O(null), F(v("devportal.versionUpdatedSuccess", "Version updated successfully"));
207
217
  } catch (e) {
208
- M(e instanceof Error ? e.message : v("devportal.versionUpdateFailed", "Failed to update version"));
218
+ P(e instanceof Error ? e.message : v("devportal.versionUpdateFailed", "Failed to update version"));
209
219
  }
210
220
  }, kt = async (e) => {
211
- M(null), N(null);
221
+ P(null), F(null);
212
222
  try {
213
223
  let t = await ht({ variables: { id: e } });
214
224
  if (t.error || !t.data?.publishApplicationVersion) throw t.error ?? Error(v("devportal.versionPublishFailed", "Failed to submit version for review"));
215
- N(v("devportal.versionSubmittedSuccess", "Version submitted for review — you'll be notified when approved"));
225
+ F(v("devportal.versionSubmittedSuccess", "Version submitted for review — you'll be notified when approved"));
216
226
  } catch (e) {
217
- M(e instanceof Error ? e.message : v("devportal.versionPublishFailed", "Failed to submit version for review"));
227
+ P(e instanceof Error ? e.message : v("devportal.versionPublishFailed", "Failed to submit version for review"));
218
228
  }
219
229
  }, At = async () => {
220
230
  let e = tt;
221
- if (nt(null), e && S) {
222
- M(null), N(null);
231
+ if (nt(null), e && C) {
232
+ P(null), F(null);
223
233
  try {
224
234
  let t = await gt({ variables: {
225
235
  id: e.id,
226
- workspaceId: S
236
+ workspaceId: C
227
237
  } });
228
238
  if (t.error || !t.data?.publishApplicationVersionToOrganization) throw t.error ?? Error(v("devportal.versionPublishToOrganizationFailed", "Failed to publish the version to your organization"));
229
- N(v("devportal.versionPublishedToOrganizationSuccess", "Version published to your organization. Workspace admins in your organization can now install it."));
239
+ F(v("devportal.versionPublishedToOrganizationSuccess", "Version published to your organization. Workspace admins in your organization can now install it."));
230
240
  } catch (e) {
231
- M(e instanceof Error ? e.message : v("devportal.versionPublishToOrganizationFailed", "Failed to publish the version to your organization"));
241
+ P(e instanceof Error ? e.message : v("devportal.versionPublishToOrganizationFailed", "Failed to publish the version to your organization"));
232
242
  }
233
243
  }
234
244
  }, jt = async (e) => {
235
- M(null), N(null);
245
+ P(null), F(null);
236
246
  try {
237
- await vt({ variables: { id: e } }), N(v("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
247
+ await vt({ variables: { id: e } }), F(v("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
238
248
  } catch (e) {
239
- M(e instanceof Error ? e.message : v("devportal.versionDeprecateFailed", "Failed to deprecate version"));
249
+ P(e instanceof Error ? e.message : v("devportal.versionDeprecateFailed", "Failed to deprecate version"));
240
250
  }
241
251
  }, Mt = async () => {
242
- if (R && z.trim()) {
243
- M(null), N(null);
252
+ if (z && B.trim()) {
253
+ P(null), F(null);
244
254
  try {
245
255
  await bt({ variables: {
246
- id: R.versionId,
247
- reason: z
248
- } }), N(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")), Qe(null), B("");
256
+ id: z.versionId,
257
+ reason: B
258
+ } }), F(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")), Ze(null), Qe("");
249
259
  } catch (e) {
250
- M(e instanceof Error ? e.message : v("devportal.versionRejectFailed", "Failed to reject version"));
260
+ P(e instanceof Error ? e.message : v("devportal.versionRejectFailed", "Failed to reject version"));
251
261
  }
252
262
  }
253
- }, Nt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(Ce, {
263
+ }, Nt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(Se, {
254
264
  size: 16,
255
265
  className: "text-status-success-text"
256
266
  }) : e.status === "pending_review" ? /* @__PURE__ */ h(f, {
@@ -259,103 +269,103 @@ var Me = () => {
259
269
  }) : e.status === "rejected" ? /* @__PURE__ */ h(Oe, {
260
270
  size: 16,
261
271
  className: "text-status-error-text"
262
- }) : e.status === "draft" ? /* @__PURE__ */ h(we, {
272
+ }) : e.status === "draft" ? /* @__PURE__ */ h(Ce, {
263
273
  size: 16,
264
274
  className: "text-status-warning-text"
265
- }) : e.status === "deprecated" ? /* @__PURE__ */ h(xe, {
275
+ }) : e.status === "deprecated" ? /* @__PURE__ */ h(be, {
266
276
  size: 16,
267
277
  className: "text-text-secondary"
268
278
  }) : /* @__PURE__ */ h(Te, {
269
279
  size: 16,
270
280
  className: "text-accent-blue"
271
281
  }), Pt = (e, t) => {
272
- L((n) => {
282
+ Xe((n) => {
273
283
  let r = new Set(n);
274
284
  return t ? r.add(e) : r.delete(e), r;
275
285
  });
276
286
  }, Ft = (e) => {
277
- L((t) => {
287
+ Xe((t) => {
278
288
  let n = new Set(t);
279
289
  return Y.forEach((t) => {
280
290
  e ? n.add(t.id) : n.delete(t.id);
281
291
  }), n;
282
292
  });
283
- }, It = () => L(/* @__PURE__ */ new Set()), Lt = async () => {
293
+ }, It = () => Xe(/* @__PURE__ */ new Set()), Lt = async () => {
284
294
  if (Z.length === 0) return;
285
- M(null);
295
+ P(null);
286
296
  let e = await Promise.allSettled(Z.map((e) => ht({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
287
- N(`Published ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), It(), V(null);
297
+ F(`Published ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), It(), V(null);
288
298
  }, Rt = async () => {
289
299
  if ($.length === 0) return;
290
- M(null);
300
+ P(null);
291
301
  let e = await Promise.allSettled($.map((e) => vt({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
292
- N(`Deprecated ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), It(), V(null);
293
- }, zt = _(A.manifestJson);
302
+ F(`Deprecated ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), It(), V(null);
303
+ }, zt = _(M.manifestJson);
294
304
  return lt && !J ? /* @__PURE__ */ h(e, {
295
305
  title: v("devportal.versionManagement", "Version Management"),
296
306
  description: v("devportal.versionManagementDescription", "Manage your application versions"),
297
- backLink: `/apps/${x}`,
307
+ backLink: `/apps/${S}`,
298
308
  backLabel: v("devportal.backToApplication", "Back to Application"),
299
309
  children: /* @__PURE__ */ h("div", {
300
310
  className: "flex items-center justify-center py-16",
301
- children: /* @__PURE__ */ h(d, { className: "h-8 w-8 animate-spin text-text-secondary" })
311
+ children: /* @__PURE__ */ h(we, { className: "h-8 w-8 animate-spin text-text-secondary" })
302
312
  })
303
313
  }) : ut && !J ? /* @__PURE__ */ h(e, {
304
314
  title: v("devportal.versionManagement", "Version Management"),
305
315
  description: v("devportal.versionManagementDescription", "Manage your application versions"),
306
- backLink: `/apps/${x}`,
316
+ backLink: `/apps/${S}`,
307
317
  backLabel: v("devportal.backToApplication", "Back to Application"),
308
318
  children: /* @__PURE__ */ h(ce, {
309
- icon: /* @__PURE__ */ h(u, {
319
+ icon: /* @__PURE__ */ h(d, {
310
320
  size: 32,
311
321
  className: "text-status-error-text"
312
322
  }),
313
323
  title: v("devportal.failedToLoadVersions", "Failed to load versions"),
314
324
  description: ut.message || v("devportal.versionsLoadError", "An error occurred while loading versions")
315
325
  })
316
- }) : /* @__PURE__ */ h(de, {
326
+ }) : /* @__PURE__ */ h(ue, {
317
327
  authOnly: !0,
318
328
  children: /* @__PURE__ */ g(e, {
319
329
  title: v("devportal.versionManagement", "Version Management"),
320
330
  description: v("devportal.versionManagementDescription", "Manage your application versions"),
321
331
  purpose: U ? v("devportal.versionManagementPurposeWorkflow", "Versions track releases of your workflow. Create a version for each significant change and paste the workflow definition JSON. No zip is needed — the manifest is the workflow.") : W ? v("devportal.versionManagementPurposeNode", "Versions are the releases of your node that users install. Upload a new zip whenever the node implementation changes, and update the manifest if the node's inputs, outputs, or operations change. Bump the version for any change users will see.") : G ? v("devportal.versionManagementPurposeManifestOnly", "Versions track releases of this item. Create a version for each significant change and paste the manifest JSON. No zip is needed.") : v("devportal.versionManagementPurposeIntegration", "Versions track permission and webhook changes for your integration. No zip or manifest is needed — create a new version whenever you add or change required scopes so users can review and accept the updated permissions."),
322
- backLink: `/apps/${x}`,
332
+ backLink: `/apps/${S}`,
323
333
  backLabel: v("devportal.backToApplication", "Back to Application"),
324
334
  actions: /* @__PURE__ */ g("button", {
325
335
  onClick: () => {
326
- P(null), D(!0);
336
+ I(null), k(!0);
327
337
  },
328
- disabled: !Ne,
329
- "aria-disabled": !Ne,
338
+ disabled: !y,
339
+ "aria-disabled": !y,
330
340
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
331
341
  children: [/* @__PURE__ */ h(Ee, { size: 16 }), v("devportal.newVersion", "New Version")]
332
342
  }),
333
343
  children: [
334
- Je && /* @__PURE__ */ g("div", {
344
+ Ke && /* @__PURE__ */ g("div", {
335
345
  className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
336
346
  children: [
337
- /* @__PURE__ */ h(u, {
347
+ /* @__PURE__ */ h(d, {
338
348
  size: 16,
339
349
  className: "flex-shrink-0"
340
350
  }),
341
- Je,
351
+ Ke,
342
352
  /* @__PURE__ */ h("button", {
343
- onClick: () => M(null),
353
+ onClick: () => P(null),
344
354
  className: "ml-auto text-status-error-text hover:text-status-error-text",
345
355
  children: v("devportal.dismiss", "Dismiss")
346
356
  })
347
357
  ]
348
358
  }),
349
- Ye && /* @__PURE__ */ g("div", {
359
+ qe && /* @__PURE__ */ g("div", {
350
360
  className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 flex items-center gap-2 text-sm text-status-success-text",
351
361
  children: [
352
- /* @__PURE__ */ h(Ce, {
362
+ /* @__PURE__ */ h(Se, {
353
363
  size: 16,
354
364
  className: "flex-shrink-0"
355
365
  }),
356
- Ye,
366
+ qe,
357
367
  /* @__PURE__ */ h("button", {
358
- onClick: () => N(null),
368
+ onClick: () => F(null),
359
369
  className: "ml-auto text-status-success-text hover:text-status-success-text",
360
370
  children: v("devportal.dismiss", "Dismiss")
361
371
  })
@@ -363,7 +373,7 @@ var Me = () => {
363
373
  }),
364
374
  K && !q && /* @__PURE__ */ g("div", {
365
375
  className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle px-4 py-3 text-sm text-status-warning-text",
366
- children: [/* @__PURE__ */ h(u, {
376
+ children: [/* @__PURE__ */ h(d, {
367
377
  size: 16,
368
378
  className: "mt-0.5 shrink-0"
369
379
  }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
@@ -412,7 +422,7 @@ var Me = () => {
412
422
  className: "flex flex-wrap items-center gap-3",
413
423
  children: [/* @__PURE__ */ g("div", {
414
424
  className: "flex items-center gap-2",
415
- children: [/* @__PURE__ */ h(ue, {
425
+ children: [/* @__PURE__ */ h(o, {
416
426
  checked: xt,
417
427
  indeterminate: St,
418
428
  onChange: Ft,
@@ -421,7 +431,7 @@ var Me = () => {
421
431
  className: "text-sm font-medium",
422
432
  children: v("devportal.selectAllVisible", "Select all visible")
423
433
  })]
424
- }), I.size > 0 && /* @__PURE__ */ h("button", {
434
+ }), R.size > 0 && /* @__PURE__ */ h("button", {
425
435
  onClick: It,
426
436
  className: "text-sm text-text-secondary hover:text-text-primary",
427
437
  children: v("devportal.clearSelection", "Clear selection")
@@ -431,20 +441,20 @@ var Me = () => {
431
441
  children: [
432
442
  /* @__PURE__ */ g("span", {
433
443
  className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
434
- children: [I.size, " selected"]
444
+ children: [R.size, " selected"]
435
445
  }),
436
446
  /* @__PURE__ */ g("button", {
437
447
  onClick: () => V("publish"),
438
- disabled: Z.length === 0 || !y || !q || Q,
439
- "aria-disabled": !y || !q || Q,
448
+ disabled: Z.length === 0 || !b || !q || Q,
449
+ "aria-disabled": !b || !q || Q,
440
450
  title: Q ? v("devportal.versionAlreadyPending", "A version is already pending review") : q ? void 0 : ct.join(" · "),
441
451
  className: "rounded-md border border-status-success-bg px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
442
452
  children: [v("devportal.submitForReview", "Submit for Review"), Z.length > 0 ? ` (${Z.length})` : ""]
443
453
  }),
444
454
  /* @__PURE__ */ g("button", {
445
455
  onClick: () => V("deprecate"),
446
- disabled: $.length === 0 || !b,
447
- "aria-disabled": !b,
456
+ disabled: $.length === 0 || !x,
457
+ "aria-disabled": !x,
448
458
  className: "rounded-md border border-status-warning-bg px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
449
459
  children: [v("devportal.deprecateSelected", "Deprecate Selected"), $.length > 0 ? ` (${$.length})` : ""]
450
460
  })
@@ -458,7 +468,7 @@ var Me = () => {
458
468
  columns: [
459
469
  {
460
470
  key: "select",
461
- header: /* @__PURE__ */ h(ue, {
471
+ header: /* @__PURE__ */ h(o, {
462
472
  checked: xt,
463
473
  indeterminate: St,
464
474
  onChange: Ft,
@@ -467,8 +477,8 @@ var Me = () => {
467
477
  className: "w-12",
468
478
  render: (e) => /* @__PURE__ */ h("div", {
469
479
  onClick: (e) => e.stopPropagation(),
470
- children: /* @__PURE__ */ h(ue, {
471
- checked: I.has(e.id),
480
+ children: /* @__PURE__ */ h(o, {
481
+ checked: R.has(e.id),
472
482
  onChange: (t) => Pt(e.id, t),
473
483
  ariaLabel: `Select version ${e.version}`
474
484
  })
@@ -519,10 +529,10 @@ var Me = () => {
519
529
  className: "text-xs text-status-error-text max-w-xs",
520
530
  children: e.reviewNotes
521
531
  }),
522
- W && e.packageUrl && /* @__PURE__ */ h(pe, { metadata: e.metadata }),
532
+ W && e.packageUrl && /* @__PURE__ */ h(fe, { metadata: e.metadata }),
523
533
  it && je(e.metadata) && /* @__PURE__ */ g("p", {
524
534
  className: "inline-flex items-center gap-1 text-xs text-status-success-text",
525
- children: [/* @__PURE__ */ h(Se, { size: 11 }), v("devportal.publishedToOrganization", "Published to your organization")]
535
+ children: [/* @__PURE__ */ h(xe, { size: 11 }), v("devportal.publishedToOrganization", "Published to your organization")]
526
536
  })
527
537
  ]
528
538
  })
@@ -530,12 +540,12 @@ var Me = () => {
530
540
  {
531
541
  key: "publishedAt",
532
542
  header: v("devportal.published", "Published"),
533
- render: (e) => e.publishedAt ? he(new Date(e.publishedAt), "MMM d, yyyy") : "-"
543
+ render: (e) => e.publishedAt ? me(new Date(e.publishedAt), "MMM d, yyyy") : "-"
534
544
  },
535
545
  {
536
546
  key: "manifest",
537
547
  header: v("devportal.manifest", "Manifest"),
538
- render: (e) => e.manifest ? /* @__PURE__ */ h(fe, {
548
+ render: (e) => e.manifest ? /* @__PURE__ */ h(de, {
539
549
  manifest: e.manifest,
540
550
  tr: v
541
551
  }) : /* @__PURE__ */ h("span", {
@@ -556,44 +566,46 @@ var Me = () => {
556
566
  onClick: () => Ct(e.id),
557
567
  children: [/* @__PURE__ */ h(De, { size: 11 }), v("devportal.nodeLifecycle.open", "Lifecycle")]
558
568
  }),
559
- (e.status === "draft" || e.status === "rejected") && Ne && /* @__PURE__ */ h("button", {
569
+ (e.status === "draft" || e.status === "rejected") && y && /* @__PURE__ */ h("button", {
560
570
  className: "inline-flex items-center gap-1 text-xs text-text-secondary hover:text-text-primary hover:underline",
561
571
  onClick: () => {
562
572
  let t = e.manifest ? JSON.stringify(e.manifest, null, 2) : "";
563
- k({
573
+ j({
564
574
  versionId: e.id,
565
575
  version: e.version,
566
576
  hasExistingZip: !!e.packageUrl,
567
577
  newPackageUrl: "",
578
+ newPackageFileId: "",
579
+ newPackageWorkspaceId: "",
568
580
  newPackageSize: "",
569
581
  manifestJson: t,
570
582
  originalManifestJson: t,
571
583
  releaseNotes: e.releaseNotes ?? "",
572
584
  changelog: e.changelog ?? ""
573
- }), E(null), F(null);
585
+ }), O(null), L(null);
574
586
  },
575
587
  children: "Edit"
576
588
  }),
577
589
  (e.status === "draft" || e.status === "rejected") && K?.status === "PUBLISHED" && /* @__PURE__ */ g("button", {
578
590
  className: "inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:opacity-50 disabled:cursor-not-allowed",
579
- disabled: !y || !q || Q,
580
- "aria-disabled": !y || !q || Q,
591
+ disabled: !b || !q || Q,
592
+ "aria-disabled": !b || !q || Q,
581
593
  title: Q ? v("devportal.versionAlreadyPending", "A version is already pending review") : q ? void 0 : ct.join(" · "),
582
594
  onClick: () => kt(e.id),
583
595
  children: [/* @__PURE__ */ h(f, { size: 11 }), v("devportal.submitForReview", "Submit for Review")]
584
596
  }),
585
597
  it && (e.status === "draft" || e.status === "rejected") && /* @__PURE__ */ g("button", {
586
598
  className: "inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:opacity-50 disabled:cursor-not-allowed",
587
- disabled: !y || !S || _t || me(e.metadata).kind !== "passed",
588
- "aria-disabled": !y || !S || _t || me(e.metadata).kind !== "passed",
589
- title: me(e.metadata).kind === "passed" ? void 0 : v("devportal.publishToOrganizationNeedsValidation", "Upload a package that passes validation first"),
599
+ disabled: !b || !C || _t || pe(e.metadata).kind !== "passed",
600
+ "aria-disabled": !b || !C || _t || pe(e.metadata).kind !== "passed",
601
+ title: pe(e.metadata).kind === "passed" ? void 0 : v("devportal.publishToOrganizationNeedsValidation", "Upload a package that passes validation first"),
590
602
  onClick: () => nt(e),
591
- children: [/* @__PURE__ */ h(Se, { size: 11 }), v("devportal.publishToOrganization", "Publish to my organization")]
603
+ children: [/* @__PURE__ */ h(xe, { size: 11 }), v("devportal.publishToOrganization", "Publish to my organization")]
592
604
  }),
593
605
  e.status === "published" && !e.isLatest && /* @__PURE__ */ h("button", {
594
606
  className: "text-xs text-status-warning-text hover:underline disabled:opacity-50",
595
- disabled: !b,
596
- "aria-disabled": !b,
607
+ disabled: !x,
608
+ "aria-disabled": !x,
597
609
  onClick: () => jt(e.id),
598
610
  children: v("devportal.deprecate", "Deprecate")
599
611
  })
@@ -607,16 +619,16 @@ var Me = () => {
607
619
  description: v("devportal.noVersionsYetDescription", "Create your first version to start distributing your app"),
608
620
  action: /* @__PURE__ */ g("button", {
609
621
  onClick: () => {
610
- P(null), D(!0);
622
+ I(null), k(!0);
611
623
  },
612
624
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
613
625
  children: [/* @__PURE__ */ h(Ee, { size: 16 }), v("devportal.createVersion", "Create Version")]
614
626
  })
615
627
  }),
616
- qe && /* @__PURE__ */ h(a, {
617
- open: qe,
628
+ Ge && /* @__PURE__ */ h(a, {
629
+ open: Ge,
618
630
  onOpenChange: (e) => {
619
- D(e), e || P(null);
631
+ k(e), e || I(null);
620
632
  },
621
633
  onConfirm: wt,
622
634
  title: v("devportal.createNewVersion", "Create New Version"),
@@ -624,18 +636,18 @@ var Me = () => {
624
636
  children: /* @__PURE__ */ g("div", {
625
637
  className: "space-y-4",
626
638
  children: [
627
- Xe && /* @__PURE__ */ g("div", {
639
+ Je && /* @__PURE__ */ g("div", {
628
640
  className: "rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
629
- children: [/* @__PURE__ */ h(u, {
641
+ children: [/* @__PURE__ */ h(d, {
630
642
  size: 14,
631
643
  className: "flex-shrink-0"
632
- }), Xe]
644
+ }), Je]
633
645
  }),
634
646
  /* @__PURE__ */ h(le, {
635
647
  label: v("devportal.versionNumber", "Version Number"),
636
- value: A.version,
637
- onChange: (e) => j({
638
- ...A,
648
+ value: M.version,
649
+ onChange: (e) => N({
650
+ ...M,
639
651
  version: e.target.value
640
652
  }),
641
653
  placeholder: "e.g., 2.2.0",
@@ -661,11 +673,11 @@ var Me = () => {
661
673
  rows: 10,
662
674
  required: !0,
663
675
  placeholder: U ? "{\n \"nodes\": [],\n \"edges\": []\n}" : "{\n \"manifestVersion\": \"1.0\",\n \"identity\": { \"name\": \"My Item\", \"version\": \"1.0.0\" }\n}",
664
- value: A.manifestJson,
676
+ value: M.manifestJson,
665
677
  onChange: (e) => {
666
678
  let t = _(e.target.value);
667
- j({
668
- ...A,
679
+ N({
680
+ ...M,
669
681
  manifestJson: e.target.value,
670
682
  ...t ? { version: t } : {}
671
683
  });
@@ -700,7 +712,7 @@ var Me = () => {
700
712
  className: "flex gap-2 items-center",
701
713
  children: [
702
714
  /* @__PURE__ */ h("input", {
703
- ref: Be,
715
+ ref: ze,
704
716
  type: "file",
705
717
  accept: ".zip",
706
718
  className: "hidden",
@@ -708,33 +720,33 @@ var Me = () => {
708
720
  }),
709
721
  /* @__PURE__ */ h("button", {
710
722
  type: "button",
711
- disabled: w,
712
- onClick: () => Be.current?.click(),
723
+ disabled: T,
724
+ onClick: () => ze.current?.click(),
713
725
  className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
714
- children: w ? /* @__PURE__ */ g(m, { children: [
715
- /* @__PURE__ */ h(d, {
726
+ children: T ? /* @__PURE__ */ g(m, { children: [
727
+ /* @__PURE__ */ h(we, {
716
728
  size: 14,
717
729
  className: "animate-spin"
718
730
  }),
719
731
  " ",
720
732
  "Uploading… ",
721
- ze,
733
+ Re,
722
734
  "%"
723
735
  ] }) : /* @__PURE__ */ g(m, { children: [
724
736
  /* @__PURE__ */ h(p, { size: 14 }),
725
737
  " ",
726
- A.packageUrl ? "Replace zip" : "Upload zip"
738
+ M.packageUrl ? "Replace zip" : "Upload zip"
727
739
  ] })
728
740
  }),
729
- A.packageUrl && !w && /* @__PURE__ */ h("span", {
741
+ M.packageUrl && !T && /* @__PURE__ */ h("span", {
730
742
  className: "text-xs text-status-success-text",
731
743
  children: "✓ Uploaded"
732
744
  })
733
745
  ]
734
746
  }),
735
- T && /* @__PURE__ */ h("p", {
747
+ E && /* @__PURE__ */ h("p", {
736
748
  className: "text-xs text-status-error-text",
737
- children: T
749
+ children: E
738
750
  }),
739
751
  /* @__PURE__ */ h("p", {
740
752
  className: "text-xs text-text-tertiary",
@@ -760,12 +772,12 @@ var Me = () => {
760
772
  }), /* @__PURE__ */ g("div", {
761
773
  className: "flex items-center gap-2",
762
774
  children: [
763
- We && /* @__PURE__ */ g("span", {
775
+ Ue && /* @__PURE__ */ g("span", {
764
776
  className: "text-xs text-status-success-text",
765
- children: ["✓ ", We]
777
+ children: ["✓ ", Ue]
766
778
  }),
767
779
  /* @__PURE__ */ h("input", {
768
- ref: Ve,
780
+ ref: Be,
769
781
  type: "file",
770
782
  accept: ".json,application/json",
771
783
  className: "hidden",
@@ -773,7 +785,7 @@ var Me = () => {
773
785
  }),
774
786
  /* @__PURE__ */ g("button", {
775
787
  type: "button",
776
- onClick: () => Ve.current?.click(),
788
+ onClick: () => Be.current?.click(),
777
789
  className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors",
778
790
  children: [/* @__PURE__ */ h(p, { size: 12 }), "Upload manifest.json"]
779
791
  })
@@ -783,12 +795,12 @@ var Me = () => {
783
795
  /* @__PURE__ */ h("textarea", {
784
796
  rows: 5,
785
797
  placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
786
- value: A.manifestJson,
798
+ value: M.manifestJson,
787
799
  onChange: (e) => {
788
- Ge(null);
800
+ D(null);
789
801
  let t = _(e.target.value);
790
- j({
791
- ...A,
802
+ N({
803
+ ...M,
792
804
  manifestJson: e.target.value,
793
805
  ...t ? { version: t } : {}
794
806
  });
@@ -821,9 +833,9 @@ var Me = () => {
821
833
  }),
822
834
  /* @__PURE__ */ h("input", {
823
835
  type: "text",
824
- value: A.requiredScopes,
825
- onChange: (e) => j({
826
- ...A,
836
+ value: M.requiredScopes,
837
+ onChange: (e) => N({
838
+ ...M,
827
839
  requiredScopes: e.target.value
828
840
  }),
829
841
  placeholder: "e.g. read:contacts, write:messages",
@@ -837,9 +849,9 @@ var Me = () => {
837
849
  }),
838
850
  /* @__PURE__ */ h(i, {
839
851
  label: v("devportal.releaseNotes", "Release Notes"),
840
- value: A.releaseNotes,
841
- onChange: (e) => j({
842
- ...A,
852
+ value: M.releaseNotes,
853
+ onChange: (e) => N({
854
+ ...M,
843
855
  releaseNotes: e
844
856
  }),
845
857
  placeholder: v("devportal.releaseNotesPlaceholder", "What changed in this release?"),
@@ -847,9 +859,9 @@ var Me = () => {
847
859
  }),
848
860
  /* @__PURE__ */ h(i, {
849
861
  label: v("devportal.changelog", "Changelog"),
850
- value: A.changelog,
851
- onChange: (e) => j({
852
- ...A,
862
+ value: M.changelog,
863
+ onChange: (e) => N({
864
+ ...M,
853
865
  changelog: e
854
866
  }),
855
867
  placeholder: v("devportal.changelogPlaceholder", "Detailed changelog for this version..."),
@@ -858,13 +870,13 @@ var Me = () => {
858
870
  ]
859
871
  })
860
872
  }),
861
- R && /* @__PURE__ */ h(a, {
862
- open: !!R,
873
+ z && /* @__PURE__ */ h(a, {
874
+ open: !!z,
863
875
  onOpenChange: (e) => {
864
- e || (Qe(null), B(""));
876
+ e || (Ze(null), Qe(""));
865
877
  },
866
878
  onConfirm: Mt,
867
- title: `Reject version ${R.version}`,
879
+ title: `Reject version ${z.version}`,
868
880
  confirmLabel: "Reject Version",
869
881
  cancelLabel: v("devportal.cancel", "Cancel"),
870
882
  variant: "danger",
@@ -887,31 +899,31 @@ var Me = () => {
887
899
  ]
888
900
  }), /* @__PURE__ */ h("textarea", {
889
901
  rows: 3,
890
- value: z,
891
- onChange: (e) => B(e.target.value),
902
+ value: B,
903
+ onChange: (e) => Qe(e.target.value),
892
904
  placeholder: "e.g. Manifest contains disallowed network calls to external domains...",
893
905
  className: "w-full rounded-md border bg-transparent px-3 py-2 text-sm placeholder:text-text-secondary focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)]"
894
906
  })]
895
907
  })]
896
908
  })
897
909
  }),
898
- O && /* @__PURE__ */ h(a, {
899
- open: !!O,
910
+ A && /* @__PURE__ */ h(a, {
911
+ open: !!A,
900
912
  onOpenChange: (e) => {
901
- e || (k(null), E(null), F(null));
913
+ e || (j(null), O(null), L(null));
902
914
  },
903
915
  onConfirm: Ot,
904
- title: `Edit Version ${O.version}`,
916
+ title: `Edit Version ${A.version}`,
905
917
  confirmLabel: mt ? "Saving…" : "Save Changes",
906
918
  children: /* @__PURE__ */ g("div", {
907
919
  className: "space-y-4",
908
920
  children: [
909
- Ze && /* @__PURE__ */ g("div", {
921
+ Ye && /* @__PURE__ */ g("div", {
910
922
  className: "rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
911
- children: [/* @__PURE__ */ h(u, {
923
+ children: [/* @__PURE__ */ h(d, {
912
924
  size: 14,
913
925
  className: "flex-shrink-0"
914
- }), Ze]
926
+ }), Ye]
915
927
  }),
916
928
  /* @__PURE__ */ h("div", {
917
929
  className: "rounded-lg border border-status-info-bg bg-status-info-bg-subtle px-3 py-2 text-xs text-status-info-text",
@@ -928,7 +940,7 @@ var Me = () => {
928
940
  className: "flex gap-2 items-center",
929
941
  children: [
930
942
  /* @__PURE__ */ h("input", {
931
- ref: He,
943
+ ref: Ve,
932
944
  type: "file",
933
945
  accept: ".zip",
934
946
  className: "hidden",
@@ -936,33 +948,33 @@ var Me = () => {
936
948
  }),
937
949
  /* @__PURE__ */ h("button", {
938
950
  type: "button",
939
- disabled: w,
940
- onClick: () => He.current?.click(),
951
+ disabled: T,
952
+ onClick: () => Ve.current?.click(),
941
953
  className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
942
- children: w ? /* @__PURE__ */ g(m, { children: [
943
- /* @__PURE__ */ h(d, {
954
+ children: T ? /* @__PURE__ */ g(m, { children: [
955
+ /* @__PURE__ */ h(we, {
944
956
  size: 14,
945
957
  className: "animate-spin"
946
958
  }),
947
959
  " ",
948
960
  "Uploading… ",
949
- ze,
961
+ Re,
950
962
  "%"
951
- ] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }), O.newPackageUrl ? "Replace zip again" : O.hasExistingZip ? "Replace zip" : "Upload zip"] })
963
+ ] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }), A.newPackageUrl ? "Replace zip again" : A.hasExistingZip ? "Replace zip" : "Upload zip"] })
952
964
  }),
953
- O.newPackageUrl && !w && /* @__PURE__ */ h("span", {
965
+ A.newPackageUrl && !T && /* @__PURE__ */ h("span", {
954
966
  className: "text-xs text-status-success-text",
955
967
  children: "✓ New zip ready"
956
968
  }),
957
- !O.newPackageUrl && O.hasExistingZip && /* @__PURE__ */ h("span", {
969
+ !A.newPackageUrl && A.hasExistingZip && /* @__PURE__ */ h("span", {
958
970
  className: "text-xs text-text-secondary",
959
971
  children: "Current zip kept"
960
972
  })
961
973
  ]
962
974
  }),
963
- T && /* @__PURE__ */ h("p", {
975
+ E && /* @__PURE__ */ h("p", {
964
976
  className: "text-xs text-status-error-text",
965
- children: T
977
+ children: E
966
978
  })
967
979
  ]
968
980
  }),
@@ -983,12 +995,12 @@ var Me = () => {
983
995
  }), /* @__PURE__ */ g("div", {
984
996
  className: "flex items-center gap-2",
985
997
  children: [
986
- Ke && /* @__PURE__ */ g("span", {
998
+ We && /* @__PURE__ */ g("span", {
987
999
  className: "text-xs text-status-success-text",
988
- children: ["✓ ", Ke]
1000
+ children: ["✓ ", We]
989
1001
  }),
990
1002
  /* @__PURE__ */ h("input", {
991
- ref: Ue,
1003
+ ref: He,
992
1004
  type: "file",
993
1005
  accept: ".json,application/json",
994
1006
  className: "hidden",
@@ -996,7 +1008,7 @@ var Me = () => {
996
1008
  }),
997
1009
  /* @__PURE__ */ g("button", {
998
1010
  type: "button",
999
- onClick: () => Ue.current?.click(),
1011
+ onClick: () => He.current?.click(),
1000
1012
  className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors",
1001
1013
  children: [/* @__PURE__ */ h(p, { size: 12 }), " Upload manifest.json"]
1002
1014
  })
@@ -1005,9 +1017,9 @@ var Me = () => {
1005
1017
  }), /* @__PURE__ */ h("textarea", {
1006
1018
  rows: 5,
1007
1019
  placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
1008
- value: O.manifestJson,
1020
+ value: A.manifestJson,
1009
1021
  onChange: (e) => {
1010
- E(null), k((t) => t && {
1022
+ O(null), j((t) => t && {
1011
1023
  ...t,
1012
1024
  manifestJson: e.target.value
1013
1025
  });
@@ -1030,8 +1042,8 @@ var Me = () => {
1030
1042
  }), /* @__PURE__ */ h("textarea", {
1031
1043
  rows: 10,
1032
1044
  placeholder: U ? "{\n \"nodes\": [],\n \"edges\": []\n}" : "{\n \"manifestVersion\": \"1.0\",\n \"identity\": { \"name\": \"My Item\", \"version\": \"1.0.0\" }\n}",
1033
- value: O.manifestJson,
1034
- onChange: (e) => k((t) => t && {
1045
+ value: A.manifestJson,
1046
+ onChange: (e) => j((t) => t && {
1035
1047
  ...t,
1036
1048
  manifestJson: e.target.value
1037
1049
  }),
@@ -1040,8 +1052,8 @@ var Me = () => {
1040
1052
  }),
1041
1053
  /* @__PURE__ */ h(i, {
1042
1054
  label: v("devportal.releaseNotes", "Release Notes"),
1043
- value: O.releaseNotes,
1044
- onChange: (e) => k((t) => t && {
1055
+ value: A.releaseNotes,
1056
+ onChange: (e) => j((t) => t && {
1045
1057
  ...t,
1046
1058
  releaseNotes: e
1047
1059
  }),
@@ -1050,8 +1062,8 @@ var Me = () => {
1050
1062
  }),
1051
1063
  /* @__PURE__ */ h(i, {
1052
1064
  label: v("devportal.changelog", "Changelog"),
1053
- value: O.changelog,
1054
- onChange: (e) => k((t) => t && {
1065
+ value: A.changelog,
1066
+ onChange: (e) => j((t) => t && {
1055
1067
  ...t,
1056
1068
  changelog: e
1057
1069
  }),