@ixo/editor 6.24.0 → 6.26.0

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.
@@ -112,7 +112,7 @@ import {
112
112
  warnOnce,
113
113
  writeActionState,
114
114
  writeRunRecordAndReconcile
115
- } from "./chunk-BTMC55BR.js";
115
+ } from "./chunk-YC6GPQZG.js";
116
116
 
117
117
  // src/mantine/hooks/usePanel.ts
118
118
  import { useCallback, useMemo, useEffect, useRef } from "react";
@@ -1521,8 +1521,13 @@ var AuthorizationTab = ({ editor, block: initialBlock, flowUri = "", entityDid:
1521
1521
  // src/mantine/flow/runSessionContext.tsx
1522
1522
  import React5, { createContext as createContext2, useContext as useContext2 } from "react";
1523
1523
  var RunSessionContext = createContext2({});
1524
- function RunSessionProvider({ sessionRunId, runEventLog, children }) {
1525
- return /* @__PURE__ */ React5.createElement(RunSessionContext.Provider, { value: { sessionRunId, runEventLog } }, children);
1524
+ function RunSessionProvider({
1525
+ sessionRunId,
1526
+ runEventLog,
1527
+ sessionPreview,
1528
+ children
1529
+ }) {
1530
+ return /* @__PURE__ */ React5.createElement(RunSessionContext.Provider, { value: { sessionRunId, runEventLog, sessionPreview } }, children);
1526
1531
  }
1527
1532
  function useRunSessionId() {
1528
1533
  return useContext2(RunSessionContext).sessionRunId;
@@ -1530,6 +1535,9 @@ function useRunSessionId() {
1530
1535
  function useRunEventLog() {
1531
1536
  return useContext2(RunSessionContext).runEventLog;
1532
1537
  }
1538
+ function useRunSessionPreview() {
1539
+ return useContext2(RunSessionContext).sessionPreview === true;
1540
+ }
1533
1541
 
1534
1542
  // src/mantine/hooks/useNodeRuntime.ts
1535
1543
  import { useState as useState7, useEffect as useEffect9, useCallback as useCallback8, useRef as useRef4 } from "react";
@@ -1545,9 +1553,10 @@ function shallowEqual(a, b) {
1545
1553
  function useNodeRuntime(editor, nodeId, runId) {
1546
1554
  const contextRunId = useRunSessionId();
1547
1555
  const contextEventLog = useRunEventLog();
1556
+ const sessionPreview = useRunSessionPreview();
1548
1557
  const yDoc = resolveEditorYDoc(editor);
1549
1558
  const legacyMap = yDoc ? void 0 : editor?._yRuntime;
1550
- const readRunId = yDoc ? resolveRunIdForRead(yDoc, runId || contextRunId) : void 0;
1559
+ const readRunId = yDoc && !sessionPreview ? resolveRunIdForRead(yDoc, runId || contextRunId) : void 0;
1551
1560
  const read = useCallback8(() => {
1552
1561
  if (yDoc) return readRunId ? readActionState(yDoc, readRunId, nodeId) : {};
1553
1562
  if (!legacyMap) return {};
@@ -1581,6 +1590,9 @@ function useNodeRuntime(editor, nodeId, runId) {
1581
1590
  }, [yDoc, legacyMap, read]);
1582
1591
  const updateRuntime = useCallback8(
1583
1592
  async (updates) => {
1593
+ if (sessionPreview) {
1594
+ throw new Error("This flow is rendered as a pre-session preview. Start or select a session to run actions.");
1595
+ }
1584
1596
  let prev;
1585
1597
  let next;
1586
1598
  const eventLog = contextEventLog || editor._runEventLog;
@@ -1786,7 +1798,7 @@ function useNodeRuntime(editor, nodeId, runId) {
1786
1798
  throw new Error("The action effect completed, but canonical run history is pending replay.");
1787
1799
  }
1788
1800
  },
1789
- [yDoc, legacyMap, runId, contextRunId, nodeId, editor, contextEventLog, read]
1801
+ [yDoc, legacyMap, runId, contextRunId, sessionPreview, nodeId, editor, contextEventLog, read]
1790
1802
  );
1791
1803
  return [state, updateRuntime];
1792
1804
  }
@@ -3586,13 +3598,14 @@ function evaluateBlockConditions2(conditionConfig, editorDocument, _currentUser,
3586
3598
  // src/mantine/blocks/hooks/useBlockConditions.ts
3587
3599
  function useBlockConditions(block, editor, currentUser, sessionRunId) {
3588
3600
  const contextRunId = useRunSessionId();
3601
+ const sessionPreview = useRunSessionPreview();
3589
3602
  const editorDocument = editor?.document;
3590
3603
  const conditionConfig = useMemo12(() => {
3591
3604
  return parseConditionConfig(block?.props?.conditions);
3592
3605
  }, [block?.props?.conditions]);
3593
3606
  const [sourceBlockVersion, setSourceBlockVersion] = useState11(0);
3594
3607
  const yDoc = editor?._yDoc;
3595
- const resolvedRunId = sessionRunId || contextRunId || (yDoc ? resolveActiveRunId(yDoc) : void 0);
3608
+ const resolvedRunId = sessionPreview ? void 0 : sessionRunId || contextRunId || (yDoc ? resolveActiveRunId(yDoc) : void 0);
3596
3609
  useEffect13(() => {
3597
3610
  if (!editor) {
3598
3611
  return;
@@ -23295,11 +23308,11 @@ var GeneralTab16 = ({
23295
23308
  useEffect75(() => setLocalTitle(title || ""), [title]);
23296
23309
  useEffect75(() => setLocalDescription(description || ""), [description]);
23297
23310
  const actionTypeOptions = useMemo86(() => {
23298
- return getAllActions().map((a) => {
23311
+ return getAllActions().filter((a) => !a.hiddenFromAuthoring || a.type === actionType).map((a) => {
23299
23312
  const m = getActionMeta(a.type);
23300
23313
  return { value: a.type, label: m.label, description: m.description, icon: m.icon };
23301
23314
  });
23302
- }, []);
23315
+ }, [actionType]);
23303
23316
  const actionTypeUI = actionType ? getActionTypeUI(actionType) : void 0;
23304
23317
  const ConfigComponent = actionTypeUI?.configComponent;
23305
23318
  return /* @__PURE__ */ React239.createElement(Stack154, { gap: 16 }, /* @__PURE__ */ React239.createElement(BaseIconCombobox, { options: actionTypeOptions, value: actionType, onChange: onActionTypeChange }), /* @__PURE__ */ React239.createElement(Group86, { gap: 6, align: "center" }, /* @__PURE__ */ React239.createElement(IconSparkles6, { size: 14, color: "var(--mantine-color-accent-5, #2aeab3)" }), /* @__PURE__ */ React239.createElement(Text133, { size: "sm", fw: 500, c: "var(--mantine-color-accent-5, #2aeab3)", style: { cursor: "pointer" } }, "Configures")), /* @__PURE__ */ React239.createElement(
@@ -24180,6 +24193,7 @@ function mergeActionHandlers(contextHandlers, executionHandlers) {
24180
24193
  function useExecuteActionBlock({ editor, block }) {
24181
24194
  const handlers = useBlocknoteHandlers();
24182
24195
  const sessionRunId = useRunSessionId();
24196
+ const sessionPreview = useRunSessionPreview();
24183
24197
  const runEventLog = useRunEventLog();
24184
24198
  const services = useMemo91(() => buildServicesFromHandlers(handlers), [handlers]);
24185
24199
  const [isExecuting, setIsExecuting] = useState96(false);
@@ -24187,6 +24201,9 @@ function useExecuteActionBlock({ editor, block }) {
24187
24201
  const [result, setResult] = useState96(null);
24188
24202
  const executeAction = useCallback73(
24189
24203
  async ({ runtimeInputs, pendingInvocationId, pin, handlers: executionHandlers } = {}) => {
24204
+ if (sessionPreview) {
24205
+ throw new Error("This flow is rendered as a pre-session preview. Start or select a session to run actions.");
24206
+ }
24190
24207
  setIsExecuting(true);
24191
24208
  setError(null);
24192
24209
  try {
@@ -24240,7 +24257,7 @@ function useExecuteActionBlock({ editor, block }) {
24240
24257
  setIsExecuting(false);
24241
24258
  }
24242
24259
  },
24243
- [block, editor, handlers, runEventLog, services, sessionRunId]
24260
+ [block, editor, handlers, runEventLog, services, sessionRunId, sessionPreview]
24244
24261
  );
24245
24262
  return {
24246
24263
  executeAction,
@@ -26304,8 +26321,9 @@ var UserSearch = ({ onPick, isPicked, isDisabled, placeholder }) => {
26304
26321
  import { useEffect as useEffect91, useMemo as useMemo97, useState as useState113 } from "react";
26305
26322
  function useRunRuntimeReader(editor, runId) {
26306
26323
  const contextRunId = useRunSessionId();
26324
+ const sessionPreview = useRunSessionPreview();
26307
26325
  const yDoc = editor?._yDoc ?? editor?._yRuntime?.doc;
26308
- const resolvedRunId = runId ?? contextRunId ?? (yDoc ? resolveActiveRunId(yDoc) : void 0);
26326
+ const resolvedRunId = sessionPreview ? void 0 : runId ?? contextRunId ?? (yDoc ? resolveActiveRunId(yDoc) : void 0);
26309
26327
  const [revision, setRevision] = useState113(0);
26310
26328
  useEffect91(() => {
26311
26329
  if (!yDoc) return;
@@ -31999,8 +32017,8 @@ var ClaimConfig = ({ inputs, onInputsChange, editor, blockId }) => {
31999
32017
 
32000
32018
  // src/mantine/blocks/action/actionTypes/claim/ClaimFlowDetail.tsx
32001
32019
  import React316, { useCallback as useCallback107, useEffect as useEffect110, useMemo as useMemo115, useRef as useRef40, useState as useState165 } from "react";
32002
- import { ActionIcon as ActionIcon45, Box as Box58, Group as Group112, Loader as Loader57, Stack as Stack207, Text as Text195 } from "@mantine/core";
32003
- import { IconArrowLeft as IconArrowLeft9, IconCheck as IconCheck22, IconPlayerPlay as IconPlayerPlay6 } from "@tabler/icons-react";
32020
+ import { ActionIcon as ActionIcon45, Box as Box58, Collapse as Collapse10, Group as Group112, Loader as Loader57, Stack as Stack207, Text as Text195, UnstyledButton as UnstyledButton5 } from "@mantine/core";
32021
+ import { IconArrowLeft as IconArrowLeft9, IconCheck as IconCheck22, IconChevronRight as IconChevronRight12, IconPlayerPlay as IconPlayerPlay6 } from "@tabler/icons-react";
32004
32022
  import { SurveyModel as SurveyModel10 } from "@ixo/surveys";
32005
32023
 
32006
32024
  // src/mantine/blocks/action/actionTypes/evaluateClaim/resolveClaimFileRef.ts
@@ -32169,6 +32187,7 @@ var ClaimFlowDetail = ({
32169
32187
  const [loadingClaimDetail, setLoadingClaimDetail] = useState165(false);
32170
32188
  const [disputeDetails, setDisputeDetails] = useState165(null);
32171
32189
  const [loadingDispute, setLoadingDispute] = useState165(false);
32190
+ const [claimsExpanded, setClaimsExpanded] = useState165(false);
32172
32191
  const selectedClaim = useMemo115(() => claims.find((c) => c.claimId === selectedClaimId) || null, [claims, selectedClaimId]);
32173
32192
  const selectedClaimStatus = useMemo115(() => selectedClaim ? getClaimStatusInfo(selectedClaim) : null, [selectedClaim]);
32174
32193
  const isSelectedDisputed = selectedClaimStatus?.key === "disputed";
@@ -32555,6 +32574,7 @@ var ClaimFlowDetail = ({
32555
32574
  submittedEmitted = true;
32556
32575
  setSurveyJson(null);
32557
32576
  setPrefillData(null);
32577
+ setClaimsExpanded(true);
32558
32578
  await fetchClaimsAndAdmin();
32559
32579
  } catch (err) {
32560
32580
  const message = err instanceof Error ? err.message : t("actionTypes.claim.flow.errors.submitFailed", { defaultValue: "Failed to submit claim" });
@@ -32611,15 +32631,7 @@ var ClaimFlowDetail = ({
32611
32631
  defaultValue: "Configure {{did}} and {{claimCollection}} in template mode before running this action.",
32612
32632
  did: "DID",
32613
32633
  claimCollection: "claim collection"
32614
- })) : /* @__PURE__ */ React316.createElement(React316.Fragment, null, /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, t("actionTypes.shared.collectionPrefix", { id: collectionId, defaultValue: `Collection: ${collectionId}` })), prefillData && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "orange", styles: actionAlertStyles }, t("actionTypes.claim.flow.amendingNotice", { defaultValue: "Amending a previously disputed claim \u2014 edit the fields below and submit to resubmit." })), /* @__PURE__ */ React316.createElement(
32615
- BasePrimaryButton,
32616
- {
32617
- leftSection: loadingSurvey || authChecking ? /* @__PURE__ */ React316.createElement(Loader57, { size: 14 }) : /* @__PURE__ */ React316.createElement(IconPlayerPlay6, { size: 14 }),
32618
- onClick: startSurvey,
32619
- disabled: isDisabled || loadingSurvey || submitting || authChecking || !isServiceAgentAuthorized && !actAs.actAsGroup || !adminAddress
32620
- },
32621
- authChecking ? t("actionTypes.claim.flow.checkingAuthorization", { defaultValue: "Checking authorization..." }) : loadingSurvey ? t("actionTypes.shared.loadingSurvey", { defaultValue: "Loading Survey..." }) : t("actionTypes.claim.flow.startNewClaim", { defaultValue: "Start New Claim" })
32622
- ), !authChecking && authError && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "orange", styles: actionAlertStyles }, /* @__PURE__ */ React316.createElement(Stack207, { gap: "xs" }, /* @__PURE__ */ React316.createElement(Text195, { size: "sm" }, t("actionTypes.claim.flow.authVerifyFailed", { defaultValue: "Couldn't verify your authorization \u2014 the chain RPC is unreachable." })), /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, authError), /* @__PURE__ */ React316.createElement(BasePrimaryButton, { size: "xs", onClick: () => setAuthRetryKey((k) => k + 1) }, t("actionTypes.claim.flow.retry", { defaultValue: "Retry" })))), !authChecking && !authError && !isServiceAgentAuthorized && !actAs.actAsGroup && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "yellow", styles: actionAlertStyles }, t("actionTypes.claim.flow.errors.notAuthorized", { defaultValue: "You need service agent authorization for this collection to submit claims." })), loadingClaims ? /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, t("actionTypes.claim.flow.loadingYourClaims", { defaultValue: "Loading your claims..." })) : claims.length === 0 ? /* @__PURE__ */ React316.createElement(Text195, { size: "sm", c: "dimmed" }, t("actionTypes.claim.flow.noClaimsYet", { defaultValue: "No claims submitted for this collection yet." })) : /* @__PURE__ */ React316.createElement(Stack207, { gap: "xs" }, /* @__PURE__ */ React316.createElement(Text195, { size: "sm", fw: 600 }, t("actionTypes.claim.flow.yourClaims", { defaultValue: "Your Claims" })), claims.map((claim) => {
32634
+ })) : /* @__PURE__ */ React316.createElement(React316.Fragment, null, /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, t("actionTypes.shared.collectionPrefix", { id: collectionId, defaultValue: `Collection: ${collectionId}` })), loadingClaims ? /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, t("actionTypes.claim.flow.loadingYourClaims", { defaultValue: "Loading your claims..." })) : claims.length === 0 ? /* @__PURE__ */ React316.createElement(Text195, { size: "sm", c: "dimmed" }, t("actionTypes.claim.flow.noClaimsYet", { defaultValue: "No claims submitted for this collection yet." })) : /* @__PURE__ */ React316.createElement(Stack207, { gap: "xs" }, /* @__PURE__ */ React316.createElement(UnstyledButton5, { onClick: () => setClaimsExpanded((prev) => !prev), style: { color: "var(--mantine-color-text)" } }, /* @__PURE__ */ React316.createElement(Group112, { gap: 6, align: "center" }, /* @__PURE__ */ React316.createElement(IconChevronRight12, { size: 16, style: { transform: claimsExpanded ? "rotate(90deg)" : "none", transition: "transform 150ms ease", flexShrink: 0 } }), /* @__PURE__ */ React316.createElement(Text195, { size: "sm", fw: 600 }, t("actionTypes.claim.flow.yourClaims", { defaultValue: "Your Claims" }), " (", claims.length, ")"))), /* @__PURE__ */ React316.createElement(Collapse10, { in: claimsExpanded }, /* @__PURE__ */ React316.createElement(Stack207, { gap: "xs" }, claims.map((claim) => {
32623
32635
  const status = getClaimStatusInfo(claim);
32624
32636
  const profile = profilesByDid[claim.agentDid];
32625
32637
  const displayName = profile?.displayname || claim.agentDid || claim.agentAddress;
@@ -32646,7 +32658,15 @@ var ClaimFlowDetail = ({
32646
32658
  },
32647
32659
  profile?.avatarUrl ? null : avatarLabel
32648
32660
  ), /* @__PURE__ */ React316.createElement(Stack207, { gap: 0, style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React316.createElement(Text195, { fw: 500, size: "md", truncate: true, style: { lineHeight: 1.5 } }, displayName), /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed", truncate: true }, truncateAddress3(claim.agentAddress)))), /* @__PURE__ */ React316.createElement(Stack207, { gap: 0, align: "flex-end", style: { flexShrink: 0, minWidth: 80 } }, /* @__PURE__ */ React316.createElement(Text195, { fw: 500, size: "md", c: status.color, style: { lineHeight: 1.5 } }, status.key === "approved" && /* @__PURE__ */ React316.createElement(IconCheck22, { size: 14, style: { verticalAlign: "middle", marginRight: 2 } }), status.label), /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, getTimeAgo2(claim.submissionDate || ""))));
32649
- }))), surveyModel && !loadingSurvey && /* @__PURE__ */ React316.createElement(React316.Fragment, null, /* @__PURE__ */ React316.createElement(SurveyAiFillButton, { surveyId: openSurveyId, title: openSurveyTitle }), /* @__PURE__ */ React316.createElement(StableSurvey, { model: surveyModel })), submitting && /* @__PURE__ */ React316.createElement(Group112, { gap: "xs" }, /* @__PURE__ */ React316.createElement(Loader57, { size: "xs" }), /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, t("actionTypes.claim.flow.submittingClaim", { defaultValue: "Submitting claim..." }))), error && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "red", styles: actionAlertStyles }, error));
32661
+ })))), prefillData && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "orange", styles: actionAlertStyles }, t("actionTypes.claim.flow.amendingNotice", { defaultValue: "Amending a previously disputed claim \u2014 edit the fields below and submit to resubmit." })), /* @__PURE__ */ React316.createElement(
32662
+ BasePrimaryButton,
32663
+ {
32664
+ leftSection: loadingSurvey || authChecking ? /* @__PURE__ */ React316.createElement(Loader57, { size: 14 }) : /* @__PURE__ */ React316.createElement(IconPlayerPlay6, { size: 14 }),
32665
+ onClick: startSurvey,
32666
+ disabled: isDisabled || loadingSurvey || submitting || authChecking || !isServiceAgentAuthorized && !actAs.actAsGroup || !adminAddress
32667
+ },
32668
+ authChecking ? t("actionTypes.claim.flow.checkingAuthorization", { defaultValue: "Checking authorization..." }) : loadingSurvey ? t("actionTypes.shared.loadingSurvey", { defaultValue: "Loading Survey..." }) : t("actionTypes.claim.flow.startNewClaim", { defaultValue: "Start New Claim" })
32669
+ ), !authChecking && authError && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "orange", styles: actionAlertStyles }, /* @__PURE__ */ React316.createElement(Stack207, { gap: "xs" }, /* @__PURE__ */ React316.createElement(Text195, { size: "sm" }, t("actionTypes.claim.flow.authVerifyFailed", { defaultValue: "Couldn't verify your authorization \u2014 the chain RPC is unreachable." })), /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, authError), /* @__PURE__ */ React316.createElement(BasePrimaryButton, { size: "xs", onClick: () => setAuthRetryKey((k) => k + 1) }, t("actionTypes.claim.flow.retry", { defaultValue: "Retry" })))), !authChecking && !authError && !isServiceAgentAuthorized && !actAs.actAsGroup && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "yellow", styles: actionAlertStyles }, t("actionTypes.claim.flow.errors.notAuthorized", { defaultValue: "You need service agent authorization for this collection to submit claims." })), surveyModel && !loadingSurvey && /* @__PURE__ */ React316.createElement(React316.Fragment, null, /* @__PURE__ */ React316.createElement(SurveyAiFillButton, { surveyId: openSurveyId, title: openSurveyTitle }), /* @__PURE__ */ React316.createElement(StableSurvey, { model: surveyModel }))), submitting && /* @__PURE__ */ React316.createElement(Group112, { gap: "xs" }, /* @__PURE__ */ React316.createElement(Loader57, { size: "xs" }), /* @__PURE__ */ React316.createElement(Text195, { size: "xs", c: "dimmed" }, t("actionTypes.claim.flow.submittingClaim", { defaultValue: "Submitting claim..." }))), error && /* @__PURE__ */ React316.createElement(DismissibleAlert, { color: "red", styles: actionAlertStyles }, error));
32650
32670
  };
32651
32671
 
32652
32672
  // src/mantine/blocks/action/actionTypes/claim/index.ts
@@ -33633,7 +33653,7 @@ var CollectionUsersConfig = ({ inputs, onInputsChange, editor, blockId }) => {
33633
33653
 
33634
33654
  // src/mantine/blocks/action/actionTypes/collectionUsers/CollectionUsersFlowDetail.tsx
33635
33655
  import React320, { useCallback as useCallback111, useEffect as useEffect114, useMemo as useMemo119, useRef as useRef42, useState as useState169 } from "react";
33636
- import { ActionIcon as ActionIcon46, Badge as Badge52, Box as Box60, Button as Button67, Divider as Divider22, Group as Group116, Loader as Loader61, Radio as Radio5, SegmentedControl as SegmentedControl15, Stack as Stack211, Text as Text199 } from "@mantine/core";
33656
+ import { ActionIcon as ActionIcon46, Alert as MantineAlert, Badge as Badge52, Box as Box60, Button as Button67, Divider as Divider22, Group as Group116, Loader as Loader61, Radio as Radio5, SegmentedControl as SegmentedControl15, Stack as Stack211, Text as Text199 } from "@mantine/core";
33637
33657
  import { useDebouncedValue } from "@mantine/hooks";
33638
33658
  import { IconAlertCircle as IconAlertCircle28, IconArrowLeft as IconArrowLeft10, IconCheck as IconCheck24, IconRefresh as IconRefresh9, IconTrash as IconTrash10 } from "@tabler/icons-react";
33639
33659
  var LOG2 = "[collection.users]";
@@ -33932,6 +33952,10 @@ var CollectionUsersFlowDetail = ({
33932
33952
  listOnLoadRef.current = false;
33933
33953
  runList();
33934
33954
  }, [runList]);
33955
+ const [evaluatedBids, setEvaluatedBids] = useState169({});
33956
+ const handleBidEvaluated = useCallback111((bidId, outcome) => {
33957
+ setEvaluatedBids((prev) => ({ ...prev, [bidId]: outcome }));
33958
+ }, []);
33935
33959
  const handleDownloadGranteesCsv = useCallback111(() => {
33936
33960
  const namesByDid = {};
33937
33961
  for (const [did, profile] of Object.entries(granteeProfilesByDid)) {
@@ -34201,9 +34225,32 @@ var CollectionUsersFlowDetail = ({
34201
34225
  onChange: (value) => setAddQuota(value === "" || value == null ? "" : String(value)),
34202
34226
  disabled: isDisabled || isRunning
34203
34227
  }
34204
- ), addRole === "evaluate" && /* @__PURE__ */ React320.createElement(MaxAmountsInput, { value: addMaxAmounts, onChange: setAddMaxAmounts, disabled: isDisabled || isRunning }), !validation.ok && validation.error && activeOp === "add" && /* @__PURE__ */ React320.createElement(DismissibleAlert, { color: "yellow", styles: actionAlertStyles }, validation.error)), !configMissing && section === "bids" && /* @__PURE__ */ React320.createElement(BidInboxSection, { deedDid, collectionId, adminAddress, isDisabled, handlersRef, grantees: listGrantees }), isDisabled && /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, "This block is currently disabled."));
34228
+ ), addRole === "evaluate" && /* @__PURE__ */ React320.createElement(MaxAmountsInput, { value: addMaxAmounts, onChange: setAddMaxAmounts, disabled: isDisabled || isRunning }), !validation.ok && validation.error && activeOp === "add" && /* @__PURE__ */ React320.createElement(DismissibleAlert, { color: "yellow", styles: actionAlertStyles }, validation.error)), !configMissing && section === "bids" && /* @__PURE__ */ React320.createElement(
34229
+ BidInboxSection,
34230
+ {
34231
+ deedDid,
34232
+ collectionId,
34233
+ adminAddress,
34234
+ isDisabled,
34235
+ handlersRef,
34236
+ grantees: listGrantees,
34237
+ evaluatedByBidId: evaluatedBids,
34238
+ onBidEvaluated: handleBidEvaluated,
34239
+ onGrantsChanged: handleManualRefreshList
34240
+ }
34241
+ ), isDisabled && /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, "This block is currently disabled."));
34205
34242
  };
34206
- var BidInboxSection = ({ deedDid, collectionId, adminAddress, isDisabled, handlersRef, grantees }) => {
34243
+ var BidInboxSection = ({
34244
+ deedDid,
34245
+ collectionId,
34246
+ adminAddress,
34247
+ isDisabled,
34248
+ handlersRef,
34249
+ grantees,
34250
+ evaluatedByBidId,
34251
+ onBidEvaluated,
34252
+ onGrantsChanged
34253
+ }) => {
34207
34254
  const [bids, setBids] = useState169([]);
34208
34255
  const [loading, setLoading] = useState169(false);
34209
34256
  const [error, setError] = useState169(null);
@@ -34214,11 +34261,22 @@ var BidInboxSection = ({ deedDid, collectionId, adminAddress, isDisabled, handle
34214
34261
  const [approveMaxAmounts, setApproveMaxAmounts] = useState169(EMPTY_MAX_AMOUNTS);
34215
34262
  const [submitting, setSubmitting] = useState169(false);
34216
34263
  const [profilesByDid, setProfilesByDid] = useState169({});
34264
+ const [lastDecision, setLastDecision] = useState169(null);
34217
34265
  const selectedBid = useMemo119(() => bids.find((b) => b.id === selectedBidId) || null, [bids, selectedBidId]);
34218
34266
  const selectedBidIsEvaluator = useMemo119(() => {
34219
34267
  const role = String(selectedBid?.role || "").toLowerCase();
34220
34268
  return role === "evaluation_agent" || role === "ea";
34221
34269
  }, [selectedBid]);
34270
+ const bidEvaluatedStatus = useCallback111(
34271
+ (bid) => {
34272
+ const local = evaluatedByBidId[bid.id];
34273
+ if (local) return local;
34274
+ const role = String(bid.role || "").toLowerCase();
34275
+ const grantRole = role === "evaluation_agent" || role === "ea" ? "evaluate" : "submit";
34276
+ return grantees.some((g) => g.address === bid.address && g.role === grantRole) ? "approved" : null;
34277
+ },
34278
+ [evaluatedByBidId, grantees]
34279
+ );
34222
34280
  const downloadBidsCsv = useCallback111(
34223
34281
  (subset, filename) => {
34224
34282
  downloadArrayAsCsv(buildBidRows(subset, grantees), { filename });
@@ -34317,6 +34375,10 @@ var BidInboxSection = ({ deedDid, collectionId, adminAddress, isDisabled, handle
34317
34375
  } else {
34318
34376
  await h.rejectBid({ bidId: selectedBid.id, collectionId, did: selectedBid.did, reason: rejectReason.trim() || "Rejected", entityDid: deedDid });
34319
34377
  }
34378
+ const granteeName = profilesByDid[selectedBid.did]?.displayname || selectedBid.did || selectedBid.address;
34379
+ onBidEvaluated(selectedBid.id, decision === "approve" ? "approved" : "rejected");
34380
+ if (decision === "approve") onGrantsChanged();
34381
+ setLastDecision({ kind: decision === "approve" ? "approved" : "rejected", name: granteeName, roleLabel: getBidRoleLabel(selectedBid.role) });
34320
34382
  setSelectedBidId("");
34321
34383
  setDecision("");
34322
34384
  setRejectReason("");
@@ -34328,13 +34390,28 @@ var BidInboxSection = ({ deedDid, collectionId, adminAddress, isDisabled, handle
34328
34390
  } finally {
34329
34391
  setSubmitting(false);
34330
34392
  }
34331
- }, [selectedBid, decision, adminAddress, collectionId, deedDid, rejectReason, approveQuota, approveMaxAmounts, handlersRef, refreshBids]);
34393
+ }, [
34394
+ selectedBid,
34395
+ decision,
34396
+ adminAddress,
34397
+ collectionId,
34398
+ deedDid,
34399
+ rejectReason,
34400
+ approveQuota,
34401
+ approveMaxAmounts,
34402
+ handlersRef,
34403
+ refreshBids,
34404
+ profilesByDid,
34405
+ onBidEvaluated,
34406
+ onGrantsChanged
34407
+ ]);
34332
34408
  if (selectedBid) {
34333
34409
  const profile = profilesByDid[selectedBid.did];
34334
34410
  const displayName = profile?.displayname || selectedBid.did || selectedBid.address;
34335
34411
  const role = String(selectedBid.role || "").toLowerCase();
34336
34412
  const isEvaluator = role === "evaluation_agent" || role === "ea";
34337
34413
  const maxAmounts = isEvaluator ? buildMaxAmounts(approveMaxAmounts) : [];
34414
+ const evaluatedStatus = bidEvaluatedStatus(selectedBid);
34338
34415
  let bidData = null;
34339
34416
  try {
34340
34417
  bidData = typeof selectedBid.data === "string" ? JSON.parse(selectedBid.data) : selectedBid.data;
@@ -34362,7 +34439,16 @@ var BidInboxSection = ({ deedDid, collectionId, adminAddress, isDisabled, handle
34362
34439
  }
34363
34440
  ] : []
34364
34441
  ];
34365
- return /* @__PURE__ */ React320.createElement(Stack211, { gap: "md" }, /* @__PURE__ */ React320.createElement(Group116, { gap: "xs", align: "center" }, /* @__PURE__ */ React320.createElement(ActionIcon46, { variant: "subtle", color: "gray", size: "sm", onClick: () => setSelectedBidId("") }, /* @__PURE__ */ React320.createElement(IconArrowLeft10, { size: 16 })), /* @__PURE__ */ React320.createElement(Text199, { fw: 500, size: "sm", truncate: true, style: { flex: 1, minWidth: 0 } }, "Bid #", selectedBid.id), /* @__PURE__ */ React320.createElement(DownloadCsvButton, { onDownload: () => downloadBidsCsv([selectedBid], `bid-${selectedBid.id}.csv`), label: "Download bid CSV" })), /* @__PURE__ */ React320.createElement(Stack211, { gap: 4 }, /* @__PURE__ */ React320.createElement(Text199, { size: "sm", fw: 600, truncate: true }, displayName), /* @__PURE__ */ React320.createElement(Group116, { gap: "xs" }, /* @__PURE__ */ React320.createElement(Badge52, { size: "xs", variant: "light", color: getRoleColor3(selectedBid.role) }, getBidRoleLabel(selectedBid.role)), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, truncateAddress4(selectedBid.address)))), /* @__PURE__ */ React320.createElement(CollapsibleSection, { title: "Inputs" }, bidData && typeof bidData === "object" && Object.keys(bidData).length > 0 ? /* @__PURE__ */ React320.createElement(ReadableKeyValues, { data: bidData }) : /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, "No input data available.")), /* @__PURE__ */ React320.createElement(
34442
+ return /* @__PURE__ */ React320.createElement(Stack211, { gap: "md" }, /* @__PURE__ */ React320.createElement(Group116, { gap: "xs", align: "center" }, /* @__PURE__ */ React320.createElement(ActionIcon46, { variant: "subtle", color: "gray", size: "sm", onClick: () => setSelectedBidId("") }, /* @__PURE__ */ React320.createElement(IconArrowLeft10, { size: 16 })), /* @__PURE__ */ React320.createElement(Text199, { fw: 500, size: "sm", truncate: true, style: { flex: 1, minWidth: 0 } }, "Bid #", selectedBid.id), /* @__PURE__ */ React320.createElement(DownloadCsvButton, { onDownload: () => downloadBidsCsv([selectedBid], `bid-${selectedBid.id}.csv`), label: "Download bid CSV" })), /* @__PURE__ */ React320.createElement(Stack211, { gap: 4 }, /* @__PURE__ */ React320.createElement(Text199, { size: "sm", fw: 600, truncate: true }, displayName), /* @__PURE__ */ React320.createElement(Group116, { gap: "xs" }, /* @__PURE__ */ React320.createElement(Badge52, { size: "xs", variant: "light", color: getRoleColor3(selectedBid.role) }, getBidRoleLabel(selectedBid.role)), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, truncateAddress4(selectedBid.address)))), /* @__PURE__ */ React320.createElement(CollapsibleSection, { title: "Inputs" }, bidData && typeof bidData === "object" && Object.keys(bidData).length > 0 ? /* @__PURE__ */ React320.createElement(ReadableKeyValues, { data: bidData }) : /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, "No input data available.")), evaluatedStatus ? /* @__PURE__ */ React320.createElement(
34443
+ MantineAlert,
34444
+ {
34445
+ color: evaluatedStatus === "approved" ? "green" : "red",
34446
+ icon: evaluatedStatus === "approved" ? /* @__PURE__ */ React320.createElement(IconCheck24, { size: 16 }) : /* @__PURE__ */ React320.createElement(IconAlertCircle28, { size: 16 }),
34447
+ title: evaluatedStatus === "approved" ? "Bid approved" : "Bid rejected",
34448
+ styles: actionAlertStyles
34449
+ },
34450
+ evaluatedStatus === "approved" ? `${getBidRoleLabel(selectedBid.role)} access is already granted for this collection.` : "This application was declined."
34451
+ ) : /* @__PURE__ */ React320.createElement(React320.Fragment, null, /* @__PURE__ */ React320.createElement(
34366
34452
  BaseSelect,
34367
34453
  {
34368
34454
  label: "Decision",
@@ -34402,12 +34488,24 @@ var BidInboxSection = ({ deedDid, collectionId, adminAddress, isDisabled, handle
34402
34488
  color: decision === "reject" ? "red" : void 0
34403
34489
  },
34404
34490
  decision === "reject" ? "Reject bid" : "Approve bid"
34405
- ));
34491
+ )));
34406
34492
  }
34407
- return /* @__PURE__ */ React320.createElement(Stack211, { gap: "sm" }, /* @__PURE__ */ React320.createElement(Group116, { justify: "space-between", align: "center" }, /* @__PURE__ */ React320.createElement(Text199, { size: "sm", fw: 600 }, "Incoming bids"), /* @__PURE__ */ React320.createElement(Group116, { gap: 4 }, /* @__PURE__ */ React320.createElement(DownloadCsvButton, { onDownload: handleDownloadBidsCsv, disabled: loading || bids.length === 0, label: "Download bids CSV" }), /* @__PURE__ */ React320.createElement(ActionIcon46, { variant: "subtle", color: "gray", size: "sm", onClick: refreshBids, disabled: loading }, /* @__PURE__ */ React320.createElement(IconRefresh9, { size: 16 })))), /* @__PURE__ */ React320.createElement(Divider22, { color: "color-mix(in srgb, var(--mantine-color-text) 6%, transparent)" }), loading && /* @__PURE__ */ React320.createElement(Group116, { gap: "xs", justify: "center", py: "sm" }, /* @__PURE__ */ React320.createElement(Loader61, { size: "xs" }), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, "Loading bids\u2026")), !loading && bids.length === 0 && /* @__PURE__ */ React320.createElement(Text199, { size: "sm", c: "dimmed", ta: "center", py: "sm" }, "No bids available for this collection."), bids.map((bid) => {
34493
+ return /* @__PURE__ */ React320.createElement(Stack211, { gap: "sm" }, lastDecision && /* @__PURE__ */ React320.createElement(
34494
+ MantineAlert,
34495
+ {
34496
+ color: lastDecision.kind === "approved" ? "green" : "red",
34497
+ icon: lastDecision.kind === "approved" ? /* @__PURE__ */ React320.createElement(IconCheck24, { size: 16 }) : /* @__PURE__ */ React320.createElement(IconAlertCircle28, { size: 16 }),
34498
+ title: lastDecision.kind === "approved" ? "Bid approved" : "Bid rejected",
34499
+ withCloseButton: true,
34500
+ onClose: () => setLastDecision(null),
34501
+ styles: actionAlertStyles
34502
+ },
34503
+ lastDecision.kind === "approved" ? `${lastDecision.roleLabel} access granted to ${lastDecision.name}. They can now ${lastDecision.roleLabel === "Evaluator" ? "evaluate" : "submit"} claims in this collection.` : `${lastDecision.name}'s application was declined.`
34504
+ ), /* @__PURE__ */ React320.createElement(Group116, { justify: "space-between", align: "center" }, /* @__PURE__ */ React320.createElement(Text199, { size: "sm", fw: 600 }, "Incoming bids"), /* @__PURE__ */ React320.createElement(Group116, { gap: 4 }, /* @__PURE__ */ React320.createElement(DownloadCsvButton, { onDownload: handleDownloadBidsCsv, disabled: loading || bids.length === 0, label: "Download bids CSV" }), /* @__PURE__ */ React320.createElement(ActionIcon46, { variant: "subtle", color: "gray", size: "sm", onClick: refreshBids, disabled: loading }, /* @__PURE__ */ React320.createElement(IconRefresh9, { size: 16 })))), /* @__PURE__ */ React320.createElement(Divider22, { color: "color-mix(in srgb, var(--mantine-color-text) 6%, transparent)" }), loading && /* @__PURE__ */ React320.createElement(Group116, { gap: "xs", justify: "center", py: "sm" }, /* @__PURE__ */ React320.createElement(Loader61, { size: "xs" }), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, "Loading bids\u2026")), !loading && bids.length === 0 && /* @__PURE__ */ React320.createElement(Text199, { size: "sm", c: "dimmed", ta: "center", py: "sm" }, "No bids available for this collection."), bids.map((bid) => {
34408
34505
  const profile = profilesByDid[bid.did];
34409
34506
  const displayName = profile?.displayname || bid.did || bid.address;
34410
- return /* @__PURE__ */ React320.createElement(ListItemContainer, { key: bid.id, isChecked: false, onClick: () => setSelectedBidId(bid.id) }, /* @__PURE__ */ React320.createElement(Stack211, { gap: 0, style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React320.createElement(Text199, { fw: 500, size: "sm", truncate: true }, displayName), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed", truncate: true }, truncateAddress4(bid.address))), /* @__PURE__ */ React320.createElement(Stack211, { gap: 0, align: "flex-end", style: { flexShrink: 0 } }, /* @__PURE__ */ React320.createElement(Badge52, { size: "xs", variant: "light", color: getRoleColor3(bid.role) }, getBidRoleLabel(bid.role)), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, getTimeAgo3(bid.created || ""))));
34507
+ const status = bidEvaluatedStatus(bid) || "pending";
34508
+ return /* @__PURE__ */ React320.createElement(ListItemContainer, { key: bid.id, isChecked: false, onClick: () => setSelectedBidId(bid.id) }, /* @__PURE__ */ React320.createElement(Stack211, { gap: 0, style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React320.createElement(Text199, { fw: 500, size: "sm", truncate: true }, displayName), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed", truncate: true }, truncateAddress4(bid.address))), /* @__PURE__ */ React320.createElement(Stack211, { gap: 2, align: "flex-end", style: { flexShrink: 0 } }, /* @__PURE__ */ React320.createElement(Group116, { gap: 4 }, /* @__PURE__ */ React320.createElement(Badge52, { size: "xs", variant: "light", color: getRoleColor3(bid.role) }, getBidRoleLabel(bid.role)), /* @__PURE__ */ React320.createElement(Badge52, { size: "xs", variant: "light", color: status === "approved" ? "green" : status === "rejected" ? "red" : "gray" }, status === "approved" ? "Approved" : status === "rejected" ? "Rejected" : "Pending")), /* @__PURE__ */ React320.createElement(Text199, { size: "xs", c: "dimmed" }, getTimeAgo3(bid.created || ""))));
34411
34509
  }), error && /* @__PURE__ */ React320.createElement(DismissibleAlert, { color: "red", styles: actionAlertStyles }, error));
34412
34510
  };
34413
34511
 
@@ -34734,7 +34832,7 @@ var EvaluateClaimConfig = ({ inputs, onInputsChange, editor, blockId }) => {
34734
34832
 
34735
34833
  // src/mantine/blocks/action/actionTypes/evaluateClaim/EvaluateClaimFlowDetail.tsx
34736
34834
  import React324, { useCallback as useCallback114, useEffect as useEffect117, useMemo as useMemo122, useRef as useRef45, useState as useState173 } from "react";
34737
- import { ActionIcon as ActionIcon48, Box as Box62, Button as Button69, Checkbox as Checkbox14, Divider as Divider23, Group as Group120, Loader as Loader64, ScrollArea as ScrollArea8, Stack as Stack215, Text as Text203, UnstyledButton as UnstyledButton6 } from "@mantine/core";
34835
+ import { ActionIcon as ActionIcon48, Box as Box62, Button as Button69, Checkbox as Checkbox14, Divider as Divider23, Group as Group120, Loader as Loader64, ScrollArea as ScrollArea8, Stack as Stack215, Text as Text203, UnstyledButton as UnstyledButton7 } from "@mantine/core";
34738
34836
  import { IconArrowLeft as IconArrowLeft11, IconCheck as IconCheck26, IconFilter as IconFilter2 } from "@tabler/icons-react";
34739
34837
  import { SurveyModel as SurveyModel11 } from "@ixo/surveys";
34740
34838
 
@@ -34936,7 +35034,7 @@ var EvaluationReportSection = ({ runtime, selectedClaimId }) => {
34936
35034
 
34937
35035
  // src/mantine/blocks/action/actionTypes/evaluateClaim/ClaimAttachments.tsx
34938
35036
  import React323, { useCallback as useCallback113, useEffect as useEffect116, useMemo as useMemo121, useRef as useRef44, useState as useState172 } from "react";
34939
- import { Box as Box61, Group as Group119, Loader as Loader63, SimpleGrid as SimpleGrid4, Stack as Stack214, Text as Text202, Tooltip as Tooltip31, UnstyledButton as UnstyledButton5 } from "@mantine/core";
35037
+ import { Box as Box61, Group as Group119, Loader as Loader63, SimpleGrid as SimpleGrid4, Stack as Stack214, Text as Text202, Tooltip as Tooltip31, UnstyledButton as UnstyledButton6 } from "@mantine/core";
34940
35038
  import { IconFile as IconFile5, IconFileText as IconFileText6, IconMusic, IconPhoto as IconPhoto5, IconVideo } from "@tabler/icons-react";
34941
35039
  function toMediaFile(raw) {
34942
35040
  if (!raw) return null;
@@ -35092,7 +35190,7 @@ var ClaimAttachments = ({ surveyModel, credentialSubject, entityDid }) => {
35092
35190
  const displayUrl = resolved[item.content] || (!fetchClaimMedia ? item.content : "");
35093
35191
  const isFetching = !!pending[item.content] || openingKey === item.content;
35094
35192
  return /* @__PURE__ */ React323.createElement(Tooltip31, { key: `${item.content}-${index}`, label: item.label, openDelay: 400, disabled: !item.label || item.label === item.name }, /* @__PURE__ */ React323.createElement(
35095
- UnstyledButton5,
35193
+ UnstyledButton6,
35096
35194
  {
35097
35195
  onClick: () => handleOpen(item),
35098
35196
  style: {
@@ -35844,7 +35942,7 @@ var EvaluateClaimFlowDetail = ({
35844
35942
  did: "DID",
35845
35943
  claimCollection: "claim collection"
35846
35944
  })) : /* @__PURE__ */ React324.createElement(React324.Fragment, null, flowManagerContext, /* @__PURE__ */ React324.createElement(EvaluationReportSection, { runtime }), /* @__PURE__ */ React324.createElement(Group120, { justify: "space-between", align: "center" }, /* @__PURE__ */ React324.createElement(Group120, { gap: 0 }, filterTabs.map((tab) => /* @__PURE__ */ React324.createElement(
35847
- UnstyledButton6,
35945
+ UnstyledButton7,
35848
35946
  {
35849
35947
  key: tab.value,
35850
35948
  onClick: () => setActiveFilter(tab.value),
@@ -39245,9 +39343,9 @@ function finaliseLineItem(cells) {
39245
39343
 
39246
39344
  // src/mantine/blocks/action/actionTypes/xero/invoiceCreate/XeroLineItemsEditor.tsx
39247
39345
  import React353, { useCallback as useCallback142, useMemo as useMemo140 } from "react";
39248
- import { ActionIcon as ActionIcon49, Alert as Alert51, Box as Box67, Button as Button78, Collapse as Collapse10, Divider as Divider30, Group as Group129, SegmentedControl as SegmentedControl18, Stack as Stack244, Text as Text228, Tooltip as Tooltip33 } from "@mantine/core";
39346
+ import { ActionIcon as ActionIcon49, Alert as Alert51, Box as Box67, Button as Button78, Collapse as Collapse11, Divider as Divider30, Group as Group129, SegmentedControl as SegmentedControl18, Stack as Stack244, Text as Text228, Tooltip as Tooltip33 } from "@mantine/core";
39249
39347
  import { useDisclosure as useDisclosure6 } from "@mantine/hooks";
39250
- import { IconChevronDown as IconChevronDown10, IconChevronRight as IconChevronRight12, IconPlus as IconPlus10, IconTrash as IconTrash11 } from "@tabler/icons-react";
39348
+ import { IconChevronDown as IconChevronDown10, IconChevronRight as IconChevronRight13, IconPlus as IconPlus10, IconTrash as IconTrash11 } from "@tabler/icons-react";
39251
39349
  function getNestedField(fields, path) {
39252
39350
  if (!fields || !path) return void 0;
39253
39351
  return fields.find((f) => f.path === path);
@@ -39405,12 +39503,12 @@ function LineItemRowCard({
39405
39503
  variant: "subtle",
39406
39504
  color: "gray",
39407
39505
  onClick: toggleAdvanced,
39408
- leftSection: advancedOpen ? /* @__PURE__ */ React353.createElement(IconChevronDown10, { size: 14 }) : /* @__PURE__ */ React353.createElement(IconChevronRight12, { size: 14 }),
39506
+ leftSection: advancedOpen ? /* @__PURE__ */ React353.createElement(IconChevronDown10, { size: 14 }) : /* @__PURE__ */ React353.createElement(IconChevronRight13, { size: 14 }),
39409
39507
  style: { alignSelf: "flex-start" }
39410
39508
  },
39411
39509
  advancedOpen ? "Hide" : "More",
39412
39510
  " (Tax, Item code, Discount)"
39413
- ), /* @__PURE__ */ React353.createElement(Collapse10, { in: advancedOpen }, /* @__PURE__ */ React353.createElement(Stack244, { gap: "xs" }, /* @__PURE__ */ React353.createElement(
39511
+ ), /* @__PURE__ */ React353.createElement(Collapse11, { in: advancedOpen }, /* @__PURE__ */ React353.createElement(Stack244, { gap: "xs" }, /* @__PURE__ */ React353.createElement(
39414
39512
  DataInput,
39415
39513
  {
39416
39514
  label: "Tax type",
@@ -41002,8 +41100,8 @@ var BoundConnectionSelector = ({ toolkit, toolkitLabel, templateId, connection,
41002
41100
 
41003
41101
  // src/mantine/blocks/action/actionTypes/_shared/DynamicToolForm.tsx
41004
41102
  import React361, { useMemo as useMemo145, useState as useState212 } from "react";
41005
- import { Button as Button83, Collapse as Collapse11, Stack as Stack252 } from "@mantine/core";
41006
- import { IconChevronDown as IconChevronDown11, IconChevronRight as IconChevronRight13 } from "@tabler/icons-react";
41103
+ import { Button as Button83, Collapse as Collapse12, Stack as Stack252 } from "@mantine/core";
41104
+ import { IconChevronDown as IconChevronDown11, IconChevronRight as IconChevronRight14 } from "@tabler/icons-react";
41007
41105
  var ALWAYS_EXCLUDE = /* @__PURE__ */ new Set(["user_id", "connected_account_id"]);
41008
41106
  function prettify(name) {
41009
41107
  return name.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
@@ -41071,7 +41169,7 @@ var DynamicToolForm = ({ schema, values, onChange, editorDocument, blockId, read
41071
41169
  variant: "subtle",
41072
41170
  size: "xs",
41073
41171
  color: "gray",
41074
- leftSection: showOptional ? /* @__PURE__ */ React361.createElement(IconChevronDown11, { size: 14 }) : /* @__PURE__ */ React361.createElement(IconChevronRight13, { size: 14 }),
41172
+ leftSection: showOptional ? /* @__PURE__ */ React361.createElement(IconChevronDown11, { size: 14 }) : /* @__PURE__ */ React361.createElement(IconChevronRight14, { size: 14 }),
41075
41173
  onClick: () => setShowOptional((s) => !s),
41076
41174
  style: { alignSelf: "flex-start" }
41077
41175
  },
@@ -41079,7 +41177,7 @@ var DynamicToolForm = ({ schema, values, onChange, editorDocument, blockId, read
41079
41177
  " optional fields (",
41080
41178
  optional.length,
41081
41179
  ")"
41082
- ), /* @__PURE__ */ React361.createElement(Collapse11, { in: showOptional }, /* @__PURE__ */ React361.createElement(Stack252, { gap: "sm" }, optional.map(renderField)))));
41180
+ ), /* @__PURE__ */ React361.createElement(Collapse12, { in: showOptional }, /* @__PURE__ */ React361.createElement(Stack252, { gap: "sm" }, optional.map(renderField)))));
41083
41181
  };
41084
41182
 
41085
41183
  // src/mantine/blocks/action/actionTypes/_shared/DelegatedActionConfig.tsx
@@ -43887,7 +43985,7 @@ var OracleStoreSecretsConfig = ({ inputs, onInputsChange }) => {
43887
43985
 
43888
43986
  // src/mantine/blocks/action/actionTypes/oracleStoreSecrets/OracleStoreSecretsFlowDetail.tsx
43889
43987
  import React394, { useCallback as useCallback179, useEffect as useEffect171, useMemo as useMemo159, useRef as useRef52, useState as useState234 } from "react";
43890
- import { Button as Button96, Collapse as Collapse12, Divider as Divider37, Group as Group149, Loader as Loader91, Stack as Stack285, Text as Text266 } from "@mantine/core";
43988
+ import { Button as Button96, Collapse as Collapse13, Divider as Divider37, Group as Group149, Loader as Loader91, Stack as Stack285, Text as Text266 } from "@mantine/core";
43891
43989
  import { IconAlertCircle as IconAlertCircle46, IconCheck as IconCheck44, IconChevronDown as IconChevronDown12, IconChevronUp as IconChevronUp5, IconLock } from "@tabler/icons-react";
43892
43990
 
43893
43991
  // src/mantine/blocks/action/hooks/useIdempotencyCheck.ts
@@ -44068,7 +44166,7 @@ var OracleStoreSecretsFlowDetail = ({ inputs, editor, block, runtime, updateRunt
44068
44166
  onChange: (event) => setOpenRouterDraft(event.currentTarget.value),
44069
44167
  style: { flex: 1 }
44070
44168
  }
44071
- ) : /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "OPEN_ROUTER_API_KEY", readOnly: true, type: "password", value: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", style: { flex: 1 } })), /* @__PURE__ */ React394.createElement(Group149, { gap: "xs", justify: "flex-end" }, isEditingOpenRouter ? /* @__PURE__ */ React394.createElement(React394.Fragment, null, /* @__PURE__ */ React394.createElement(Button96, { size: "xs", onClick: handleSaveOpenRouter, loading: isEncryptingOpenRouter, disabled: !openRouterDraft || !resolvedInputs.publicKeyMultibase }, "Save"), hasOpenRouter && /* @__PURE__ */ React394.createElement(Button96, { size: "xs", variant: "subtle", onClick: handleCancelEditOpenRouter }, "Cancel")) : /* @__PURE__ */ React394.createElement(Button96, { size: "xs", variant: "outline", onClick: handleChangeOpenRouter }, "Change")), /* @__PURE__ */ React394.createElement(Divider37, { variant: "dashed" }), /* @__PURE__ */ React394.createElement(Text266, { size: "sm", fw: 600 }, "Identifiers (stored as plain config \u2014 not encrypted)"), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "MATRIX_ORACLE_ADMIN_USER_ID", readOnly: true, value: resolvedInputs.matrixUserId }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "MATRIX_ACCOUNT_ROOM_ID", readOnly: true, value: resolvedInputs.matrixAccountRoomId }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_ENTITY_DID", readOnly: true, value: resolvedInputs.entityDid }), /* @__PURE__ */ React394.createElement(Divider37, { variant: "dashed" }), /* @__PURE__ */ React394.createElement(Stack285, { gap: "xs" }, /* @__PURE__ */ React394.createElement(Group149, { justify: "space-between", style: { cursor: "pointer", userSelect: "none" }, onClick: () => setShowAdditional((v) => !v) }, /* @__PURE__ */ React394.createElement(Text266, { size: "sm", fw: 500 }, "Additional Configuration"), /* @__PURE__ */ React394.createElement(Group149, { gap: 6 }, /* @__PURE__ */ React394.createElement(Text266, { size: "xs", c: "dimmed" }, "Stored as plain config \u2014 not encrypted"), showAdditional ? /* @__PURE__ */ React394.createElement(IconChevronUp5, { size: 14 }) : /* @__PURE__ */ React394.createElement(IconChevronDown12, { size: 14 }))), /* @__PURE__ */ React394.createElement(Collapse12, { in: showAdditional }, /* @__PURE__ */ React394.createElement(Stack285, { gap: "xs", pt: "xs" }, isLoadingConstants && /* @__PURE__ */ React394.createElement(Group149, { gap: 6 }, /* @__PURE__ */ React394.createElement(Loader91, { size: 12 }), /* @__PURE__ */ React394.createElement(Text266, { size: "xs", c: "dimmed" }, "Loading network constants\u2026")), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_NAME", value: resolvedInputs.oracleName || "", readOnly: true }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_ADDRESS", value: resolvedInputs.oracleAddress || "", readOnly: true }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_DID", value: resolvedInputs.oracleDid || "", readOnly: true }), networkConstants && Object.entries(networkConstants).map(([key, value]) => /* @__PURE__ */ React394.createElement(BaseTextInput, { key, label: key, value, readOnly: true }))))), isRunning && /* @__PURE__ */ React394.createElement(Group149, { gap: "xs" }, /* @__PURE__ */ React394.createElement(Loader91, { size: 14 }), /* @__PURE__ */ React394.createElement(Text266, { size: "sm" }, "Encrypting and storing secrets in matrix room...")), /* @__PURE__ */ React394.createElement(Group149, { justify: "flex-end" }, /* @__PURE__ */ React394.createElement(Button96, { variant: "filled", size: "sm", onClick: handleExecute, disabled: submitDisabled }, "Store Secrets"))), isFailed && errorMessage && /* @__PURE__ */ React394.createElement(DismissibleAlert, { icon: /* @__PURE__ */ React394.createElement(IconAlertCircle46, { size: 16 }), color: "red", styles: actionAlertStyles }, errorMessage), isFailed && /* @__PURE__ */ React394.createElement(Group149, null, /* @__PURE__ */ React394.createElement(Button96, { variant: "outline", onClick: handleRetry }, "Try Again")));
44169
+ ) : /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "OPEN_ROUTER_API_KEY", readOnly: true, type: "password", value: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", style: { flex: 1 } })), /* @__PURE__ */ React394.createElement(Group149, { gap: "xs", justify: "flex-end" }, isEditingOpenRouter ? /* @__PURE__ */ React394.createElement(React394.Fragment, null, /* @__PURE__ */ React394.createElement(Button96, { size: "xs", onClick: handleSaveOpenRouter, loading: isEncryptingOpenRouter, disabled: !openRouterDraft || !resolvedInputs.publicKeyMultibase }, "Save"), hasOpenRouter && /* @__PURE__ */ React394.createElement(Button96, { size: "xs", variant: "subtle", onClick: handleCancelEditOpenRouter }, "Cancel")) : /* @__PURE__ */ React394.createElement(Button96, { size: "xs", variant: "outline", onClick: handleChangeOpenRouter }, "Change")), /* @__PURE__ */ React394.createElement(Divider37, { variant: "dashed" }), /* @__PURE__ */ React394.createElement(Text266, { size: "sm", fw: 600 }, "Identifiers (stored as plain config \u2014 not encrypted)"), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "MATRIX_ORACLE_ADMIN_USER_ID", readOnly: true, value: resolvedInputs.matrixUserId }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "MATRIX_ACCOUNT_ROOM_ID", readOnly: true, value: resolvedInputs.matrixAccountRoomId }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_ENTITY_DID", readOnly: true, value: resolvedInputs.entityDid }), /* @__PURE__ */ React394.createElement(Divider37, { variant: "dashed" }), /* @__PURE__ */ React394.createElement(Stack285, { gap: "xs" }, /* @__PURE__ */ React394.createElement(Group149, { justify: "space-between", style: { cursor: "pointer", userSelect: "none" }, onClick: () => setShowAdditional((v) => !v) }, /* @__PURE__ */ React394.createElement(Text266, { size: "sm", fw: 500 }, "Additional Configuration"), /* @__PURE__ */ React394.createElement(Group149, { gap: 6 }, /* @__PURE__ */ React394.createElement(Text266, { size: "xs", c: "dimmed" }, "Stored as plain config \u2014 not encrypted"), showAdditional ? /* @__PURE__ */ React394.createElement(IconChevronUp5, { size: 14 }) : /* @__PURE__ */ React394.createElement(IconChevronDown12, { size: 14 }))), /* @__PURE__ */ React394.createElement(Collapse13, { in: showAdditional }, /* @__PURE__ */ React394.createElement(Stack285, { gap: "xs", pt: "xs" }, isLoadingConstants && /* @__PURE__ */ React394.createElement(Group149, { gap: 6 }, /* @__PURE__ */ React394.createElement(Loader91, { size: 12 }), /* @__PURE__ */ React394.createElement(Text266, { size: "xs", c: "dimmed" }, "Loading network constants\u2026")), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_NAME", value: resolvedInputs.oracleName || "", readOnly: true }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_ADDRESS", value: resolvedInputs.oracleAddress || "", readOnly: true }), /* @__PURE__ */ React394.createElement(BaseTextInput, { label: "ORACLE_DID", value: resolvedInputs.oracleDid || "", readOnly: true }), networkConstants && Object.entries(networkConstants).map(([key, value]) => /* @__PURE__ */ React394.createElement(BaseTextInput, { key, label: key, value, readOnly: true }))))), isRunning && /* @__PURE__ */ React394.createElement(Group149, { gap: "xs" }, /* @__PURE__ */ React394.createElement(Loader91, { size: 14 }), /* @__PURE__ */ React394.createElement(Text266, { size: "sm" }, "Encrypting and storing secrets in matrix room...")), /* @__PURE__ */ React394.createElement(Group149, { justify: "flex-end" }, /* @__PURE__ */ React394.createElement(Button96, { variant: "filled", size: "sm", onClick: handleExecute, disabled: submitDisabled }, "Store Secrets"))), isFailed && errorMessage && /* @__PURE__ */ React394.createElement(DismissibleAlert, { icon: /* @__PURE__ */ React394.createElement(IconAlertCircle46, { size: 16 }), color: "red", styles: actionAlertStyles }, errorMessage), isFailed && /* @__PURE__ */ React394.createElement(Group149, null, /* @__PURE__ */ React394.createElement(Button96, { variant: "outline", onClick: handleRetry }, "Try Again")));
44072
44170
  };
44073
44171
 
44074
44172
  // src/mantine/blocks/action/actionTypes/oracleStoreSecrets/index.ts
@@ -44619,7 +44717,7 @@ var OracleStoreSecretsAndConfigConfig = ({ inputs, onInputsChange }) => {
44619
44717
 
44620
44718
  // src/mantine/blocks/action/actionTypes/oracleStoreSecretsAndConfig/OracleStoreSecretsAndConfigFlowDetail.tsx
44621
44719
  import React398, { useCallback as useCallback183, useEffect as useEffect174, useMemo as useMemo161, useRef as useRef53, useState as useState237 } from "react";
44622
- import { Button as Button98, Collapse as Collapse13, Divider as Divider40, Group as Group151, Loader as Loader93, Stack as Stack289, Text as Text270 } from "@mantine/core";
44720
+ import { Button as Button98, Collapse as Collapse14, Divider as Divider40, Group as Group151, Loader as Loader93, Stack as Stack289, Text as Text270 } from "@mantine/core";
44623
44721
  import { IconAlertCircle as IconAlertCircle48, IconCheck as IconCheck46, IconChevronDown as IconChevronDown13, IconChevronUp as IconChevronUp6, IconLock as IconLock2 } from "@tabler/icons-react";
44624
44722
  var EXPECTED_SECRETS2 = ["SECP_MNEMONIC", "MATRIX_ORACLE_ADMIN_PASSWORD", "MATRIX_ORACLE_ADMIN_ACCESS_TOKEN", "MATRIX_RECOVERY_PHRASE", "MATRIX_VALUE_PIN", "OPEN_ROUTER_API_KEY"];
44625
44723
  var FIELDS2 = [
@@ -44788,7 +44886,7 @@ var OracleStoreSecretsAndConfigFlowDetail = ({ inputs, editor, block, runtime, u
44788
44886
  onChange: (event) => setOpenRouterDraft(event.currentTarget.value),
44789
44887
  style: { flex: 1 }
44790
44888
  }
44791
- ) : /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "OPEN_ROUTER_API_KEY", readOnly: true, type: "password", value: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", style: { flex: 1 } })), /* @__PURE__ */ React398.createElement(Group151, { gap: "xs", justify: "flex-end" }, isEditingOpenRouter ? /* @__PURE__ */ React398.createElement(React398.Fragment, null, /* @__PURE__ */ React398.createElement(Button98, { size: "xs", onClick: handleSaveOpenRouter, loading: isEncryptingOpenRouter, disabled: !openRouterDraft || !resolvedInputs.publicKeyMultibase }, "Save"), hasOpenRouter && /* @__PURE__ */ React398.createElement(Button98, { size: "xs", variant: "subtle", onClick: handleCancelEditOpenRouter }, "Cancel")) : /* @__PURE__ */ React398.createElement(Button98, { size: "xs", variant: "outline", onClick: handleChangeOpenRouter }, "Change")), /* @__PURE__ */ React398.createElement(Divider40, { variant: "dashed" }), /* @__PURE__ */ React398.createElement(Text270, { size: "sm", fw: 600 }, "Identifiers (stored as plain config)"), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "MATRIX_ORACLE_ADMIN_USER_ID", readOnly: true, value: resolvedInputs.matrixUserId }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "MATRIX_ACCOUNT_ROOM_ID", readOnly: true, value: resolvedInputs.matrixAccountRoomId }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_ENTITY_DID", readOnly: true, value: resolvedInputs.entityDid }), /* @__PURE__ */ React398.createElement(Divider40, { variant: "dashed" }), /* @__PURE__ */ React398.createElement(Stack289, { gap: "xs" }, /* @__PURE__ */ React398.createElement(Group151, { justify: "space-between", style: { cursor: "pointer", userSelect: "none" }, onClick: () => setShowAdditional((v) => !v) }, /* @__PURE__ */ React398.createElement(Text270, { size: "sm", fw: 500 }, "Additional Configuration"), /* @__PURE__ */ React398.createElement(Group151, { gap: 6 }, /* @__PURE__ */ React398.createElement(Text270, { size: "xs", c: "dimmed" }, "Stored as plain config"), showAdditional ? /* @__PURE__ */ React398.createElement(IconChevronUp6, { size: 14 }) : /* @__PURE__ */ React398.createElement(IconChevronDown13, { size: 14 }))), /* @__PURE__ */ React398.createElement(Collapse13, { in: showAdditional }, /* @__PURE__ */ React398.createElement(Stack289, { gap: "xs", pt: "xs" }, isLoadingConstants && /* @__PURE__ */ React398.createElement(Group151, { gap: 6 }, /* @__PURE__ */ React398.createElement(Loader93, { size: 12 }), /* @__PURE__ */ React398.createElement(Text270, { size: "xs", c: "dimmed" }, "Loading network constants...")), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_NAME", value: resolvedInputs.oracleName || "", readOnly: true }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_ADDRESS", value: resolvedInputs.oracleAddress || "", readOnly: true }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_DID", value: resolvedInputs.oracleDid || "", readOnly: true }), networkConstants && Object.entries(networkConstants).map(([key, value]) => /* @__PURE__ */ React398.createElement(BaseTextInput, { key, label: key, value, readOnly: true }))))), isRunning && /* @__PURE__ */ React398.createElement(Group151, { gap: "xs" }, /* @__PURE__ */ React398.createElement(Loader93, { size: 14 }), /* @__PURE__ */ React398.createElement(Text270, { size: "sm" }, "Storing secrets and configuration...")), /* @__PURE__ */ React398.createElement(Group151, { justify: "flex-end" }, /* @__PURE__ */ React398.createElement(Button98, { variant: "filled", size: "sm", onClick: handleExecute, disabled: submitDisabled }, "Store Secrets & Config"))), isFailed && errorMessage && /* @__PURE__ */ React398.createElement(DismissibleAlert, { icon: /* @__PURE__ */ React398.createElement(IconAlertCircle48, { size: 16 }), color: "red", styles: actionAlertStyles }, errorMessage), isFailed && /* @__PURE__ */ React398.createElement(Group151, null, /* @__PURE__ */ React398.createElement(Button98, { variant: "outline", onClick: handleRetry }, "Try Again")));
44889
+ ) : /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "OPEN_ROUTER_API_KEY", readOnly: true, type: "password", value: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", style: { flex: 1 } })), /* @__PURE__ */ React398.createElement(Group151, { gap: "xs", justify: "flex-end" }, isEditingOpenRouter ? /* @__PURE__ */ React398.createElement(React398.Fragment, null, /* @__PURE__ */ React398.createElement(Button98, { size: "xs", onClick: handleSaveOpenRouter, loading: isEncryptingOpenRouter, disabled: !openRouterDraft || !resolvedInputs.publicKeyMultibase }, "Save"), hasOpenRouter && /* @__PURE__ */ React398.createElement(Button98, { size: "xs", variant: "subtle", onClick: handleCancelEditOpenRouter }, "Cancel")) : /* @__PURE__ */ React398.createElement(Button98, { size: "xs", variant: "outline", onClick: handleChangeOpenRouter }, "Change")), /* @__PURE__ */ React398.createElement(Divider40, { variant: "dashed" }), /* @__PURE__ */ React398.createElement(Text270, { size: "sm", fw: 600 }, "Identifiers (stored as plain config)"), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "MATRIX_ORACLE_ADMIN_USER_ID", readOnly: true, value: resolvedInputs.matrixUserId }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "MATRIX_ACCOUNT_ROOM_ID", readOnly: true, value: resolvedInputs.matrixAccountRoomId }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_ENTITY_DID", readOnly: true, value: resolvedInputs.entityDid }), /* @__PURE__ */ React398.createElement(Divider40, { variant: "dashed" }), /* @__PURE__ */ React398.createElement(Stack289, { gap: "xs" }, /* @__PURE__ */ React398.createElement(Group151, { justify: "space-between", style: { cursor: "pointer", userSelect: "none" }, onClick: () => setShowAdditional((v) => !v) }, /* @__PURE__ */ React398.createElement(Text270, { size: "sm", fw: 500 }, "Additional Configuration"), /* @__PURE__ */ React398.createElement(Group151, { gap: 6 }, /* @__PURE__ */ React398.createElement(Text270, { size: "xs", c: "dimmed" }, "Stored as plain config"), showAdditional ? /* @__PURE__ */ React398.createElement(IconChevronUp6, { size: 14 }) : /* @__PURE__ */ React398.createElement(IconChevronDown13, { size: 14 }))), /* @__PURE__ */ React398.createElement(Collapse14, { in: showAdditional }, /* @__PURE__ */ React398.createElement(Stack289, { gap: "xs", pt: "xs" }, isLoadingConstants && /* @__PURE__ */ React398.createElement(Group151, { gap: 6 }, /* @__PURE__ */ React398.createElement(Loader93, { size: 12 }), /* @__PURE__ */ React398.createElement(Text270, { size: "xs", c: "dimmed" }, "Loading network constants...")), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_NAME", value: resolvedInputs.oracleName || "", readOnly: true }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_ADDRESS", value: resolvedInputs.oracleAddress || "", readOnly: true }), /* @__PURE__ */ React398.createElement(BaseTextInput, { label: "ORACLE_DID", value: resolvedInputs.oracleDid || "", readOnly: true }), networkConstants && Object.entries(networkConstants).map(([key, value]) => /* @__PURE__ */ React398.createElement(BaseTextInput, { key, label: key, value, readOnly: true }))))), isRunning && /* @__PURE__ */ React398.createElement(Group151, { gap: "xs" }, /* @__PURE__ */ React398.createElement(Loader93, { size: 14 }), /* @__PURE__ */ React398.createElement(Text270, { size: "sm" }, "Storing secrets and configuration...")), /* @__PURE__ */ React398.createElement(Group151, { justify: "flex-end" }, /* @__PURE__ */ React398.createElement(Button98, { variant: "filled", size: "sm", onClick: handleExecute, disabled: submitDisabled }, "Store Secrets & Config"))), isFailed && errorMessage && /* @__PURE__ */ React398.createElement(DismissibleAlert, { icon: /* @__PURE__ */ React398.createElement(IconAlertCircle48, { size: 16 }), color: "red", styles: actionAlertStyles }, errorMessage), isFailed && /* @__PURE__ */ React398.createElement(Group151, null, /* @__PURE__ */ React398.createElement(Button98, { variant: "outline", onClick: handleRetry }, "Try Again")));
44792
44890
  };
44793
44891
 
44794
44892
  // src/mantine/blocks/action/actionTypes/oracleStoreSecretsAndConfig/index.ts
@@ -45065,7 +45163,7 @@ var OracleConfigureOracleConfig = ({ inputs, onInputsChange }) => {
45065
45163
 
45066
45164
  // src/mantine/blocks/action/actionTypes/oracleConfigureOracle/OracleConfigureOracleFlowDetail.tsx
45067
45165
  import React400, { useCallback as useCallback185, useEffect as useEffect176, useMemo as useMemo162, useRef as useRef54, useState as useState239 } from "react";
45068
- import { Button as Button99, Collapse as Collapse14, Divider as Divider42, Group as Group152, Loader as Loader94, Stack as Stack291, Text as Text272 } from "@mantine/core";
45166
+ import { Button as Button99, Collapse as Collapse15, Divider as Divider42, Group as Group152, Loader as Loader94, Stack as Stack291, Text as Text272 } from "@mantine/core";
45069
45167
  import { IconAlertCircle as IconAlertCircle49, IconCheck as IconCheck47, IconChevronDown as IconChevronDown14, IconChevronUp as IconChevronUp7, IconLock as IconLock4 } from "@tabler/icons-react";
45070
45168
  var EXPECTED_SECRETS3 = ["SECP_MNEMONIC", "MATRIX_ORACLE_ADMIN_PASSWORD", "MATRIX_ORACLE_ADMIN_ACCESS_TOKEN", "MATRIX_RECOVERY_PHRASE", "MATRIX_VALUE_PIN", "OPEN_ROUTER_API_KEY"];
45071
45169
  var FIELDS3 = [
@@ -45269,7 +45367,7 @@ var OracleConfigureOracleFlowDetail = ({ inputs, editor, block, runtime, updateR
45269
45367
  onChange: (event) => setOpenRouterDraft(event.currentTarget.value),
45270
45368
  style: { flex: 1 }
45271
45369
  }
45272
- ) : /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "OPEN_ROUTER_API_KEY", readOnly: true, type: "password", value: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", style: { flex: 1 } })), /* @__PURE__ */ React400.createElement(Group152, { gap: "xs", justify: "flex-end" }, isEditingOpenRouter ? /* @__PURE__ */ React400.createElement(React400.Fragment, null, /* @__PURE__ */ React400.createElement(Button99, { size: "xs", onClick: handleSaveOpenRouter, loading: isEncryptingOpenRouter, disabled: !openRouterDraft || !resolvedInputs.publicKeyMultibase }, "Save"), hasOpenRouter && /* @__PURE__ */ React400.createElement(Button99, { size: "xs", variant: "subtle", onClick: handleCancelEditOpenRouter }, "Cancel")) : /* @__PURE__ */ React400.createElement(Button99, { size: "xs", variant: "outline", onClick: handleChangeOpenRouter }, "Change")), /* @__PURE__ */ React400.createElement(Divider42, { variant: "dashed" }), /* @__PURE__ */ React400.createElement(Text272, { size: "sm", fw: 600 }, "Identifiers (stored as plain config)"), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "MATRIX_ORACLE_ADMIN_USER_ID", readOnly: true, value: resolvedInputs.matrixUserId }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "MATRIX_ACCOUNT_ROOM_ID", readOnly: true, value: resolvedInputs.matrixAccountRoomId }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_ENTITY_DID", readOnly: true, value: resolvedInputs.entityDid }), /* @__PURE__ */ React400.createElement(Divider42, { variant: "dashed" }), /* @__PURE__ */ React400.createElement(Stack291, { gap: "xs" }, /* @__PURE__ */ React400.createElement(Group152, { justify: "space-between", style: { cursor: "pointer", userSelect: "none" }, onClick: () => setShowAdditional((v) => !v) }, /* @__PURE__ */ React400.createElement(Text272, { size: "sm", fw: 500 }, "Additional Configuration"), /* @__PURE__ */ React400.createElement(Group152, { gap: 6 }, /* @__PURE__ */ React400.createElement(Text272, { size: "xs", c: "dimmed" }, "Stored as plain config"), showAdditional ? /* @__PURE__ */ React400.createElement(IconChevronUp7, { size: 14 }) : /* @__PURE__ */ React400.createElement(IconChevronDown14, { size: 14 }))), /* @__PURE__ */ React400.createElement(Collapse14, { in: showAdditional }, /* @__PURE__ */ React400.createElement(Stack291, { gap: "xs", pt: "xs" }, isLoadingConstants && /* @__PURE__ */ React400.createElement(Group152, { gap: 6 }, /* @__PURE__ */ React400.createElement(Loader94, { size: 12 }), /* @__PURE__ */ React400.createElement(Text272, { size: "xs", c: "dimmed" }, "Loading network constants...")), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_NAME", value: resolvedInputs.oracleName || "", readOnly: true }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_ADDRESS", value: resolvedInputs.oracleAddress || "", readOnly: true }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_DID", value: resolvedInputs.oracleDid || "", readOnly: true }), networkConstants && Object.entries(networkConstants).map(([key, value]) => /* @__PURE__ */ React400.createElement(BaseTextInput, { key, label: key, value, readOnly: true }))))), isRunning && /* @__PURE__ */ React400.createElement(Group152, { gap: "xs" }, /* @__PURE__ */ React400.createElement(Loader94, { size: 14 }), /* @__PURE__ */ React400.createElement(Text272, { size: "sm" }, "Contracting oracle, storing secrets, and saving configuration...")), /* @__PURE__ */ React400.createElement(Group152, { justify: "flex-end" }, /* @__PURE__ */ React400.createElement(Button99, { variant: "filled", size: "sm", onClick: handleExecute, disabled: submitDisabled }, "Configure Oracle"))), isFailed && errorMessage && /* @__PURE__ */ React400.createElement(DismissibleAlert, { icon: /* @__PURE__ */ React400.createElement(IconAlertCircle49, { size: 16 }), color: "red", styles: actionAlertStyles }, errorMessage), isFailed && /* @__PURE__ */ React400.createElement(Group152, null, /* @__PURE__ */ React400.createElement(Button99, { variant: "outline", onClick: handleRetry }, "Try Again")));
45370
+ ) : /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "OPEN_ROUTER_API_KEY", readOnly: true, type: "password", value: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", style: { flex: 1 } })), /* @__PURE__ */ React400.createElement(Group152, { gap: "xs", justify: "flex-end" }, isEditingOpenRouter ? /* @__PURE__ */ React400.createElement(React400.Fragment, null, /* @__PURE__ */ React400.createElement(Button99, { size: "xs", onClick: handleSaveOpenRouter, loading: isEncryptingOpenRouter, disabled: !openRouterDraft || !resolvedInputs.publicKeyMultibase }, "Save"), hasOpenRouter && /* @__PURE__ */ React400.createElement(Button99, { size: "xs", variant: "subtle", onClick: handleCancelEditOpenRouter }, "Cancel")) : /* @__PURE__ */ React400.createElement(Button99, { size: "xs", variant: "outline", onClick: handleChangeOpenRouter }, "Change")), /* @__PURE__ */ React400.createElement(Divider42, { variant: "dashed" }), /* @__PURE__ */ React400.createElement(Text272, { size: "sm", fw: 600 }, "Identifiers (stored as plain config)"), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "MATRIX_ORACLE_ADMIN_USER_ID", readOnly: true, value: resolvedInputs.matrixUserId }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "MATRIX_ACCOUNT_ROOM_ID", readOnly: true, value: resolvedInputs.matrixAccountRoomId }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_ENTITY_DID", readOnly: true, value: resolvedInputs.entityDid }), /* @__PURE__ */ React400.createElement(Divider42, { variant: "dashed" }), /* @__PURE__ */ React400.createElement(Stack291, { gap: "xs" }, /* @__PURE__ */ React400.createElement(Group152, { justify: "space-between", style: { cursor: "pointer", userSelect: "none" }, onClick: () => setShowAdditional((v) => !v) }, /* @__PURE__ */ React400.createElement(Text272, { size: "sm", fw: 500 }, "Additional Configuration"), /* @__PURE__ */ React400.createElement(Group152, { gap: 6 }, /* @__PURE__ */ React400.createElement(Text272, { size: "xs", c: "dimmed" }, "Stored as plain config"), showAdditional ? /* @__PURE__ */ React400.createElement(IconChevronUp7, { size: 14 }) : /* @__PURE__ */ React400.createElement(IconChevronDown14, { size: 14 }))), /* @__PURE__ */ React400.createElement(Collapse15, { in: showAdditional }, /* @__PURE__ */ React400.createElement(Stack291, { gap: "xs", pt: "xs" }, isLoadingConstants && /* @__PURE__ */ React400.createElement(Group152, { gap: 6 }, /* @__PURE__ */ React400.createElement(Loader94, { size: 12 }), /* @__PURE__ */ React400.createElement(Text272, { size: "xs", c: "dimmed" }, "Loading network constants...")), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_NAME", value: resolvedInputs.oracleName || "", readOnly: true }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_ADDRESS", value: resolvedInputs.oracleAddress || "", readOnly: true }), /* @__PURE__ */ React400.createElement(BaseTextInput, { label: "ORACLE_DID", value: resolvedInputs.oracleDid || "", readOnly: true }), networkConstants && Object.entries(networkConstants).map(([key, value]) => /* @__PURE__ */ React400.createElement(BaseTextInput, { key, label: key, value, readOnly: true }))))), isRunning && /* @__PURE__ */ React400.createElement(Group152, { gap: "xs" }, /* @__PURE__ */ React400.createElement(Loader94, { size: 14 }), /* @__PURE__ */ React400.createElement(Text272, { size: "sm" }, "Contracting oracle, storing secrets, and saving configuration...")), /* @__PURE__ */ React400.createElement(Group152, { justify: "flex-end" }, /* @__PURE__ */ React400.createElement(Button99, { variant: "filled", size: "sm", onClick: handleExecute, disabled: submitDisabled }, "Configure Oracle"))), isFailed && errorMessage && /* @__PURE__ */ React400.createElement(DismissibleAlert, { icon: /* @__PURE__ */ React400.createElement(IconAlertCircle49, { size: 16 }), color: "red", styles: actionAlertStyles }, errorMessage), isFailed && /* @__PURE__ */ React400.createElement(Group152, null, /* @__PURE__ */ React400.createElement(Button99, { variant: "outline", onClick: handleRetry }, "Try Again")));
45273
45371
  };
45274
45372
 
45275
45373
  // src/mantine/blocks/action/actionTypes/oracleConfigureOracle/index.ts
@@ -46603,7 +46701,7 @@ import { createReactBlockSpec as createReactBlockSpec23 } from "@blocknote/react
46603
46701
 
46604
46702
  // src/mantine/blocks/secrets/SecretsBlock.tsx
46605
46703
  import React425, { useCallback as useCallback193, useMemo as useMemo170, useState as useState245 } from "react";
46606
- import { Anchor as Anchor6, ActionIcon as ActionIcon52, Button as Button103, Collapse as Collapse15, CopyButton as CopyButton3, Group as Group161, Paper as Paper25, Stack as Stack304, Text as Text286, Tooltip as Tooltip36 } from "@mantine/core";
46704
+ import { Anchor as Anchor6, ActionIcon as ActionIcon52, Button as Button103, Collapse as Collapse16, CopyButton as CopyButton3, Group as Group161, Paper as Paper25, Stack as Stack304, Text as Text286, Tooltip as Tooltip36 } from "@mantine/core";
46607
46705
  import { IconCheck as IconCheck51, IconCopy as IconCopy3, IconDownload as IconDownload6, IconEye, IconEyeOff, IconKey as IconKey5 } from "@tabler/icons-react";
46608
46706
  var SENSITIVE_KEYS = /* @__PURE__ */ new Set(["mnemonic", "matrixPassword", "matrixRecoveryPhrase", "matrixAccessToken", "pin", "openRouterApiKeyJwe", "authToken"]);
46609
46707
  var BLOCK_LABELS = {
@@ -46740,7 +46838,7 @@ function SecretsBlock({ editor, block }) {
46740
46838
  if (docType === "template") {
46741
46839
  return /* @__PURE__ */ React425.createElement(BaseContainer, { blockId: block.id }, /* @__PURE__ */ React425.createElement(Stack304, { gap: "xs" }, /* @__PURE__ */ React425.createElement(Group161, { gap: "xs", align: "center" }, /* @__PURE__ */ React425.createElement(IconKey5, { size: 18 }), /* @__PURE__ */ React425.createElement(Text286, { fw: 600, size: "sm" }, block.props.title || "Flow Output")), /* @__PURE__ */ React425.createElement(Text286, { size: "xs", c: "dimmed" }, "Displays all flow outputs and allows downloading them in flow mode.")));
46742
46840
  }
46743
- return /* @__PURE__ */ React425.createElement(BaseContainer, { blockId: block.id }, /* @__PURE__ */ React425.createElement(Stack304, { gap: "md" }, /* @__PURE__ */ React425.createElement(Group161, { gap: "xs", align: "center" }, /* @__PURE__ */ React425.createElement(IconKey5, { size: 18 }), /* @__PURE__ */ React425.createElement(Text286, { fw: 600, size: "sm" }, block.props.title || "Flow Output")), /* @__PURE__ */ React425.createElement(Text286, { size: "sm", c: "dimmed" }, "Everything produced by this flow. You can view it here or download as JSON."), connectUrl && /* @__PURE__ */ React425.createElement(Stack304, { gap: "xs" }, /* @__PURE__ */ React425.createElement(Text286, { size: "sm", fw: 500 }, "Oracle Connect Link"), /* @__PURE__ */ React425.createElement(Group161, { gap: "xs", align: "center" }, /* @__PURE__ */ React425.createElement(Anchor6, { href: connectUrl, target: "_blank", size: "sm", style: { wordBreak: "break-all" } }, connectUrl), /* @__PURE__ */ React425.createElement(CopyButton3, { value: connectUrl, timeout: 2e3 }, ({ copied, copy }) => /* @__PURE__ */ React425.createElement(Tooltip36, { label: copied ? "Copied" : "Copy link", withArrow: true, position: "right" }, /* @__PURE__ */ React425.createElement(ActionIcon52, { color: copied ? "teal" : "gray", variant: "subtle", onClick: copy, size: "sm" }, copied ? /* @__PURE__ */ React425.createElement(IconCheck51, { size: 14 }) : /* @__PURE__ */ React425.createElement(IconCopy3, { size: 14 })))))), /* @__PURE__ */ React425.createElement(Group161, { gap: "xs" }, /* @__PURE__ */ React425.createElement(Button103, { variant: "light", size: "xs", leftSection: /* @__PURE__ */ React425.createElement(IconEye, { size: 14 }), onClick: () => setShowOutput((v) => !v) }, showOutput ? "Hide Output" : "View Output"), /* @__PURE__ */ React425.createElement(Button103, { variant: "filled", size: "sm", leftSection: /* @__PURE__ */ React425.createElement(IconDownload6, { size: 14 }), onClick: handleDownload, disabled: outputs.length === 0 }, "Download JSON")), /* @__PURE__ */ React425.createElement(Collapse15, { in: showOutput }, /* @__PURE__ */ React425.createElement(Stack304, { gap: "sm" }, outputs.length === 0 && /* @__PURE__ */ React425.createElement(Text286, { size: "xs", c: "dimmed", fs: "italic" }, "No outputs yet."), outputs.map(({ id, label, output }) => /* @__PURE__ */ React425.createElement(Paper25, { key: id, p: "xs", withBorder: true, style: { borderColor: "var(--mantine-color-neutralColor-6)" } }, /* @__PURE__ */ React425.createElement(Stack304, { gap: 4 }, /* @__PURE__ */ React425.createElement(Text286, { size: "xs", fw: 600 }, label), Object.entries(output).map(([key, value]) => /* @__PURE__ */ React425.createElement(OutputEntry, { key, label: key, value, isSensitive: SENSITIVE_KEYS.has(key) })))))))));
46841
+ return /* @__PURE__ */ React425.createElement(BaseContainer, { blockId: block.id }, /* @__PURE__ */ React425.createElement(Stack304, { gap: "md" }, /* @__PURE__ */ React425.createElement(Group161, { gap: "xs", align: "center" }, /* @__PURE__ */ React425.createElement(IconKey5, { size: 18 }), /* @__PURE__ */ React425.createElement(Text286, { fw: 600, size: "sm" }, block.props.title || "Flow Output")), /* @__PURE__ */ React425.createElement(Text286, { size: "sm", c: "dimmed" }, "Everything produced by this flow. You can view it here or download as JSON."), connectUrl && /* @__PURE__ */ React425.createElement(Stack304, { gap: "xs" }, /* @__PURE__ */ React425.createElement(Text286, { size: "sm", fw: 500 }, "Oracle Connect Link"), /* @__PURE__ */ React425.createElement(Group161, { gap: "xs", align: "center" }, /* @__PURE__ */ React425.createElement(Anchor6, { href: connectUrl, target: "_blank", size: "sm", style: { wordBreak: "break-all" } }, connectUrl), /* @__PURE__ */ React425.createElement(CopyButton3, { value: connectUrl, timeout: 2e3 }, ({ copied, copy }) => /* @__PURE__ */ React425.createElement(Tooltip36, { label: copied ? "Copied" : "Copy link", withArrow: true, position: "right" }, /* @__PURE__ */ React425.createElement(ActionIcon52, { color: copied ? "teal" : "gray", variant: "subtle", onClick: copy, size: "sm" }, copied ? /* @__PURE__ */ React425.createElement(IconCheck51, { size: 14 }) : /* @__PURE__ */ React425.createElement(IconCopy3, { size: 14 })))))), /* @__PURE__ */ React425.createElement(Group161, { gap: "xs" }, /* @__PURE__ */ React425.createElement(Button103, { variant: "light", size: "xs", leftSection: /* @__PURE__ */ React425.createElement(IconEye, { size: 14 }), onClick: () => setShowOutput((v) => !v) }, showOutput ? "Hide Output" : "View Output"), /* @__PURE__ */ React425.createElement(Button103, { variant: "filled", size: "sm", leftSection: /* @__PURE__ */ React425.createElement(IconDownload6, { size: 14 }), onClick: handleDownload, disabled: outputs.length === 0 }, "Download JSON")), /* @__PURE__ */ React425.createElement(Collapse16, { in: showOutput }, /* @__PURE__ */ React425.createElement(Stack304, { gap: "sm" }, outputs.length === 0 && /* @__PURE__ */ React425.createElement(Text286, { size: "xs", c: "dimmed", fs: "italic" }, "No outputs yet."), outputs.map(({ id, label, output }) => /* @__PURE__ */ React425.createElement(Paper25, { key: id, p: "xs", withBorder: true, style: { borderColor: "var(--mantine-color-neutralColor-6)" } }, /* @__PURE__ */ React425.createElement(Stack304, { gap: 4 }, /* @__PURE__ */ React425.createElement(Text286, { size: "xs", fw: 600 }, label), Object.entries(output).map(([key, value]) => /* @__PURE__ */ React425.createElement(OutputEntry, { key, label: key, value, isSensitive: SENSITIVE_KEYS.has(key) })))))))));
46744
46842
  }
46745
46843
 
46746
46844
  // src/mantine/blocks/secrets/SecretsBlockSpec.tsx
@@ -46807,7 +46905,7 @@ var SkillsTemplateView = ({ editor: _editor, block }) => {
46807
46905
  };
46808
46906
 
46809
46907
  // src/mantine/blocks/skills/flow/SkillsFlowView.tsx
46810
- import { ActionIcon as ActionIcon53, Badge as Badge62, Button as Button104, Collapse as Collapse16, Group as Group163, Loader as Loader99, Paper as Paper26, Stack as Stack306, Text as Text288, Tooltip as Tooltip37 } from "@mantine/core";
46908
+ import { ActionIcon as ActionIcon53, Badge as Badge62, Button as Button104, Collapse as Collapse17, Group as Group163, Loader as Loader99, Paper as Paper26, Stack as Stack306, Text as Text288, Tooltip as Tooltip37 } from "@mantine/core";
46811
46909
  import { IconBrain as IconBrain3, IconCheck as IconCheck52, IconPencil as IconPencil3, IconPlus as IconPlus11, IconTrash as IconTrash13, IconX as IconX21 } from "@tabler/icons-react";
46812
46910
  import React430, { useCallback as useCallback194, useEffect as useEffect181, useMemo as useMemo172, useRef as useRef57, useState as useState246 } from "react";
46813
46911
  function parseSkills2(raw) {
@@ -47055,7 +47153,7 @@ var SkillsFlowView = ({ editor, block }) => {
47055
47153
  },
47056
47154
  /* @__PURE__ */ React430.createElement(IconPencil3, { size: 14 })
47057
47155
  ), /* @__PURE__ */ React430.createElement(ActionIcon53, { variant: "subtle", color: "red", size: "sm", onClick: () => updateMcpServers(mcpServers.filter((_, idx) => idx !== i)) }, /* @__PURE__ */ React430.createElement(IconTrash13, { size: 14 })))));
47058
- }), !isCompleted && !showAddMcp && /* @__PURE__ */ React430.createElement(Button104, { variant: "light", size: "xs", leftSection: /* @__PURE__ */ React430.createElement(IconPlus11, { size: 14 }), onClick: () => setShowAddMcp(true) }, "Add MCP Server"), /* @__PURE__ */ React430.createElement(Collapse16, { in: showAddMcp }, /* @__PURE__ */ React430.createElement(Paper26, { p: "sm", withBorder: true, style: { borderColor: "var(--mantine-color-neutralColor-6)" } }, /* @__PURE__ */ React430.createElement(Stack306, { gap: "xs" }, /* @__PURE__ */ React430.createElement(BaseTextInput, { size: "xs", label: "Name", placeholder: "Server name", value: mcpName, onChange: (e) => setMcpName(e.currentTarget.value) }), /* @__PURE__ */ React430.createElement(BaseTextInput, { size: "xs", label: "URL", placeholder: "https://...", value: mcpUrl, onChange: (e) => setMcpUrl(e.currentTarget.value) }), /* @__PURE__ */ React430.createElement(
47156
+ }), !isCompleted && !showAddMcp && /* @__PURE__ */ React430.createElement(Button104, { variant: "light", size: "xs", leftSection: /* @__PURE__ */ React430.createElement(IconPlus11, { size: 14 }), onClick: () => setShowAddMcp(true) }, "Add MCP Server"), /* @__PURE__ */ React430.createElement(Collapse17, { in: showAddMcp }, /* @__PURE__ */ React430.createElement(Paper26, { p: "sm", withBorder: true, style: { borderColor: "var(--mantine-color-neutralColor-6)" } }, /* @__PURE__ */ React430.createElement(Stack306, { gap: "xs" }, /* @__PURE__ */ React430.createElement(BaseTextInput, { size: "xs", label: "Name", placeholder: "Server name", value: mcpName, onChange: (e) => setMcpName(e.currentTarget.value) }), /* @__PURE__ */ React430.createElement(BaseTextInput, { size: "xs", label: "URL", placeholder: "https://...", value: mcpUrl, onChange: (e) => setMcpUrl(e.currentTarget.value) }), /* @__PURE__ */ React430.createElement(
47059
47157
  BaseTextInput,
47060
47158
  {
47061
47159
  size: "xs",
@@ -49231,17 +49329,17 @@ function useCreateCollaborativeIxoEditor(options) {
49231
49329
 
49232
49330
  // src/mantine/components/Base/BaseIconPicker.tsx
49233
49331
  import React435, { useState as useState252, useMemo as useMemo178, useEffect as useEffect187 } from "react";
49234
- import { TextInput as TextInput11, Tabs as Tabs4, Box as Box74, Stack as Stack307, UnstyledButton as UnstyledButton8, Text as Text290, Center as Center15, ScrollArea as ScrollArea10, Group as Group165, Popover as Popover5 } from "@mantine/core";
49332
+ import { TextInput as TextInput11, Tabs as Tabs4, Box as Box74, Stack as Stack307, UnstyledButton as UnstyledButton9, Text as Text290, Center as Center15, ScrollArea as ScrollArea10, Group as Group165, Popover as Popover5 } from "@mantine/core";
49235
49333
  import * as TablerIcons2 from "@tabler/icons-react";
49236
- import { IconSearch as IconSearch11, IconX as IconX22, IconChevronLeft, IconChevronRight as IconChevronRight14 } from "@tabler/icons-react";
49334
+ import { IconSearch as IconSearch11, IconX as IconX22, IconChevronLeft, IconChevronRight as IconChevronRight15 } from "@tabler/icons-react";
49237
49335
 
49238
49336
  // src/mantine/components/Base/CoverImageButton.tsx
49239
49337
  import React434, { forwardRef, useState as useState251 } from "react";
49240
- import { UnstyledButton as UnstyledButton7, Group as Group164, Text as Text289 } from "@mantine/core";
49338
+ import { UnstyledButton as UnstyledButton8, Group as Group164, Text as Text289 } from "@mantine/core";
49241
49339
  var CoverImageButton = forwardRef(function CoverImageButton2({ isActive = false, onClick, icon: icon2, children, style }, ref) {
49242
49340
  const [hovered, setHovered] = useState251(false);
49243
49341
  return /* @__PURE__ */ React434.createElement(
49244
- UnstyledButton7,
49342
+ UnstyledButton8,
49245
49343
  {
49246
49344
  ref,
49247
49345
  onClick,
@@ -49359,7 +49457,7 @@ function BaseIconPicker({ opened, onClose, onSelectIcon, onUploadClick, onRemove
49359
49457
  icons.map(([name, IconComponent]) => {
49360
49458
  const isSelected = currentIcon === name.replace("Icon", "").replace(/([A-Z])/g, "-$1").toLowerCase().slice(1);
49361
49459
  return /* @__PURE__ */ React435.createElement(
49362
- UnstyledButton8,
49460
+ UnstyledButton9,
49363
49461
  {
49364
49462
  key: name,
49365
49463
  onClick: () => handleIconClick(name),
@@ -49400,7 +49498,7 @@ function BaseIconPicker({ opened, onClose, onSelectIcon, onUploadClick, onRemove
49400
49498
  p: 0
49401
49499
  },
49402
49500
  onRemove && /* @__PURE__ */ React435.createElement(
49403
- UnstyledButton8,
49501
+ UnstyledButton9,
49404
49502
  {
49405
49503
  onClick: () => {
49406
49504
  onRemove();
@@ -49426,7 +49524,7 @@ function BaseIconPicker({ opened, onClose, onSelectIcon, onUploadClick, onRemove
49426
49524
  leftSection: /* @__PURE__ */ React435.createElement(IconSearch11, { size: 18 }),
49427
49525
  value: searchQuery,
49428
49526
  onChange: (e) => setSearchQuery(e.currentTarget.value),
49429
- rightSection: searchQuery && /* @__PURE__ */ React435.createElement(UnstyledButton8, { onClick: () => setSearchQuery("") }, /* @__PURE__ */ React435.createElement(IconX22, { size: 18 })),
49527
+ rightSection: searchQuery && /* @__PURE__ */ React435.createElement(UnstyledButton9, { onClick: () => setSearchQuery("") }, /* @__PURE__ */ React435.createElement(IconX22, { size: 18 })),
49430
49528
  style: { flex: 1 },
49431
49529
  styles: {
49432
49530
  input: {
@@ -49442,7 +49540,7 @@ function BaseIconPicker({ opened, onClose, onSelectIcon, onUploadClick, onRemove
49442
49540
  size: "xs",
49443
49541
  onClick: () => setCurrentPage((p) => Math.min(totalPages, p + 1)),
49444
49542
  disabled: currentPage === totalPages,
49445
- leftSection: /* @__PURE__ */ React435.createElement(IconChevronRight14, { size: 14 })
49543
+ leftSection: /* @__PURE__ */ React435.createElement(IconChevronRight15, { size: 14 })
49446
49544
  },
49447
49545
  "Next"
49448
49546
  ))), /* @__PURE__ */ React435.createElement(ScrollArea10.Autosize, { scrollbarSize: 0, mah: 200 }, renderIconGrid(paginatedIcons)))), /* @__PURE__ */ React435.createElement(Tabs4.Panel, { value: "upload", pt: "md" }, /* @__PURE__ */ React435.createElement(Center15, { py: "xl" }, /* @__PURE__ */ React435.createElement(Stack307, { align: "center", gap: "md" }, /* @__PURE__ */ React435.createElement(Text290, { size: "sm", c: "dimmed", ta: "center" }, "Upload a custom icon image", /* @__PURE__ */ React435.createElement("br", null), "(PNG, JPG, SVG)"), /* @__PURE__ */ React435.createElement(CoverImageButton, { onClick: onUploadClick }, "Choose File"))))))
@@ -50904,7 +51002,8 @@ function IxoEditorContent({
50904
51002
  dropIndicator,
50905
51003
  isPlacementMode,
50906
51004
  onPlacementCancel,
50907
- belowTitleSlot
51005
+ belowTitleSlot,
51006
+ sessionPreview
50908
51007
  }) {
50909
51008
  const { activePanel } = usePanelStore();
50910
51009
  const isPanelOpen = activePanel !== null;
@@ -50996,12 +51095,14 @@ function IxoEditorContent({
50996
51095
  return /* @__PURE__ */ React443.createElement("div", { style: { display: "flex", height: "100%", width: "100%", gap: 0 } }, /* @__PURE__ */ React443.createElement(
50997
51096
  "div",
50998
51097
  {
50999
- className: `ixo-editor ixo-editor--theme-${config.theme}${isEditable ? "" : " ixo-editor--readonly"} ${className}`,
51098
+ className: `ixo-editor ixo-editor--theme-${config.theme}${isEditable ? "" : " ixo-editor--readonly"}${sessionPreview ? " ixo-editor--session-preview" : ""} ${className}`,
51000
51099
  style: {
51001
51100
  width: isPanelVisible && isPanelOpen ? "50%" : "100%",
51002
51101
  transition: "width 0.2s ease",
51003
- ...isEditable ? {} : { caretColor: "transparent" }
51004
- }
51102
+ ...isEditable ? {} : { caretColor: "transparent" },
51103
+ ...sessionPreview ? { pointerEvents: "none" } : {}
51104
+ },
51105
+ ...sessionPreview ? { inert: "" } : {}
51005
51106
  },
51006
51107
  /* @__PURE__ */ React443.createElement(CoverImage, { coverImageUrl, logoUrl }),
51007
51108
  /* @__PURE__ */ React443.createElement(PageTitle, { editor, editable: isEditable }),
@@ -51049,6 +51150,7 @@ function IxoEditor({
51049
51150
  awarenessInstance,
51050
51151
  belowTitleSlot,
51051
51152
  sessionRunId,
51153
+ sessionPreview,
51052
51154
  runEventLog,
51053
51155
  translate
51054
51156
  }) {
@@ -51065,7 +51167,7 @@ function IxoEditor({
51065
51167
  tableHandles: true
51066
51168
  };
51067
51169
  const isEditable = editable;
51068
- const editorContent = /* @__PURE__ */ React443.createElement(RunSessionProvider, { sessionRunId, runEventLog: runEventLog || editor._runEventLog }, /* @__PURE__ */ React443.createElement(SanitizedThemeBoundary, null, /* @__PURE__ */ React443.createElement(
51170
+ const editorContent = /* @__PURE__ */ React443.createElement(RunSessionProvider, { sessionRunId, runEventLog: runEventLog || editor._runEventLog, sessionPreview }, /* @__PURE__ */ React443.createElement(SanitizedThemeBoundary, null, /* @__PURE__ */ React443.createElement(
51069
51171
  BlocknoteProvider,
51070
51172
  {
51071
51173
  editor,
@@ -51099,7 +51201,8 @@ function IxoEditor({
51099
51201
  dropIndicator,
51100
51202
  isPlacementMode,
51101
51203
  onPlacementCancel,
51102
- belowTitleSlot
51204
+ belowTitleSlot,
51205
+ sessionPreview
51103
51206
  },
51104
51207
  children
51105
51208
  )
@@ -51815,6 +51918,7 @@ export {
51815
51918
  RunSessionProvider,
51816
51919
  useRunSessionId,
51817
51920
  useRunEventLog,
51921
+ useRunSessionPreview,
51818
51922
  useNodeRuntime,
51819
51923
  CheckboxFlowView,
51820
51924
  CheckboxBlockSpec,
@@ -51875,4 +51979,4 @@ export {
51875
51979
  ixoGraphQLClient,
51876
51980
  getEntity
51877
51981
  };
51878
- //# sourceMappingURL=chunk-DBH72SPW.js.map
51982
+ //# sourceMappingURL=chunk-BISN3FA2.js.map