@ifc-lite/flow-nodes 0.5.0 → 0.6.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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @ifc-lite/flow-nodes
2
2
 
3
3
  The standard node library for [`@ifc-lite/flow`](https://www.npmjs.com/package/@ifc-lite/flow),
4
- built on the ifc-lite SDK (`BimContext`). The same nodes run in the viewer and
5
- in the headless CLI.
4
+ built on the ifc-lite SDK (`BimContext`). Portable nodes run in the viewer and in the headless CLI. Nodes requiring
5
+ viewer session services report unavailable on hosts that do not supply them.
6
6
 
7
7
  ## Node families
8
8
 
@@ -14,6 +14,7 @@ in the headless CLI.
14
14
  | `viewer.*` | colorize, isolate, select, selection, flyTo | `noop` on a headless host; entities pass through |
15
15
  | `model.set*` | setProperty, setAttribute | Capability-checked against the actual pset (`model.mutate:<Pset>`) |
16
16
  | `http.request`, `speckle.receive` | network | Every request goes through the gated `coreNetworkRequest` (`network.fetch:<host>` grants, https only); `speckle.receive` writes a Speckle model's walls, floors, roofs, columns and beams, and reports what it cannot map |
17
+ | `session.*`, `validation.runChecks`, `comparison.runChecks`, `report.*` | local loading, filename tags, checks, historical reports, documents and PDF artifacts | Require explicit `SessionAutomationHost` services; unavailable on the standard CLI/MCP host |
17
18
  | `script.run` | one node | JavaScript in the QuickJS sandbox with the sandbox `bim` API |
18
19
 
19
20
  ## Usage
@@ -30,6 +31,35 @@ const result = await runFlow(doc, { host: { bim }, registry, features: BROWSER_F
30
31
  `host.grants` (parsed capabilities from `@ifc-lite/extensions`) gates every node;
31
32
  omit it only for a trusted caller such as the CLI running a local file.
32
33
 
34
+ ## Session automation host
35
+
36
+ The seven standard automation definitions call `host.automation` and pass the
37
+ run's `AbortSignal` through every host boundary. Advertise only the backend
38
+ features for services actually supplied: `sessionModels`, `modelTags`,
39
+ `validationChecks`, `comparisonChecks`, `comparisonReports`, `reportDocuments`
40
+ and `pdfArtifacts`. These are deliberately absent from `BROWSER_FEATURES` and
41
+ `headlessFeatures()`. Missing services are unavailable, never no-op.
42
+
43
+ Each boundary enforces its declared grants: `model.create`, `model.read`,
44
+ `storage.write:modelTags`, `storage.write:validationReports`,
45
+ `storage.write:savedComparisons`, `storage.write:documents` and
46
+ `export.create:pdf`. Use exact grants or the capability system's supported
47
+ wildcards; declaring a backend feature does not grant write permission.
48
+
49
+ `ModelSelector` supports qualified file slots, exact original filenames and
50
+ normalized tag names. A comparison role must resolve exactly one model. A check
51
+ job has a stable `id`, `enabled` flag, embedded or external-slot `source`, optional
52
+ `targets` and portable tag-reference bindings. `parseCheckJobs` rejects duplicate
53
+ job IDs. `parseTagRules` validates bounded filename rules; overlapping matches
54
+ union their tag names.
55
+
56
+ Validation/comparison nodes return opaque report tokens. `report.buildDocument`
57
+ accepts separate validation, rerun-comparison and imported historical tokens;
58
+ `report.exportPdf` returns an artifact token. The viewer owns native snapshots,
59
+ retention warnings, document preparation, Blob lifetime and explicit download.
60
+ Importing completed comparison evidence preserves its original date and does
61
+ not rerun a comparison against the loaded models.
62
+
33
63
  ## License
34
64
 
35
65
  MPL-2.0
package/dist/host.d.ts CHANGED
@@ -15,6 +15,7 @@ import type { BimContext, EntityData, EntityRef as SdkEntityRef } from '@ifc-lit
15
15
  import type { EntityRef } from '@ifc-lite/flow';
16
16
  import type { EntityTable } from '@ifc-lite/data';
17
17
  import type { MutablePropertyView } from '@ifc-lite/mutations';
18
+ import type { SessionAutomationHost } from './session-contracts.js';
18
19
  /** A string-interning lookup, the shape `csv-match.ts`'s match-context builder
19
20
  * needs for `globalId`/`name` strategies (an entity table's `name`/`globalId`
20
21
  * columns are interned string indices, not inline strings). */
@@ -40,6 +41,7 @@ export interface TableAccess {
40
41
  readonly strings: StringLookup;
41
42
  }
42
43
  export interface FlowHost {
44
+ readonly automation?: SessionAutomationHost;
43
45
  readonly bim: BimContext;
44
46
  /**
45
47
  * Capabilities granted to the running graph. `undefined` means "trusted
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
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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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { NodeRegistry, type HostFeatures } from '@ifc-lite/flow';
2
2
  import type { FlowHost } from './host.js';
3
+ export { isModelSelector, parseTagRules, parseCheckJobs, matchesFilename, AUTOMATION_FEATURES } from './session-contracts.js';
4
+ export type { ModelSelector, SessionModel, SessionModels, FilenameTagRule, ResourceSource, CheckJob, DocumentMapping, SessionAutomationHost } from './session-contracts.js';
3
5
  export type { FlowHost, FlowNodeDef, TableAccess, StringLookup } from './host.js';
4
6
  export { requireCapability, toRef, toSdkRef, resolveByGlobalId, rememberGlobalId, forgetGlobalId, invalidateGlobalIdIndex } from './host.js';
5
7
  export { columnTypeOf, VALUE_TYPE_BY_COLUMN_TYPE } from './table-nodes.js';
@@ -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;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"}
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;AAW1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC9H,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE5K,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,CAsB/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"}
package/dist/index.js CHANGED
@@ -19,6 +19,8 @@ import { tableNodes } from './table-nodes.js';
19
19
  import { viewerNodes } from './viewer-nodes.js';
20
20
  import { writeNodes } from './write-nodes.js';
21
21
  import { xlsxNodes } from './xlsx-nodes.js';
22
+ import { sessionNodes } from './session-nodes.js';
23
+ export { isModelSelector, parseTagRules, parseCheckJobs, matchesFilename, AUTOMATION_FEATURES } from './session-contracts.js';
22
24
  export { requireCapability, toRef, toSdkRef, resolveByGlobalId, rememberGlobalId, forgetGlobalId, invalidateGlobalIdIndex } from './host.js';
23
25
  export { columnTypeOf, VALUE_TYPE_BY_COLUMN_TYPE } from './table-nodes.js';
24
26
  export { readXlsxTable, writeXlsxTable } from './xlsx-io.js';
@@ -44,6 +46,7 @@ export function createStandardRegistry() {
44
46
  speckleReceiveNode,
45
47
  ...documentsNodes,
46
48
  openModelNode,
49
+ ...sessionNodes,
47
50
  ]);
48
51
  }
49
52
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,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;AAE3E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG7D,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;AAGtB,4CAA4C;AAC5C,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,YAAY,EAAY,CAAC,WAAW,CAAC;QAC9C,GAAG,SAAS;QACZ,GAAG,UAAU;QACb,GAAG,UAAU;QACb,GAAG,WAAW;QACd,GAAG,UAAU;QACb,GAAG,YAAY;QACf,GAAG,QAAQ;QACX,GAAG,SAAS;QACZ,GAAG,cAAc;QACjB,cAAc;QACd,UAAU;QACV,cAAc;QACd,eAAe;QACf,GAAG,QAAQ;QACX,GAAG,QAAQ;QACX,kBAAkB;QAClB,GAAG,cAAc;QACjB,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3G,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI,GAAG,EAAE;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA4B,EAAE;IAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9H,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /** Portable configurations only. Files and native reports belong to the host. */
2
+ export type ModelSelector = {
3
+ readonly kind: 'slot';
4
+ readonly slotId: string;
5
+ } | {
6
+ readonly kind: 'filename';
7
+ readonly filename: string;
8
+ } | {
9
+ readonly kind: 'tagName';
10
+ readonly tagName: string;
11
+ };
12
+ export declare function isModelSelector(v: unknown): v is ModelSelector;
13
+ export interface SessionModel {
14
+ readonly modelId: string;
15
+ readonly slotId: string;
16
+ readonly filename: string;
17
+ readonly sourceIdentity?: string;
18
+ }
19
+ export interface SessionModels {
20
+ readonly runId: string;
21
+ readonly models: readonly SessionModel[];
22
+ }
23
+ export interface FilenameTagRule {
24
+ readonly operator: 'equals' | 'contains' | 'startsWith' | 'endsWith' | 'glob';
25
+ readonly pattern: string;
26
+ readonly caseSensitive?: boolean;
27
+ readonly tags: readonly string[];
28
+ }
29
+ export type ResourceSource = {
30
+ readonly kind: 'embedded';
31
+ readonly value: unknown;
32
+ readonly name?: string;
33
+ } | {
34
+ readonly kind: 'slot';
35
+ readonly slotId: string;
36
+ readonly filename?: string;
37
+ };
38
+ export interface CheckJob {
39
+ readonly id: string;
40
+ readonly enabled: boolean;
41
+ readonly source: ResourceSource;
42
+ readonly targets?: readonly ModelSelector[];
43
+ readonly tagBindings?: Readonly<Record<string, string>>;
44
+ }
45
+ export interface DocumentMapping {
46
+ readonly blockId: string;
47
+ readonly jobId: string;
48
+ readonly resultId?: string;
49
+ }
50
+ /** Each service checks grants and run ownership again at the host boundary. */
51
+ export interface SessionAutomationHost {
52
+ loadModels(files: unknown, selectors: unknown, signal?: AbortSignal): Promise<SessionModels>;
53
+ assignTags(models: unknown, rules: unknown, signal?: AbortSignal): Promise<SessionModels>;
54
+ validate(models: unknown, jobs: unknown, files: unknown, signal?: AbortSignal): Promise<string>;
55
+ compare(models: unknown, jobs: unknown, files: unknown, signal?: AbortSignal): Promise<string>;
56
+ importComparisons(files: unknown, signal?: AbortSignal): Promise<string>;
57
+ buildDocument(validation: unknown, comparisons: unknown, historical: unknown, config: unknown, signal?: AbortSignal): Promise<string>;
58
+ exportPdf(document: unknown, signal?: AbortSignal): Promise<string>;
59
+ }
60
+ export declare const AUTOMATION_FEATURES: readonly ["sessionModels", "modelTags", "validationChecks", "comparisonChecks", "comparisonReports", "reportDocuments", "pdfArtifacts"];
61
+ export declare function parseTagRules(value: unknown): readonly FilenameTagRule[];
62
+ export declare function parseCheckJobs(value: unknown): readonly CheckJob[];
63
+ /** Linear wildcard matcher with bounded input, avoiding attacker-supplied regex. */
64
+ export declare function matchesFilename(filename: string, rule: FilenameTagRule): boolean;
65
+ //# sourceMappingURL=session-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-contracts.d.ts","sourceRoot":"","sources":["../src/session-contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
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
+ const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
5
+ const nonempty = (v) => typeof v === 'string' && v.trim().length > 0;
6
+ export function isModelSelector(v) {
7
+ if (!isRecord(v))
8
+ return false;
9
+ if (v.kind === 'slot')
10
+ return nonempty(v.slotId);
11
+ if (v.kind === 'filename')
12
+ return nonempty(v.filename);
13
+ if (v.kind === 'tagName')
14
+ return nonempty(v.tagName);
15
+ return false;
16
+ }
17
+ export const AUTOMATION_FEATURES = ['sessionModels', 'modelTags', 'validationChecks',
18
+ 'comparisonChecks', 'comparisonReports', 'reportDocuments', 'pdfArtifacts'];
19
+ export function parseTagRules(value) {
20
+ if (!Array.isArray(value) || value.length > 100)
21
+ throw new Error('Tag rules must be an array of at most 100 entries');
22
+ return value.map((r) => {
23
+ if (!isRecord(r) || typeof r.operator !== 'string' || !['equals', 'contains', 'startsWith', 'endsWith', 'glob'].includes(r.operator)
24
+ || !nonempty(r.pattern) || r.pattern.length > 1000 || !Array.isArray(r.tags)
25
+ || r.tags.length === 0 || !r.tags.every(nonempty)
26
+ || (r.caseSensitive !== undefined && typeof r.caseSensitive !== 'boolean'))
27
+ throw new Error('Invalid filename tag rule');
28
+ return r;
29
+ });
30
+ }
31
+ export function parseCheckJobs(value) {
32
+ if (!Array.isArray(value) || value.length > 100)
33
+ throw new Error('Checks must be an array of at most 100 jobs');
34
+ const ids = new Set();
35
+ return value.map((j) => {
36
+ if (!isRecord(j) || !nonempty(j.id) || ids.has(j.id) || typeof j.enabled !== 'boolean'
37
+ || !isRecord(j.source))
38
+ throw new Error('Each check needs a unique ID, enabled flag and source');
39
+ const s = j.source;
40
+ if (!(s.kind === 'embedded' && 'value' in s) && !(s.kind === 'slot' && nonempty(s.slotId)))
41
+ throw new Error(`Invalid source for ${j.id}`);
42
+ if (s.kind === 'embedded' && s.name !== undefined && !nonempty(s.name))
43
+ throw new Error(`Invalid name for ${j.id}`);
44
+ if (s.filename !== undefined && !nonempty(s.filename))
45
+ throw new Error(`Invalid filename for ${j.id}`);
46
+ if (j.targets !== undefined && (!Array.isArray(j.targets) || !j.targets.every(isModelSelector)))
47
+ throw new Error(`Invalid targets for ${j.id}`);
48
+ if (j.tagBindings !== undefined && (!isRecord(j.tagBindings) || !Object.values(j.tagBindings).every(nonempty)))
49
+ throw new Error(`Invalid tag bindings for ${j.id}`);
50
+ ids.add(j.id);
51
+ return j;
52
+ });
53
+ }
54
+ /** Linear wildcard matcher with bounded input, avoiding attacker-supplied regex. */
55
+ export function matchesFilename(filename, rule) {
56
+ const value = rule.caseSensitive ? filename : filename.toLowerCase();
57
+ const pattern = rule.caseSensitive ? rule.pattern : rule.pattern.toLowerCase();
58
+ switch (rule.operator) {
59
+ case 'equals': return value === pattern;
60
+ case 'contains': return value.includes(pattern);
61
+ case 'startsWith': return value.startsWith(pattern);
62
+ case 'endsWith': return value.endsWith(pattern);
63
+ case 'glob': {
64
+ let i = 0, p = 0, star = -1, retry = 0;
65
+ while (i < value.length) {
66
+ if (pattern[p] === '?' || pattern[p] === value[i]) {
67
+ i++;
68
+ p++;
69
+ }
70
+ else if (pattern[p] === '*') {
71
+ star = p++;
72
+ retry = i;
73
+ }
74
+ else if (star >= 0) {
75
+ p = star + 1;
76
+ i = ++retry;
77
+ }
78
+ else
79
+ return false;
80
+ }
81
+ while (pattern[p] === '*')
82
+ p++;
83
+ return p === pattern.length;
84
+ }
85
+ }
86
+ }
87
+ //# sourceMappingURL=session-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-contracts.js","sourceRoot":"","sources":["../src/session-contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type FlowNodeDef } from './host.js';
2
+ export declare const sessionNodes: FlowNodeDef[];
3
+ //# sourceMappingURL=session-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-nodes.d.ts","sourceRoot":"","sources":["../src/session-nodes.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4C,KAAK,WAAW,EAAY,MAAM,WAAW,CAAC;AAajG,eAAO,MAAM,YAAY,EAAE,WAAW,EAkDrC,CAAC"}
@@ -0,0 +1,67 @@
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 { ANY_ITEM, SCALAR_ITEM, requireCapability } from './host.js';
5
+ function services(ctx, grants) {
6
+ for (const grant of grants)
7
+ requireCapability(ctx, grant);
8
+ ctx.signal?.throwIfAborted();
9
+ if (!ctx.host.automation)
10
+ throw new Error('This host does not provide session automation');
11
+ return ctx.host.automation;
12
+ }
13
+ const files = { name: 'files', kind: 'json', default: {} };
14
+ const jobs = { name: 'jobs', kind: 'json', default: [] };
15
+ const optionalToken = (name) => ({ name, type: SCALAR_ITEM, optional: true, nullable: true });
16
+ export const sessionNodes = [
17
+ {
18
+ type: 'session.loadModels', title: 'Load local models', category: 'session',
19
+ doc: 'Load selected local IFC files, or explicitly bind loaded models, through the canonical loader.',
20
+ inputs: [], outputs: [{ name: 'models', type: ANY_ITEM }],
21
+ params: [files, { name: 'selectors', kind: 'json', default: [] }],
22
+ capabilities: ['model.create'], requires: { backend: ['sessionModels'] }, writes: 'model', volatile: true,
23
+ run: async (ctx, _i, p) => ({ models: await services(ctx, ['model.create']).loadModels(p.files, p.selectors, ctx.signal) }),
24
+ },
25
+ {
26
+ type: 'session.assignModelTags', title: 'Assign filename tags', category: 'session',
27
+ inputs: [{ name: 'models', type: ANY_ITEM }], outputs: [{ name: 'models', type: ANY_ITEM }],
28
+ params: [{ name: 'rules', kind: 'json', default: [] }],
29
+ capabilities: ['storage.write:modelTags'], requires: { backend: ['modelTags'] }, writes: 'model', volatile: true,
30
+ run: async (ctx, i, p) => ({ models: await services(ctx, ['storage.write:modelTags']).assignTags(i.models, p.rules, ctx.signal) }),
31
+ },
32
+ {
33
+ type: 'validation.runChecks', title: 'Run validation checks', category: 'session',
34
+ inputs: [{ name: 'models', type: ANY_ITEM }], outputs: [{ name: 'reports', type: SCALAR_ITEM }],
35
+ params: [jobs, files], capabilities: ['model.read', 'storage.write:validationReports'],
36
+ requires: { backend: ['validationChecks'] }, reads: 'model', volatile: true,
37
+ run: async (ctx, i, p) => ({ reports: await services(ctx, ['model.read', 'storage.write:validationReports']).validate(i.models, p.jobs, p.files, ctx.signal) }),
38
+ },
39
+ {
40
+ type: 'comparison.runChecks', title: 'Run comparison recipes', category: 'session',
41
+ inputs: [{ name: 'models', type: ANY_ITEM }], outputs: [{ name: 'reports', type: SCALAR_ITEM }],
42
+ params: [jobs, files], capabilities: ['model.read', 'storage.write:savedComparisons'],
43
+ requires: { backend: ['comparisonChecks'] }, reads: 'model', volatile: true,
44
+ run: async (ctx, i, p) => ({ reports: await services(ctx, ['model.read', 'storage.write:savedComparisons']).compare(i.models, p.jobs, p.files, ctx.signal) }),
45
+ },
46
+ {
47
+ type: 'report.importComparisons', title: 'Import comparison reports', category: 'report',
48
+ inputs: [], outputs: [{ name: 'reports', type: SCALAR_ITEM }], params: [files],
49
+ capabilities: ['storage.write:savedComparisons'], requires: { backend: ['comparisonReports'] }, volatile: true,
50
+ run: async (ctx, _i, p) => ({ reports: await services(ctx, ['storage.write:savedComparisons']).importComparisons(p.files, ctx.signal) }),
51
+ },
52
+ {
53
+ type: 'report.buildDocument', title: 'Build report document', category: 'report',
54
+ inputs: [optionalToken('validation'), optionalToken('comparisons'), optionalToken('historical')],
55
+ outputs: [{ name: 'document', type: SCALAR_ITEM }],
56
+ params: [{ name: 'config', kind: 'json', default: {} }],
57
+ capabilities: ['storage.write:documents'], requires: { backend: ['reportDocuments'] }, volatile: true,
58
+ run: async (ctx, i, p) => ({ document: await services(ctx, ['storage.write:documents']).buildDocument(i.validation, i.comparisons, i.historical, p.config, ctx.signal) }),
59
+ },
60
+ {
61
+ type: 'report.exportPdf', title: 'Generate report PDF', category: 'report',
62
+ inputs: [{ name: 'document', type: SCALAR_ITEM }], outputs: [{ name: 'artifact', type: SCALAR_ITEM }], params: [],
63
+ capabilities: ['export.create:pdf'], requires: { backend: ['pdfArtifacts'] }, volatile: true,
64
+ run: async (ctx, i) => ({ artifact: await services(ctx, ['export.create:pdf']).exportPdf(i.document, ctx.signal) }),
65
+ },
66
+ ];
67
+ //# sourceMappingURL=session-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-nodes.js","sourceRoot":"","sources":["../src/session-nodes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/flow-nodes",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Standard node library for @ifc-lite/flow over the ifc-lite SDK: model reads and writes, tables, viewer, and a sandboxed Script node",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,21 +14,21 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "exceljs": "^4.4.0",
17
- "@ifc-lite/data": "^6.0.0",
18
- "@ifc-lite/export": "^4.7.4",
19
- "@ifc-lite/documents-api": "^0.2.0",
20
- "@ifc-lite/extensions": "^0.10.0",
21
17
  "@ifc-lite/bcf-api": "^0.2.4",
22
- "@ifc-lite/flow": "^0.4.0",
23
- "@ifc-lite/mutations": "^2.8.0",
24
- "@ifc-lite/query": "^2.5.1",
25
- "@ifc-lite/sandbox": "^2.8.0",
26
- "@ifc-lite/sdk": "^7.1.3"
18
+ "@ifc-lite/data": "^6.1.0",
19
+ "@ifc-lite/documents-api": "^0.2.0",
20
+ "@ifc-lite/export": "^4.9.0",
21
+ "@ifc-lite/extensions": "^0.10.1",
22
+ "@ifc-lite/flow": "^0.5.0",
23
+ "@ifc-lite/mutations": "^3.1.0",
24
+ "@ifc-lite/query": "^2.5.2",
25
+ "@ifc-lite/sdk": "^9.0.0",
26
+ "@ifc-lite/sandbox": "^2.10.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@types/node": "^26.6.1",
29
+ "@types/node": "^26.6.2",
30
30
  "typescript": "^6.0.3",
31
- "vitest": "^5.0.1"
31
+ "vitest": "^5.0.2"
32
32
  },
33
33
  "license": "MPL-2.0",
34
34
  "author": "Louis True",