@ifc-lite/flow-nodes 0.2.0 → 0.5.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.
Files changed (107) hide show
  1. package/README.md +1 -0
  2. package/dist/apply-table-node.d.ts.map +1 -1
  3. package/dist/apply-table-node.js +7 -6
  4. package/dist/apply-table-node.js.map +1 -1
  5. package/dist/aps-client.d.ts +55 -0
  6. package/dist/aps-client.d.ts.map +1 -0
  7. package/dist/aps-client.js +194 -0
  8. package/dist/aps-client.js.map +1 -0
  9. package/dist/aps-nodes.d.ts +3 -0
  10. package/dist/aps-nodes.d.ts.map +1 -0
  11. package/dist/aps-nodes.js +192 -0
  12. package/dist/aps-nodes.js.map +1 -0
  13. package/dist/aps-table.d.ts +24 -0
  14. package/dist/aps-table.d.ts.map +1 -0
  15. package/dist/aps-table.js +123 -0
  16. package/dist/aps-table.js.map +1 -0
  17. package/dist/base64.d.ts +8 -0
  18. package/dist/base64.d.ts.map +1 -0
  19. package/dist/base64.js +59 -0
  20. package/dist/base64.js.map +1 -0
  21. package/dist/bcf-client.d.ts +36 -0
  22. package/dist/bcf-client.d.ts.map +1 -0
  23. package/dist/bcf-client.js +108 -0
  24. package/dist/bcf-client.js.map +1 -0
  25. package/dist/bcf-nodes.d.ts +3 -0
  26. package/dist/bcf-nodes.d.ts.map +1 -0
  27. package/dist/bcf-nodes.js +181 -0
  28. package/dist/bcf-nodes.js.map +1 -0
  29. package/dist/csv-nodes.d.ts.map +1 -1
  30. package/dist/csv-nodes.js +3 -4
  31. package/dist/csv-nodes.js.map +1 -1
  32. package/dist/documents-fetch.d.ts +23 -0
  33. package/dist/documents-fetch.d.ts.map +1 -0
  34. package/dist/documents-fetch.js +48 -0
  35. package/dist/documents-fetch.js.map +1 -0
  36. package/dist/documents-nodes.d.ts +5 -0
  37. package/dist/documents-nodes.d.ts.map +1 -0
  38. package/dist/documents-nodes.js +167 -0
  39. package/dist/documents-nodes.js.map +1 -0
  40. package/dist/host.d.ts +28 -0
  41. package/dist/host.d.ts.map +1 -1
  42. package/dist/host.js.map +1 -1
  43. package/dist/http-request-node.d.ts +9 -0
  44. package/dist/http-request-node.d.ts.map +1 -0
  45. package/dist/http-request-node.js +109 -0
  46. package/dist/http-request-node.js.map +1 -0
  47. package/dist/index.d.ts +20 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +34 -5
  50. package/dist/index.js.map +1 -1
  51. package/dist/model-nodes.d.ts.map +1 -1
  52. package/dist/model-nodes.js +11 -6
  53. package/dist/model-nodes.js.map +1 -1
  54. package/dist/open-model-node.d.ts +3 -0
  55. package/dist/open-model-node.d.ts.map +1 -0
  56. package/dist/open-model-node.js +47 -0
  57. package/dist/open-model-node.js.map +1 -0
  58. package/dist/script-node.d.ts.map +1 -1
  59. package/dist/script-node.js +55 -21
  60. package/dist/script-node.js.map +1 -1
  61. package/dist/secrets.d.ts +88 -0
  62. package/dist/secrets.d.ts.map +1 -0
  63. package/dist/secrets.js +202 -0
  64. package/dist/secrets.js.map +1 -0
  65. package/dist/speckle/client.d.ts +52 -0
  66. package/dist/speckle/client.d.ts.map +1 -0
  67. package/dist/speckle/client.js +153 -0
  68. package/dist/speckle/client.js.map +1 -0
  69. package/dist/speckle/geometry.d.ts +37 -0
  70. package/dist/speckle/geometry.d.ts.map +1 -0
  71. package/dist/speckle/geometry.js +126 -0
  72. package/dist/speckle/geometry.js.map +1 -0
  73. package/dist/speckle/mapping.d.ts +62 -0
  74. package/dist/speckle/mapping.d.ts.map +1 -0
  75. package/dist/speckle/mapping.js +208 -0
  76. package/dist/speckle/mapping.js.map +1 -0
  77. package/dist/speckle/parameters.d.ts +49 -0
  78. package/dist/speckle/parameters.d.ts.map +1 -0
  79. package/dist/speckle/parameters.js +95 -0
  80. package/dist/speckle/parameters.js.map +1 -0
  81. package/dist/speckle/refusals.d.ts +45 -0
  82. package/dist/speckle/refusals.d.ts.map +1 -0
  83. package/dist/speckle/refusals.js +40 -0
  84. package/dist/speckle/refusals.js.map +1 -0
  85. package/dist/speckle/units.d.ts +13 -0
  86. package/dist/speckle/units.d.ts.map +1 -0
  87. package/dist/speckle/units.js +59 -0
  88. package/dist/speckle/units.js.map +1 -0
  89. package/dist/speckle/url.d.ts +35 -0
  90. package/dist/speckle/url.d.ts.map +1 -0
  91. package/dist/speckle/url.js +48 -0
  92. package/dist/speckle/url.js.map +1 -0
  93. package/dist/speckle-receive-node.d.ts +9 -0
  94. package/dist/speckle-receive-node.d.ts.map +1 -0
  95. package/dist/speckle-receive-node.js +180 -0
  96. package/dist/speckle-receive-node.js.map +1 -0
  97. package/dist/xlsx-io.d.ts.map +1 -1
  98. package/dist/xlsx-io.js +3 -3
  99. package/dist/xlsx-io.js.map +1 -1
  100. package/dist/xlsx-nodes.d.ts.map +1 -1
  101. package/dist/xlsx-nodes.js +1 -40
  102. package/dist/xlsx-nodes.js.map +1 -1
  103. package/package.json +11 -9
  104. package/dist/strict-cell.d.ts +0 -20
  105. package/dist/strict-cell.d.ts.map +0 -1
  106. package/dist/strict-cell.js +0 -33
  107. package/dist/strict-cell.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"csv-nodes.js","sourceRoot":"","sources":["../src/csv-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csv-nodes.js","sourceRoot":"","sources":["../src/csv-nodes.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C,SAAS,YAAY,CAAC,CAAU;IAC9B,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,CAAgB,CAAC,IAAI,KAAK,QAAQ,CAAC;AACpF,CAAC;AAED;qDACqD;AACrD,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,IAA4B;IAC9C,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,YAAkC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAkB;IACrC;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,uJAAuJ;QAC5J,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC7C,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE;YACnC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;SACxC;QACD,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,oFAAoF,EAAE;YAC5H,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE;YACnD,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,8EAA8E,EAAE;SACrH;QACD,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;YAChG,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACtE,MAAM,OAAO,GAAa,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnG,MAAM,QAAQ,GAAa,EAAE,CAAC;YAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACzC,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjG,CAAC;gBACD,MAAM,GAAG,GAAyB,EAAE,CAAC;gBACrC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;oBAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC7B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;wBACrB,OAAO;oBACT,CAAC;oBACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACzJ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;wBACpB,OAAO;oBACT,CAAC;oBACD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxE,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;wBACjC,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,oBAAoB,GAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC/F,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;wBACrB,OAAO;oBACT,CAAC;oBACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBAChF,CAAC,CAAC,CAAC;gBACH,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC;YAC/J,MAAM,KAAK,GAAU,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACnH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,gHAAgH;QACrH,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC9C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC7D,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;YAChG,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The `fetchFn` every `documents.*` node hands `DocumentsApiClient`: it
3
+ * routes each request through `@ifc-lite/sandbox`'s `coreNetworkRequest`,
4
+ * so the https-only / exact-host-grant / no-redirect / byte-cap policy is
5
+ * the same one `http.request` and `bim.network.fetch` run, checked against
6
+ * `ctx.host.networkGrants` BEFORE `ctx.host.networkTransport` is called.
7
+ * The client never sees a bare `fetch`.
8
+ *
9
+ * The body always comes back as bytes (`responseType: 'bytes'`), so a
10
+ * binary download is not mangled by a UTF-8 decode; a JSON answer is
11
+ * decoded by the client's own `response.json()`. A body that hit the byte
12
+ * cap is an error, never a silently short file or a truncated JSON.
13
+ */
14
+ import type { FetchLike } from '@ifc-lite/documents-api';
15
+ import type { Ctx } from './host.js';
16
+ export interface GatedFetchOptions {
17
+ readonly timeoutMs: number;
18
+ readonly maxBytes: number;
19
+ /** Node type, prefixed to a denial so the run log says which node was refused. */
20
+ readonly label: string;
21
+ }
22
+ export declare function gatedFetch(ctx: Ctx, options: GatedFetchOptions): FetchLike;
23
+ //# sourceMappingURL=documents-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents-fetch.d.ts","sourceRoot":"","sources":["../src/documents-fetch.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAkC1E"}
@@ -0,0 +1,48 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { coreNetworkRequest, NetworkDeniedError } from '@ifc-lite/sandbox';
5
+ /** Statuses whose `Response` may not carry a body (the constructor throws otherwise). */
6
+ const NULL_BODY_STATUSES = new Set([101, 204, 205, 304]);
7
+ function headerRecord(headers) {
8
+ const out = {};
9
+ new Headers(headers).forEach((value, key) => {
10
+ out[key] = value;
11
+ });
12
+ return out;
13
+ }
14
+ export function gatedFetch(ctx, options) {
15
+ return async (url, init) => {
16
+ const method = (init?.method ?? 'GET').toUpperCase();
17
+ if (method !== 'GET' && method !== 'POST')
18
+ throw new Error(`${options.label}: ${method} requests are not supported`);
19
+ if (init?.body !== undefined && init.body !== null && typeof init.body !== 'string') {
20
+ throw new Error(`${options.label}: only text request bodies are supported`);
21
+ }
22
+ let res;
23
+ try {
24
+ res = await coreNetworkRequest({
25
+ url,
26
+ method,
27
+ headers: headerRecord(init?.headers),
28
+ body: init?.body ?? undefined,
29
+ timeoutMs: options.timeoutMs,
30
+ maxBytes: options.maxBytes,
31
+ signal: ctx.signal,
32
+ responseType: 'bytes',
33
+ allowNotModified: true,
34
+ }, ctx.host.networkGrants ?? [], ctx.host.networkTransport);
35
+ }
36
+ catch (err) {
37
+ if (err instanceof NetworkDeniedError)
38
+ throw new Error(`${options.label}: ${err.message}`);
39
+ throw err;
40
+ }
41
+ if (res.truncated) {
42
+ throw new Error(`${options.label}: the response from ${url} exceeded maxBytes (${options.maxBytes}); raise maxBytes to accept it`);
43
+ }
44
+ const body = NULL_BODY_STATUSES.has(res.status) ? null : (res.bytes ?? new Uint8Array(0));
45
+ return new Response(body, { status: res.status, headers: res.headers });
46
+ };
47
+ }
48
+ //# sourceMappingURL=documents-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents-fetch.js","sourceRoot":"","sources":["../src/documents-fetch.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAiB/D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAU3E,yFAAyF;AACzF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEzD,SAAS,YAAY,CAAC,OAAgC;IACpD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAQ,EAAE,OAA0B;IAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM,6BAA6B,CAAC,CAAC;QACrH,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,0CAA0C,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,kBAAkB,CAC5B;gBACE,GAAG;gBACH,MAAM;gBACN,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;gBACpC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS;gBAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,YAAY,EAAE,OAAO;gBACrB,gBAAgB,EAAE,IAAI;aACvB,EACD,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,EAC5B,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,kBAAkB;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,uBAAuB,GAAG,uBAAuB,OAAO,CAAC,QAAQ,gCAAgC,CAAC,CAAC;QACrI,CAAC;QACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Column } from '@ifc-lite/flow';
2
+ import { type FlowNodeDef } from './host.js';
3
+ export declare const VERSION_COLUMNS: readonly Column[];
4
+ export declare const documentsNodes: FlowNodeDef[];
5
+ //# sourceMappingURL=documents-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents-nodes.d.ts","sourceRoot":"","sources":["../src/documents-nodes.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,gBAAgB,CAAC;AAIpD,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAgC7F,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAS5C,CAAC;AAqCF,eAAO,MAAM,cAAc,EAAE,WAAW,EAmEvC,CAAC"}
@@ -0,0 +1,167 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * `documents.*` — the OpenCDE Documents API 1.0 (`@ifc-lite/documents-api`)
6
+ * as flow nodes (#5167 phase 3.4): poll a tracked set of documents for new
7
+ * versions, and download a version's file.
8
+ *
9
+ * Every request goes through `gatedFetch` (see `documents-fetch.ts`), i.e.
10
+ * the same `coreNetworkRequest` grant check `http.request` runs: the graph
11
+ * must declare `network.fetch:<cde-host>` for the host it talks to. Both
12
+ * nodes are `volatile` — a CDE's answer is the world outside the graph, so
13
+ * a rerun must ask again rather than replay a memo.
14
+ *
15
+ * The bearer token is an ordinary string param, so it is written as
16
+ * `{{secret:NAME}}` (with `secret.read:NAME` declared); the CLI/MCP runner
17
+ * substitutes it before this node runs and redacts it from the run output.
18
+ *
19
+ * A downloaded file travels an edge as base64 text, the encoding
20
+ * `table.readXlsx` already reads, because a flow `Scalar` has no bytes.
21
+ */
22
+ import { DocumentsApiClient } from '@ifc-lite/documents-api';
23
+ import { toBase64 } from './base64.js';
24
+ import { gatedFetch } from './documents-fetch.js';
25
+ import { boundOr } from './http-request-node.js';
26
+ import { SCALAR_ITEM, SCALAR_LIST, TABLE_ITEM } from './host.js';
27
+ const DEFAULT_TIMEOUT_MS = 30_000;
28
+ const DEFAULT_QUERY_MAX_BYTES = 5 * 1024 * 1024;
29
+ const DEFAULT_DOWNLOAD_MAX_BYTES = 256 * 1024 * 1024;
30
+ const TOKEN_PARAM = {
31
+ name: 'token',
32
+ kind: 'string',
33
+ default: '',
34
+ doc: 'Bearer access token, normally `{{secret:NAME}}` with `secret.read:NAME` declared. Empty for an anonymous server.',
35
+ };
36
+ function tokenProvider(raw) {
37
+ const token = typeof raw === 'string' ? raw.trim().replace(/^Bearer\s+/i, '') : '';
38
+ return token.length > 0 ? () => token : undefined;
39
+ }
40
+ function client(ctx, label, baseUrl, p, maxBytes) {
41
+ return new DocumentsApiClient({
42
+ baseUrl,
43
+ getAccessToken: tokenProvider(p.token),
44
+ fetchFn: gatedFetch(ctx, { label, timeoutMs: boundOr(p.timeoutMs, DEFAULT_TIMEOUT_MS, 1), maxBytes: boundOr(p.maxBytes, maxBytes, 0) }),
45
+ });
46
+ }
47
+ /** Document ids from the wired list, else the param (a JSON array or a comma-separated string). */
48
+ function documentIds(input, param) {
49
+ const raw = Array.isArray(input) ? input : Array.isArray(param) ? param : typeof param === 'string' ? param.split(',') : [];
50
+ return raw.map((v) => String(v ?? '').trim()).filter((v) => v.length > 0);
51
+ }
52
+ export const VERSION_COLUMNS = [
53
+ { name: 'document_id', type: 'identifier' },
54
+ { name: 'version_number', type: 'label' },
55
+ { name: 'version_index', type: 'integer' },
56
+ { name: 'title', type: 'string' },
57
+ { name: 'creation_date', type: 'string' },
58
+ { name: 'file_name', type: 'string' },
59
+ { name: 'size_in_bytes', type: 'integer' },
60
+ { name: 'download_url', type: 'string' },
61
+ ];
62
+ function versionsTable(versions) {
63
+ return {
64
+ columns: VERSION_COLUMNS,
65
+ key: 'document_id',
66
+ rows: versions.map((v) => ({
67
+ document_id: v.document_id,
68
+ version_number: v.version_number,
69
+ version_index: v.version_index,
70
+ title: v.title,
71
+ creation_date: v.creation_date,
72
+ file_name: v.file_description?.name ?? null,
73
+ size_in_bytes: v.file_description?.size_in_bytes ?? null,
74
+ download_url: v.links?.document_version_download?.url ?? null,
75
+ })),
76
+ };
77
+ }
78
+ /** Last path segment of `url`, decoded — the fallback file name for a download. */
79
+ function nameFromUrl(url) {
80
+ try {
81
+ const segment = new URL(url).pathname.split('/').filter(Boolean).pop();
82
+ return segment ? decodeURIComponent(segment) : 'download';
83
+ }
84
+ catch {
85
+ // Not a parseable URL: the request itself already failed on it.
86
+ return 'download';
87
+ }
88
+ }
89
+ const NETWORK_NODE = {
90
+ capabilities: ['network.fetch:*'],
91
+ requires: { network: true },
92
+ // A cached answer would skip the request and report a stale CDE state.
93
+ volatile: true,
94
+ };
95
+ export const documentsNodes = [
96
+ {
97
+ type: 'documents.queryVersions',
98
+ title: 'Query document versions',
99
+ category: 'network',
100
+ doc: 'Polls an OpenCDE Documents API server (`POST /document-versions`) for the latest version of each document id. Pass the ETag of the previous poll: when the server answers 304, `changed` is false, `versions` is empty and `etag` echoes the one sent.',
101
+ inputs: [
102
+ { name: 'documentIds', type: SCALAR_LIST, optional: true },
103
+ { name: 'etag', type: SCALAR_ITEM, optional: true, nullable: true },
104
+ ],
105
+ outputs: [
106
+ { name: 'versions', type: TABLE_ITEM },
107
+ { name: 'etag', type: SCALAR_ITEM },
108
+ { name: 'changed', type: SCALAR_ITEM },
109
+ ],
110
+ params: [
111
+ { name: 'baseUrl', kind: 'string', default: '', doc: 'Documents API base URL, e.g. https://cde.example/documents/1.0. Its host must be granted with network.fetch:<host>.' },
112
+ { name: 'documentIds', kind: 'json', default: [], doc: 'Document ids to poll, used when the `documentIds` input is not wired.' },
113
+ { name: 'etag', kind: 'string', default: '', doc: 'ETag of the previous poll, used when the `etag` input is not wired.' },
114
+ TOKEN_PARAM,
115
+ { name: 'timeoutMs', kind: 'number', default: DEFAULT_TIMEOUT_MS },
116
+ { name: 'maxBytes', kind: 'number', default: DEFAULT_QUERY_MAX_BYTES, doc: 'Largest response accepted; a larger one fails the node.' },
117
+ ],
118
+ ...NETWORK_NODE,
119
+ run: async (ctx, i, p) => {
120
+ const baseUrl = typeof p.baseUrl === 'string' ? p.baseUrl.trim() : '';
121
+ if (baseUrl.length === 0)
122
+ throw new Error('documents.queryVersions: "baseUrl" is required');
123
+ const ids = documentIds(i.documentIds, p.documentIds);
124
+ if (ids.length === 0)
125
+ throw new Error('documents.queryVersions: no document ids to query');
126
+ const previous = typeof i.etag === 'string' && i.etag.length > 0 ? i.etag : typeof p.etag === 'string' && p.etag.length > 0 ? p.etag : undefined;
127
+ const poll = await client(ctx, 'documents.queryVersions', baseUrl, p, DEFAULT_QUERY_MAX_BYTES).queryDocumentVersions(ids, previous);
128
+ if (poll === null)
129
+ return { versions: versionsTable([]), etag: previous ?? null, changed: false };
130
+ return { versions: versionsTable(poll.result.versions ?? []), etag: poll.etag, changed: true };
131
+ },
132
+ },
133
+ {
134
+ type: 'documents.download',
135
+ title: 'Download document',
136
+ category: 'network',
137
+ doc: 'Downloads one document version from its `document_version_download` link (the `download_url` column of Query document versions). `data` is the file as base64; `name` is the wired name, else the URL\'s last path segment.',
138
+ inputs: [
139
+ { name: 'url', type: SCALAR_ITEM, optional: true },
140
+ { name: 'name', type: SCALAR_ITEM, optional: true, nullable: true },
141
+ ],
142
+ outputs: [
143
+ { name: 'data', type: SCALAR_ITEM },
144
+ { name: 'name', type: SCALAR_ITEM },
145
+ { name: 'size', type: SCALAR_ITEM },
146
+ { name: 'contentType', type: SCALAR_ITEM },
147
+ ],
148
+ params: [
149
+ { name: 'url', kind: 'string', default: '', doc: 'Download URL, used when the `url` input is not wired. Its host must be granted with network.fetch:<host>.' },
150
+ TOKEN_PARAM,
151
+ { name: 'timeoutMs', kind: 'number', default: DEFAULT_TIMEOUT_MS },
152
+ { name: 'maxBytes', kind: 'number', default: DEFAULT_DOWNLOAD_MAX_BYTES, doc: 'Largest file accepted; a larger one fails the node rather than yielding a truncated file.' },
153
+ ],
154
+ ...NETWORK_NODE,
155
+ run: async (ctx, i, p) => {
156
+ const url = typeof i.url === 'string' && i.url.length > 0 ? i.url : typeof p.url === 'string' ? p.url.trim() : '';
157
+ if (url.length === 0)
158
+ throw new Error('documents.download: "url" is required');
159
+ // The download link is absolute and server-issued, so the client's base URL is never used here.
160
+ const blob = await client(ctx, 'documents.download', url, p, DEFAULT_DOWNLOAD_MAX_BYTES).downloadDocumentVersion(url);
161
+ const bytes = new Uint8Array(await blob.arrayBuffer());
162
+ const name = typeof i.name === 'string' && i.name.length > 0 ? i.name : nameFromUrl(url);
163
+ return { data: toBase64(bytes), name, size: bytes.byteLength, contentType: blob.type || null };
164
+ },
165
+ },
166
+ ];
167
+ //# sourceMappingURL=documents-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents-nodes.js","sourceRoot":"","sources":["../src/documents-nodes.ts"],"names":[],"mappings":"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"}
package/dist/host.d.ts CHANGED
@@ -9,6 +9,7 @@
9
9
  * because it never sees arguments.
10
10
  */
11
11
  import { type Capability } from '@ifc-lite/extensions';
12
+ import type { FetchTransport } from '@ifc-lite/sandbox';
12
13
  import type { NodeDef, NodeRunContext } from '@ifc-lite/flow';
13
14
  import type { BimContext, EntityData, EntityRef as SdkEntityRef } from '@ifc-lite/sdk';
14
15
  import type { EntityRef } from '@ifc-lite/flow';
@@ -46,10 +47,37 @@ export interface FlowHost {
46
47
  * passes the grants the user accepted.
47
48
  */
48
49
  readonly grants?: readonly Capability[];
50
+ /**
51
+ * The graph's own declared `network.fetch:<host>` (and `secret.read:<NAME>`)
52
+ * capabilities — ALWAYS populated by every caller (CLI, MCP, viewer),
53
+ * independent of `grants`/the trust gate above. Real network access and
54
+ * secret reads are the one place "trusted local caller" does not mean
55
+ * "unrestricted": a request still needs the graph to have written down
56
+ * which host it may reach, so `HttpRequest` (and `bim.network.fetch` in
57
+ * the sandbox) always check the actual host against this list rather
58
+ * than relying on `grants` being undefined to skip the check entirely.
59
+ */
60
+ readonly networkGrants?: readonly Capability[];
61
+ /**
62
+ * Transport for `http.request`; `fetch` when absent. Only changes how bytes
63
+ * move — the grant check against `networkGrants` always runs first.
64
+ */
65
+ readonly networkTransport?: FetchTransport;
49
66
  /** Model to query when a node does not name one. */
50
67
  readonly defaultModelId?: string;
51
68
  /** See {@link TableAccess}. `modelId` defaults to `defaultModelId`. */
52
69
  tables?(modelId?: string): TableAccess | undefined;
70
+ /**
71
+ * Open `bytes` (an IFC file named `name`) as a model through the host's
72
+ * own load path, resolving to the id the loaded model answers to in
73
+ * `bim`. Backs `model.openFromSource`; a host that can do this lists the
74
+ * `openModel` backend feature. The viewer adds the model to the
75
+ * federation; a headless host (one model per `BimContext`) makes it the
76
+ * model `bim` and `defaultModelId` answer for from then on.
77
+ */
78
+ openModel?(bytes: Uint8Array, name: string): Promise<{
79
+ readonly modelId: string;
80
+ }>;
53
81
  }
54
82
  export type FlowNodeDef = NodeDef<FlowHost>;
55
83
  export type Ctx = NodeRunContext<FlowHost>;
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAyD,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;gEAEgE;AAChE,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,oDAAoD;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,uEAAuE;IACvE,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAE3C,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAO7D;AAED,wFAAwF;AACxF,wBAAgB,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAE9C;AAuBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAE3F;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,GAAG,YAAY,CAS/D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,CAI7D;AAED,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,YAAY;;;CAA+C,CAAC;AACzE,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,UAAU;;;CAA6C,CAAC;AACrE,eAAO,MAAM,QAAQ;;;CAA2C,CAAC;AACjE,eAAO,MAAM,QAAQ;;;CAA2C,CAAC;AACjE,eAAO,MAAM,SAAS;;;CAA4C,CAAC"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
package/dist/host.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type FlowNodeDef } from './host.js';
2
+ /**
3
+ * A numeric bound, or `fallback` when absent or not a number at least `min`.
4
+ * `Number(x) || fallback` read an explicit `maxBytes: 0` as "unset" and
5
+ * lifted the cap to the 5 MiB default.
6
+ */
7
+ export declare function boundOr(value: unknown, fallback: number, min: number): number;
8
+ export declare const httpRequestNode: FlowNodeDef;
9
+ //# sourceMappingURL=http-request-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-request-node.d.ts","sourceRoot":"","sources":["../src/http-request-node.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AA+B9E;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7E;AA4BD,eAAO,MAAM,eAAe,EAAE,WA0B7B,CAAC"}
@@ -0,0 +1,109 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * `http.request` — the one flow node that performs outbound HTTP. It calls
6
+ * the SAME core request function the sandbox's `bim.network.fetch` bridge
7
+ * uses (`@ifc-lite/sandbox`'s `coreNetworkRequest`), so the https-only /
8
+ * exact-host-grant / no-redirect / body-cap / header-denylist policy lives
9
+ * in exactly one implementation.
10
+ *
11
+ * The host allow-list check runs against `ctx.host.networkGrants` — which
12
+ * every caller (CLI, MCP, viewer) populates from the graph's own declared
13
+ * `network.fetch:<host>` capabilities REGARDLESS of whether that caller
14
+ * treats the graph as a "trusted, no capability gate" run (see the doc
15
+ * comment on `FlowHost.networkGrants` in `host.ts`): a local CLI run is
16
+ * trusted to mutate the model it was pointed at, but it is not trusted to
17
+ * reach an arbitrary host the graph never wrote down.
18
+ *
19
+ * `headers`/`body`/`url` are ordinary string/json params, so the graph
20
+ * author can put a `{{secret:NAME}}` reference in a header value; secret
21
+ * interpolation happens one layer up (`@ifc-lite/flow-nodes`'s
22
+ * `secrets.ts`, run by the CLI/MCP entry points before `runFlow` is
23
+ * called) — this node just sees the already-substituted string. It never
24
+ * reads `process.env` itself.
25
+ */
26
+ import { coreNetworkRequest, NetworkDeniedError } from '@ifc-lite/sandbox';
27
+ import { ANY_ITEM, SCALAR_ITEM } from './host.js';
28
+ const DEFAULT_TIMEOUT_MS = 15_000;
29
+ const DEFAULT_MAX_BYTES = 5 * 1024 * 1024;
30
+ function normalizeMethod(raw) {
31
+ const m = typeof raw === 'string' ? raw.toUpperCase() : 'GET';
32
+ if (m === 'GET' || m === 'POST')
33
+ return m;
34
+ throw new Error(`http.request: unsupported method "${String(raw)}" — only GET and POST are implemented`);
35
+ }
36
+ function normalizeHeaders(raw) {
37
+ if (raw === undefined || raw === null)
38
+ return undefined;
39
+ if (typeof raw !== 'object' || Array.isArray(raw))
40
+ throw new Error('http.request: "headers" must be an object of string values');
41
+ const out = {};
42
+ for (const [k, v] of Object.entries(raw)) {
43
+ if (typeof v !== 'string')
44
+ throw new Error(`http.request: header "${k}" must be a string value`);
45
+ out[k] = v;
46
+ }
47
+ return out;
48
+ }
49
+ /**
50
+ * A numeric bound, or `fallback` when absent or not a number at least `min`.
51
+ * `Number(x) || fallback` read an explicit `maxBytes: 0` as "unset" and
52
+ * lifted the cap to the 5 MiB default.
53
+ */
54
+ export function boundOr(value, fallback, min) {
55
+ const n = typeof value === 'number' ? value : typeof value === 'string' && value.trim() !== '' ? Number(value) : Number.NaN;
56
+ return Number.isFinite(n) && n >= min ? n : fallback;
57
+ }
58
+ async function run(ctx, _inputs, params) {
59
+ const p = params;
60
+ const url = typeof p.url === 'string' ? p.url : '';
61
+ if (url.length === 0)
62
+ throw new Error('http.request: "url" is required');
63
+ const grants = ctx.host.networkGrants ?? [];
64
+ try {
65
+ const res = await coreNetworkRequest({
66
+ url,
67
+ method: normalizeMethod(p.method),
68
+ headers: normalizeHeaders(p.headers),
69
+ body: typeof p.body === 'string' ? p.body : undefined,
70
+ timeoutMs: boundOr(p.timeoutMs, DEFAULT_TIMEOUT_MS, 1),
71
+ maxBytes: boundOr(p.maxBytes, DEFAULT_MAX_BYTES, 0),
72
+ signal: ctx.signal,
73
+ }, grants, ctx.host.networkTransport);
74
+ return { status: res.status, headers: res.headers, body: res.body, truncated: res.truncated, ok: res.status >= 200 && res.status < 300 };
75
+ }
76
+ catch (err) {
77
+ if (err instanceof NetworkDeniedError)
78
+ throw new Error(`http.request: ${err.message}`);
79
+ throw err;
80
+ }
81
+ }
82
+ export const httpRequestNode = {
83
+ type: 'http.request',
84
+ title: 'HTTP Request',
85
+ category: 'network',
86
+ doc: 'Issues one https: GET/POST request to a host covered by a granted `network.fetch:<host>` capability. Headers/body may contain `{{secret:NAME}}`, resolved by the CLI/MCP runner before this node sees them — never available in the viewer, where a graph needing a secret shows unavailable before it runs.',
87
+ inputs: [],
88
+ outputs: [
89
+ { name: 'status', type: SCALAR_ITEM },
90
+ { name: 'headers', type: ANY_ITEM },
91
+ { name: 'body', type: SCALAR_ITEM },
92
+ { name: 'truncated', type: SCALAR_ITEM },
93
+ { name: 'ok', type: SCALAR_ITEM },
94
+ ],
95
+ params: [
96
+ { name: 'url', kind: 'string', default: '', doc: 'https:// URL. The hostname must match a granted network.fetch:<host> capability exactly.' },
97
+ { name: 'method', kind: 'enum', default: 'GET', options: ['GET', 'POST'] },
98
+ { name: 'headers', kind: 'json', default: {}, doc: 'Header map. May reference {{secret:NAME}} for a declared secret.' },
99
+ { name: 'body', kind: 'string', default: '', doc: 'Request body for POST. May reference {{secret:NAME}}.' },
100
+ { name: 'timeoutMs', kind: 'number', default: DEFAULT_TIMEOUT_MS },
101
+ { name: 'maxBytes', kind: 'number', default: DEFAULT_MAX_BYTES, doc: 'Response body is capped at this many bytes; the read is aborted mid-stream past it.' },
102
+ ],
103
+ capabilities: ['network.fetch:*'],
104
+ requires: { network: true },
105
+ // A cached answer would skip the request: a POST not sent, a GET stale (#5446 review).
106
+ volatile: true,
107
+ run,
108
+ };
109
+ //# sourceMappingURL=http-request-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-request-node.js","sourceRoot":"","sources":["../src/http-request-node.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,14 +6,32 @@ export { columnTypeOf, VALUE_TYPE_BY_COLUMN_TYPE } from './table-nodes.js';
6
6
  export type { ElementSpec } from './element-nodes.js';
7
7
  export { readXlsxTable, writeXlsxTable } from './xlsx-io.js';
8
8
  export type { ReadXlsxOptions, ReadXlsxResult, XlsxColumnSpec } from './xlsx-io.js';
9
+ export { declaredSecrets, referencedSecrets, validateSecretReferences, resolveSecretValues, interpolateSecrets, buildRedactionMap, redactText, redactDeep, MIN_REDACTED_SECRET_LENGTH, usableSecretNames, } from './secrets.js';
10
+ export type { SecretValidationError } from './secrets.js';
9
11
  /** Every standard node, in one registry. */
10
12
  export declare function createStandardRegistry(): NodeRegistry<FlowHost>;
11
- /** What a viewer-embedded host offers. Secrets are never available in the browser. */
13
+ /**
14
+ * What a viewer-embedded host offers. `network` is `true`: the viewer DOES
15
+ * attempt `network.fetch` (subject to the browser's own CORS enforcement —
16
+ * a blocked request surfaces as an explicit CORS error, not an empty
17
+ * success; see `HttpRequest`'s node doc and `runner.ts`). `secrets` is
18
+ * always empty: the browser has no `process.env` and must never persist a
19
+ * secret, so a graph that references one shows `unavailable` before it
20
+ * runs rather than failing mid-run (#5167 phase 3.5).
21
+ */
12
22
  export declare const BROWSER_FEATURES: HostFeatures;
13
23
  /**
14
- * What the CLI's `HeadlessBackend` offers. It implements the viewer
24
+ * What the CLI's / MCP's headless backend offers. It implements the viewer
15
25
  * methods as inert no-ops, so `viewer`/`visibility`/`selection` are
16
26
  * deliberately absent here: a viewer node must report `noop`, not pretend.
27
+ * `network` is always `true`: both headless callers have a real, unrestricted
28
+ * `fetch` (no CORS), so a `network.fetch` bridge is always configured — the
29
+ * per-request host allow-list check still runs against the graph's actual
30
+ * grants (see `network-request.ts`). `secrets` is exactly the set of env var
31
+ * names the caller passes (CLI: `Object.keys(process.env)`; MCP: the same —
32
+ * see `flow.ts` in `@ifc-lite/cli` and `@ifc-lite/mcp`), never guessed here.
33
+ * `openModel` is listed because both headless callers implement
34
+ * `FlowHost.openModel` (`model.openFromSource`).
17
35
  */
18
36
  export declare function headlessFeatures(secrets?: Iterable<string>): HostFeatures;
19
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQ1C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC7I,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpF,4CAA4C;AAC5C,wBAAgB,sBAAsB,IAAI,YAAY,CAAC,QAAQ,CAAC,CAe/D;AAED,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,YAI9B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAAG,YAAY,CAE7E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAUjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAU1C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC7I,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,4CAA4C;AAC5C,wBAAgB,sBAAsB,IAAI,YAAY,CAAC,QAAQ,CAAC,CAqB/D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAI9B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAAG,YAAY,CAE7E"}