callman-mcp 0.2.0 → 0.4.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 +56 -0
- package/README.md +4 -4
- package/dist/client/api.d.ts +16 -1
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +22 -0
- package/dist/client/api.js.map +1 -1
- package/dist/client/types.d.ts +14 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/domain/diagram/build.d.ts +122 -73
- package/dist/domain/diagram/build.d.ts.map +1 -1
- package/dist/domain/diagram/build.js +51 -167
- package/dist/domain/diagram/build.js.map +1 -1
- package/dist/domain/diagram/layout.d.ts +5 -4
- package/dist/domain/diagram/layout.d.ts.map +1 -1
- package/dist/domain/diagram/layout.js +18 -45
- package/dist/domain/diagram/layout.js.map +1 -1
- package/dist/domain/diagram/patch.d.ts +1011 -92
- package/dist/domain/diagram/patch.d.ts.map +1 -1
- package/dist/domain/diagram/patch.js +113 -273
- package/dist/domain/diagram/patch.js.map +1 -1
- package/dist/domain/diagram/style.d.ts +4 -12
- package/dist/domain/diagram/style.d.ts.map +1 -1
- package/dist/domain/diagram/style.js +8 -84
- package/dist/domain/diagram/style.js.map +1 -1
- package/dist/domain/diagram/summarize.d.ts +26 -24
- package/dist/domain/diagram/summarize.d.ts.map +1 -1
- package/dist/domain/diagram/summarize.js +21 -35
- package/dist/domain/diagram/summarize.js.map +1 -1
- package/dist/domain/requestIntegrations.d.ts +20 -20
- package/dist/domain/requestShape.d.ts +32 -32
- package/dist/resources/docs/diagramSchema.d.ts +1 -1
- package/dist/resources/docs/diagramSchema.d.ts.map +1 -1
- package/dist/resources/docs/diagramSchema.js +87 -10
- package/dist/resources/docs/diagramSchema.js.map +1 -1
- package/dist/resources/docs/overview.d.ts +1 -1
- package/dist/resources/docs/overview.d.ts.map +1 -1
- package/dist/resources/docs/overview.js +4 -1
- package/dist/resources/docs/overview.js.map +1 -1
- package/dist/resources/generated/aiPacks.d.ts +1 -1
- package/dist/resources/generated/aiPacks.js +2 -2
- package/dist/tools/catalog.d.ts.map +1 -1
- package/dist/tools/catalog.js +5 -0
- package/dist/tools/catalog.js.map +1 -1
- package/dist/tools/diagrams.d.ts.map +1 -1
- package/dist/tools/diagrams.js +547 -59
- package/dist/tools/diagrams.js.map +1 -1
- package/dist/tools/lookups.d.ts +5 -1
- package/dist/tools/lookups.d.ts.map +1 -1
- package/dist/tools/lookups.js +41 -0
- package/dist/tools/lookups.js.map +1 -1
- package/dist-cjs/client/api.js +22 -0
- package/dist-cjs/domain/diagram/build.js +55 -171
- package/dist-cjs/domain/diagram/layout.js +19 -45
- package/dist-cjs/domain/diagram/patch.js +111 -271
- package/dist-cjs/domain/diagram/style.js +11 -88
- package/dist-cjs/domain/diagram/summarize.js +23 -35
- package/dist-cjs/resources/docs/diagramSchema.js +87 -10
- package/dist-cjs/resources/docs/overview.js +4 -1
- package/dist-cjs/resources/generated/aiPacks.js +2 -2
- package/dist-cjs/tools/catalog.js +5 -0
- package/dist-cjs/tools/diagrams.js +539 -51
- package/dist-cjs/tools/lookups.js +46 -1
- package/package.json +2 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { applyStyleInput as applyStyleInputCore, fromTokenRef, STYLE_INPUT_KEYS, styleView, toTokenRef } from "callman-core";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { strictObject } from "../../lib/strict.js";
|
|
3
4
|
// The visual style a model may set on a node — exactly the DiagramStyle
|
|
@@ -5,7 +6,9 @@ import { strictObject } from "../../lib/strict.js";
|
|
|
5
6
|
// ("strokeColor", "borderColor", "fontWeight") is REJECTED with the list of
|
|
6
7
|
// valid keys instead of being dropped by core's normalizer while the tool
|
|
7
8
|
// reports success. Colors are plain CSS strings on the way in and on the way
|
|
8
|
-
// out; the stored form is core's TokenRef (`{ raw: "#3B82F6" }`).
|
|
9
|
+
// out; the stored form is core's TokenRef (`{ raw: "#3B82F6" }`). The
|
|
10
|
+
// conversion itself lives in callman-core (styleInput.ts) — shared with the
|
|
11
|
+
// desktop's AI edits — so the two never disagree.
|
|
9
12
|
export const colorInputSchema = z
|
|
10
13
|
.union([
|
|
11
14
|
z.string().trim().min(1).max(64),
|
|
@@ -13,9 +16,6 @@ export const colorInputSchema = z
|
|
|
13
16
|
z.object({ token: z.string().trim().min(1).max(64) }).strict(),
|
|
14
17
|
])
|
|
15
18
|
.describe('CSS color: "#3B82F6", "rgb(59,130,246)", "rgba(59,130,246,0.08)" or a name like "tomato"');
|
|
16
|
-
const FONT_BOLD = 1;
|
|
17
|
-
const FONT_ITALIC = 2;
|
|
18
|
-
const FONT_UNDERLINE = 4;
|
|
19
19
|
const styleFields = {
|
|
20
20
|
fill: colorInputSchema.describe('Background CSS color, e.g. "#EFF6FF". A translucent "rgba(59,130,246,0.08)" tints a container without hiding its children'),
|
|
21
21
|
stroke: colorInputSchema.describe('Border CSS color, e.g. "#3B82F6"'),
|
|
@@ -36,89 +36,13 @@ const styleFields = {
|
|
|
36
36
|
opacity: z.number().min(0).max(100).describe("0 (invisible) – 100 (opaque)"),
|
|
37
37
|
};
|
|
38
38
|
export const STYLE_KEYS = Object.keys(styleFields);
|
|
39
|
+
// The schema and core must agree on the key list; a drift is a test failure.
|
|
40
|
+
export const CORE_STYLE_KEYS = STYLE_INPUT_KEYS;
|
|
39
41
|
export const nodeStyleInputSchema = strictObject(Object.fromEntries(Object.entries(styleFields).map(([key, schema]) => [key, schema.optional()])), "style key").describe(`Visual style. Keys: ${STYLE_KEYS.join(", ")}. Colors are CSS strings.`);
|
|
40
42
|
// On updateNode a key set to null removes it; `style: null` clears the style.
|
|
41
43
|
export const nodeStylePatchSchema = strictObject(Object.fromEntries(Object.entries(styleFields).map(([key, schema]) => [key, schema.nullable().optional()])), "style key")
|
|
42
44
|
.nullable()
|
|
43
45
|
.describe(`Style changes, MERGED into the node's current style: only the keys you pass change, a key set to null is removed, style: null clears it. Keys: ${STYLE_KEYS.join(", ")}.`);
|
|
44
|
-
export
|
|
45
|
-
export const
|
|
46
|
-
if (!ref)
|
|
47
|
-
return undefined;
|
|
48
|
-
return "raw" in ref ? ref.raw : { token: ref.token };
|
|
49
|
-
};
|
|
50
|
-
// Input (plain colors, bold/italic/underline flags) → stored DiagramStyle.
|
|
51
|
-
// `base` is the node's current style for a merge; null values delete.
|
|
52
|
-
export const applyStyleInput = (base, input) => {
|
|
53
|
-
const out = { ...(base ?? {}) };
|
|
54
|
-
const assign = (key, value) => {
|
|
55
|
-
if (value === undefined)
|
|
56
|
-
return;
|
|
57
|
-
if (value === null)
|
|
58
|
-
delete out[key];
|
|
59
|
-
else
|
|
60
|
-
out[key] = value;
|
|
61
|
-
};
|
|
62
|
-
for (const key of ["fill", "stroke", "textColor"]) {
|
|
63
|
-
const value = input[key];
|
|
64
|
-
assign(key, value === undefined || value === null ? value : toTokenRef(value));
|
|
65
|
-
}
|
|
66
|
-
assign("strokeWidth", input.strokeWidth);
|
|
67
|
-
assign("dashed", input.dashed);
|
|
68
|
-
assign("dashPattern", input.dashPattern);
|
|
69
|
-
assign("radius", input.radius);
|
|
70
|
-
assign("rounded", input.rounded);
|
|
71
|
-
assign("fontSize", input.fontSize);
|
|
72
|
-
assign("fontFamily", input.fontFamily);
|
|
73
|
-
assign("align", input.align);
|
|
74
|
-
assign("verticalAlign", input.verticalAlign);
|
|
75
|
-
assign("shadow", input.shadow);
|
|
76
|
-
assign("opacity", input.opacity);
|
|
77
|
-
// The studio stores bold/italic/underline as ONE maxGraph bitmask.
|
|
78
|
-
const flags = [
|
|
79
|
-
[input.bold, FONT_BOLD],
|
|
80
|
-
[input.italic, FONT_ITALIC],
|
|
81
|
-
[input.underline, FONT_UNDERLINE],
|
|
82
|
-
];
|
|
83
|
-
if (flags.some(([value]) => value !== undefined)) {
|
|
84
|
-
let mask = out.fontStyle ?? 0;
|
|
85
|
-
for (const [value, bit] of flags) {
|
|
86
|
-
if (value === true)
|
|
87
|
-
mask |= bit;
|
|
88
|
-
else if (value === false || value === null)
|
|
89
|
-
mask &= ~bit;
|
|
90
|
-
}
|
|
91
|
-
if (mask === 0)
|
|
92
|
-
delete out.fontStyle;
|
|
93
|
-
else
|
|
94
|
-
out.fontStyle = mask;
|
|
95
|
-
}
|
|
96
|
-
// fontWeight is not rendered by the studio (bold lives in fontStyle).
|
|
97
|
-
delete out.fontWeight;
|
|
98
|
-
return Object.keys(out).length > 0 ? out : undefined;
|
|
99
|
-
};
|
|
100
|
-
// Stored DiagramStyle → the same compact shape a model writes, so what
|
|
101
|
-
// get_diagram returns can be sent straight back in a patch.
|
|
102
|
-
export const styleView = (style) => {
|
|
103
|
-
if (!style)
|
|
104
|
-
return undefined;
|
|
105
|
-
const out = {};
|
|
106
|
-
for (const key of ["fill", "stroke", "textColor"]) {
|
|
107
|
-
const value = fromTokenRef(style[key]);
|
|
108
|
-
if (value !== undefined)
|
|
109
|
-
out[key] = value;
|
|
110
|
-
}
|
|
111
|
-
for (const key of ["strokeWidth", "dashed", "dashPattern", "radius", "rounded", "fontSize", "fontFamily", "align", "verticalAlign", "shadow", "opacity"]) {
|
|
112
|
-
if (style[key] !== undefined)
|
|
113
|
-
out[key] = style[key];
|
|
114
|
-
}
|
|
115
|
-
const mask = style.fontStyle ?? 0;
|
|
116
|
-
if (mask & FONT_BOLD)
|
|
117
|
-
out.bold = true;
|
|
118
|
-
if (mask & FONT_ITALIC)
|
|
119
|
-
out.italic = true;
|
|
120
|
-
if (mask & FONT_UNDERLINE)
|
|
121
|
-
out.underline = true;
|
|
122
|
-
return Object.keys(out).length > 0 ? out : undefined;
|
|
123
|
-
};
|
|
46
|
+
export { fromTokenRef, styleView, toTokenRef };
|
|
47
|
+
export const applyStyleInput = (base, input) => applyStyleInputCore(base, input);
|
|
124
48
|
//# sourceMappingURL=style.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/domain/diagram/style.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/domain/diagram/style.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
import { type DiagramDocument } from "callman-core";
|
|
2
2
|
import type { Diagram } from "../../client/types.js";
|
|
3
3
|
export declare const diagramListView: (diagram: Diagram) => {
|
|
4
|
+
updatedAt: string | null;
|
|
5
|
+
revision?: number | undefined;
|
|
6
|
+
source?: {
|
|
7
|
+
format: import("callman-core").DiagramSourceFormat;
|
|
8
|
+
diagramType: string;
|
|
9
|
+
valid: boolean;
|
|
10
|
+
} | undefined;
|
|
4
11
|
id: string;
|
|
5
12
|
name: string;
|
|
6
13
|
canEdit: boolean;
|
|
7
14
|
owner: string | null;
|
|
8
15
|
sharedWorkspaceIds: string[];
|
|
9
16
|
editorCount: number;
|
|
17
|
+
folderId: string | null;
|
|
10
18
|
nodeCount: number | null;
|
|
11
19
|
edgeCount: number | null;
|
|
12
|
-
updatedAt: string | null;
|
|
13
20
|
};
|
|
14
|
-
export declare const diagramGraphView: (doc: DiagramDocument) =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
source: string | null;
|
|
33
|
-
target: string | null;
|
|
34
|
-
label: string | null;
|
|
35
|
-
semantic: import("callman-core").EdgeSemantic;
|
|
36
|
-
}[];
|
|
21
|
+
export declare const diagramGraphView: (doc: DiagramDocument) => import("callman-core").DiagramGraphView;
|
|
22
|
+
export declare const diagramMermaidView: (doc: DiagramDocument) => {
|
|
23
|
+
format: "mermaid";
|
|
24
|
+
text: string;
|
|
25
|
+
};
|
|
26
|
+
export declare const diagramSourceView: (doc: DiagramDocument) => {
|
|
27
|
+
format: import("callman-core").DiagramSourceFormat;
|
|
28
|
+
diagramType: string;
|
|
29
|
+
valid: boolean;
|
|
30
|
+
text: string;
|
|
31
|
+
stored: true;
|
|
32
|
+
} | {
|
|
33
|
+
diagramType: string;
|
|
34
|
+
valid: boolean;
|
|
35
|
+
stored: false;
|
|
36
|
+
note: string;
|
|
37
|
+
format: "mermaid";
|
|
38
|
+
text: string;
|
|
37
39
|
};
|
|
38
40
|
export declare const diagramFullView: (doc: DiagramDocument) => {
|
|
39
41
|
document: DiagramDocument;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../src/domain/diagram/summarize.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../src/domain/diagram/summarize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqF,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEvI,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAQrD,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO;;;;;;;;;;;;;;;;;CAiB/C,CAAC;AAKF,eAAO,MAAM,gBAAgB,GAAI,KAAK,eAAe,4CAA8B,CAAC;AAIpF,eAAO,MAAM,kBAAkB,GAAI,KAAK,eAAe;;;CAA+D,CAAC;AAIvH,eAAO,MAAM,iBAAiB,GAAI,KAAK,eAAe;;;;;;;;;;;;;CAGiI,CAAC;AAExL,eAAO,MAAM,eAAe,GAAI,KAAK,eAAe;;;;;;;;;;CASnD,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { diagramGraphView as diagramGraphViewCore, exportMermaid, safeParseDiagramDocument } from "callman-core";
|
|
2
2
|
import { byteLength, LIMITS } from "../../lib/truncate.js";
|
|
3
|
-
import { fromTokenRef, styleView } from "./style.js";
|
|
4
3
|
// Compact views of a stored diagram: the list row, the graph (what is
|
|
5
|
-
// connected to what, with the edge meaning read back from its style)
|
|
4
|
+
// connected to what, with the edge meaning read back from its style), the
|
|
5
|
+
// Mermaid rendering, the Mermaid source a source-backed diagram keeps, and
|
|
6
6
|
// the full document behind a size gate.
|
|
7
7
|
export const diagramListView = (diagram) => {
|
|
8
8
|
const parsed = safeParseDiagramDocument(diagram.document);
|
|
9
|
+
const doc = parsed.ok ? parsed.document : null;
|
|
9
10
|
return {
|
|
10
11
|
id: diagram.id,
|
|
11
12
|
name: diagram.name,
|
|
@@ -13,41 +14,26 @@ export const diagramListView = (diagram) => {
|
|
|
13
14
|
owner: diagram.owner?.email ?? diagram.owner?.displayName ?? null,
|
|
14
15
|
sharedWorkspaceIds: diagram.sharedWorkspaceIds ?? [],
|
|
15
16
|
editorCount: (diagram.editorIds ?? []).length,
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
folderId: diagram.folderId ?? null,
|
|
18
|
+
nodeCount: doc ? doc.nodes.length : null,
|
|
19
|
+
edgeCount: doc ? doc.edges.length : null,
|
|
20
|
+
...(doc?.source ? { source: { format: doc.source.format, diagramType: doc.source.diagramType, valid: doc.source.valid !== false } } : {}),
|
|
21
|
+
...(typeof doc?.meta.revision === "number" ? { revision: doc.meta.revision } : {}),
|
|
18
22
|
updatedAt: diagram.updatedAt ?? null,
|
|
19
23
|
};
|
|
20
24
|
};
|
|
21
|
-
// Style and
|
|
22
|
-
// model can read a node's look and send a patch without
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
...(node.rotation ? { rotation: node.rotation } : {}),
|
|
34
|
-
...(node.locked ? { locked: true } : {}),
|
|
35
|
-
...(node.hidden ? { hidden: true } : {}),
|
|
36
|
-
};
|
|
37
|
-
}),
|
|
38
|
-
edges: doc.edges.map((edge) => {
|
|
39
|
-
const color = fromTokenRef(edge.style?.stroke);
|
|
40
|
-
return {
|
|
41
|
-
id: edge.id,
|
|
42
|
-
source: edge.source ?? null,
|
|
43
|
-
target: edge.target ?? null,
|
|
44
|
-
label: edge.label ?? null,
|
|
45
|
-
semantic: semanticFromStyle(edge.style),
|
|
46
|
-
...(color ? { color } : {}),
|
|
47
|
-
...(edge.markerStart ? { markerStart: edge.markerStart } : {}),
|
|
48
|
-
};
|
|
49
|
-
}),
|
|
50
|
-
});
|
|
25
|
+
// Style, flags, sides and routing come back in the same compact shape the
|
|
26
|
+
// tools accept, so a model can read a node's look and send a patch without
|
|
27
|
+
// the full document. The view itself is core's (shared with the AI prompt).
|
|
28
|
+
export const diagramGraphView = (doc) => diagramGraphViewCore(doc);
|
|
29
|
+
// Mermaid flowchart text rendered from the model (presentation is not part
|
|
30
|
+
// of it — Mermaid lays out by itself).
|
|
31
|
+
export const diagramMermaidView = (doc) => ({ format: "mermaid", text: exportMermaid(doc) });
|
|
32
|
+
// The Mermaid source a source-backed diagram keeps (structure truth), or the
|
|
33
|
+
// rendering when the diagram has none.
|
|
34
|
+
export const diagramSourceView = (doc) => doc.source
|
|
35
|
+
? { format: doc.source.format, diagramType: doc.source.diagramType, valid: doc.source.valid !== false, text: doc.source.text, stored: true }
|
|
36
|
+
: { ...diagramMermaidView(doc), diagramType: "flowchart", valid: true, stored: false, note: "This diagram keeps no Mermaid source; the text is rendered from its model." };
|
|
51
37
|
export const diagramFullView = (doc) => {
|
|
52
38
|
const size = byteLength(doc);
|
|
53
39
|
if (size <= LIMITS.DIAGRAM_FULL)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../src/domain/diagram/summarize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../src/domain/diagram/summarize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,aAAa,EAAE,wBAAwB,EAAwB,MAAM,cAAc,CAAC;AAGvI,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,sEAAsE;AACtE,0EAA0E;AAC1E,2EAA2E;AAC3E,wCAAwC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,WAAW,IAAI,IAAI;QACjE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,EAAE;QACpD,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM;QAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;QAClC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACxC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACxC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzI,GAAG,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;KACrC,CAAC;AACJ,CAAC,CAAC;AAEF,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAoB,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAEpF,2EAA2E;AAC3E,uCAAuC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAoB,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAEvH,6EAA6E;AAC7E,uCAAuC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAoB,EAAE,EAAE,CACxD,GAAG,CAAC,MAAM;IACR,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAa,EAAE;IACrJ,CAAC,CAAC,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAc,EAAE,IAAI,EAAE,4EAA4E,EAAE,CAAC;AAExL,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAoB,EAAE,EAAE;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClG,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAa;QACxB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,mBAAmB,IAAI,iBAAiB,MAAM,CAAC,YAAY,iDAAiD;KACnH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -115,7 +115,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
115
115
|
enabled?: boolean | undefined;
|
|
116
116
|
}[] | undefined;
|
|
117
117
|
enabled?: boolean | undefined;
|
|
118
|
-
valueFormat?: "
|
|
118
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
119
119
|
continueOnFailure?: boolean | undefined;
|
|
120
120
|
}, {
|
|
121
121
|
value: string;
|
|
@@ -129,7 +129,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
129
129
|
enabled?: boolean | undefined;
|
|
130
130
|
}[] | undefined;
|
|
131
131
|
enabled?: boolean | undefined;
|
|
132
|
-
valueFormat?: "
|
|
132
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
133
133
|
continueOnFailure?: boolean | undefined;
|
|
134
134
|
}>>>;
|
|
135
135
|
postPublish: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
@@ -168,7 +168,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
168
168
|
enabled?: boolean | undefined;
|
|
169
169
|
}[] | undefined;
|
|
170
170
|
enabled?: boolean | undefined;
|
|
171
|
-
valueFormat?: "
|
|
171
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
172
172
|
continueOnFailure?: boolean | undefined;
|
|
173
173
|
}, {
|
|
174
174
|
value: string;
|
|
@@ -182,7 +182,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
182
182
|
enabled?: boolean | undefined;
|
|
183
183
|
}[] | undefined;
|
|
184
184
|
enabled?: boolean | undefined;
|
|
185
|
-
valueFormat?: "
|
|
185
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
186
186
|
continueOnFailure?: boolean | undefined;
|
|
187
187
|
}>>>;
|
|
188
188
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -212,7 +212,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
212
212
|
enabled?: boolean | undefined;
|
|
213
213
|
}[] | undefined;
|
|
214
214
|
enabled?: boolean | undefined;
|
|
215
|
-
valueFormat?: "
|
|
215
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
216
216
|
continueOnFailure?: boolean | undefined;
|
|
217
217
|
} | null | undefined;
|
|
218
218
|
postPublish?: {
|
|
@@ -227,7 +227,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
227
227
|
enabled?: boolean | undefined;
|
|
228
228
|
}[] | undefined;
|
|
229
229
|
enabled?: boolean | undefined;
|
|
230
|
-
valueFormat?: "
|
|
230
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
231
231
|
continueOnFailure?: boolean | undefined;
|
|
232
232
|
} | null | undefined;
|
|
233
233
|
}, {
|
|
@@ -257,7 +257,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
257
257
|
enabled?: boolean | undefined;
|
|
258
258
|
}[] | undefined;
|
|
259
259
|
enabled?: boolean | undefined;
|
|
260
|
-
valueFormat?: "
|
|
260
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
261
261
|
continueOnFailure?: boolean | undefined;
|
|
262
262
|
} | null | undefined;
|
|
263
263
|
postPublish?: {
|
|
@@ -272,7 +272,7 @@ declare const kafkaSchema: z.ZodObject<{
|
|
|
272
272
|
enabled?: boolean | undefined;
|
|
273
273
|
}[] | undefined;
|
|
274
274
|
enabled?: boolean | undefined;
|
|
275
|
-
valueFormat?: "
|
|
275
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
276
276
|
continueOnFailure?: boolean | undefined;
|
|
277
277
|
} | null | undefined;
|
|
278
278
|
}>;
|
|
@@ -335,17 +335,17 @@ declare const dbAssertionSchema: z.ZodObject<{
|
|
|
335
335
|
value: z.ZodOptional<z.ZodString>;
|
|
336
336
|
}, "strict", z.ZodTypeAny, {
|
|
337
337
|
name: string;
|
|
338
|
+
source: "db_pre" | "db_post";
|
|
338
339
|
field: string;
|
|
339
340
|
operator: "equals" | "not_equals" | "exists" | "gt" | "lt";
|
|
340
|
-
source: "db_pre" | "db_post";
|
|
341
341
|
value?: string | undefined;
|
|
342
342
|
id?: string | undefined;
|
|
343
343
|
valueType?: "static" | "response" | undefined;
|
|
344
344
|
}, {
|
|
345
345
|
name: string;
|
|
346
|
+
source: "db_pre" | "db_post";
|
|
346
347
|
field: string;
|
|
347
348
|
operator: "equals" | "not_equals" | "exists" | "gt" | "lt";
|
|
348
|
-
source: "db_pre" | "db_post";
|
|
349
349
|
value?: string | undefined;
|
|
350
350
|
id?: string | undefined;
|
|
351
351
|
valueType?: "static" | "response" | undefined;
|
|
@@ -466,7 +466,7 @@ export declare const requestIntegrationFields: {
|
|
|
466
466
|
enabled?: boolean | undefined;
|
|
467
467
|
}[] | undefined;
|
|
468
468
|
enabled?: boolean | undefined;
|
|
469
|
-
valueFormat?: "
|
|
469
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
470
470
|
continueOnFailure?: boolean | undefined;
|
|
471
471
|
}, {
|
|
472
472
|
value: string;
|
|
@@ -480,7 +480,7 @@ export declare const requestIntegrationFields: {
|
|
|
480
480
|
enabled?: boolean | undefined;
|
|
481
481
|
}[] | undefined;
|
|
482
482
|
enabled?: boolean | undefined;
|
|
483
|
-
valueFormat?: "
|
|
483
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
484
484
|
continueOnFailure?: boolean | undefined;
|
|
485
485
|
}>>>;
|
|
486
486
|
postPublish: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
@@ -519,7 +519,7 @@ export declare const requestIntegrationFields: {
|
|
|
519
519
|
enabled?: boolean | undefined;
|
|
520
520
|
}[] | undefined;
|
|
521
521
|
enabled?: boolean | undefined;
|
|
522
|
-
valueFormat?: "
|
|
522
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
523
523
|
continueOnFailure?: boolean | undefined;
|
|
524
524
|
}, {
|
|
525
525
|
value: string;
|
|
@@ -533,7 +533,7 @@ export declare const requestIntegrationFields: {
|
|
|
533
533
|
enabled?: boolean | undefined;
|
|
534
534
|
}[] | undefined;
|
|
535
535
|
enabled?: boolean | undefined;
|
|
536
|
-
valueFormat?: "
|
|
536
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
537
537
|
continueOnFailure?: boolean | undefined;
|
|
538
538
|
}>>>;
|
|
539
539
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -563,7 +563,7 @@ export declare const requestIntegrationFields: {
|
|
|
563
563
|
enabled?: boolean | undefined;
|
|
564
564
|
}[] | undefined;
|
|
565
565
|
enabled?: boolean | undefined;
|
|
566
|
-
valueFormat?: "
|
|
566
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
567
567
|
continueOnFailure?: boolean | undefined;
|
|
568
568
|
} | null | undefined;
|
|
569
569
|
postPublish?: {
|
|
@@ -578,7 +578,7 @@ export declare const requestIntegrationFields: {
|
|
|
578
578
|
enabled?: boolean | undefined;
|
|
579
579
|
}[] | undefined;
|
|
580
580
|
enabled?: boolean | undefined;
|
|
581
|
-
valueFormat?: "
|
|
581
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
582
582
|
continueOnFailure?: boolean | undefined;
|
|
583
583
|
} | null | undefined;
|
|
584
584
|
}, {
|
|
@@ -608,7 +608,7 @@ export declare const requestIntegrationFields: {
|
|
|
608
608
|
enabled?: boolean | undefined;
|
|
609
609
|
}[] | undefined;
|
|
610
610
|
enabled?: boolean | undefined;
|
|
611
|
-
valueFormat?: "
|
|
611
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
612
612
|
continueOnFailure?: boolean | undefined;
|
|
613
613
|
} | null | undefined;
|
|
614
614
|
postPublish?: {
|
|
@@ -623,7 +623,7 @@ export declare const requestIntegrationFields: {
|
|
|
623
623
|
enabled?: boolean | undefined;
|
|
624
624
|
}[] | undefined;
|
|
625
625
|
enabled?: boolean | undefined;
|
|
626
|
-
valueFormat?: "
|
|
626
|
+
valueFormat?: "json" | "raw" | undefined;
|
|
627
627
|
continueOnFailure?: boolean | undefined;
|
|
628
628
|
} | null | undefined;
|
|
629
629
|
}>>>;
|
|
@@ -686,17 +686,17 @@ export declare const requestIntegrationFields: {
|
|
|
686
686
|
value: z.ZodOptional<z.ZodString>;
|
|
687
687
|
}, "strict", z.ZodTypeAny, {
|
|
688
688
|
name: string;
|
|
689
|
+
source: "db_pre" | "db_post";
|
|
689
690
|
field: string;
|
|
690
691
|
operator: "equals" | "not_equals" | "exists" | "gt" | "lt";
|
|
691
|
-
source: "db_pre" | "db_post";
|
|
692
692
|
value?: string | undefined;
|
|
693
693
|
id?: string | undefined;
|
|
694
694
|
valueType?: "static" | "response" | undefined;
|
|
695
695
|
}, {
|
|
696
696
|
name: string;
|
|
697
|
+
source: "db_pre" | "db_post";
|
|
697
698
|
field: string;
|
|
698
699
|
operator: "equals" | "not_equals" | "exists" | "gt" | "lt";
|
|
699
|
-
source: "db_pre" | "db_post";
|
|
700
700
|
value?: string | undefined;
|
|
701
701
|
id?: string | undefined;
|
|
702
702
|
valueType?: "static" | "response" | undefined;
|