@process.co/element-types 0.0.8 → 0.0.10

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 (37) hide show
  1. package/dist/authoring-contract-types.d.ts +109 -0
  2. package/dist/authoring-contract-types.d.ts.map +1 -0
  3. package/dist/authoring-contract-types.js +13 -0
  4. package/dist/authoring-contract.d.ts +104 -0
  5. package/dist/authoring-contract.d.ts.map +1 -0
  6. package/dist/authoring-contract.js +115 -0
  7. package/dist/builtin-action-slots-registry.d.ts +31 -0
  8. package/dist/builtin-action-slots-registry.d.ts.map +1 -0
  9. package/dist/builtin-action-slots-registry.js +30 -0
  10. package/dist/index.d.ts +9 -28
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +10 -1
  13. package/dist/materialize-authoring-from-cli-output.d.ts +51 -0
  14. package/dist/materialize-authoring-from-cli-output.d.ts.map +1 -0
  15. package/dist/materialize-authoring-from-cli-output.js +99 -0
  16. package/dist/materialize-slot-definition.d.ts +32 -0
  17. package/dist/materialize-slot-definition.d.ts.map +1 -0
  18. package/dist/materialize-slot-definition.js +68 -0
  19. package/dist/platform-loader-type.d.ts +11 -0
  20. package/dist/platform-loader-type.d.ts.map +1 -0
  21. package/dist/platform-loader-type.js +18 -0
  22. package/dist/process-element-cli-output.d.ts +82 -0
  23. package/dist/process-element-cli-output.d.ts.map +1 -0
  24. package/dist/process-element-cli-output.js +3 -0
  25. package/dist/slot-definition.d.ts +30 -0
  26. package/dist/slot-definition.d.ts.map +1 -0
  27. package/dist/slot-definition.js +3 -0
  28. package/package.json +1 -1
  29. package/src/authoring-contract-types.ts +132 -0
  30. package/src/authoring-contract.ts +243 -0
  31. package/src/builtin-action-slots-registry.ts +36 -0
  32. package/src/index.ts +44 -29
  33. package/src/materialize-authoring-from-cli-output.ts +157 -0
  34. package/src/materialize-slot-definition.ts +88 -0
  35. package/src/platform-loader-type.ts +14 -0
  36. package/src/process-element-cli-output.ts +85 -0
  37. package/src/slot-definition.ts +31 -0
@@ -0,0 +1,51 @@
1
+ import { type MaterializedSlotDefinition } from './materialize-slot-definition';
2
+ import type { ProcessElementCliOutputWire } from './process-element-cli-output';
3
+ export type MaterializedPropAuthoring = {
4
+ key: string;
5
+ label: string;
6
+ description: string;
7
+ /** String from loader **`type`** (e.g. **`string`**, **`object`**, or zodex-serialized object as JSON). */
8
+ wireType: string;
9
+ required: boolean;
10
+ hasJsonType: boolean;
11
+ isFunction: boolean;
12
+ };
13
+ export type MaterializedActionAuthoringEntry = {
14
+ kind: 'action';
15
+ fern: string;
16
+ /** Raw action key from the element (may include namespace prefix). */
17
+ elementKey: string;
18
+ name: string;
19
+ description?: string;
20
+ returns?: string;
21
+ props: MaterializedPropAuthoring[];
22
+ slots: MaterializedSlotDefinition | null;
23
+ };
24
+ export type MaterializedSignalAuthoringEntry = {
25
+ kind: 'signal';
26
+ fern: string;
27
+ elementKey: string;
28
+ name: string;
29
+ description?: string;
30
+ returns?: string;
31
+ props: MaterializedPropAuthoring[];
32
+ };
33
+ export type MaterializedAuthoringCatalog = {
34
+ namespace: string;
35
+ actionsByFern: Record<string, MaterializedActionAuthoringEntry>;
36
+ signalsByFern: Record<string, MaterializedSignalAuthoringEntry>;
37
+ };
38
+ /**
39
+ * Build registry FERN for an action (**`namespace::action:slug`**), matching common API normalization.
40
+ */
41
+ export declare function buildProcessActionFern(namespace: string, actionKey: string): string;
42
+ /** Build registry FERN for a signal (**`namespace::signal:slug`**). */
43
+ export declare function buildProcessSignalFern(namespace: string, signalKey: string): string;
44
+ /**
45
+ * Turn the **entire compatibility CLI / `loadElementPointers` JSON** into FERN-keyed authoring material
46
+ * (props + slot paths + returns hints) for codegen or merging into **`@process.co/workflow-sdk`**.
47
+ *
48
+ * @param namespace — FERN namespace segment (e.g. **`process-internal`**). Defaults to **`info.name`** (element app slug).
49
+ */
50
+ export declare function materializeAuthoringCatalogFromCliOutput(info: ProcessElementCliOutputWire, namespace?: string): MaterializedAuthoringCatalog;
51
+ //# sourceMappingURL=materialize-authoring-from-cli-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialize-authoring-from-cli-output.d.ts","sourceRoot":"","sources":["../src/materialize-authoring-from-cli-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3G,OAAO,KAAK,EAEV,2BAA2B,EAG5B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,2GAA2G;IAC3G,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC,KAAK,EAAE,0BAA0B,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;IAChE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;CACjE,CAAC;AAOF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGnF;AA6DD;;;;;GAKG;AACH,wBAAgB,wCAAwC,CACtD,IAAI,EAAE,2BAA2B,EACjC,SAAS,CAAC,EAAE,MAAM,GACjB,4BAA4B,CAsB9B"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildProcessActionFern = buildProcessActionFern;
4
+ exports.buildProcessSignalFern = buildProcessSignalFern;
5
+ exports.materializeAuthoringCatalogFromCliOutput = materializeAuthoringCatalogFromCliOutput;
6
+ const materialize_slot_definition_1 = require("./materialize-slot-definition");
7
+ function stripNamespacePrefixFromActionKey(namespace, key) {
8
+ const prefix = `${namespace}-`;
9
+ return key.startsWith(prefix) ? key.slice(prefix.length) : key;
10
+ }
11
+ /**
12
+ * Build registry FERN for an action (**`namespace::action:slug`**), matching common API normalization.
13
+ */
14
+ function buildProcessActionFern(namespace, actionKey) {
15
+ const slug = stripNamespacePrefixFromActionKey(namespace, actionKey);
16
+ return `${namespace}::action:${slug}`;
17
+ }
18
+ /** Build registry FERN for a signal (**`namespace::signal:slug`**). */
19
+ function buildProcessSignalFern(namespace, signalKey) {
20
+ const slug = stripNamespacePrefixFromActionKey(namespace, signalKey);
21
+ return `${namespace}::signal:${slug}`;
22
+ }
23
+ function wireTypeLabel(type) {
24
+ if (type === undefined || type === null) {
25
+ return 'unknown';
26
+ }
27
+ if (typeof type === 'string') {
28
+ return type;
29
+ }
30
+ try {
31
+ return JSON.stringify(type);
32
+ }
33
+ catch {
34
+ return 'unknown';
35
+ }
36
+ }
37
+ function materializeProp(p) {
38
+ return {
39
+ key: p.key,
40
+ label: p.label,
41
+ description: typeof p.description === 'string' ? p.description : '',
42
+ wireType: wireTypeLabel(p.type),
43
+ required: p.required === true,
44
+ hasJsonType: p.jsonType !== undefined && p.jsonType !== null,
45
+ isFunction: p.isFunction === true,
46
+ };
47
+ }
48
+ function materializeAction(namespace, a) {
49
+ const fern = buildProcessActionFern(namespace, a.key);
50
+ return {
51
+ kind: 'action',
52
+ fern,
53
+ elementKey: a.key,
54
+ name: a.name,
55
+ description: typeof a.description === 'string' ? a.description : undefined,
56
+ returns: typeof a.returns === 'string' ? a.returns : undefined,
57
+ props: (Array.isArray(a.props) ? a.props : []).map(materializeProp),
58
+ slots: (0, materialize_slot_definition_1.materializeSlotDefinition)(a.slots),
59
+ };
60
+ }
61
+ function materializeSignal(namespace, s) {
62
+ const fern = buildProcessSignalFern(namespace, s.key);
63
+ return {
64
+ kind: 'signal',
65
+ fern,
66
+ elementKey: s.key,
67
+ name: s.name,
68
+ description: typeof s.description === 'string' ? s.description : undefined,
69
+ returns: typeof s.returns === 'string' ? s.returns : undefined,
70
+ props: (Array.isArray(s.props) ? s.props : []).map(materializeProp),
71
+ };
72
+ }
73
+ /**
74
+ * Turn the **entire compatibility CLI / `loadElementPointers` JSON** into FERN-keyed authoring material
75
+ * (props + slot paths + returns hints) for codegen or merging into **`@process.co/workflow-sdk`**.
76
+ *
77
+ * @param namespace — FERN namespace segment (e.g. **`process-internal`**). Defaults to **`info.name`** (element app slug).
78
+ */
79
+ function materializeAuthoringCatalogFromCliOutput(info, namespace) {
80
+ const ns = namespace ?? info.name;
81
+ const actionsByFern = {};
82
+ const signalsByFern = {};
83
+ for (const a of info.actions) {
84
+ if (a?.type !== 'action' || typeof a.key !== 'string') {
85
+ continue;
86
+ }
87
+ const entry = materializeAction(ns, a);
88
+ actionsByFern[entry.fern] = entry;
89
+ }
90
+ for (const s of info.signals) {
91
+ if (s?.type !== 'signal' || typeof s.key !== 'string') {
92
+ continue;
93
+ }
94
+ const entry = materializeSignal(ns, s);
95
+ signalsByFern[entry.fern] = entry;
96
+ }
97
+ return { namespace: ns, actionsByFern, signalsByFern };
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWxpemUtYXV0aG9yaW5nLWZyb20tY2xpLW91dHB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRlcmlhbGl6ZS1hdXRob3JpbmctZnJvbS1jbGktb3V0cHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdURBLHdEQUdDO0FBR0Qsd0RBR0M7QUFtRUQsNEZBeUJDO0FBNUpELCtFQUEyRztBQStDM0csU0FBUyxpQ0FBaUMsQ0FBQyxTQUFpQixFQUFFLEdBQVc7SUFDdkUsTUFBTSxNQUFNLEdBQUcsR0FBRyxTQUFTLEdBQUcsQ0FBQztJQUMvQixPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDakUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxTQUFpQjtJQUN6RSxNQUFNLElBQUksR0FBRyxpQ0FBaUMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDckUsT0FBTyxHQUFHLFNBQVMsWUFBWSxJQUFJLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLFNBQWdCLHNCQUFzQixDQUFDLFNBQWlCLEVBQUUsU0FBaUI7SUFDekUsTUFBTSxJQUFJLEdBQUcsaUNBQWlDLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLE9BQU8sR0FBRyxTQUFTLFlBQVksSUFBSSxFQUFFLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQWE7SUFDbEMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUs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
@@ -0,0 +1,32 @@
1
+ import type { ISlotDefinition } from './slot-definition';
2
+ export type MaterializedSlotBranch = {
3
+ kind: 'static' | 'dynamic';
4
+ id?: string;
5
+ label?: string;
6
+ branchValue?: string;
7
+ path?: string;
8
+ idPath?: string;
9
+ labelPath?: string;
10
+ enabledPath?: string;
11
+ actionsPath?: string;
12
+ exportsPath?: string;
13
+ hideOnDisable?: boolean;
14
+ labelPlaceholderTemplate?: string;
15
+ labelPlaceholderValue?: string;
16
+ };
17
+ export type MaterializedSlotLayout = {
18
+ showBranchLabels?: boolean;
19
+ activeSlotId?: string;
20
+ activeSlotLabel?: string;
21
+ hideDisabled?: boolean;
22
+ hideDisabledPath?: string;
23
+ hideOnDisable?: boolean;
24
+ exportSchemaPath?: string;
25
+ };
26
+ export type MaterializedSlotDefinition = {
27
+ layout: MaterializedSlotLayout;
28
+ branches: MaterializedSlotBranch[];
29
+ };
30
+ /** Normalize **`ISlotDefinition`** for codegen / workflow inference (JSON-serializable). */
31
+ export declare function materializeSlotDefinition(def: ISlotDefinition | null | undefined): MaterializedSlotDefinition | null;
32
+ //# sourceMappingURL=materialize-slot-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialize-slot-definition.d.ts","sourceRoot":"","sources":["../src/materialize-slot-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAyCF,4FAA4F;AAC5F,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GACtC,0BAA0B,GAAG,IAAI,CAQnC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.materializeSlotDefinition = materializeSlotDefinition;
4
+ function branchKind(row) {
5
+ return 'type' in row && row.type === 'static' ? 'static' : 'dynamic';
6
+ }
7
+ function pickBranch(row) {
8
+ const b = { kind: branchKind(row) };
9
+ if (row.id !== undefined)
10
+ b.id = row.id;
11
+ if (row.label !== undefined)
12
+ b.label = row.label;
13
+ if (row.branchValue !== undefined)
14
+ b.branchValue = row.branchValue;
15
+ if (row.path !== undefined)
16
+ b.path = row.path;
17
+ if (row.idPath !== undefined)
18
+ b.idPath = row.idPath;
19
+ if (row.labelPath !== undefined)
20
+ b.labelPath = row.labelPath;
21
+ if (row.enabledPath !== undefined)
22
+ b.enabledPath = row.enabledPath;
23
+ if (row.actionsPath !== undefined)
24
+ b.actionsPath = row.actionsPath;
25
+ if (row.exportsPath !== undefined)
26
+ b.exportsPath = row.exportsPath;
27
+ if (row.hideOnDisable !== undefined)
28
+ b.hideOnDisable = row.hideOnDisable;
29
+ if (row.labelPlaceholderTemplate !== undefined)
30
+ b.labelPlaceholderTemplate = row.labelPlaceholderTemplate;
31
+ if (row.labelPlaceholderValue !== undefined)
32
+ b.labelPlaceholderValue = row.labelPlaceholderValue;
33
+ return b;
34
+ }
35
+ function pickLayout(def) {
36
+ const layout = {};
37
+ if (def.showBranchLabels !== undefined)
38
+ layout.showBranchLabels = def.showBranchLabels;
39
+ if (def.activeSlotId !== undefined)
40
+ layout.activeSlotId = def.activeSlotId;
41
+ if (def.activeSlotLabel !== undefined)
42
+ layout.activeSlotLabel = def.activeSlotLabel;
43
+ if (def.hideDisabled !== undefined)
44
+ layout.hideDisabled = def.hideDisabled;
45
+ if (def.hideDisabledPath !== undefined)
46
+ layout.hideDisabledPath = def.hideDisabledPath;
47
+ if (def.hideOnDisable !== undefined)
48
+ layout.hideOnDisable = def.hideOnDisable;
49
+ if (def.exportSchemaPath !== undefined)
50
+ layout.exportSchemaPath = def.exportSchemaPath;
51
+ return layout;
52
+ }
53
+ function isEffectivelyEmpty(def) {
54
+ const rows = def.slots ?? [];
55
+ const layout = pickLayout(def);
56
+ return rows.length === 0 && Object.keys(layout).length === 0;
57
+ }
58
+ /** Normalize **`ISlotDefinition`** for codegen / workflow inference (JSON-serializable). */
59
+ function materializeSlotDefinition(def) {
60
+ if (def == null || isEffectivelyEmpty(def)) {
61
+ return null;
62
+ }
63
+ return {
64
+ layout: pickLayout(def),
65
+ branches: (def.slots ?? []).map(pickBranch),
66
+ };
67
+ }
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWxpemUtc2xvdC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21hdGVyaWFsaXplLXNsb3QtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTZFQSw4REFVQztBQWxERCxTQUFTLFVBQVUsQ0FBQyxHQUE0RDtJQUM5RSxPQUFPLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxHQUE0RDtJQUM5RSxNQUFNLENBQUMsR0FBMkIsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDNUQsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLFNBQVM7UUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVM7UUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDakQsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLFNBQVM7UUFBRSxDQUFDLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDbkUsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDOUMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVM7UUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDcEQsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDN0QsSUFBSSxHQUFHLENBQUMsV0FB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
@@ -0,0 +1,11 @@
1
+ /**
2
+ * **`prop.type`** string prefixes that bind to runtime platform implementations
3
+ * (**`$.interface.http`**, **`$.service.db`**, **`$.interface.timer`**, …).
4
+ *
5
+ * Keep in sync with:
6
+ * - **`@process.co/compatibility`** authoring registry (**`excludeFromAuthoringInstanceShape`**)
7
+ * - **`apps/web`** expression validation / console (skip misleading type-mismatch noise)
8
+ */
9
+ export declare const PLATFORM_BOUND_LOADER_TYPE_PREFIXES: readonly ["$.interface.", "$.service."];
10
+ export declare function isPlatformBoundLoaderType(type: string): boolean;
11
+ //# sourceMappingURL=platform-loader-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-loader-type.d.ts","sourceRoot":"","sources":["../src/platform-loader-type.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,mCAAmC,yCAA0C,CAAC;AAE3F,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/D"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PLATFORM_BOUND_LOADER_TYPE_PREFIXES = void 0;
4
+ exports.isPlatformBoundLoaderType = isPlatformBoundLoaderType;
5
+ /**
6
+ * **`prop.type`** string prefixes that bind to runtime platform implementations
7
+ * (**`$.interface.http`**, **`$.service.db`**, **`$.interface.timer`**, …).
8
+ *
9
+ * Keep in sync with:
10
+ * - **`@process.co/compatibility`** authoring registry (**`excludeFromAuthoringInstanceShape`**)
11
+ * - **`apps/web`** expression validation / console (skip misleading type-mismatch noise)
12
+ */
13
+ exports.PLATFORM_BOUND_LOADER_TYPE_PREFIXES = ['$.interface.', '$.service.'];
14
+ function isPlatformBoundLoaderType(type) {
15
+ const t = type.trim();
16
+ return exports.PLATFORM_BOUND_LOADER_TYPE_PREFIXES.some((p) => t.startsWith(p));
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tbG9hZGVyLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxhdGZvcm0tbG9hZGVyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBVUEsOERBR0M7QUFiRDs7Ozs7OztHQU9HO0FBQ1UsUUFBQSxtQ0FBbUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQVUsQ0FBQztBQUUzRixTQUFnQix5QkFBeUIsQ0FBQyxJQUFZO0lBQ3BELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixPQUFPLDJDQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUMifQ==
@@ -0,0 +1,82 @@
1
+ import type { ISlotDefinition } from './slot-definition';
2
+ /**
3
+ * One flattened prop row from **`process-co` compatibility `loadElementPointers`** (`buildProp` output).
4
+ * Matches **`@process.co/elements`** `IProcessDefinitionUIPointers.props[]` plus loader fields.
5
+ */
6
+ export type ProcessElementPropCliWire = {
7
+ key: string;
8
+ label: string;
9
+ description?: string;
10
+ type?: unknown;
11
+ jsonType?: unknown;
12
+ isFunction?: boolean;
13
+ required?: boolean;
14
+ default?: unknown;
15
+ ui?: string;
16
+ options?: unknown;
17
+ deps?: string[];
18
+ placeholder?: string;
19
+ [key: string]: unknown;
20
+ };
21
+ /**
22
+ * One action row from **`loadElementPointers`** for a Process element (not Pipedream shape).
23
+ * This is what sits in **`IProcessDefinitionUIInfo.actions[]`** after the process loader runs.
24
+ */
25
+ export type ProcessElementActionCliWire = {
26
+ type: 'action';
27
+ key: string;
28
+ name: string;
29
+ description?: string;
30
+ icon?: unknown;
31
+ ui?: string;
32
+ categoryKey?: string;
33
+ sampleEmit?: unknown;
34
+ returns?: string;
35
+ slots?: ISlotDefinition;
36
+ noAuth?: boolean;
37
+ hasNew?: boolean;
38
+ initValue?: unknown;
39
+ props?: ProcessElementPropCliWire[];
40
+ [key: string]: unknown;
41
+ };
42
+ /**
43
+ * One signal row from **`loadElementPointers`** for a Process element.
44
+ */
45
+ export type ProcessElementSignalCliWire = {
46
+ type: 'signal';
47
+ key: string;
48
+ name: string;
49
+ description?: string;
50
+ ui?: string;
51
+ categoryKey?: string;
52
+ sampleEmit?: unknown;
53
+ returns?: string;
54
+ noAuth?: boolean;
55
+ hasNew?: boolean;
56
+ initValue?: unknown;
57
+ icon?: unknown;
58
+ hooks?: boolean;
59
+ dedupe?: unknown;
60
+ http?: unknown;
61
+ instant?: boolean;
62
+ props?: ProcessElementPropCliWire[];
63
+ [key: string]: unknown;
64
+ };
65
+ /**
66
+ * Full object emitted by **`process-element`** (compatibility CLI): **`SuperJSON.stringify(loadElementPointers(...))`**.
67
+ * Structurally aligned with **`@process.co/elements` `IProcessDefinitionUIInfo`** plus process-loader fields on each row.
68
+ */
69
+ export type ProcessElementCliOutputWire = {
70
+ elementType: 'process' | 'pipedream' | 'dofloV1' | 'n8n';
71
+ /** App / namespace slug (`element.app`); used as default FERN namespace when building keys. */
72
+ name: string;
73
+ description: {
74
+ short: string;
75
+ long: string;
76
+ MD: string;
77
+ };
78
+ actions: ProcessElementActionCliWire[];
79
+ signals: ProcessElementSignalCliWire[];
80
+ credentials: unknown[];
81
+ };
82
+ //# sourceMappingURL=process-element-cli-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-element-cli-output.d.ts","sourceRoot":"","sources":["../src/process-element-cli-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;IACzD,+FAA+F;IAC/F,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACvC,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACvC,WAAW,EAAE,OAAO,EAAE,CAAC;CACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1lbGVtZW50LWNsaS1vdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvY2Vzcy1lbGVtZW50LWNsaS1vdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,30 @@
1
+ export type ISlotInstanceDefinition = {
2
+ id?: string;
3
+ label?: string;
4
+ enabled?: boolean;
5
+ path?: string;
6
+ idPath?: string;
7
+ labelPath?: string;
8
+ enabledPath?: string;
9
+ labelPlaceholderTemplate?: string;
10
+ labelPlaceholderValue?: string;
11
+ branchValue?: string;
12
+ hideOnDisable?: boolean;
13
+ actionsPath?: string;
14
+ exportsPath?: string;
15
+ };
16
+ export type ISlotStaticInstanceDefinition = ISlotInstanceDefinition & {
17
+ type: 'static';
18
+ };
19
+ export type ISlotDefinition = {
20
+ showBranchLabels?: boolean;
21
+ activeSlotId?: string;
22
+ activeSlotLabel?: string;
23
+ hideDisabled?: boolean;
24
+ /** Expression/template path for per-row hide-disabled (flow editor / container layout). */
25
+ hideDisabledPath?: string;
26
+ hideOnDisable?: boolean;
27
+ exportSchemaPath?: string;
28
+ slots?: (ISlotInstanceDefinition | ISlotStaticInstanceDefinition)[];
29
+ };
30
+ //# sourceMappingURL=slot-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-definition.d.ts","sourceRoot":"","sources":["../src/slot-definition.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GAAG;IACpE,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,uBAAuB,GAAG,6BAA6B,CAAC,EAAE,CAAC;CACrE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Nsb3QtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@process.co/element-types",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Locked authoring contract **types only** (published for partners).
3
+ * Runtime: **`@process.co/compatibility`** **`authoring-spec`** — **`authoringCatalogContractFromCliOutput`**, **`materializeAuthoringCatalogFromCliOutput`**, etc.
4
+ */
5
+
6
+ /**
7
+ * Bump when this contract changes — regenerate **`@process.co/elements`** **`generate:authoring`** and other codegen consumers.
8
+ * Raw CLI JSON does not carry this; the **contract** is the stable TS surface.
9
+ */
10
+ export const ELEMENT_AUTHORING_CONTRACT_VERSION = 1 as const;
11
+
12
+ /**
13
+ * Normalized prop kind for **`keyof` / conditional types** (not the raw loader string).
14
+ */
15
+ export type AuthoringPropWireKind =
16
+ | 'string'
17
+ | 'number'
18
+ | 'boolean'
19
+ | 'integer'
20
+ | 'object'
21
+ | 'array'
22
+ | 'unknown';
23
+
24
+ /** One action prop in the **locked** authoring shape. */
25
+ export interface AuthoringPropContract {
26
+ readonly key: string;
27
+ readonly label: string;
28
+ readonly wireKind: AuthoringPropWireKind;
29
+ readonly required: boolean;
30
+ /**
31
+ * When true, the prop is **not** part of the user instance payload (e.g. loader **`type`** is
32
+ * **`$.interface.http`** / **`$.service.db`** — runtime-injected). Merged **`GeneratedAuthoringStepPropsByFern`**
33
+ * emission skips these keys.
34
+ */
35
+ readonly excludeFromAuthoringInstanceShape?: boolean;
36
+ }
37
+
38
+ /**
39
+ * One container branch. **`childStepsProperty`** is intentionally a **string literal type** so
40
+ * `defineGroup`-style APIs can use `B['childStepsProperty']` and get `'actions'`, not `string`.
41
+ */
42
+ export interface SlotBranchAuthoringContract {
43
+ readonly kind: 'static' | 'dynamic';
44
+ readonly slotRowId?: string;
45
+ readonly paths: Readonly<{
46
+ row?: string;
47
+ id?: string;
48
+ label?: string;
49
+ enabled?: string;
50
+ actions?: string;
51
+ exports?: string;
52
+ }>;
53
+ /**
54
+ * Where nested steps attach on each branch row, relative to that row’s object.
55
+ * Locked default **`actions`**; override only if element contract documents otherwise.
56
+ */
57
+ readonly childStepsProperty: 'actions';
58
+ /** Branch-level export callback property when present (e.g. switch **`export`**). */
59
+ readonly branchExportsProperty?: 'export' | 'exports';
60
+ }
61
+
62
+ export interface SlotsAuthoringContract {
63
+ readonly layout: Readonly<{
64
+ showBranchLabels?: boolean;
65
+ activeSlotId?: string;
66
+ activeSlotLabel?: string;
67
+ hideDisabled?: boolean;
68
+ hideDisabledPath?: string;
69
+ hideOnDisable?: boolean;
70
+ exportSchemaPath?: string;
71
+ }>;
72
+ readonly branches: readonly SlotBranchAuthoringContract[];
73
+ }
74
+
75
+ /** Locked per-action shape for FERN-keyed inference. */
76
+ export interface ActionAuthoringContract {
77
+ readonly fern: string;
78
+ readonly elementKey: string;
79
+ readonly name: string;
80
+ readonly returnsTypeName?: string;
81
+ readonly props: readonly AuthoringPropContract[];
82
+ readonly slots: SlotsAuthoringContract | null;
83
+ }
84
+
85
+ export interface SignalAuthoringContract {
86
+ readonly fern: string;
87
+ readonly elementKey: string;
88
+ readonly name: string;
89
+ readonly returnsTypeName?: string;
90
+ readonly props: readonly AuthoringPropContract[];
91
+ }
92
+
93
+ /**
94
+ * **Canonical object** for TypeScript to hang inference off — not the CLI blob.
95
+ *
96
+ * - Runtime: **`@process.co/compatibility`** **`authoringCatalogContractFromCliOutput`** / **`toAuthoringCatalogContract`**.
97
+ * - Best inference: codegen emits **`export const X = { … } as const satisfies ElementAuthoringCatalogContract`**
98
+ * so **`keyof X['actions']`** is a **union of FERN literals**, not plain **`string`**.
99
+ */
100
+ export interface ElementAuthoringCatalogContract {
101
+ readonly version: typeof ELEMENT_AUTHORING_CONTRACT_VERSION;
102
+ readonly namespace: string;
103
+ readonly actions: Readonly<Record<string, ActionAuthoringContract>>;
104
+ readonly signals: Readonly<Record<string, SignalAuthoringContract>>;
105
+ }
106
+
107
+ // --- Type-level helpers (the “magic” entry points) -------------------------------------------
108
+
109
+ export type ChildStepsPropertyForBranch<B extends SlotBranchAuthoringContract> = B['childStepsProperty'];
110
+
111
+ export type ActionPropKeys<A extends ActionAuthoringContract> = A['props'][number]['key'];
112
+
113
+ export type ActionContractByFern<
114
+ C extends ElementAuthoringCatalogContract,
115
+ Fern extends keyof C['actions'] & string,
116
+ > = C['actions'][Fern];
117
+
118
+ /**
119
+ * **Early** artifact: one file per element / integration build, written by **`@process.co/compatibility`**.
120
+ * **Late** step merges many shards (any mix of **`--dir` / `--shard` / `--cli` / `--bundle`**) into **one** file:
121
+ * **`@process.co/elements`** **`src/generated/authoring-registry.merged.ts`** — merged inference types; contract JSON stays in shards / bundles.
122
+ * **FERN keys must be unique across the merged set**; duplicates are a merge conflict (tooling should pick one winner).
123
+ * Payload is **contract-only** (**`wireKind`**, slots metadata) — not full persisted editor **`data.data`** shapes.
124
+ */
125
+ export type FernAuthoringShardFileV1 = {
126
+ readonly version: typeof ELEMENT_AUTHORING_CONTRACT_VERSION;
127
+ /** Source path or id (optional, for debugging). */
128
+ readonly source?: string;
129
+ readonly namespace: string;
130
+ readonly actions: Record<string, ActionAuthoringContract>;
131
+ readonly signals: Record<string, SignalAuthoringContract>;
132
+ };