@ixo/editor 6.28.0 → 6.29.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.
@@ -14,7 +14,7 @@ import {
14
14
  swapBlocksInFragment,
15
15
  writeActionState,
16
16
  writeCompiledBlocksToFragment
17
- } from "./chunk-TT4TNNOV.js";
17
+ } from "./chunk-LMZV7QFM.js";
18
18
 
19
19
  // src/core/lib/flowCompiler/authoring.ts
20
20
  import * as Y from "yjs";
@@ -370,4 +370,4 @@ export {
370
370
  setFlowParticipantPowerLevel,
371
371
  setFlowParticipantRequirements
372
372
  };
373
- //# sourceMappingURL=chunk-Y6M7ODSU.js.map
373
+ //# sourceMappingURL=chunk-C44S6WAW.js.map
@@ -85,6 +85,7 @@ import {
85
85
  parseDelegatedToolInputs,
86
86
  parseEvalRubricInputs,
87
87
  parseLinkedEntities,
88
+ parsePublishedRubric,
88
89
  parseReferences,
89
90
  readActionState,
90
91
  readFlowXeroBinding,
@@ -129,7 +130,7 @@ import {
129
130
  writeActionState,
130
131
  writeRunRecordAndReconcile,
131
132
  xeroOracleActivityForBlockForEditor
132
- } from "./chunk-TT4TNNOV.js";
133
+ } from "./chunk-LMZV7QFM.js";
133
134
 
134
135
  // src/mantine/hooks/usePanel.ts
135
136
  import { useCallback, useMemo, useEffect, useRef } from "react";
@@ -38590,6 +38591,7 @@ function useRubricDraft(inputs, onInputsChange, opts) {
38590
38591
  const [formLoading, setFormLoading] = useState180(false);
38591
38592
  const [formError, setFormError] = useState180(null);
38592
38593
  const fetchGenRef = useRef48(0);
38594
+ const [prefilledFromChain, setPrefilledFromChain] = useState180(false);
38593
38595
  const loadForm = useCallback113(
38594
38596
  async (deedDid, collectionId, collection) => {
38595
38597
  if (!deedDid || !collectionId) return;
@@ -38618,12 +38620,30 @@ function useRubricDraft(inputs, onInputsChange, opts) {
38618
38620
  update({ claimSchemaSnapshot: catalog });
38619
38621
  return;
38620
38622
  }
38623
+ let base = current;
38624
+ if (!base && typeof handlers.getDeedRubric === "function") {
38625
+ const published = await handlers.getDeedRubric(deedDid).catch((error) => {
38626
+ console.warn("[eval.rubric] step prefill \u2014 could not read the published rules", error);
38627
+ return null;
38628
+ });
38629
+ if (generation !== fetchGenRef.current) return;
38630
+ const candidate = parsePublishedRubric(published?.rubric);
38631
+ const boundTo = String(candidate?.claimSchema?.protocol || "");
38632
+ const fetched = candidate && boundTo === protocol ? candidate : null;
38633
+ base = localRef.current.rubric ?? fetched;
38634
+ setPrefilledFromChain(!localRef.current.rubric && !!fetched);
38635
+ console.info(
38636
+ "[eval.rubric] step prefill \u2014",
38637
+ fetched ? `opened on the rules already published for protocol ${protocol}` : candidate ? `skipped: the published rules are bound to protocol ${boundTo}, not ${protocol}` : "no rules published yet; starting fresh"
38638
+ );
38639
+ }
38621
38640
  update({
38622
38641
  claimSchemaSnapshot: catalog,
38623
- // Keep the rules the author already wrote; re-pin them to the form that
38624
- // is actually loaded. `bindForm` NEVER replaces an existing rubric with
38625
- // a blank one — only fills the binding — so reopening cannot wipe work.
38626
- rubric: bindForm(current, protocol, resource, catalog.proof, title)
38642
+ // Keep the rules the author already wrote (or the published ones just
38643
+ // read); re-pin them to the form that is actually loaded. `bindForm`
38644
+ // NEVER replaces an existing rubric with a blank one — only fills the
38645
+ // binding so reopening cannot wipe work.
38646
+ rubric: bindForm(base, protocol, resource, catalog.proof, title)
38627
38647
  });
38628
38648
  } catch (error) {
38629
38649
  if (generation !== fetchGenRef.current) return;
@@ -38774,6 +38794,7 @@ function useRubricDraft(inputs, onInputsChange, opts) {
38774
38794
  formLoading,
38775
38795
  formError,
38776
38796
  reloadForm,
38797
+ prefilledFromChain,
38777
38798
  checking,
38778
38799
  checkError,
38779
38800
  checkFormDrift,
@@ -39089,7 +39110,7 @@ var EvalEngineFlowDetail = ({
39089
39110
  const editingLocked = isDisabled || isRunning;
39090
39111
  const title = block?.props?.title || "Evaluation Engine";
39091
39112
  const description = block?.props?.description || "";
39092
- return /* @__PURE__ */ React335.createElement(Stack224, { gap: "md" }, /* @__PURE__ */ React335.createElement(Stack224, { gap: 2 }, /* @__PURE__ */ React335.createElement(Text212, { fw: 600 }, title), description && /* @__PURE__ */ React335.createElement(Text212, { size: "sm", c: "dimmed" }, description)), configMissing && /* @__PURE__ */ React335.createElement(Alert55, { color: "yellow", styles: actionAlertStyles }, "Configure the DID and claim collection in template mode (or wire a Claim Collection trigger) before running this action."), !configMissing && !isCompletedWithProof && /* @__PURE__ */ React335.createElement(React335.Fragment, null, draft.formLoading && /* @__PURE__ */ React335.createElement(Group130, { gap: "xs" }, /* @__PURE__ */ React335.createElement(Loader65, { size: "xs" }), /* @__PURE__ */ React335.createElement(Text212, { size: "sm", c: "dimmed" }, "Loading the claim form\u2026")), draft.collectionsError && /* @__PURE__ */ React335.createElement(Alert55, { color: "red", icon: /* @__PURE__ */ React335.createElement(IconAlertCircle29, { size: 16 }), styles: actionAlertStyles }, /* @__PURE__ */ React335.createElement(Text212, { size: "sm" }, draft.collectionsError)), !draft.formLoading && draft.formError && /* @__PURE__ */ React335.createElement(BaseAlert, { errMsg: draft.formError, onRetry: draft.reloadForm }), !draft.formLoading && !draft.formError && catalog && body && /* @__PURE__ */ React335.createElement(React335.Fragment, null, /* @__PURE__ */ React335.createElement(Group130, { justify: "space-between", align: "center" }, /* @__PURE__ */ React335.createElement(Text212, { size: "sm", fw: 600 }, body.title ? `Form: \u201C${body.title}\u201D` : "The claim form", " \xB7 ", catalog.fields.length, " question", catalog.fields.length === 1 ? "" : "s")), /* @__PURE__ */ React335.createElement(Stack224, { gap: 14 }, catalog.fields.map((field) => /* @__PURE__ */ React335.createElement(
39113
+ return /* @__PURE__ */ React335.createElement(Stack224, { gap: "md" }, /* @__PURE__ */ React335.createElement(Stack224, { gap: 2 }, /* @__PURE__ */ React335.createElement(Text212, { fw: 600 }, title), description && /* @__PURE__ */ React335.createElement(Text212, { size: "sm", c: "dimmed" }, description)), configMissing && /* @__PURE__ */ React335.createElement(Alert55, { color: "yellow", styles: actionAlertStyles }, "Configure the DID and claim collection in template mode (or wire a Claim Collection trigger) before running this action."), !configMissing && !isCompletedWithProof && /* @__PURE__ */ React335.createElement(React335.Fragment, null, draft.formLoading && /* @__PURE__ */ React335.createElement(Group130, { gap: "xs" }, /* @__PURE__ */ React335.createElement(Loader65, { size: "xs" }), /* @__PURE__ */ React335.createElement(Text212, { size: "sm", c: "dimmed" }, "Loading the claim form\u2026")), draft.prefilledFromChain && /* @__PURE__ */ React335.createElement(Alert55, { color: "neutralColor", variant: "light", icon: /* @__PURE__ */ React335.createElement(IconInfoCircle11, { size: 16 }), styles: actionAlertStyles }, /* @__PURE__ */ React335.createElement(Text212, { size: "xs" }, "These are the rules already published for this claim form, loaded from chain. Edit them and sign to replace what is live.")), draft.collectionsError && /* @__PURE__ */ React335.createElement(Alert55, { color: "red", icon: /* @__PURE__ */ React335.createElement(IconAlertCircle29, { size: 16 }), styles: actionAlertStyles }, /* @__PURE__ */ React335.createElement(Text212, { size: "sm" }, draft.collectionsError)), !draft.formLoading && draft.formError && /* @__PURE__ */ React335.createElement(BaseAlert, { errMsg: draft.formError, onRetry: draft.reloadForm }), !draft.formLoading && !draft.formError && catalog && body && /* @__PURE__ */ React335.createElement(React335.Fragment, null, /* @__PURE__ */ React335.createElement(Group130, { justify: "space-between", align: "center" }, /* @__PURE__ */ React335.createElement(Text212, { size: "sm", fw: 600 }, body.title ? `Form: \u201C${body.title}\u201D` : "The claim form", " \xB7 ", catalog.fields.length, " question", catalog.fields.length === 1 ? "" : "s")), /* @__PURE__ */ React335.createElement(Stack224, { gap: 14 }, catalog.fields.map((field) => /* @__PURE__ */ React335.createElement(
39093
39114
  "div",
39094
39115
  {
39095
39116
  key: field.path,
@@ -57679,4 +57700,4 @@ export {
57679
57700
  ixoGraphQLClient,
57680
57701
  getEntity
57681
57702
  };
57682
- //# sourceMappingURL=chunk-SYEWBPNQ.js.map
57703
+ //# sourceMappingURL=chunk-GEJ2KLBL.js.map