@ai-matrx/content-ir-react 0.10.0 → 0.11.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.
- package/CHANGELOG.md +50 -0
- package/dist/db-component.d.cts +8 -8
- package/dist/db-component.d.ts +8 -8
- package/dist/directive-host-DAb7Keg8.d.cts +63 -0
- package/dist/directive-host-DAb7Keg8.d.ts +63 -0
- package/dist/directives.cjs +382 -0
- package/dist/directives.cjs.map +1 -0
- package/dist/directives.d.cts +70 -0
- package/dist/directives.d.ts +70 -0
- package/dist/directives.js +369 -0
- package/dist/directives.js.map +1 -0
- package/dist/{host-types-CDcLW0TD.d.cts → host-types-C8jR31Wk.d.cts} +9 -0
- package/dist/{host-types-CpItjcYh.d.ts → host-types-IUEDmso7.d.ts} +9 -0
- package/dist/host.cjs +14 -4
- package/dist/host.cjs.map +1 -1
- package/dist/host.d.cts +5 -4
- package/dist/host.d.ts +5 -4
- package/dist/host.js +14 -4
- package/dist/host.js.map +1 -1
- package/dist/index.cjs +437 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +85 -21
- package/dist/index.d.ts +85 -21
- package/dist/index.js +435 -30
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +401 -46
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +11 -10
- package/dist/react.d.ts +11 -10
- package/dist/react.js +398 -29
- package/dist/react.js.map +1 -1
- package/dist/{route-QL2Vqf2e.d.cts → route-Bu85A41G.d.cts} +83 -3
- package/dist/{route-PUuEuEug.d.ts → route-DoFoDKBn.d.ts} +83 -3
- package/dist/route.cjs +14 -0
- package/dist/route.cjs.map +1 -1
- package/dist/route.d.cts +1 -1
- package/dist/route.d.ts +1 -1
- package/dist/route.js +15 -0
- package/dist/route.js.map +1 -1
- package/package.json +15 -2
package/dist/index.cjs
CHANGED
|
@@ -30,11 +30,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// index.ts
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
|
+
ApplyDirectiveButton: () => ApplyDirectiveButton,
|
|
33
34
|
ComponentResolver: () => ComponentResolver,
|
|
34
35
|
ContentIrRenderProvider: () => ContentIrRenderProvider,
|
|
35
36
|
DB_KIND_COMPONENT_KEY: () => DB_KIND_COMPONENT_KEY,
|
|
37
|
+
DIRECTIVE_BLOCK_TYPE: () => DIRECTIVE_BLOCK_TYPE,
|
|
36
38
|
DbKindComponentErrorBoundary: () => DbKindComponentErrorBoundary,
|
|
37
39
|
DelegatedOutput: () => DelegatedOutput,
|
|
40
|
+
DirectiveFallbackCard: () => DirectiveFallbackCard,
|
|
41
|
+
DirectiveHostProvider: () => DirectiveHostProvider,
|
|
42
|
+
DirectiveRender: () => DirectiveRender,
|
|
38
43
|
GENERIC_STRUCTURED_COMPONENT_KEY: () => GENERIC_STRUCTURED_COMPONENT_KEY,
|
|
39
44
|
GenericStructuredView: () => GenericStructuredView,
|
|
40
45
|
IR_PROVISIONAL_KEY: () => IR_PROVISIONAL_KEY,
|
|
@@ -44,11 +49,13 @@ __export(index_exports, {
|
|
|
44
49
|
ProvisionalKindBoundary: () => ProvisionalKindBoundary,
|
|
45
50
|
ProvisionalKindFrame: () => ProvisionalKindFrame,
|
|
46
51
|
RunResultView: () => RunResultView,
|
|
52
|
+
SideEffectDirectiveCard: () => SideEffectDirectiveCard,
|
|
47
53
|
applyIrKindRoute: () => applyIrKindRoute,
|
|
48
54
|
consoleErrorReporter: () => consoleErrorReporter,
|
|
49
55
|
createDbKindComponentCache: () => createDbKindComponentCache,
|
|
50
56
|
createKindRouteBinding: () => createKindRouteBinding,
|
|
51
57
|
envelopeFromPartialKind: () => envelopeFromPartialKind,
|
|
58
|
+
getDirectiveRenderer: () => getDirectiveRenderer,
|
|
52
59
|
isDbKindComponentBodyPending: () => isDbKindComponentBodyPending,
|
|
53
60
|
isPartialReadyKind: () => isPartialReadyKind,
|
|
54
61
|
isProvisionalBlock: () => isProvisionalBlock,
|
|
@@ -57,6 +64,8 @@ __export(index_exports, {
|
|
|
57
64
|
kindServerDataFromStoredValue: () => kindServerDataFromStoredValue,
|
|
58
65
|
markKindPartialUnsafe: () => markKindPartialUnsafe,
|
|
59
66
|
readIrRouteMarker: () => readIrRouteMarker,
|
|
67
|
+
registerDirectiveRenderer: () => registerDirectiveRenderer,
|
|
68
|
+
resetDirectiveRenderers: () => resetDirectiveRenderers,
|
|
60
69
|
resetPartialUnsafeKinds: () => resetPartialUnsafeKinds,
|
|
61
70
|
resetSourcelessDbRowReports: () => resetSourcelessDbRowReports,
|
|
62
71
|
resolveAnnouncedKindLoading: () => resolveAnnouncedKindLoading,
|
|
@@ -65,6 +74,7 @@ __export(index_exports, {
|
|
|
65
74
|
useContentIrHost: () => useContentIrHost,
|
|
66
75
|
useContentIrHostOrNull: () => useContentIrHostOrNull,
|
|
67
76
|
useContentIrKindVersion: () => useContentIrKindVersion,
|
|
77
|
+
useDirectiveHost: () => useDirectiveHost,
|
|
68
78
|
useKindRouteEnv: () => useKindRouteEnv
|
|
69
79
|
});
|
|
70
80
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -85,17 +95,31 @@ function routeEnvOf(host) {
|
|
|
85
95
|
}
|
|
86
96
|
|
|
87
97
|
// host/ContentIrProvider.tsx
|
|
98
|
+
var import_react2 = require("react");
|
|
99
|
+
|
|
100
|
+
// directives/directive-host.tsx
|
|
88
101
|
var import_react = require("react");
|
|
89
102
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
90
|
-
var
|
|
103
|
+
var DirectiveHostContext = (0, import_react.createContext)(null);
|
|
104
|
+
function DirectiveHostProvider({ host, children }) {
|
|
105
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DirectiveHostContext.Provider, { value: host, children });
|
|
106
|
+
}
|
|
107
|
+
var EMPTY_HOST = {};
|
|
108
|
+
function useDirectiveHost() {
|
|
109
|
+
return (0, import_react.useContext)(DirectiveHostContext) ?? EMPTY_HOST;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// host/ContentIrProvider.tsx
|
|
113
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
114
|
+
var ContentIrHostContext = (0, import_react2.createContext)(null);
|
|
91
115
|
function ContentIrRenderProvider({
|
|
92
116
|
host,
|
|
93
117
|
children
|
|
94
118
|
}) {
|
|
95
|
-
return /* @__PURE__ */ (0,
|
|
119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ContentIrHostContext.Provider, { value: host, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DirectiveHostProvider, { host: host.directives ?? {}, children }) });
|
|
96
120
|
}
|
|
97
121
|
function useContentIrHostOrNull() {
|
|
98
|
-
return (0,
|
|
122
|
+
return (0, import_react2.useContext)(ContentIrHostContext);
|
|
99
123
|
}
|
|
100
124
|
function useContentIrHost() {
|
|
101
125
|
const host = useContentIrHostOrNull();
|
|
@@ -108,7 +132,7 @@ function useContentIrHost() {
|
|
|
108
132
|
}
|
|
109
133
|
function useKindRouteEnv() {
|
|
110
134
|
const host = useContentIrHost();
|
|
111
|
-
return (0,
|
|
135
|
+
return (0, import_react2.useMemo)(() => routeEnvOf(host), [host]);
|
|
112
136
|
}
|
|
113
137
|
|
|
114
138
|
// resolver/component-resolver.ts
|
|
@@ -445,6 +469,7 @@ var import_content_ir = require("@ai-matrx/content-ir");
|
|
|
445
469
|
var IR_ROUTE_KEY = "__ir_route";
|
|
446
470
|
var GENERIC_STRUCTURED_COMPONENT_KEY = "generic_structured";
|
|
447
471
|
var DB_KIND_COMPONENT_KEY = "db_kind_component";
|
|
472
|
+
var DIRECTIVE_BLOCK_TYPE = "matrx";
|
|
448
473
|
function isDbSourceResolution(resolution) {
|
|
449
474
|
return resolution !== null && resolution.resolvedBy === "db" && resolution.source === "db" && resolution.isActive;
|
|
450
475
|
}
|
|
@@ -522,6 +547,18 @@ function applyIrKindRoute(block, env, options) {
|
|
|
522
547
|
const kind = envelope.root.kind;
|
|
523
548
|
if (!kind) return block;
|
|
524
549
|
if (envelope.root.kindState === "pending_schema") return block;
|
|
550
|
+
if ((0, import_content_ir.isReservedDirectiveSlug)(kind)) {
|
|
551
|
+
if (block.type === DIRECTIVE_BLOCK_TYPE) return block;
|
|
552
|
+
return {
|
|
553
|
+
...block,
|
|
554
|
+
type: DIRECTIVE_BLOCK_TYPE,
|
|
555
|
+
serverData: void 0,
|
|
556
|
+
metadata: {
|
|
557
|
+
...block.metadata ?? {},
|
|
558
|
+
[IR_ROUTE_KEY]: { by: "directive", key: DIRECTIVE_BLOCK_TYPE }
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
}
|
|
525
562
|
const def = env.kinds.getDefinition(kind);
|
|
526
563
|
const resolution = env.components.resolve(kind, env.platform, "output");
|
|
527
564
|
const componentsSettled = env.components.hasSettled?.() ?? true;
|
|
@@ -661,7 +698,7 @@ function createKindRouteBinding(env, options) {
|
|
|
661
698
|
}
|
|
662
699
|
|
|
663
700
|
// react/use-kind-version.ts
|
|
664
|
-
var
|
|
701
|
+
var import_react3 = require("react");
|
|
665
702
|
var noopSubscribe = () => () => {
|
|
666
703
|
};
|
|
667
704
|
var zero = () => 0;
|
|
@@ -673,7 +710,7 @@ function useContentIrKindVersion(kind, sources) {
|
|
|
673
710
|
"[content-ir-react] useContentIrKindVersion needs either a ContentIrRenderProvider above it or explicit `sources`."
|
|
674
711
|
);
|
|
675
712
|
}
|
|
676
|
-
const subscribe = (0,
|
|
713
|
+
const subscribe = (0, import_react3.useCallback)(
|
|
677
714
|
(onStoreChange) => {
|
|
678
715
|
if (!kind || !resolved) return noopSubscribe();
|
|
679
716
|
const unsubKinds = resolved.kinds.subscribeKind(kind, onStoreChange);
|
|
@@ -688,7 +725,7 @@ function useContentIrKindVersion(kind, sources) {
|
|
|
688
725
|
},
|
|
689
726
|
[resolved, kind]
|
|
690
727
|
);
|
|
691
|
-
const getSnapshot = (0,
|
|
728
|
+
const getSnapshot = (0, import_react3.useCallback)(
|
|
692
729
|
() => kind && resolved ? (
|
|
693
730
|
// Both counters are monotonic, so the sum is monotonic — a change in
|
|
694
731
|
// either registry produces a new snapshot value for this kind.
|
|
@@ -696,23 +733,377 @@ function useContentIrKindVersion(kind, sources) {
|
|
|
696
733
|
) : 0,
|
|
697
734
|
[resolved, kind]
|
|
698
735
|
);
|
|
699
|
-
return (0,
|
|
736
|
+
return (0, import_react3.useSyncExternalStore)(subscribe, getSnapshot, zero);
|
|
700
737
|
}
|
|
701
738
|
|
|
702
739
|
// react/KindInstanceRender.tsx
|
|
703
|
-
var
|
|
740
|
+
var import_react6 = require("react");
|
|
741
|
+
var import_content_ir7 = require("@ai-matrx/content-ir");
|
|
742
|
+
|
|
743
|
+
// directives/DirectiveRender.tsx
|
|
744
|
+
var import_content_ir6 = require("@ai-matrx/content-ir");
|
|
745
|
+
|
|
746
|
+
// directives/DirectiveFallbackCard.tsx
|
|
704
747
|
var import_content_ir3 = require("@ai-matrx/content-ir");
|
|
705
|
-
|
|
748
|
+
|
|
749
|
+
// directives/ApplyDirectiveButton.tsx
|
|
750
|
+
var import_react4 = require("react");
|
|
751
|
+
|
|
752
|
+
// directives/icons.tsx
|
|
753
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
754
|
+
function Svg({ children, ...props }) {
|
|
755
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
756
|
+
"svg",
|
|
757
|
+
{
|
|
758
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
759
|
+
viewBox: "0 0 24 24",
|
|
760
|
+
fill: "none",
|
|
761
|
+
stroke: "currentColor",
|
|
762
|
+
strokeWidth: 2,
|
|
763
|
+
strokeLinecap: "round",
|
|
764
|
+
strokeLinejoin: "round",
|
|
765
|
+
"aria-hidden": "true",
|
|
766
|
+
...props,
|
|
767
|
+
children
|
|
768
|
+
}
|
|
769
|
+
);
|
|
770
|
+
}
|
|
771
|
+
var FilePlusIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
772
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4" }),
|
|
773
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" }),
|
|
774
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M3 15h6" }),
|
|
775
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M6 12v6" })
|
|
776
|
+
] });
|
|
777
|
+
var PencilIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
778
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 20h9" }),
|
|
779
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z" })
|
|
780
|
+
] });
|
|
781
|
+
var TrashIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
782
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M3 6h18" }),
|
|
783
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" }),
|
|
784
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" }),
|
|
785
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "10", x2: "10", y1: "11", y2: "17" }),
|
|
786
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "14", x2: "14", y1: "11", y2: "17" })
|
|
787
|
+
] });
|
|
788
|
+
var PlayIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Svg, { ...p, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("polygon", { points: "6 3 20 12 6 21 6 3" }) });
|
|
789
|
+
var WebhookIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
790
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2" }),
|
|
791
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m6 17 3.13-5.78c.53-.97.1-2.01-.4-2.96A4 4 0 0 1 14 5.5c.63.42 1.13 1 1.44 1.66" }),
|
|
792
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8" })
|
|
793
|
+
] });
|
|
794
|
+
var BoxesIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
795
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z" }),
|
|
796
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m7 16.5-4.74-2.85" }),
|
|
797
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m7 16.5 5-3" }),
|
|
798
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M7 16.5v5.17" }),
|
|
799
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z" }),
|
|
800
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m17 16.5-5-3" }),
|
|
801
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m17 16.5 4.74-2.85" }),
|
|
802
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M17 16.5v5.17" }),
|
|
803
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z" }),
|
|
804
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 8 7.26 5.15" }),
|
|
805
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m12 8 4.74-2.85" }),
|
|
806
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 13.5V8" })
|
|
807
|
+
] });
|
|
808
|
+
var ChevronDownIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Svg, { ...p, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m6 9 6 6 6-6" }) });
|
|
809
|
+
var ChevronRightIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Svg, { ...p, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m9 18 6-6-6-6" }) });
|
|
810
|
+
var MaximizeIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
811
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("polyline", { points: "15 3 21 3 21 9" }),
|
|
812
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("polyline", { points: "9 21 3 21 3 15" }),
|
|
813
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "21", x2: "14", y1: "3", y2: "10" }),
|
|
814
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "3", x2: "10", y1: "21", y2: "14" })
|
|
815
|
+
] });
|
|
816
|
+
var LoaderIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Svg, { ...p, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) });
|
|
817
|
+
var CheckCircleIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
818
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
819
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m9 12 2 2 4-4" })
|
|
820
|
+
] });
|
|
821
|
+
var AlertIcon = (p) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...p, children: [
|
|
822
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
|
|
823
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 9v4" }),
|
|
824
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 17h.01" })
|
|
825
|
+
] });
|
|
826
|
+
var AGENT_NOUNS = /* @__PURE__ */ new Set(["create_agent", "create_agent_definition", "agent"]);
|
|
827
|
+
function classIcon(directiveClass, noun) {
|
|
828
|
+
if (directiveClass === "action" && AGENT_NOUNS.has(noun)) return WebhookIcon;
|
|
829
|
+
switch (directiveClass) {
|
|
830
|
+
case "create":
|
|
831
|
+
return FilePlusIcon;
|
|
832
|
+
case "update":
|
|
833
|
+
return PencilIcon;
|
|
834
|
+
case "delete":
|
|
835
|
+
return TrashIcon;
|
|
836
|
+
default:
|
|
837
|
+
return PlayIcon;
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
// directives/ApplyDirectiveButton.tsx
|
|
842
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
843
|
+
function ApplyDirectiveButton({
|
|
844
|
+
directive,
|
|
845
|
+
label = "Apply",
|
|
846
|
+
itemCount,
|
|
847
|
+
onApplied
|
|
848
|
+
}) {
|
|
849
|
+
const host = useDirectiveHost();
|
|
850
|
+
const [state, setState] = (0, import_react4.useState)({ status: "idle" });
|
|
851
|
+
const [elapsed, setElapsed] = (0, import_react4.useState)(0);
|
|
852
|
+
const startedAt = (0, import_react4.useRef)(null);
|
|
853
|
+
(0, import_react4.useEffect)(() => {
|
|
854
|
+
if (state.status !== "applying") return;
|
|
855
|
+
startedAt.current = Date.now();
|
|
856
|
+
const id = setInterval(
|
|
857
|
+
() => setElapsed(Math.round((Date.now() - (startedAt.current ?? 0)) / 1e3)),
|
|
858
|
+
1e3
|
|
859
|
+
);
|
|
860
|
+
return () => clearInterval(id);
|
|
861
|
+
}, [state.status]);
|
|
862
|
+
if (!directive.parsed.executes) return null;
|
|
863
|
+
const confirm = host.confirm;
|
|
864
|
+
if (!confirm) return null;
|
|
865
|
+
const items = directive.items;
|
|
866
|
+
async function handleApply() {
|
|
867
|
+
if (!confirm) return;
|
|
868
|
+
setState({ status: "applying" });
|
|
869
|
+
try {
|
|
870
|
+
const result = await confirm({ __kind: directive.slug, items });
|
|
871
|
+
setState({ status: "applied", applied: result.applied, failed: result.failed });
|
|
872
|
+
onApplied?.();
|
|
873
|
+
} catch (error) {
|
|
874
|
+
setState({
|
|
875
|
+
status: "error",
|
|
876
|
+
message: error instanceof Error && error.message ? error.message : "That couldn't be applied just now. Please try again."
|
|
877
|
+
});
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
if (state.status === "applied") {
|
|
881
|
+
const bad = state.failed > 0;
|
|
882
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
883
|
+
"span",
|
|
884
|
+
{
|
|
885
|
+
className: `inline-flex items-center gap-1 text-xs ${bad ? "text-destructive" : "text-primary"}`,
|
|
886
|
+
children: [
|
|
887
|
+
bad ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertIcon, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckCircleIcon, { className: "h-3.5 w-3.5" }),
|
|
888
|
+
"Applied ",
|
|
889
|
+
state.applied,
|
|
890
|
+
bad ? ` \xB7 ${state.failed} failed` : ""
|
|
891
|
+
]
|
|
892
|
+
}
|
|
893
|
+
);
|
|
894
|
+
}
|
|
895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "inline-flex items-center gap-2", children: [
|
|
896
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
897
|
+
"button",
|
|
898
|
+
{
|
|
899
|
+
type: "button",
|
|
900
|
+
onClick: () => void handleApply(),
|
|
901
|
+
disabled: state.status === "applying" || items.length === 0,
|
|
902
|
+
className: "inline-flex items-center gap-1 rounded-md border border-border bg-background px-2 py-1 text-xs font-medium hover:bg-accent disabled:opacity-50",
|
|
903
|
+
children: [
|
|
904
|
+
state.status === "applying" ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(LoaderIcon, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(PlayIcon, { className: "h-3.5 w-3.5" }),
|
|
905
|
+
state.status === "applying" ? `Applying${itemCount ? ` ${itemCount} ${itemCount === 1 ? "item" : "items"}` : ""}\u2026${elapsed ? ` ${elapsed}s` : ""}` : label
|
|
906
|
+
]
|
|
907
|
+
}
|
|
908
|
+
),
|
|
909
|
+
state.status === "error" ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "inline-flex max-w-sm items-start gap-1 text-xs text-destructive", children: [
|
|
910
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AlertIcon, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }),
|
|
911
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: state.message })
|
|
912
|
+
] }) : null
|
|
913
|
+
] });
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
// directives/DirectiveFallbackCard.tsx
|
|
917
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
918
|
+
function DirectiveFallbackCard({ directive, reason }) {
|
|
919
|
+
const host = useDirectiveHost();
|
|
920
|
+
const count = directive.items.length;
|
|
921
|
+
const display = (0, import_content_ir3.directiveDisplay)(directive.directiveClass, directive.noun, host.nouns);
|
|
922
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "my-3 inline-flex flex-wrap items-center gap-2 rounded-md border border-border bg-muted px-2.5 py-1 text-sm", children: [
|
|
923
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(BoxesIcon, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
|
|
924
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-foreground", children: display.title }),
|
|
925
|
+
display.family ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
926
|
+
"\xB7 ",
|
|
927
|
+
display.family
|
|
928
|
+
] }) : null,
|
|
929
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
930
|
+
"\xB7 ",
|
|
931
|
+
count,
|
|
932
|
+
" ",
|
|
933
|
+
count === 1 ? "item" : "items"
|
|
934
|
+
] }),
|
|
935
|
+
reason ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
936
|
+
"\xB7 ",
|
|
937
|
+
reason
|
|
938
|
+
] }) : null,
|
|
939
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ApplyDirectiveButton, { directive })
|
|
940
|
+
] });
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
// directives/registry.ts
|
|
944
|
+
var import_content_ir4 = require("@ai-matrx/content-ir");
|
|
945
|
+
var REGISTRY_SLOT = /* @__PURE__ */ Symbol.for("ai-matrx.content-ir-react.directive-renderers");
|
|
946
|
+
var registry = globalThis[REGISTRY_SLOT] ??= {
|
|
947
|
+
bySlug: /* @__PURE__ */ new Map(),
|
|
948
|
+
byClass: /* @__PURE__ */ new Map()
|
|
949
|
+
};
|
|
950
|
+
function registerDirectiveRenderer(directiveClass, renderer, noun) {
|
|
951
|
+
if (noun) registry.bySlug.set((0, import_content_ir4.buildDirectiveSlug)(directiveClass, noun), renderer);
|
|
952
|
+
else registry.byClass.set(directiveClass, renderer);
|
|
953
|
+
}
|
|
954
|
+
function getDirectiveRenderer(directive) {
|
|
955
|
+
return registry.bySlug.get(directive.slug) ?? registry.byClass.get(directive.directiveClass) ?? null;
|
|
956
|
+
}
|
|
957
|
+
function resetDirectiveRenderers() {
|
|
958
|
+
registry.bySlug.clear();
|
|
959
|
+
registry.byClass.clear();
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
// directives/SideEffectDirectiveCard.tsx
|
|
963
|
+
var import_react5 = require("react");
|
|
964
|
+
var import_content_ir5 = require("@ai-matrx/content-ir");
|
|
965
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
966
|
+
var ROWS_BEFORE_FOLD = 3;
|
|
967
|
+
function ItemRow({
|
|
968
|
+
directive,
|
|
969
|
+
item,
|
|
970
|
+
index,
|
|
971
|
+
total
|
|
972
|
+
}) {
|
|
973
|
+
const host = useDirectiveHost();
|
|
974
|
+
const titleColumn = (0, import_content_ir5.nounTitleColumn)(directive.noun, host.nouns);
|
|
975
|
+
const title = (0, import_content_ir5.itemTitle)(item, titleColumn, index, total);
|
|
976
|
+
const subtitle = (0, import_content_ir5.itemSubtitle)(item);
|
|
977
|
+
const facts = (0, import_content_ir5.itemFacts)(item);
|
|
978
|
+
const kind = host.itemKind?.(directive.slug) ?? null;
|
|
979
|
+
const display = (0, import_content_ir5.directiveDisplay)(directive.directiveClass, directive.noun, host.nouns);
|
|
980
|
+
const openItem = host.openItem;
|
|
981
|
+
const body = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
982
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "min-w-0 shrink-0 truncate font-medium text-foreground", children: title }),
|
|
983
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hidden min-w-0 flex-1 items-baseline gap-2 overflow-hidden sm:flex", children: facts.map((fact) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "truncate text-[11px] text-muted-foreground", children: [
|
|
984
|
+
fact.value,
|
|
985
|
+
" ",
|
|
986
|
+
fact.label
|
|
987
|
+
] }, fact.key)) }),
|
|
988
|
+
subtitle && facts.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "hidden truncate text-[11px] text-muted-foreground sm:inline", children: subtitle }) : null,
|
|
989
|
+
openItem ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MaximizeIcon, { className: "ml-auto h-3 w-3 shrink-0 text-muted-foreground" }) : null
|
|
990
|
+
] });
|
|
991
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2 py-1 text-xs", children: [
|
|
992
|
+
openItem ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
993
|
+
"button",
|
|
994
|
+
{
|
|
995
|
+
type: "button",
|
|
996
|
+
onClick: () => openItem({
|
|
997
|
+
// Stamped so the panel's kind pipeline types it from its own first key.
|
|
998
|
+
item: (0, import_content_ir5.asKindInstance)(item, kind) ?? item,
|
|
999
|
+
itemKind: kind,
|
|
1000
|
+
title,
|
|
1001
|
+
subtitle: `${display.title} \xB7 item ${index + 1} of ${total}`,
|
|
1002
|
+
directive,
|
|
1003
|
+
index,
|
|
1004
|
+
total
|
|
1005
|
+
}),
|
|
1006
|
+
className: "flex min-w-0 flex-1 items-center gap-2 rounded px-1 py-0.5 text-left hover:bg-accent hover:text-accent-foreground",
|
|
1007
|
+
title: "Open to read it",
|
|
1008
|
+
children: body
|
|
1009
|
+
}
|
|
1010
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "flex min-w-0 flex-1 items-center gap-2 px-1 py-0.5", children: body }),
|
|
1011
|
+
host.renderCopy?.({ label: title, value: item, kind, size: "xs" })
|
|
1012
|
+
] });
|
|
1013
|
+
}
|
|
1014
|
+
function SideEffectDirectiveCard({ directive }) {
|
|
1015
|
+
const host = useDirectiveHost();
|
|
1016
|
+
const [expanded, setExpanded] = (0, import_react5.useState)(false);
|
|
1017
|
+
const items = directive.items;
|
|
1018
|
+
const total = items.length;
|
|
1019
|
+
const display = (0, import_content_ir5.directiveDisplay)(directive.directiveClass, directive.noun, host.nouns);
|
|
1020
|
+
const Icon = classIcon(directive.directiveClass, directive.noun);
|
|
1021
|
+
const shown = expanded ? items : items.slice(0, ROWS_BEFORE_FOLD);
|
|
1022
|
+
const hidden = total - shown.length;
|
|
1023
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "my-3 rounded-md border border-border bg-card px-2.5 py-1.5", "data-directive": directive.slug, children: [
|
|
1024
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [
|
|
1025
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
|
|
1026
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-sm font-medium text-foreground", children: display.title }),
|
|
1027
|
+
display.family ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-xs text-muted-foreground", children: display.family }) : null,
|
|
1028
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "text-xs tabular-nums text-muted-foreground", children: [
|
|
1029
|
+
total,
|
|
1030
|
+
" ",
|
|
1031
|
+
total === 1 ? "item" : "items"
|
|
1032
|
+
] }),
|
|
1033
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "ml-auto flex items-center gap-1", children: [
|
|
1034
|
+
host.renderCopy?.({ label: display.title, value: directive.shell, size: "icon" }),
|
|
1035
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ApplyDirectiveButton, { directive, itemCount: total })
|
|
1036
|
+
] })
|
|
1037
|
+
] }),
|
|
1038
|
+
total === 0 ? (
|
|
1039
|
+
// Stated, never silent: an empty batch is a real (and suspicious) state.
|
|
1040
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "mt-1 text-xs text-muted-foreground", children: "No items \u2014 nothing would be written." })
|
|
1041
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "mt-0.5 divide-y divide-border/60", children: shown.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ItemRow, { directive, item, index: i, total }, i)) }),
|
|
1042
|
+
hidden > 0 || expanded ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1043
|
+
"button",
|
|
1044
|
+
{
|
|
1045
|
+
type: "button",
|
|
1046
|
+
onClick: () => setExpanded((v) => !v),
|
|
1047
|
+
className: "mt-0.5 inline-flex items-center gap-1 rounded px-1 py-0.5 text-[11px] text-muted-foreground hover:text-foreground",
|
|
1048
|
+
children: [
|
|
1049
|
+
expanded ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ChevronDownIcon, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ChevronRightIcon, { className: "h-3 w-3" }),
|
|
1050
|
+
expanded ? "Show less" : `Show ${hidden} more`
|
|
1051
|
+
]
|
|
1052
|
+
}
|
|
1053
|
+
) : null
|
|
1054
|
+
] });
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
// directives/DirectiveRender.tsx
|
|
1058
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1059
|
+
function DirectiveRender({ content, className }) {
|
|
1060
|
+
const host = useDirectiveHost();
|
|
1061
|
+
const directive = (0, import_content_ir6.tryDecodeDirectiveContent)(content, (message) => {
|
|
1062
|
+
const line = `[kind-directives] ${message}`;
|
|
1063
|
+
if (host.reportError) host.reportError(line);
|
|
1064
|
+
else console.error(line);
|
|
1065
|
+
});
|
|
1066
|
+
if (!directive) {
|
|
1067
|
+
const raw = typeof content === "string" ? content : JSON.stringify(content, null, 2);
|
|
1068
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1069
|
+
"pre",
|
|
1070
|
+
{
|
|
1071
|
+
className: `my-3 overflow-x-auto rounded-md border border-border bg-muted px-3 py-2 text-xs text-muted-foreground${className ? ` ${className}` : ""}`,
|
|
1072
|
+
children: raw
|
|
1073
|
+
}
|
|
1074
|
+
);
|
|
1075
|
+
}
|
|
1076
|
+
const Renderer = getDirectiveRenderer(directive);
|
|
1077
|
+
if (Renderer) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Renderer, { directive });
|
|
1078
|
+
if (directive.parsed.executes) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SideEffectDirectiveCard, { directive });
|
|
1079
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DirectiveFallbackCard, { directive });
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
// react/KindInstanceRender.tsx
|
|
1083
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
706
1084
|
function isRecordValue(value) {
|
|
707
1085
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
708
1086
|
}
|
|
709
1087
|
function kindIsRoutable(kind, host) {
|
|
1088
|
+
if ((0, import_content_ir7.isReservedDirectiveSlug)(kind)) return true;
|
|
710
1089
|
if (host.kinds.getDefinition(kind)?.legacyBlockType) return true;
|
|
711
1090
|
const resolution = host.components.resolve(kind, host.platform, "output");
|
|
712
1091
|
if (!resolution?.isActive) return false;
|
|
713
1092
|
return resolution.componentKey !== GENERIC_STRUCTURED_COMPONENT_KEY;
|
|
714
1093
|
}
|
|
715
|
-
function KindInstanceRender({
|
|
1094
|
+
function KindInstanceRender(props) {
|
|
1095
|
+
if ((0, import_content_ir7.isReservedDirectiveSlug)(props.kind)) {
|
|
1096
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1097
|
+
DirectiveRender,
|
|
1098
|
+
{
|
|
1099
|
+
content: props.value,
|
|
1100
|
+
...props.className === void 0 ? {} : { className: props.className }
|
|
1101
|
+
}
|
|
1102
|
+
);
|
|
1103
|
+
}
|
|
1104
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(KindInstanceRenderInner, { ...props });
|
|
1105
|
+
}
|
|
1106
|
+
function KindInstanceRenderInner({
|
|
716
1107
|
kind,
|
|
717
1108
|
value,
|
|
718
1109
|
showRoutingNote = true,
|
|
@@ -721,10 +1112,10 @@ function KindInstanceRender({
|
|
|
721
1112
|
className
|
|
722
1113
|
}) {
|
|
723
1114
|
const host = useContentIrHost();
|
|
724
|
-
const [routingStatus, setRoutingStatus] = (0,
|
|
1115
|
+
const [routingStatus, setRoutingStatus] = (0, import_react6.useState)(
|
|
725
1116
|
() => kindIsRoutable(kind, host) ? "routable" : "checking"
|
|
726
1117
|
);
|
|
727
|
-
(0,
|
|
1118
|
+
(0, import_react6.useEffect)(() => {
|
|
728
1119
|
let cancelled = false;
|
|
729
1120
|
let warmed = false;
|
|
730
1121
|
const syncRoutingStatus = () => {
|
|
@@ -756,25 +1147,25 @@ function KindInstanceRender({
|
|
|
756
1147
|
content: JSON.stringify(value, null, 2),
|
|
757
1148
|
language: "json",
|
|
758
1149
|
metadata: {
|
|
759
|
-
[
|
|
1150
|
+
[import_content_ir7.IR_ENVELOPE_KEY]: (0, import_content_ir7.envelopeFromCompleteValue)(value, kind)
|
|
760
1151
|
}
|
|
761
1152
|
} : null;
|
|
762
1153
|
const frameClass = variant === "bare" ? void 0 : "rounded-md border border-border bg-card p-3";
|
|
763
1154
|
if (routingStatus === "unroutable" && unroutableFallback !== void 0) {
|
|
764
|
-
return /* @__PURE__ */ (0,
|
|
1155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, { children: unroutableFallback });
|
|
765
1156
|
}
|
|
766
1157
|
const onTheFloor = block === null || routingStatus === "unroutable";
|
|
767
1158
|
const notice = "This shape has no custom component yet, so it renders through the universal viewer \u2014 exactly what production shows today.";
|
|
768
|
-
return /* @__PURE__ */ (0,
|
|
769
|
-
showRoutingNote && routingStatus === "unroutable" ? host.renderNotice?.(notice) ?? /* @__PURE__ */ (0,
|
|
770
|
-
/* @__PURE__ */ (0,
|
|
1159
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: className ? `space-y-3 ${className}` : "space-y-3", children: [
|
|
1160
|
+
showRoutingNote && routingStatus === "unroutable" ? host.renderNotice?.(notice) ?? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "rounded-md border border-amber-500/30 bg-amber-500/5 px-3 py-2 text-xs text-amber-800 dark:text-amber-200", children: notice }) : null,
|
|
1161
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: frameClass, children: onTheFloor ? host.renderValue({ value, kind }) : host.renderBlock(block) })
|
|
771
1162
|
] });
|
|
772
1163
|
}
|
|
773
1164
|
|
|
774
1165
|
// react/ProvisionalKindBoundary.tsx
|
|
775
|
-
var
|
|
776
|
-
var
|
|
777
|
-
var ProvisionalKindBoundaryInner = class extends
|
|
1166
|
+
var import_react7 = __toESM(require("react"), 1);
|
|
1167
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1168
|
+
var ProvisionalKindBoundaryInner = class extends import_react7.default.Component {
|
|
778
1169
|
state = { failed: false };
|
|
779
1170
|
static getDerivedStateFromError() {
|
|
780
1171
|
return { failed: true };
|
|
@@ -798,25 +1189,25 @@ var ProvisionalKindBoundaryInner = class extends import_react4.default.Component
|
|
|
798
1189
|
};
|
|
799
1190
|
function ProvisionalKindBoundary(props) {
|
|
800
1191
|
const host = useContentIrHost();
|
|
801
|
-
return /* @__PURE__ */ (0,
|
|
1192
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ProvisionalKindBoundaryInner, { ...props, reportError: host.reportError });
|
|
802
1193
|
}
|
|
803
1194
|
function ProvisionalKindFrame({ children }) {
|
|
804
1195
|
const host = useContentIrHost();
|
|
805
1196
|
const label = "Still arriving";
|
|
806
|
-
return /* @__PURE__ */ (0,
|
|
1197
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative", "aria-busy": "true", children: [
|
|
807
1198
|
children,
|
|
808
|
-
/* @__PURE__ */ (0,
|
|
1199
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "pointer-events-none absolute -top-2 right-4 z-10 select-none rounded-full bg-background px-1.5 leading-4", children: host.renderShimmer?.(label) ?? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-[10px] text-muted-foreground", children: label }) })
|
|
809
1200
|
] });
|
|
810
1201
|
}
|
|
811
1202
|
|
|
812
1203
|
// react/GenericStructuredView.tsx
|
|
813
|
-
var
|
|
814
|
-
var
|
|
815
|
-
var
|
|
1204
|
+
var import_react8 = require("react");
|
|
1205
|
+
var import_content_ir8 = require("@ai-matrx/content-ir");
|
|
1206
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
816
1207
|
function readStructuredValue(content, metadata) {
|
|
817
|
-
const envelope = (0,
|
|
1208
|
+
const envelope = (0, import_content_ir8.readEnvelope)(metadata);
|
|
818
1209
|
if (envelope) {
|
|
819
|
-
return { value: (0,
|
|
1210
|
+
return { value: (0, import_content_ir8.reconstructRegionValue)(envelope), recovered: true };
|
|
820
1211
|
}
|
|
821
1212
|
try {
|
|
822
1213
|
return { value: JSON.parse(content), recovered: true };
|
|
@@ -831,25 +1222,25 @@ function GenericStructuredView({
|
|
|
831
1222
|
className
|
|
832
1223
|
}) {
|
|
833
1224
|
const host = useContentIrHost();
|
|
834
|
-
const envelope = (0,
|
|
1225
|
+
const envelope = (0, import_content_ir8.readEnvelope)(metadata);
|
|
835
1226
|
const status = envelope?.root.status ?? "complete";
|
|
836
1227
|
const { value, recovered } = readStructuredValue(content, metadata);
|
|
837
|
-
const kind = envelope?.root.kind ?? (typeof value === "object" && value !== null && !Array.isArray(value) ? (0,
|
|
1228
|
+
const kind = envelope?.root.kind ?? (typeof value === "object" && value !== null && !Array.isArray(value) ? (0, import_content_ir8.readObjectKind)(value) : null) ?? "";
|
|
838
1229
|
const marker = readIrRouteMarker(metadata);
|
|
839
1230
|
const note = marker?.reason === "inactive" ? "a custom view is registered but held inactive" : marker?.reason === "broken-instance" ? "this instance did not match the shape's schema" : marker?.reason === "unregistered" ? "this shape isn't registered on this platform" : "no custom view yet";
|
|
840
|
-
return /* @__PURE__ */ (0,
|
|
841
|
-
status === "streaming" ? streamingIndicator ?? /* @__PURE__ */ (0,
|
|
1231
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: className ? `my-2 min-w-0 ${className}` : "my-2 min-w-0", children: [
|
|
1232
|
+
status === "streaming" ? streamingIndicator ?? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "mb-2 text-xs text-muted-foreground", children: "Still arriving\u2026" }) : null,
|
|
842
1233
|
recovered ? host.renderValue({ value, ...kind ? { kind } : {}, note }) : (
|
|
843
1234
|
// Zero-data-loss backstop: the region never parsed, so show the source
|
|
844
1235
|
// verbatim rather than swallowing it.
|
|
845
|
-
/* @__PURE__ */ (0,
|
|
1236
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("pre", { className: "max-h-96 overflow-auto font-mono text-xs leading-relaxed text-muted-foreground", children: content })
|
|
846
1237
|
)
|
|
847
1238
|
] });
|
|
848
1239
|
}
|
|
849
1240
|
|
|
850
1241
|
// react/RuntimeWrapperViews.tsx
|
|
851
|
-
var
|
|
852
|
-
var
|
|
1242
|
+
var import_content_ir9 = require("@ai-matrx/content-ir");
|
|
1243
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
853
1244
|
function isRecord2(value) {
|
|
854
1245
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
855
1246
|
}
|
|
@@ -865,16 +1256,16 @@ function DelegatedOutput({
|
|
|
865
1256
|
}) {
|
|
866
1257
|
const host = useContentIrHost();
|
|
867
1258
|
if (output === null || output === void 0) {
|
|
868
|
-
return /* @__PURE__ */ (0,
|
|
1259
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "text-xs text-muted-foreground", children: emptyLabel });
|
|
869
1260
|
}
|
|
870
1261
|
if (!isRecord2(output)) {
|
|
871
|
-
return /* @__PURE__ */ (0,
|
|
1262
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jsx_runtime11.Fragment, { children: host.renderValue({ value: output }) });
|
|
872
1263
|
}
|
|
873
|
-
const kind = (0,
|
|
1264
|
+
const kind = (0, import_content_ir9.readObjectKind)(output) ?? declaredKind;
|
|
874
1265
|
if (!kind) {
|
|
875
|
-
return /* @__PURE__ */ (0,
|
|
1266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jsx_runtime11.Fragment, { children: fallback?.(output) ?? host.renderValue({ value: output }) });
|
|
876
1267
|
}
|
|
877
|
-
return /* @__PURE__ */ (0,
|
|
1268
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
878
1269
|
KindInstanceRender,
|
|
879
1270
|
{
|
|
880
1271
|
kind,
|
|
@@ -888,10 +1279,10 @@ function DelegatedOutput({
|
|
|
888
1279
|
function NodeOutcomeView({ serverData, fallback }) {
|
|
889
1280
|
const wrapper = readWrapperFrom(
|
|
890
1281
|
serverData,
|
|
891
|
-
|
|
1282
|
+
import_content_ir9.readNodeOutcomeValue
|
|
892
1283
|
);
|
|
893
1284
|
if (!wrapper) return null;
|
|
894
|
-
return /* @__PURE__ */ (0,
|
|
1285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
895
1286
|
DelegatedOutput,
|
|
896
1287
|
{
|
|
897
1288
|
output: wrapper.output,
|
|
@@ -903,17 +1294,17 @@ function NodeOutcomeView({ serverData, fallback }) {
|
|
|
903
1294
|
function RunResultView({ serverData, fallback }) {
|
|
904
1295
|
const wrapper = readWrapperFrom(
|
|
905
1296
|
serverData,
|
|
906
|
-
|
|
1297
|
+
import_content_ir9.readRunResultValue
|
|
907
1298
|
);
|
|
908
1299
|
if (!wrapper) return null;
|
|
909
|
-
return /* @__PURE__ */ (0,
|
|
1300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "space-y-2", children: wrapper.outputs.length > 0 ? wrapper.outputs.map((outcome) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
910
1301
|
NodeOutcomeView,
|
|
911
1302
|
{
|
|
912
1303
|
serverData: { wrapper: outcome },
|
|
913
1304
|
...fallback === void 0 ? {} : { fallback }
|
|
914
1305
|
},
|
|
915
1306
|
`${outcome.node_id}:${outcome.attempt}`
|
|
916
|
-
)) : /* @__PURE__ */ (0,
|
|
1307
|
+
)) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
917
1308
|
DelegatedOutput,
|
|
918
1309
|
{
|
|
919
1310
|
output: wrapper.output,
|