@clipform/mcp-server 4.2.3 → 4.2.5
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/dist/api-client.js +1 -1
- package/dist/{caps-DBnfcEyJ.d.ts → caps-KNlvfilv.d.ts} +2 -0
- package/dist/{chunk-MO3ABORB.js → chunk-63PX3SVJ.js} +3 -3
- package/dist/{chunk-UYJLVVM3.js → chunk-BL7T3UBS.js} +3 -3
- package/dist/{chunk-E7C34M2J.js → chunk-ECG7HBWZ.js} +5 -4
- package/dist/chunk-ECG7HBWZ.js.map +1 -0
- package/dist/{chunk-XFGQP52H.js → chunk-EN5TEETY.js} +15 -10
- package/dist/{chunk-XFGQP52H.js.map → chunk-EN5TEETY.js.map} +1 -1
- package/dist/{chunk-ZRBMT7BF.js → chunk-GY5QLQOU.js} +123 -15
- package/dist/chunk-GY5QLQOU.js.map +1 -0
- package/dist/index.js +5 -5
- package/dist/prompts.d.ts +1 -1
- package/dist/prompts.js +3 -3
- package/dist/resources.d.ts +1 -1
- package/dist/resources.js +3 -3
- package/dist/server.d.ts +1 -1
- package/dist/server.js +5 -5
- package/package.json +1 -1
- package/server.json +2 -2
- package/dist/chunk-E7C34M2J.js.map +0 -1
- package/dist/chunk-ZRBMT7BF.js.map +0 -1
- /package/dist/{chunk-MO3ABORB.js.map → chunk-63PX3SVJ.js.map} +0 -0
- /package/dist/{chunk-UYJLVVM3.js.map → chunk-BL7T3UBS.js.map} +0 -0
|
@@ -142,6 +142,15 @@ var FEATURES = {
|
|
|
142
142
|
status: "planned",
|
|
143
143
|
category: "builder"
|
|
144
144
|
},
|
|
145
|
+
draw_target_shape: {
|
|
146
|
+
name: "Draw target shape",
|
|
147
|
+
description: "Score a drawing against a builder-drawn target outline (match-to-shape game)",
|
|
148
|
+
// Flagged off for the Draw GA pass (#5052/#5060): existing config.game data
|
|
149
|
+
// is left in place and returns when the flag flips.
|
|
150
|
+
enabled: false,
|
|
151
|
+
status: "beta",
|
|
152
|
+
category: "builder"
|
|
153
|
+
},
|
|
145
154
|
// -- Node types --
|
|
146
155
|
node_start: {
|
|
147
156
|
name: "Start node",
|
|
@@ -667,6 +676,15 @@ var FEATURES = {
|
|
|
667
676
|
status: "planned",
|
|
668
677
|
category: "integrations"
|
|
669
678
|
},
|
|
679
|
+
// Intentionally undated: shipped incrementally (API import routes 2026-05-25,
|
|
680
|
+
// /try paste lane #3409 2026-08-30), so it stays out of the What's New feed.
|
|
681
|
+
import_google_forms: {
|
|
682
|
+
name: "Google Forms importer",
|
|
683
|
+
description: "Import forms from Google Forms into Clipform",
|
|
684
|
+
enabled: true,
|
|
685
|
+
status: "live",
|
|
686
|
+
category: "integrations"
|
|
687
|
+
},
|
|
670
688
|
import_typeform: {
|
|
671
689
|
name: "Typeform importer",
|
|
672
690
|
description: "Import forms from Typeform into Clipform",
|
|
@@ -680,6 +698,26 @@ var FEATURES = {
|
|
|
680
698
|
enabled: false,
|
|
681
699
|
status: "planned",
|
|
682
700
|
category: "integrations"
|
|
701
|
+
},
|
|
702
|
+
// Went live globally (#4929); gated in the dashboard via companyHasTranscriptCopy.
|
|
703
|
+
transcript_copy: {
|
|
704
|
+
name: "Copy response transcripts",
|
|
705
|
+
description: "Copy a whole response transcript, or a single line, as plain text",
|
|
706
|
+
enabled: true,
|
|
707
|
+
status: "live",
|
|
708
|
+
category: "responses",
|
|
709
|
+
wentLiveAt: "2026-10-15"
|
|
710
|
+
},
|
|
711
|
+
// Went live globally (#4920); gated in the dashboard via companyHasMediaPlayer
|
|
712
|
+
// (kill switch: set enabled:false + status:'beta' - 'live' with enabled:false throws
|
|
713
|
+
// at load - to fall back to the native audio/video controls).
|
|
714
|
+
media_player: {
|
|
715
|
+
name: "Response media player",
|
|
716
|
+
description: "Play voice and video answers in the Responses view with playback speed, volume and seek controls",
|
|
717
|
+
enabled: true,
|
|
718
|
+
status: "live",
|
|
719
|
+
category: "responses",
|
|
720
|
+
wentLiveAt: "2026-10-16"
|
|
683
721
|
}
|
|
684
722
|
};
|
|
685
723
|
for (const [key, f] of Object.entries(FEATURES)) {
|
|
@@ -1032,8 +1070,11 @@ var NODE_TYPES = {
|
|
|
1032
1070
|
storage_path: { type: "string" },
|
|
1033
1071
|
original_storage_path: { type: "string" },
|
|
1034
1072
|
thumbnail_storage_path: { type: "string" },
|
|
1073
|
+
mp3_storage_path: { type: "string" },
|
|
1035
1074
|
duration_s: { type: "number" },
|
|
1036
1075
|
processed_at: { type: "string" },
|
|
1076
|
+
// Processor-stamped: is the saved video mirrored (#5021)? Absent = legacy.
|
|
1077
|
+
saved_mirrored: { type: "boolean" },
|
|
1037
1078
|
facing_mode: { enum: ["user", "environment"], type: "string" },
|
|
1038
1079
|
preview_crop: {
|
|
1039
1080
|
type: "object",
|
|
@@ -1524,9 +1565,26 @@ var NODE_TYPES = {
|
|
|
1524
1565
|
stroke_widths: [3, 6, 12],
|
|
1525
1566
|
background: { fit: "contain", opacity: 1 }
|
|
1526
1567
|
},
|
|
1568
|
+
// Named one-click setups shown as extra rows in the dashboard node picker
|
|
1569
|
+
// (#5060). Same node type (no new id, no migration): a preset only overlays
|
|
1570
|
+
// default_config. `open_media_picker` opens the template-image picker on the
|
|
1571
|
+
// new node straight away. Each config key must exist in config_schema and
|
|
1572
|
+
// `icon` must be a known node icon (packages/config/test/node-type-picker-presets.test.js).
|
|
1573
|
+
picker_presets: [
|
|
1574
|
+
{
|
|
1575
|
+
id: "markup",
|
|
1576
|
+
label: "Mark up",
|
|
1577
|
+
icon: "Highlighter",
|
|
1578
|
+
description: "Respondents mark a spot on a template image - one red pen, undo and clear",
|
|
1579
|
+
config: { stroke_colors: ["#EF4444"], stroke_widths: [6] },
|
|
1580
|
+
open_media_picker: true
|
|
1581
|
+
}
|
|
1582
|
+
],
|
|
1527
1583
|
config_schema: {
|
|
1528
1584
|
type: "object",
|
|
1529
1585
|
properties: {
|
|
1586
|
+
title: { type: "string", label: "Heading", maxLength: 80, description: "Heading shown above the drawing canvas" },
|
|
1587
|
+
description: { type: "string", label: "Description", maxLength: 140, description: "Body text shown below the heading" },
|
|
1530
1588
|
paper_color: { type: "string", label: "Paper colour", default: "#FAF9F6", description: "Canvas background colour (off-white paper by default)" },
|
|
1531
1589
|
stroke_colors: {
|
|
1532
1590
|
type: "array",
|
|
@@ -1696,31 +1754,81 @@ var NODE_TYPES = {
|
|
|
1696
1754
|
config_schema: {
|
|
1697
1755
|
type: "object",
|
|
1698
1756
|
properties: {
|
|
1757
|
+
title: { type: "string", label: "Heading", description: "Heading shown above the capture area" },
|
|
1758
|
+
description: { type: "string", label: "Description", description: "Body text shown below the heading" },
|
|
1699
1759
|
camera_facing: {
|
|
1700
1760
|
type: "string",
|
|
1701
1761
|
enum: ["user", "environment"],
|
|
1702
1762
|
default: "user",
|
|
1703
|
-
label: "
|
|
1704
|
-
description: "
|
|
1763
|
+
label: "Phone camera default",
|
|
1764
|
+
description: "Where the camera opens on phones - respondents can still switch",
|
|
1705
1765
|
enumLabels: { user: "Front (selfie)", environment: "Rear" }
|
|
1706
1766
|
},
|
|
1767
|
+
// The respondent's buttons (see cameraCaptureSources): Take a photo /
|
|
1768
|
+
// Record a video from camera_capture, Choose from library from
|
|
1769
|
+
// allow_library_upload accepting allowed_capture. At least one button
|
|
1770
|
+
// stays on (the builder enforces it).
|
|
1771
|
+
allowed_capture: {
|
|
1772
|
+
type: "array",
|
|
1773
|
+
items: { type: "string", enum: ["photo", "video"] },
|
|
1774
|
+
default: ["photo"],
|
|
1775
|
+
label: "Library accepts",
|
|
1776
|
+
// Existing nodes have no value and stay photo-only (the default). Also
|
|
1777
|
+
// the camera buttons while camera_capture is unset.
|
|
1778
|
+
description: "What respondents can pick from their library - photos, videos, or both.",
|
|
1779
|
+
enumLabels: { photo: "Photos", video: "Videos" }
|
|
1780
|
+
},
|
|
1781
|
+
// Absent = allowed_capture, so existing nodes keep a camera button per type.
|
|
1782
|
+
camera_capture: {
|
|
1783
|
+
type: "array",
|
|
1784
|
+
items: { type: "string", enum: ["photo", "video"] },
|
|
1785
|
+
label: "Camera buttons",
|
|
1786
|
+
description: "Which camera buttons respondents get - take a photo, record a video, or both"
|
|
1787
|
+
},
|
|
1707
1788
|
allow_library_upload: {
|
|
1708
1789
|
type: "boolean",
|
|
1709
1790
|
default: true,
|
|
1710
|
-
label: "
|
|
1711
|
-
description: "
|
|
1791
|
+
label: "Library button",
|
|
1792
|
+
description: "Whether respondents can pick existing photos or videos from their device"
|
|
1712
1793
|
},
|
|
1713
|
-
|
|
1794
|
+
// Display order of the three capture buttons respondents see. Lists all
|
|
1795
|
+
// three, enabled or not, so a disabled tile keeps its slot (Open's
|
|
1796
|
+
// `formats` model). The enable flags stay allowed_capture /
|
|
1797
|
+
// allow_library_upload; existing nodes have no value and keep today's order.
|
|
1798
|
+
capture_order: {
|
|
1714
1799
|
type: "array",
|
|
1715
|
-
items: { type: "string", enum: ["photo", "video"] },
|
|
1716
|
-
default: ["photo"],
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1800
|
+
items: { type: "string", enum: ["photo", "video", "library"] },
|
|
1801
|
+
default: ["photo", "video", "library"],
|
|
1802
|
+
// Labels the builder's button tile row, which the creator toggles and
|
|
1803
|
+
// drags to set this order.
|
|
1804
|
+
label: "Respondents can",
|
|
1805
|
+
description: "The buttons respondents get. Turn each on or off, and drag to set their order.",
|
|
1806
|
+
enumLabels: { photo: "Take a photo", video: "Record a video", library: "Choose from library" }
|
|
1807
|
+
},
|
|
1808
|
+
// Same meaning and 20 cap as file_upload's max_files (a cap on the
|
|
1809
|
+
// `files` array). Default 1 keeps every existing node single-capture (#3737).
|
|
1810
|
+
max_files: {
|
|
1811
|
+
type: "number",
|
|
1812
|
+
min: 1,
|
|
1813
|
+
max: 20,
|
|
1814
|
+
default: 1,
|
|
1815
|
+
label: "Media items",
|
|
1816
|
+
shortLabel: "Max",
|
|
1817
|
+
description: "How many photos or videos one answer can hold (1 = a single capture). Set Max above 1 to also set a minimum."
|
|
1818
|
+
},
|
|
1819
|
+
// Clamped to <= max_files by the builder; enforced client-side like max_files.
|
|
1820
|
+
min_files: {
|
|
1821
|
+
type: "number",
|
|
1822
|
+
min: 1,
|
|
1823
|
+
max: 20,
|
|
1824
|
+
default: 1,
|
|
1825
|
+
label: "Minimum media items",
|
|
1826
|
+
shortLabel: "Min",
|
|
1827
|
+
description: "Fewest photos or videos a respondent must add before continuing"
|
|
1720
1828
|
}
|
|
1721
1829
|
}
|
|
1722
1830
|
},
|
|
1723
|
-
// Reuses file_upload's response shape verbatim (
|
|
1831
|
+
// Reuses file_upload's response shape verbatim (array of 1..max_files files) so
|
|
1724
1832
|
// Results/exports/webhooks treat it the same way (scaffold skill: shape reuse).
|
|
1725
1833
|
// A video submission carries a video mime_type - the shape doesn't change (#2759).
|
|
1726
1834
|
response_schema: {
|
|
@@ -1743,8 +1851,8 @@ var NODE_TYPES = {
|
|
|
1743
1851
|
}
|
|
1744
1852
|
},
|
|
1745
1853
|
minItems: 1,
|
|
1746
|
-
maxItems:
|
|
1747
|
-
description: "The captured
|
|
1854
|
+
maxItems: 20,
|
|
1855
|
+
description: "The captured photos and videos, in capture order (1 to max_files items, mirroring file_upload)"
|
|
1748
1856
|
}
|
|
1749
1857
|
}
|
|
1750
1858
|
},
|
|
@@ -1755,7 +1863,7 @@ var NODE_TYPES = {
|
|
|
1755
1863
|
node_type: { type: "string", const: "camera" },
|
|
1756
1864
|
files: {
|
|
1757
1865
|
type: "array",
|
|
1758
|
-
description: "The captured
|
|
1866
|
+
description: "The captured photos and videos in capture order, each as a canonical media object with a fresh signed link.",
|
|
1759
1867
|
items: {
|
|
1760
1868
|
type: "object",
|
|
1761
1869
|
properties: {
|
|
@@ -3337,4 +3445,4 @@ export {
|
|
|
3337
3445
|
textResult,
|
|
3338
3446
|
structuredResult
|
|
3339
3447
|
};
|
|
3340
|
-
//# sourceMappingURL=chunk-
|
|
3448
|
+
//# sourceMappingURL=chunk-GY5QLQOU.js.map
|