@clipform/mcp-server 4.2.4 → 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/{chunk-FFOQNI3B.js → chunk-63PX3SVJ.js} +3 -3
- package/dist/{chunk-LBNRRZTC.js → chunk-BL7T3UBS.js} +3 -3
- package/dist/{chunk-NN77UKUQ.js → chunk-ECG7HBWZ.js} +2 -2
- package/dist/{chunk-XW3FEMD4.js → chunk-EN5TEETY.js} +7 -7
- package/dist/{chunk-XW3FEMD4.js.map → chunk-EN5TEETY.js.map} +1 -1
- package/dist/{chunk-NZCRZDRQ.js → chunk-GY5QLQOU.js} +119 -31
- package/dist/chunk-GY5QLQOU.js.map +1 -0
- package/dist/index.js +5 -5
- package/dist/prompts.js +3 -3
- package/dist/resources.js +3 -3
- package/dist/server.js +5 -5
- package/package.json +3 -3
- package/server.json +2 -2
- package/dist/chunk-NZCRZDRQ.js.map +0 -1
- /package/dist/{chunk-FFOQNI3B.js.map → chunk-63PX3SVJ.js.map} +0 -0
- /package/dist/{chunk-LBNRRZTC.js.map → chunk-BL7T3UBS.js.map} +0 -0
- /package/dist/{chunk-NN77UKUQ.js.map → chunk-ECG7HBWZ.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",
|
|
@@ -681,25 +699,25 @@ var FEATURES = {
|
|
|
681
699
|
status: "planned",
|
|
682
700
|
category: "integrations"
|
|
683
701
|
},
|
|
684
|
-
//
|
|
685
|
-
// FEATURE_COMPANY_ALLOWLIST.transcript_copy allowlist (companyHasTranscriptCopy).
|
|
686
|
-
// Flip enabled/status together for GA.
|
|
702
|
+
// Went live globally (#4929); gated in the dashboard via companyHasTranscriptCopy.
|
|
687
703
|
transcript_copy: {
|
|
688
704
|
name: "Copy response transcripts",
|
|
689
705
|
description: "Copy a whole response transcript, or a single line, as plain text",
|
|
690
|
-
enabled:
|
|
691
|
-
status: "
|
|
692
|
-
category: "responses"
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
//
|
|
696
|
-
//
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
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"
|
|
703
721
|
}
|
|
704
722
|
};
|
|
705
723
|
for (const [key, f] of Object.entries(FEATURES)) {
|
|
@@ -1052,8 +1070,11 @@ var NODE_TYPES = {
|
|
|
1052
1070
|
storage_path: { type: "string" },
|
|
1053
1071
|
original_storage_path: { type: "string" },
|
|
1054
1072
|
thumbnail_storage_path: { type: "string" },
|
|
1073
|
+
mp3_storage_path: { type: "string" },
|
|
1055
1074
|
duration_s: { type: "number" },
|
|
1056
1075
|
processed_at: { type: "string" },
|
|
1076
|
+
// Processor-stamped: is the saved video mirrored (#5021)? Absent = legacy.
|
|
1077
|
+
saved_mirrored: { type: "boolean" },
|
|
1057
1078
|
facing_mode: { enum: ["user", "environment"], type: "string" },
|
|
1058
1079
|
preview_crop: {
|
|
1059
1080
|
type: "object",
|
|
@@ -1544,9 +1565,26 @@ var NODE_TYPES = {
|
|
|
1544
1565
|
stroke_widths: [3, 6, 12],
|
|
1545
1566
|
background: { fit: "contain", opacity: 1 }
|
|
1546
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
|
+
],
|
|
1547
1583
|
config_schema: {
|
|
1548
1584
|
type: "object",
|
|
1549
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" },
|
|
1550
1588
|
paper_color: { type: "string", label: "Paper colour", default: "#FAF9F6", description: "Canvas background colour (off-white paper by default)" },
|
|
1551
1589
|
stroke_colors: {
|
|
1552
1590
|
type: "array",
|
|
@@ -1716,31 +1754,81 @@ var NODE_TYPES = {
|
|
|
1716
1754
|
config_schema: {
|
|
1717
1755
|
type: "object",
|
|
1718
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" },
|
|
1719
1759
|
camera_facing: {
|
|
1720
1760
|
type: "string",
|
|
1721
1761
|
enum: ["user", "environment"],
|
|
1722
1762
|
default: "user",
|
|
1723
|
-
label: "
|
|
1724
|
-
description: "
|
|
1763
|
+
label: "Phone camera default",
|
|
1764
|
+
description: "Where the camera opens on phones - respondents can still switch",
|
|
1725
1765
|
enumLabels: { user: "Front (selfie)", environment: "Rear" }
|
|
1726
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
|
+
},
|
|
1727
1788
|
allow_library_upload: {
|
|
1728
1789
|
type: "boolean",
|
|
1729
1790
|
default: true,
|
|
1730
|
-
label: "
|
|
1731
|
-
description: "
|
|
1791
|
+
label: "Library button",
|
|
1792
|
+
description: "Whether respondents can pick existing photos or videos from their device"
|
|
1732
1793
|
},
|
|
1733
|
-
|
|
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: {
|
|
1734
1799
|
type: "array",
|
|
1735
|
-
items: { type: "string", enum: ["photo", "video"] },
|
|
1736
|
-
default: ["photo"],
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
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"
|
|
1740
1828
|
}
|
|
1741
1829
|
}
|
|
1742
1830
|
},
|
|
1743
|
-
// Reuses file_upload's response shape verbatim (
|
|
1831
|
+
// Reuses file_upload's response shape verbatim (array of 1..max_files files) so
|
|
1744
1832
|
// Results/exports/webhooks treat it the same way (scaffold skill: shape reuse).
|
|
1745
1833
|
// A video submission carries a video mime_type - the shape doesn't change (#2759).
|
|
1746
1834
|
response_schema: {
|
|
@@ -1763,8 +1851,8 @@ var NODE_TYPES = {
|
|
|
1763
1851
|
}
|
|
1764
1852
|
},
|
|
1765
1853
|
minItems: 1,
|
|
1766
|
-
maxItems:
|
|
1767
|
-
description: "The captured
|
|
1854
|
+
maxItems: 20,
|
|
1855
|
+
description: "The captured photos and videos, in capture order (1 to max_files items, mirroring file_upload)"
|
|
1768
1856
|
}
|
|
1769
1857
|
}
|
|
1770
1858
|
},
|
|
@@ -1775,7 +1863,7 @@ var NODE_TYPES = {
|
|
|
1775
1863
|
node_type: { type: "string", const: "camera" },
|
|
1776
1864
|
files: {
|
|
1777
1865
|
type: "array",
|
|
1778
|
-
description: "The captured
|
|
1866
|
+
description: "The captured photos and videos in capture order, each as a canonical media object with a fresh signed link.",
|
|
1779
1867
|
items: {
|
|
1780
1868
|
type: "object",
|
|
1781
1869
|
properties: {
|
|
@@ -3357,4 +3445,4 @@ export {
|
|
|
3357
3445
|
textResult,
|
|
3358
3446
|
structuredResult
|
|
3359
3447
|
};
|
|
3360
|
-
//# sourceMappingURL=chunk-
|
|
3448
|
+
//# sourceMappingURL=chunk-GY5QLQOU.js.map
|