@nodegx/mcp 0.2.2 → 0.2.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodegx-mcp-bundles",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "private": true,
5
5
  "description": "Build metadata for the bundled CLIs beside it. See build-cloud-bundle.mjs: @noodl/platform reads it."
6
6
  }
@@ -37470,6 +37470,18 @@
37470
37470
  "isSignal": false,
37471
37471
  "description": "Object path inside the bucket, such as avatars/me.png. Supabase only. Leave blank to use the file's own name"
37472
37472
  },
37473
+ {
37474
+ "name": "photoQuality",
37475
+ "displayName": "Photo Quality",
37476
+ "group": "Shrink Photos",
37477
+ "plug": "input",
37478
+ "type": {
37479
+ "name": "number"
37480
+ },
37481
+ "isSignal": false,
37482
+ "default": 80,
37483
+ "description": "How much detail a shrunk JPEG or WebP keeps, from 1 to 100; PNG keeps every pixel and its transparency, GIF and SVG are never shrunk"
37484
+ },
37473
37485
  {
37474
37486
  "name": "private",
37475
37487
  "displayName": "Private",
@@ -37482,6 +37494,17 @@
37482
37494
  "default": false,
37483
37495
  "description": "Restricts the stored file to whoever uploaded it, so reading it later needs a Sign File URL node"
37484
37496
  },
37497
+ {
37498
+ "name": "readers",
37499
+ "displayName": "Readers",
37500
+ "group": "General",
37501
+ "plug": "input",
37502
+ "type": {
37503
+ "name": "string"
37504
+ },
37505
+ "isSignal": false,
37506
+ "description": "Roles that may read the file as well as whoever uploaded it, such as role:member, separated by commas; setting it makes the file private. NodeGX backends only"
37507
+ },
37485
37508
  {
37486
37509
  "name": "recordId",
37487
37510
  "displayName": "Record ID (PocketBase)",
@@ -37493,6 +37516,18 @@
37493
37516
  "isSignal": false,
37494
37517
  "description": "Existing record to attach the file to. PocketBase only. Leave blank to create a new record as part of the upload"
37495
37518
  },
37519
+ {
37520
+ "name": "shrinkTo",
37521
+ "displayName": "Shrink To",
37522
+ "group": "Shrink Photos",
37523
+ "plug": "input",
37524
+ "type": {
37525
+ "name": "number"
37526
+ },
37527
+ "isSignal": false,
37528
+ "default": 0,
37529
+ "description": "Makes a photo smaller in the browser before sending it, so its longer side is at most this many pixels; 0 sends every file as picked"
37530
+ },
37496
37531
  {
37497
37532
  "name": "upload",
37498
37533
  "displayName": "Upload",
@@ -37635,6 +37670,15 @@
37635
37670
  "private": [
37636
37671
  "always: held as handed; read when the next Upload goes"
37637
37672
  ],
37673
+ "readers": [
37674
+ "always: held as handed; read when the next Upload goes — set, those roles may read the file as well as whoever uploaded it, and the file is private"
37675
+ ],
37676
+ "shrinkTo": [
37677
+ "always: held as handed; read when the next Upload goes — above 0, a photo (not a GIF or an SVG) is drawn smaller in the browser first, its longer side at most this many pixels, and the smaller file is what goes; it goes as picked when it is already that small, when the smaller one would weigh more, or when the browser cannot read it"
37678
+ ],
37679
+ "photoQuality": [
37680
+ "always: held as handed; read when the next Upload goes, and only when a photo is shrunk — 1 to 100 for a JPEG or WebP, anything else is 80; a PNG keeps every pixel"
37681
+ ],
37638
37682
  "bucket": [
37639
37683
  "always: held as handed; read when the next Upload goes — set, the file goes to this bucket at Path (or under the file's own name)"
37640
37684
  ],
@@ -37651,7 +37695,7 @@
37651
37695
  "always: held as handed; read when the next Upload goes, and only with Collection — a half-filled group is no location at all"
37652
37696
  ],
37653
37697
  "upload": [
37654
- "always: its own upload at the frame's end — two presses are two uploads — with File, Private and the File Location held then: no File, or a Backend the project does not have, is Error, Error Status Code 0 and Failure at once; otherwise the backend answers with Cloud File then Done, or Error, Error Status Code and Failure"
37698
+ "always: its own upload at the frame's end — two presses are two uploads — with File, Private, Readers and the File Location held then: no File, or a Backend the project does not have, is Error, Error Status Code 0 and Failure at once; otherwise the backend answers with Cloud File then Done, or Error, Error Status Code and Failure"
37655
37699
  ]
37656
37700
  },
37657
37701
  "enrichment": {
@@ -34883,6 +34883,18 @@
34883
34883
  "isSignal": false,
34884
34884
  "description": "Object path inside the bucket, such as avatars/me.png. Supabase only. Leave blank to use the file's own name"
34885
34885
  },
34886
+ {
34887
+ "name": "photoQuality",
34888
+ "displayName": "Photo Quality",
34889
+ "group": "Shrink Photos",
34890
+ "plug": "input",
34891
+ "type": {
34892
+ "name": "number"
34893
+ },
34894
+ "isSignal": false,
34895
+ "default": 80,
34896
+ "description": "How much detail a shrunk JPEG or WebP keeps, from 1 to 100; PNG keeps every pixel and its transparency, GIF and SVG are never shrunk"
34897
+ },
34886
34898
  {
34887
34899
  "name": "private",
34888
34900
  "displayName": "Private",
@@ -34895,6 +34907,17 @@
34895
34907
  "default": false,
34896
34908
  "description": "Restricts the stored file to whoever uploaded it, so reading it later needs a Sign File URL node"
34897
34909
  },
34910
+ {
34911
+ "name": "readers",
34912
+ "displayName": "Readers",
34913
+ "group": "General",
34914
+ "plug": "input",
34915
+ "type": {
34916
+ "name": "string"
34917
+ },
34918
+ "isSignal": false,
34919
+ "description": "Roles that may read the file as well as whoever uploaded it, such as role:member, separated by commas; setting it makes the file private. NodeGX backends only"
34920
+ },
34898
34921
  {
34899
34922
  "name": "recordId",
34900
34923
  "displayName": "Record ID (PocketBase)",
@@ -34906,6 +34929,18 @@
34906
34929
  "isSignal": false,
34907
34930
  "description": "Existing record to attach the file to. PocketBase only. Leave blank to create a new record as part of the upload"
34908
34931
  },
34932
+ {
34933
+ "name": "shrinkTo",
34934
+ "displayName": "Shrink To",
34935
+ "group": "Shrink Photos",
34936
+ "plug": "input",
34937
+ "type": {
34938
+ "name": "number"
34939
+ },
34940
+ "isSignal": false,
34941
+ "default": 0,
34942
+ "description": "Makes a photo smaller in the browser before sending it, so its longer side is at most this many pixels; 0 sends every file as picked"
34943
+ },
34909
34944
  {
34910
34945
  "name": "upload",
34911
34946
  "displayName": "Upload",
@@ -35048,6 +35083,15 @@
35048
35083
  "private": [
35049
35084
  "always: held as handed; read when the next Upload goes"
35050
35085
  ],
35086
+ "readers": [
35087
+ "always: held as handed; read when the next Upload goes — set, those roles may read the file as well as whoever uploaded it, and the file is private"
35088
+ ],
35089
+ "shrinkTo": [
35090
+ "always: held as handed; read when the next Upload goes — above 0, a photo (not a GIF or an SVG) is drawn smaller in the browser first, its longer side at most this many pixels, and the smaller file is what goes; it goes as picked when it is already that small, when the smaller one would weigh more, or when the browser cannot read it"
35091
+ ],
35092
+ "photoQuality": [
35093
+ "always: held as handed; read when the next Upload goes, and only when a photo is shrunk — 1 to 100 for a JPEG or WebP, anything else is 80; a PNG keeps every pixel"
35094
+ ],
35051
35095
  "bucket": [
35052
35096
  "always: held as handed; read when the next Upload goes — set, the file goes to this bucket at Path (or under the file's own name)"
35053
35097
  ],
@@ -35064,7 +35108,7 @@
35064
35108
  "always: held as handed; read when the next Upload goes, and only with Collection — a half-filled group is no location at all"
35065
35109
  ],
35066
35110
  "upload": [
35067
- "always: its own upload at the frame's end — two presses are two uploads — with File, Private and the File Location held then: no File, or a Backend the project does not have, is Error, Error Status Code 0 and Failure at once; otherwise the backend answers with Cloud File then Done, or Error, Error Status Code and Failure"
35111
+ "always: its own upload at the frame's end — two presses are two uploads — with File, Private, Readers and the File Location held then: no File, or a Backend the project does not have, is Error, Error Status Code 0 and Failure at once; otherwise the backend answers with Cloud File then Done, or Error, Error Status Code and Failure"
35068
35112
  ]
35069
35113
  }
35070
35114
  },
@@ -2030,6 +2030,11 @@ var require_render_report = __commonJS({
2030
2030
  "--no-default-browser-check",
2031
2031
  "--hide-scrollbars",
2032
2032
  "--disable-gpu",
2033
+ // PARKED-THREE-S3-NOWEBGL: `--disable-gpu` alone leaves no WebGL, so a three.js scene (three-kit, garden-3d-kit)
2034
+ // drew its "No WebGL here" fallback to the agent. Software GL brings WebGL back with no GPU (measured 2026-10-19 in
2035
+ // this harness: gl false → true, the three-kit fixture's 12 meshes drawn); a page with no WebGL never touches it.
2036
+ "--use-angle=swiftshader",
2037
+ "--enable-unsafe-swiftshader",
2033
2038
  // P112-S14-KEYCHAIN: on macOS a page that touches storage makes Chrome open the login keychain. With no
2034
2039
  // keychain where `HOME` points (an empty HOME, a CI user) the OS shows "Keychain Not Found" on the person's
2035
2040
  // screen and Chrome waits for the answer, so the render hangs until its 240 s kill. A throwaway profile
@@ -2030,6 +2030,11 @@ var require_render_report = __commonJS({
2030
2030
  "--no-default-browser-check",
2031
2031
  "--hide-scrollbars",
2032
2032
  "--disable-gpu",
2033
+ // PARKED-THREE-S3-NOWEBGL: `--disable-gpu` alone leaves no WebGL, so a three.js scene (three-kit, garden-3d-kit)
2034
+ // drew its "No WebGL here" fallback to the agent. Software GL brings WebGL back with no GPU (measured 2026-10-19 in
2035
+ // this harness: gl false → true, the three-kit fixture's 12 meshes drawn); a page with no WebGL never touches it.
2036
+ "--use-angle=swiftshader",
2037
+ "--enable-unsafe-swiftshader",
2033
2038
  // P112-S14-KEYCHAIN: on macOS a page that touches storage makes Chrome open the login keychain. With no
2034
2039
  // keychain where `HOME` points (an empty HOME, a CI user) the OS shows "Keychain Not Found" on the person's
2035
2040
  // screen and Chrome waits for the answer, so the render hangs until its 240 s kill. A throwaway profile
@@ -592,6 +592,19 @@ declare namespace Noodl {
592
592
  onProgress?: (progress: number) => void;
593
593
  }
594
594
  ): Promise<CloudFile>;
595
+
596
+ /**
597
+ * A link an image can use for a private file, the way the Sign File URL node mints one.
598
+ * Takes a CloudFile, a record's file (or an item of a list of them), or the stored name.
599
+ * Rejects for someone who could not read the file itself.
600
+ *
601
+ * Example:
602
+ * ```ts
603
+ * const link = await Noodl.Files.sign(post.photos[0])
604
+ * console.log(link.url, link.expiresAt)
605
+ * ```
606
+ */
607
+ sign(file: CloudFile | { name: string } | string): Promise<{ url: string; kind: string; expiresAt?: string; ttlSeconds?: number }>;
595
608
  }
596
609
 
597
610
  /**