@projectcor/maia-components 2.11.68-0 → 2.11.69-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/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +7 -3
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +4 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +26 -6
- package/lib/components/atoms/MAIAInput/MAIAInput.js +40 -202
- package/lib/components/atoms/MAIAInput/styles.js +24 -64
- package/lib/components/atoms/MAIAMessage/MAIAMessage.js +2 -4
- package/lib/components/atoms/icons/SkillIcon.js +30 -0
- package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
- package/lib/components/atoms/icons/index.js +3 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +14 -1
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +3 -32
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +2 -2
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +31 -12
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +38 -5
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +31 -4
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +26 -18
- package/lib/components/molecules/ChatAIModal/constants.js +6 -2
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +3 -11
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +2 -2
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
- package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/molecules/Sidebar/Sidebar.js +16 -4
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
- package/lib/components/organisms/AbmSkillModal/index.js +2 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
- package/lib/constants/config.js +4 -1
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +4 -1
- package/lib/context/global-context.js +1 -1
- package/lib/dev/DevContextMentionInput.js +1 -3
- package/lib/hooks/useChatManager/useChatManager.js +7 -20
- package/lib/hooks/useChatMessages/useChatMessages.js +4 -2
- package/lib/hooks/useContextMentions.js +60 -15
- package/lib/hooks/useEntitySearch.js +294 -108
- package/lib/hooks/useMentionAllowedTypes.js +45 -10
- package/lib/hooks/useMentionPopover.js +54 -48
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +7 -10
- package/lib/hooks/useProjectSummaryConfig.js +17 -32
- package/lib/lang/br/index.js +54 -11
- package/lib/lang/en/index.js +54 -11
- package/lib/lang/es/index.js +54 -11
- package/lib/lang/fr/index.js +55 -11
- package/lib/services/maia/Agents/getAgents.js +10 -8
- package/lib/services/maia/Chats/getChatMessages.js +4 -22
- package/lib/services/maia/Orchestrator/orchestrator.js +7 -9
- package/lib/services/maia/Skills/createSkill.js +39 -0
- package/lib/services/maia/Skills/deleteSkill.js +38 -0
- package/lib/services/maia/Skills/generateSkill.js +41 -0
- package/lib/services/maia/Skills/getSkills.js +90 -0
- package/lib/services/maia/Skills/updateSkill.js +39 -0
- package/lib/types/Chat.js +1 -1
- package/lib/types/contextMention.js +1 -1
- package/lib/types/skill.js +2 -0
- package/lib/utils/contextMentionIcons.js +29 -1
- package/lib/utils/contextMentionTriggers.js +53 -0
- package/lib/utils/corConnectorMentionTypes.js +37 -0
- package/lib/utils/normalizeAgentConnectors.js +32 -0
- package/lib/utils/renderContextMentions.js +9 -4
- package/package.json +1 -1
- package/lib/components/atoms/MAIAViz/MAIAViz.js +0 -97
- package/lib/components/atoms/MAIAViz/MAIAViz.parse.js +0 -131
- package/lib/components/atoms/MAIAViz/MAIAViz.skeleton.js +0 -40
- package/lib/components/atoms/MAIAViz/MAIAViz.styles.js +0 -8
- package/lib/components/atoms/MAIAViz/MAIAViz.types.js +0 -49
- package/lib/components/atoms/MAIAViz/MAIAVizBar.js +0 -123
- package/lib/components/atoms/MAIAViz/MAIAVizDonut.js +0 -111
- package/lib/components/atoms/MAIAViz/MAIAVizKpis.js +0 -34
- package/lib/components/atoms/MAIAViz/README.md +0 -85
- package/lib/components/atoms/MAIAViz/index.js +0 -2
- package/lib/types/Hitl.js +0 -2
- package/lib/utils/maiaStreamdownRenderers.js +0 -16
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
-
import { COR_COLORS, COR_CHART_COLORS } from './MAIAViz.types';
|
|
6
|
-
import { normalizeSeries } from './MAIAViz.parse';
|
|
7
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
-
var SIZE = 200;
|
|
9
|
-
var STROKE = 34;
|
|
10
|
-
var R = (SIZE - STROKE) / 2;
|
|
11
|
-
var CENTER = SIZE / 2;
|
|
12
|
-
var polar = function polar(angleDeg) {
|
|
13
|
-
var rad = (angleDeg - 90) * Math.PI / 180;
|
|
14
|
-
return [CENTER + R * Math.cos(rad), CENTER + R * Math.sin(rad)];
|
|
15
|
-
};
|
|
16
|
-
var arcPath = function arcPath(startAngle, endAngle) {
|
|
17
|
-
var _polar = polar(startAngle),
|
|
18
|
-
_polar2 = _slicedToArray(_polar, 2),
|
|
19
|
-
x1 = _polar2[0],
|
|
20
|
-
y1 = _polar2[1];
|
|
21
|
-
var _polar3 = polar(endAngle),
|
|
22
|
-
_polar4 = _slicedToArray(_polar3, 2),
|
|
23
|
-
x2 = _polar4[0],
|
|
24
|
-
y2 = _polar4[1];
|
|
25
|
-
var largeArc = endAngle - startAngle > 180 ? 1 : 0;
|
|
26
|
-
return "M ".concat(x1, " ").concat(y1, " A ").concat(R, " ").concat(R, " 0 ").concat(largeArc, " 1 ").concat(x2, " ").concat(y2);
|
|
27
|
-
};
|
|
28
|
-
export var MAIAVizDonut = function MAIAVizDonut(_ref) {
|
|
29
|
-
var _spec$title;
|
|
30
|
-
var spec = _ref.spec;
|
|
31
|
-
var data = normalizeSeries(spec.data);
|
|
32
|
-
var total = data.reduce(function (sum, d) {
|
|
33
|
-
return sum + d.value;
|
|
34
|
-
}, 0);
|
|
35
|
-
if (!data.length || total <= 0) return null;
|
|
36
|
-
var cursor = 0;
|
|
37
|
-
var segments = data.map(function (d, i) {
|
|
38
|
-
var _d$color;
|
|
39
|
-
var start = cursor / total * 360;
|
|
40
|
-
cursor += d.value;
|
|
41
|
-
var end = cursor / total * 360;
|
|
42
|
-
return _objectSpread(_objectSpread({}, d), {}, {
|
|
43
|
-
color: (_d$color = d.color) !== null && _d$color !== void 0 ? _d$color : COR_CHART_COLORS[i % COR_CHART_COLORS.length],
|
|
44
|
-
pct: Math.round(d.value / total * 100),
|
|
45
|
-
// Evita el arco completo de 360° (no se dibuja); lo recortamos apenas.
|
|
46
|
-
path: arcPath(start, end >= 360 ? 359.99 : end)
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
return /*#__PURE__*/_jsxs("figure", {
|
|
50
|
-
className: "MAIAViz-figure",
|
|
51
|
-
children: [spec.title && /*#__PURE__*/_jsx("figcaption", {
|
|
52
|
-
className: "MAIAViz-caption",
|
|
53
|
-
children: spec.title
|
|
54
|
-
}), /*#__PURE__*/_jsxs("div", {
|
|
55
|
-
className: "MAIAViz-donut",
|
|
56
|
-
children: [/*#__PURE__*/_jsxs("svg", {
|
|
57
|
-
viewBox: "0 0 ".concat(SIZE, " ").concat(SIZE),
|
|
58
|
-
width: SIZE,
|
|
59
|
-
height: SIZE,
|
|
60
|
-
role: "img",
|
|
61
|
-
"aria-label": (_spec$title = spec.title) !== null && _spec$title !== void 0 ? _spec$title : 'Gráfico de dona',
|
|
62
|
-
children: [segments.map(function (s) {
|
|
63
|
-
return /*#__PURE__*/_jsx("path", {
|
|
64
|
-
d: s.path,
|
|
65
|
-
fill: "none",
|
|
66
|
-
stroke: s.color,
|
|
67
|
-
strokeWidth: STROKE,
|
|
68
|
-
strokeLinecap: "butt",
|
|
69
|
-
children: /*#__PURE__*/_jsx("title", {
|
|
70
|
-
children: "".concat(s.label, ": ").concat(s.pct, "%")
|
|
71
|
-
})
|
|
72
|
-
}, s.label);
|
|
73
|
-
}), /*#__PURE__*/_jsx("text", {
|
|
74
|
-
x: CENTER,
|
|
75
|
-
y: CENTER - 4,
|
|
76
|
-
textAnchor: "middle",
|
|
77
|
-
fontSize: 22,
|
|
78
|
-
fontWeight: 600,
|
|
79
|
-
fill: COR_COLORS.text,
|
|
80
|
-
children: total
|
|
81
|
-
}), /*#__PURE__*/_jsx("text", {
|
|
82
|
-
x: CENTER,
|
|
83
|
-
y: CENTER + 16,
|
|
84
|
-
textAnchor: "middle",
|
|
85
|
-
fontSize: 11,
|
|
86
|
-
fill: COR_COLORS.textMuted,
|
|
87
|
-
children: "Total"
|
|
88
|
-
})]
|
|
89
|
-
}), /*#__PURE__*/_jsx("ul", {
|
|
90
|
-
className: "MAIAViz-legend",
|
|
91
|
-
children: segments.map(function (s) {
|
|
92
|
-
return /*#__PURE__*/_jsxs("li", {
|
|
93
|
-
children: [/*#__PURE__*/_jsx("span", {
|
|
94
|
-
className: "MAIAViz-legend-dot",
|
|
95
|
-
style: {
|
|
96
|
-
backgroundColor: s.color
|
|
97
|
-
}
|
|
98
|
-
}), /*#__PURE__*/_jsx("span", {
|
|
99
|
-
className: "MAIAViz-legend-label",
|
|
100
|
-
children: s.label
|
|
101
|
-
}), /*#__PURE__*/_jsxs("span", {
|
|
102
|
-
className: "MAIAViz-legend-value",
|
|
103
|
-
children: [s.pct, "%"]
|
|
104
|
-
})]
|
|
105
|
-
}, s.label);
|
|
106
|
-
})
|
|
107
|
-
})]
|
|
108
|
-
})]
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT1JfQ09MT1JTIiwiQ09SX0NIQVJUX0NPTE9SUyIsIm5vcm1hbGl6ZVNlcmllcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJTSVpFIiwiU1RST0tFIiwiUiIsIkNFTlRFUiIsInBvbGFyIiwiYW5nbGVEZWciLCJyYWQiLCJNYXRoIiwiUEkiLCJjb3MiLCJzaW4iLCJhcmNQYXRoIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwiX3BvbGFyIiwiX3BvbGFyMiIsIl9zbGljZWRUb0FycmF5IiwieDEiLCJ5MSIsIl9wb2xhcjMiLCJfcG9sYXI0IiwieDIiLCJ5MiIsImxhcmdlQXJjIiwiY29uY2F0IiwiTUFJQVZpekRvbnV0IiwiX3JlZiIsIl9zcGVjJHRpdGxlIiwic3BlYyIsImRhdGEiLCJ0b3RhbCIsInJlZHVjZSIsInN1bSIsImQiLCJ2YWx1ZSIsImxlbmd0aCIsImN1cnNvciIsInNlZ21lbnRzIiwibWFwIiwiaSIsIl9kJGNvbG9yIiwic3RhcnQiLCJlbmQiLCJfb2JqZWN0U3ByZWFkIiwiY29sb3IiLCJwY3QiLCJyb3VuZCIsInBhdGgiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInRpdGxlIiwidmlld0JveCIsIndpZHRoIiwiaGVpZ2h0Iiwicm9sZSIsInMiLCJmaWxsIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwibGFiZWwiLCJ4IiwieSIsInRleHRBbmNob3IiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJ0ZXh0IiwidGV4dE11dGVkIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBVml6L01BSUFWaXpEb251dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9udXRTcGVjLCBDT1JfQ09MT1JTLCBDT1JfQ0hBUlRfQ09MT1JTIH0gZnJvbSAnLi9NQUlBVml6LnR5cGVzJ1xuaW1wb3J0IHsgbm9ybWFsaXplU2VyaWVzIH0gZnJvbSAnLi9NQUlBVml6LnBhcnNlJ1xuXG50eXBlIE1BSUFWaXpEb251dFByb3BzID0ge1xuICBzcGVjOiBEb251dFNwZWNcbn1cblxuY29uc3QgU0laRSA9IDIwMFxuY29uc3QgU1RST0tFID0gMzRcbmNvbnN0IFIgPSAoU0laRSAtIFNUUk9LRSkgLyAyXG5jb25zdCBDRU5URVIgPSBTSVpFIC8gMlxuXG5jb25zdCBwb2xhciA9IChhbmdsZURlZzogbnVtYmVyKTogW251bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IHJhZCA9ICgoYW5nbGVEZWcgLSA5MCkgKiBNYXRoLlBJKSAvIDE4MFxuICByZXR1cm4gW0NFTlRFUiArIFIgKiBNYXRoLmNvcyhyYWQpLCBDRU5URVIgKyBSICogTWF0aC5zaW4ocmFkKV1cbn1cblxuY29uc3QgYXJjUGF0aCA9IChzdGFydEFuZ2xlOiBudW1iZXIsIGVuZEFuZ2xlOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBbeDEsIHkxXSA9IHBvbGFyKHN0YXJ0QW5nbGUpXG4gIGNvbnN0IFt4MiwgeTJdID0gcG9sYXIoZW5kQW5nbGUpXG4gIGNvbnN0IGxhcmdlQXJjID0gZW5kQW5nbGUgLSBzdGFydEFuZ2xlID4gMTgwID8gMSA6IDBcbiAgcmV0dXJuIGBNICR7eDF9ICR7eTF9IEEgJHtSfSAke1J9IDAgJHtsYXJnZUFyY30gMSAke3gyfSAke3kyfWBcbn1cblxuZXhwb3J0IGNvbnN0IE1BSUFWaXpEb251dCA9ICh7IHNwZWMgfTogTUFJQVZpekRvbnV0UHJvcHMpID0+IHtcbiAgY29uc3QgZGF0YSA9IG5vcm1hbGl6ZVNlcmllcyhzcGVjLmRhdGEpXG4gIGNvbnN0IHRvdGFsID0gZGF0YS5yZWR1Y2UoKHN1bSwgZCkgPT4gc3VtICsgZC52YWx1ZSwgMClcbiAgaWYgKCFkYXRhLmxlbmd0aCB8fCB0b3RhbCA8PSAwKSByZXR1cm4gbnVsbFxuXG4gIGxldCBjdXJzb3IgPSAwXG4gIGNvbnN0IHNlZ21lbnRzID0gZGF0YS5tYXAoKGQsIGkpID0+IHtcbiAgICBjb25zdCBzdGFydCA9IChjdXJzb3IgLyB0b3RhbCkgKiAzNjBcbiAgICBjdXJzb3IgKz0gZC52YWx1ZVxuICAgIGNvbnN0IGVuZCA9IChjdXJzb3IgLyB0b3RhbCkgKiAzNjBcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZCxcbiAgICAgIGNvbG9yOiBkLmNvbG9yID8/IENPUl9DSEFSVF9DT0xPUlNbaSAlIENPUl9DSEFSVF9DT0xPUlMubGVuZ3RoXSxcbiAgICAgIHBjdDogTWF0aC5yb3VuZCgoZC52YWx1ZSAvIHRvdGFsKSAqIDEwMCksXG4gICAgICAvLyBFdml0YSBlbCBhcmNvIGNvbXBsZXRvIGRlIDM2MMKwIChubyBzZSBkaWJ1amEpOyBsbyByZWNvcnRhbW9zIGFwZW5hcy5cbiAgICAgIHBhdGg6IGFyY1BhdGgoc3RhcnQsIGVuZCA+PSAzNjAgPyAzNTkuOTkgOiBlbmQpLFxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxmaWd1cmUgY2xhc3NOYW1lPVwiTUFJQVZpei1maWd1cmVcIj5cbiAgICAgIHtzcGVjLnRpdGxlICYmIDxmaWdjYXB0aW9uIGNsYXNzTmFtZT1cIk1BSUFWaXotY2FwdGlvblwiPntzcGVjLnRpdGxlfTwvZmlnY2FwdGlvbj59XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIk1BSUFWaXotZG9udXRcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIHZpZXdCb3g9e2AwIDAgJHtTSVpFfSAke1NJWkV9YH1cbiAgICAgICAgICB3aWR0aD17U0laRX1cbiAgICAgICAgICBoZWlnaHQ9e1NJWkV9XG4gICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgYXJpYS1sYWJlbD17c3BlYy50aXRsZSA/PyAnR3LDoWZpY28gZGUgZG9uYSd9XG4gICAgICAgID5cbiAgICAgICAgICB7c2VnbWVudHMubWFwKHMgPT4gKFxuICAgICAgICAgICAgPHBhdGgga2V5PXtzLmxhYmVsfSBkPXtzLnBhdGh9IGZpbGw9XCJub25lXCIgc3Ryb2tlPXtzLmNvbG9yfSBzdHJva2VXaWR0aD17U1RST0tFfSBzdHJva2VMaW5lY2FwPVwiYnV0dFwiPlxuICAgICAgICAgICAgICA8dGl0bGU+e2Ake3MubGFiZWx9OiAke3MucGN0fSVgfTwvdGl0bGU+XG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAgPHRleHQgeD17Q0VOVEVSfSB5PXtDRU5URVIgLSA0fSB0ZXh0QW5jaG9yPVwibWlkZGxlXCIgZm9udFNpemU9ezIyfSBmb250V2VpZ2h0PXs2MDB9IGZpbGw9e0NPUl9DT0xPUlMudGV4dH0+XG4gICAgICAgICAgICB7dG90YWx9XG4gICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgIDx0ZXh0IHg9e0NFTlRFUn0geT17Q0VOVEVSICsgMTZ9IHRleHRBbmNob3I9XCJtaWRkbGVcIiBmb250U2l6ZT17MTF9IGZpbGw9e0NPUl9DT0xPUlMudGV4dE11dGVkfT5cbiAgICAgICAgICAgIFRvdGFsXG4gICAgICAgICAgPC90ZXh0PlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHVsIGNsYXNzTmFtZT1cIk1BSUFWaXotbGVnZW5kXCI+XG4gICAgICAgICAge3NlZ21lbnRzLm1hcChzID0+IChcbiAgICAgICAgICAgIDxsaSBrZXk9e3MubGFiZWx9PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJNQUlBVml6LWxlZ2VuZC1kb3RcIiBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IHMuY29sb3IgfX0gLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiTUFJQVZpei1sZWdlbmQtbGFiZWxcIj57cy5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIk1BSUFWaXotbGVnZW5kLXZhbHVlXCI+e3MucGN0fSU8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9maWd1cmU+XG4gIClcbn1cbiJdLCJtYXBw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QUFBLGVBQ25HcEQsSUFBQTtjQUFBb0QsUUFBQSxLQUFBekIsTUFBQSxDQUFXK0IsQ0FBQyxDQUFDSyxLQUFLLFFBQUFwQyxNQUFBLENBQUsrQixDQUFDLENBQUNWLEdBQUc7WUFBQSxDQUFXO1VBQUMsR0FEL0JVLENBQUMsQ0FBQ0ssS0FFUCxDQUFDO1FBQUEsQ0FDUixDQUFDLGVBQ0YvRCxJQUFBO1VBQU1nRSxDQUFDLEVBQUUxRCxNQUFPO1VBQUMyRCxDQUFDLEVBQUUzRCxNQUFNLEdBQUcsQ0FBRTtVQUFDNEQsVUFBVSxFQUFDLFFBQVE7VUFBQ0MsUUFBUSxFQUFFLEVBQUc7VUFBQ0MsVUFBVSxFQUFFLEdBQUk7VUFBQ1QsSUFBSSxFQUFFL0QsVUFBVSxDQUFDeUUsSUFBSztVQUFBakIsUUFBQSxFQUN0R25CO1FBQUssQ0FDRixDQUFDLGVBQ1BqQyxJQUFBO1VBQU1nRSxDQUFDLEVBQUUxRCxNQUFPO1VBQUMyRCxDQUFDLEVBQUUzRCxNQUFNLEdBQUcsRUFBRztVQUFDNEQsVUFBVSxFQUFDLFFBQVE7VUFBQ0MsUUFBUSxFQUFFLEVBQUc7VUFBQ1IsSUFBSSxFQUFFL0QsVUFBVSxDQUFDMEUsU0FBVTtVQUFBbEIsUUFBQSxFQUFDO1FBRS9GLENBQU0sQ0FBQztNQUFBLENBQ0osQ0FBQyxlQUNOcEQsSUFBQTtRQUFJbUQsU0FBUyxFQUFDLGdCQUFnQjtRQUFBQyxRQUFBLEVBQzNCWixRQUFRLENBQUNDLEdBQUcsQ0FBQyxVQUFBaUIsQ0FBQztVQUFBLG9CQUNieEQsS0FBQTtZQUFBa0QsUUFBQSxnQkFDRXBELElBQUE7Y0FBTW1ELFNBQVMsRUFBQyxvQkFBb0I7Y0FBQ29CLEtBQUssRUFBRTtnQkFBRUMsZUFBZSxFQUFFZCxDQUFDLENBQUNYO2NBQU07WUFBRSxDQUFFLENBQUMsZUFDNUUvQyxJQUFBO2NBQU1tRCxTQUFTLEVBQUMsc0JBQXNCO2NBQUFDLFFBQUEsRUFBRU0sQ0FBQyxDQUFDSztZQUFLLENBQU8sQ0FBQyxlQUN2RDdELEtBQUE7Y0FBTWlELFNBQVMsRUFBQyxzQkFBc0I7Y0FBQUMsUUFBQSxHQUFFTSxDQUFDLENBQUNWLEdBQUcsRUFBQyxHQUFDO1lBQUEsQ0FBTSxDQUFDO1VBQUEsR0FIL0NVLENBQUMsQ0FBQ0ssS0FJUCxDQUFDO1FBQUEsQ0FDTjtNQUFDLENBQ0EsQ0FBQztJQUFBLENBQ0YsQ0FBQztFQUFBLENBQ0EsQ0FBQztBQUViLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { COR_COLORS } from './MAIAViz.types';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
var deltaColor = function deltaColor(trend) {
|
|
4
|
-
if (trend === 'up') return COR_COLORS.positive;
|
|
5
|
-
if (trend === 'down') return COR_COLORS.negative;
|
|
6
|
-
return COR_COLORS.neutral;
|
|
7
|
-
};
|
|
8
|
-
export var MAIAVizKpis = function MAIAVizKpis(_ref) {
|
|
9
|
-
var spec = _ref.spec;
|
|
10
|
-
var items = Array.isArray(spec.items) ? spec.items : [];
|
|
11
|
-
if (!items.length) return null;
|
|
12
|
-
return /*#__PURE__*/_jsx("div", {
|
|
13
|
-
className: "MAIAViz-kpis",
|
|
14
|
-
children: items.map(function (item) {
|
|
15
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
16
|
-
className: "MAIAViz-kpi-card",
|
|
17
|
-
children: [/*#__PURE__*/_jsx("span", {
|
|
18
|
-
className: "MAIAViz-kpi-label",
|
|
19
|
-
children: item.label
|
|
20
|
-
}), /*#__PURE__*/_jsx("span", {
|
|
21
|
-
className: "MAIAViz-kpi-value",
|
|
22
|
-
children: item.value
|
|
23
|
-
}), item.delta && /*#__PURE__*/_jsx("span", {
|
|
24
|
-
className: "MAIAViz-kpi-delta",
|
|
25
|
-
style: {
|
|
26
|
-
color: deltaColor(item.trend)
|
|
27
|
-
},
|
|
28
|
-
children: item.delta
|
|
29
|
-
})]
|
|
30
|
-
}, item.label);
|
|
31
|
-
})
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT1JfQ09MT1JTIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsImRlbHRhQ29sb3IiLCJ0cmVuZCIsInBvc2l0aXZlIiwibmVnYXRpdmUiLCJuZXV0cmFsIiwiTUFJQVZpektwaXMiLCJfcmVmIiwic3BlYyIsIml0ZW1zIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwibGFiZWwiLCJ2YWx1ZSIsImRlbHRhIiwic3R5bGUiLCJjb2xvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL01BSUFWaXovTUFJQVZpektwaXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtwaXNTcGVjLCBDT1JfQ09MT1JTLCBUcmVuZCB9IGZyb20gJy4vTUFJQVZpei50eXBlcydcblxudHlwZSBNQUlBVml6S3Bpc1Byb3BzID0ge1xuICBzcGVjOiBLcGlzU3BlY1xufVxuXG5jb25zdCBkZWx0YUNvbG9yID0gKHRyZW5kPzogVHJlbmQpOiBzdHJpbmcgPT4ge1xuICBpZiAodHJlbmQgPT09ICd1cCcpIHJldHVybiBDT1JfQ09MT1JTLnBvc2l0aXZlXG4gIGlmICh0cmVuZCA9PT0gJ2Rvd24nKSByZXR1cm4gQ09SX0NPTE9SUy5uZWdhdGl2ZVxuICByZXR1cm4gQ09SX0NPTE9SUy5uZXV0cmFsXG59XG5cbmV4cG9ydCBjb25zdCBNQUlBVml6S3BpcyA9ICh7IHNwZWMgfTogTUFJQVZpektwaXNQcm9wcykgPT4ge1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkoc3BlYy5pdGVtcykgPyBzcGVjLml0ZW1zIDogW11cbiAgaWYgKCFpdGVtcy5sZW5ndGgpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIk1BSUFWaXota3Bpc1wiPlxuICAgICAge2l0ZW1zLm1hcChpdGVtID0+IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJNQUlBVml6LWtwaS1jYXJkXCIga2V5PXtpdGVtLmxhYmVsfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJNQUlBVml6LWtwaS1sYWJlbFwiPntpdGVtLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJNQUlBVml6LWtwaS12YWx1ZVwiPntpdGVtLnZhbHVlfTwvc3Bhbj5cbiAgICAgICAgICB7aXRlbS5kZWx0YSAmJiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJNQUlBVml6LWtwaS1kZWx0YVwiIHN0eWxlPXt7IGNvbG9yOiBkZWx0YUNvbG9yKGl0ZW0udHJlbmQpIH19PlxuICAgICAgICAgICAgICB7aXRlbS5kZWx0YX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQW1CQSxVQUFVLFFBQWUsaUJBQWlCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQTtBQU03RCxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBSUMsS0FBYSxFQUFhO0VBQzVDLElBQUlBLEtBQUssS0FBSyxJQUFJLEVBQUUsT0FBT04sVUFBVSxDQUFDTyxRQUFRO0VBQzlDLElBQUlELEtBQUssS0FBSyxNQUFNLEVBQUUsT0FBT04sVUFBVSxDQUFDUSxRQUFRO0VBQ2hELE9BQU9SLFVBQVUsQ0FBQ1MsT0FBTztBQUMzQixDQUFDO0FBRUQsT0FBTyxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQUMsSUFBQSxFQUFtQztFQUFBLElBQTdCQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtFQUNoQyxJQUFNQyxLQUFLLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxJQUFJLENBQUNDLEtBQUssQ0FBQyxHQUFHRCxJQUFJLENBQUNDLEtBQUssR0FBRyxFQUFFO0VBQ3pELElBQUksQ0FBQ0EsS0FBSyxDQUFDRyxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBRTlCLG9CQUNFZCxJQUFBO0lBQUtlLFNBQVMsRUFBQyxjQUFjO0lBQUFDLFFBQUEsRUFDMUJMLEtBQUssQ0FBQ00sR0FBRyxDQUFDLFVBQUFDLElBQUk7TUFBQSxvQkFDYmhCLEtBQUE7UUFBS2EsU0FBUyxFQUFDLGtCQUFrQjtRQUFBQyxRQUFBLGdCQUMvQmhCLElBQUE7VUFBTWUsU0FBUyxFQUFDLG1CQUFtQjtVQUFBQyxRQUFBLEVBQUVFLElBQUksQ0FBQ0M7UUFBSyxDQUFPLENBQUMsZUFDdkRuQixJQUFBO1VBQU1lLFNBQVMsRUFBQyxtQkFBbUI7VUFBQUMsUUFBQSxFQUFFRSxJQUFJLENBQUNFO1FBQUssQ0FBTyxDQUFDLEVBQ3RERixJQUFJLENBQUNHLEtBQUssaUJBQ1RyQixJQUFBO1VBQU1lLFNBQVMsRUFBQyxtQkFBbUI7VUFBQ08sS0FBSyxFQUFFO1lBQUVDLEtBQUssRUFBRXBCLFVBQVUsQ0FBQ2UsSUFBSSxDQUFDZCxLQUFLO1VBQUUsQ0FBRTtVQUFBWSxRQUFBLEVBQzFFRSxJQUFJLENBQUNHO1FBQUssQ0FDUCxDQUNQO01BQUEsR0FQb0NILElBQUksQ0FBQ0MsS0FRdkMsQ0FBQztJQUFBLENBQ1A7RUFBQyxDQUNDLENBQUM7QUFFVixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# MAIAViz — PoC de visualizaciones inline en el chat
|
|
2
|
-
|
|
3
|
-
Renderiza KPIs, gráficos de barras y donas dentro de los mensajes de MAIA, igual
|
|
4
|
-
que Claude renderiza cuadros y gráficos. **El modelo no genera HTML ni SVG**: solo
|
|
5
|
-
emite datos en JSON dentro de un bloque de código ` ```maia-viz `. El render lo hace
|
|
6
|
-
el cliente (estos componentes), por lo que es seguro y no pasa por la sanitización
|
|
7
|
-
de HTML de Streamdown.
|
|
8
|
-
|
|
9
|
-
## Cómo funciona
|
|
10
|
-
|
|
11
|
-
Streamdown expone `plugins.renderers` (el mismo mecanismo con el que integra Mermaid).
|
|
12
|
-
Registramos un `CustomRenderer` para el lenguaje `maia-viz`:
|
|
13
|
-
|
|
14
|
-
```tsx
|
|
15
|
-
// maiaStreamdownRenderers.tsx
|
|
16
|
-
export const MAIA_STREAMDOWN_RENDERERS = [{ language: 'maia-viz', component: MAIAViz }]
|
|
17
|
-
|
|
18
|
-
// MAIAMessage.tsx
|
|
19
|
-
<Streamdown plugins={{ code, renderers: MAIA_STREAMDOWN_RENDERERS }}>{message}</Streamdown>
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Cuando el stream contiene un fence ` ```maia-viz `, Streamdown llama a `MAIAViz`
|
|
23
|
-
con `{ code, isIncomplete, language, meta }`. Mientras `isIncomplete` es `true`
|
|
24
|
-
(JSON parcial durante el streaming) mostramos un skeleton; al cerrarse el fence,
|
|
25
|
-
parseamos el JSON y dibujamos la visualización.
|
|
26
|
-
|
|
27
|
-
## Contrato de datos
|
|
28
|
-
|
|
29
|
-
Un bloque `maia-viz` contiene **un** objeto JSON. Tipos soportados:
|
|
30
|
-
|
|
31
|
-
### `kpis` — tarjetas de indicadores
|
|
32
|
-
```maia-viz
|
|
33
|
-
{ "type": "kpis", "items": [
|
|
34
|
-
{ "label": "Ingresos", "value": "$184.6M", "delta": "+18.3% vs 2024", "trend": "up" },
|
|
35
|
-
{ "label": "Margen EBITDA", "value": "21.4%", "delta": "+2.1 pts", "trend": "up" }
|
|
36
|
-
] }
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### `bar` — gráfico de barras
|
|
40
|
-
```maia-viz
|
|
41
|
-
{ "type": "bar", "title": "Ingresos por trimestre", "unit": "M USD", "data": [
|
|
42
|
-
{ "label": "Q1", "value": 40 }, { "label": "Q2", "value": 44 },
|
|
43
|
-
{ "label": "Q3", "value": 47 }, { "label": "Q4", "value": 52 }
|
|
44
|
-
] }
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### `donut` — distribución porcentual
|
|
48
|
-
```maia-viz
|
|
49
|
-
{ "type": "donut", "title": "Mix de ingresos", "data": [
|
|
50
|
-
{ "label": "Last-mile", "value": 52 }, { "label": "Freight", "value": 28 },
|
|
51
|
-
{ "label": "Warehousing", "value": 13 }, { "label": "Otros", "value": 7 }
|
|
52
|
-
] }
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### `report` — reporte compuesto (varios bloques)
|
|
56
|
-
```maia-viz
|
|
57
|
-
{ "type": "report", "title": "Nordvik Logistics — KPIs anuales",
|
|
58
|
-
"subtitle": "Año fiscal 2025 · Logística",
|
|
59
|
-
"blocks": [
|
|
60
|
-
{ "type": "kpis", "items": [ ... ] },
|
|
61
|
-
{ "type": "bar", "title": "Ingresos por trimestre", "unit": "M USD", "data": [ ... ] },
|
|
62
|
-
{ "type": "donut", "title": "Mix de ingresos", "data": [ ... ] }
|
|
63
|
-
] }
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Campos: `delta` y `trend` (`up`/`down`/`flat`) son opcionales; `trend` colorea el
|
|
67
|
-
delta (verde/rojo/gris). `color` (HEX) es opcional por punto; si no, se usa la
|
|
68
|
-
paleta de COR por índice (navy → blue → teal → green → purple → ...).
|
|
69
|
-
|
|
70
|
-
## Snippet para el system prompt del agente
|
|
71
|
-
|
|
72
|
-
> Cuando presentes métricas, KPIs, distribuciones o series numéricas, podés
|
|
73
|
-
> renderizar una visualización emitiendo un bloque de código con el lenguaje
|
|
74
|
-
> `maia-viz` que contenga **un único objeto JSON válido** con el contrato
|
|
75
|
-
> documentado (tipos: `kpis`, `bar`, `donut`, `report`). No incluyas texto
|
|
76
|
-
> dentro del bloque, solo JSON. Usá una visualización solo cuando aporte valor
|
|
77
|
-
> sobre el texto; el resto del mensaje sigue siendo Markdown normal. Si no estás
|
|
78
|
-
> seguro de los datos, no inventes un gráfico.
|
|
79
|
-
|
|
80
|
-
## Extensión
|
|
81
|
-
|
|
82
|
-
Agregar un tipo nuevo (p. ej. `line`): crear `MAIAVizLine.tsx`, sumarlo al
|
|
83
|
-
discriminador en `MAIAViz.tsx` (`renderBlock`) y al contrato en `MAIAViz.types.ts`.
|
|
84
|
-
Para charts más complejos/interactivos se puede reemplazar el SVG por Recharts sin
|
|
85
|
-
cambiar el contrato ni el cableado de Streamdown.
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { MAIAViz } from './MAIAViz';
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQUlBVml6Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQVZpei9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNQUlBVml6IH0gZnJvbSAnLi9NQUlBVml6J1xuZXhwb3J0IHR5cGUge1xuICBNYWlhVml6U3BlYyxcbiAgS3Bpc1NwZWMsXG4gIEJhclNwZWMsXG4gIERvbnV0U3BlYyxcbiAgUmVwb3J0U3BlYyxcbiAgUmVwb3J0QmxvY2ssXG4gIEtwaUl0ZW0sXG4gIFNlcmllc1BvaW50LFxufSBmcm9tICcuL01BSUFWaXoudHlwZXMnXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE9BQU8sUUFBUSxXQUFXIiwiaWdub3JlTGlzdCI6W119
|
package/lib/types/Hitl.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL0hpdGwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSGl0bEFwcHJvdmFsTW9kZSA9ICdhcHByb3ZlX2VhY2gnIHwgJ2Z1bGxfYWNjZXNzJ1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { MAIAViz } from '../components/atoms/MAIAViz/MAIAViz';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Renderers custom de Streamdown. Cada bloque de código cuyo lenguaje matchee
|
|
5
|
-
* con `language` se renderiza con `component` (recibe { code, isIncomplete, ... })
|
|
6
|
-
* en lugar del bloque de código por defecto. Es el mismo mecanismo que usa
|
|
7
|
-
* Streamdown para Mermaid.
|
|
8
|
-
*
|
|
9
|
-
* El modelo solo emite datos en JSON dentro de un fence ```maia-viz; el render
|
|
10
|
-
* (KPIs, barras, dona) lo hace el cliente, sin pasar por HTML ni sanitización.
|
|
11
|
-
*/
|
|
12
|
-
export var MAIA_STREAMDOWN_RENDERERS = [{
|
|
13
|
-
language: 'maia-viz',
|
|
14
|
-
component: MAIAViz
|
|
15
|
-
}];
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQUlBVml6IiwiTUFJQV9TVFJFQU1ET1dOX1JFTkRFUkVSUyIsImxhbmd1YWdlIiwiY29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21haWFTdHJlYW1kb3duUmVuZGVyZXJzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEN1c3RvbVJlbmRlcmVyIH0gZnJvbSAnc3RyZWFtZG93bidcblxuaW1wb3J0IHsgTUFJQVZpeiB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvTUFJQVZpei9NQUlBVml6J1xuXG4vKipcbiAqIFJlbmRlcmVycyBjdXN0b20gZGUgU3RyZWFtZG93bi4gQ2FkYSBibG9xdWUgZGUgY8OzZGlnbyBjdXlvIGxlbmd1YWplIG1hdGNoZWVcbiAqIGNvbiBgbGFuZ3VhZ2VgIHNlIHJlbmRlcml6YSBjb24gYGNvbXBvbmVudGAgKHJlY2liZSB7IGNvZGUsIGlzSW5jb21wbGV0ZSwgLi4uIH0pXG4gKiBlbiBsdWdhciBkZWwgYmxvcXVlIGRlIGPDs2RpZ28gcG9yIGRlZmVjdG8uIEVzIGVsIG1pc21vIG1lY2FuaXNtbyBxdWUgdXNhXG4gKiBTdHJlYW1kb3duIHBhcmEgTWVybWFpZC5cbiAqXG4gKiBFbCBtb2RlbG8gc29sbyBlbWl0ZSBkYXRvcyBlbiBKU09OIGRlbnRybyBkZSB1biBmZW5jZSBgYGBtYWlhLXZpejsgZWwgcmVuZGVyXG4gKiAoS1BJcywgYmFycmFzLCBkb25hKSBsbyBoYWNlIGVsIGNsaWVudGUsIHNpbiBwYXNhciBwb3IgSFRNTCBuaSBzYW5pdGl6YWNpw7NuLlxuICovXG5leHBvcnQgY29uc3QgTUFJQV9TVFJFQU1ET1dOX1JFTkRFUkVSUzogQ3VzdG9tUmVuZGVyZXJbXSA9IFtcbiAge1xuICAgIGxhbmd1YWdlOiAnbWFpYS12aXonLFxuICAgIGNvbXBvbmVudDogTUFJQVZpeixcbiAgfSxcbl1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsT0FBTyxRQUFRLHFDQUFxQzs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyx5QkFBMkMsR0FBRyxDQUN6RDtFQUNFQyxRQUFRLEVBQUUsVUFBVTtFQUNwQkMsU0FBUyxFQUFFSDtBQUNiLENBQUMsQ0FDRiIsImlnbm9yZUxpc3QiOltdfQ==
|