@ontologie/schema 0.1.0-preview.1

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 (70) hide show
  1. package/README.md +149 -0
  2. package/dist/compiler/compile.d.ts +36 -0
  3. package/dist/compiler/compile.d.ts.map +1 -0
  4. package/dist/compiler/compile.js +295 -0
  5. package/dist/compiler/compile.js.map +1 -0
  6. package/dist/compiler/resolve.d.ts +14 -0
  7. package/dist/compiler/resolve.d.ts.map +1 -0
  8. package/dist/compiler/resolve.js +132 -0
  9. package/dist/compiler/resolve.js.map +1 -0
  10. package/dist/compiler/validate.d.ts +15 -0
  11. package/dist/compiler/validate.d.ts.map +1 -0
  12. package/dist/compiler/validate.js +188 -0
  13. package/dist/compiler/validate.js.map +1 -0
  14. package/dist/diff/diff.d.ts +20 -0
  15. package/dist/diff/diff.d.ts.map +1 -0
  16. package/dist/diff/diff.js +393 -0
  17. package/dist/diff/diff.js.map +1 -0
  18. package/dist/diff/format.d.ts +21 -0
  19. package/dist/diff/format.d.ts.map +1 -0
  20. package/dist/diff/format.js +88 -0
  21. package/dist/diff/format.js.map +1 -0
  22. package/dist/dsl/action.d.ts +148 -0
  23. package/dist/dsl/action.d.ts.map +1 -0
  24. package/dist/dsl/action.js +330 -0
  25. package/dist/dsl/action.js.map +1 -0
  26. package/dist/dsl/interface.d.ts +32 -0
  27. package/dist/dsl/interface.d.ts.map +1 -0
  28. package/dist/dsl/interface.js +77 -0
  29. package/dist/dsl/interface.js.map +1 -0
  30. package/dist/dsl/link.d.ts +34 -0
  31. package/dist/dsl/link.d.ts.map +1 -0
  32. package/dist/dsl/link.js +95 -0
  33. package/dist/dsl/link.js.map +1 -0
  34. package/dist/dsl/object-type.d.ts +35 -0
  35. package/dist/dsl/object-type.d.ts.map +1 -0
  36. package/dist/dsl/object-type.js +102 -0
  37. package/dist/dsl/object-type.js.map +1 -0
  38. package/dist/dsl/property.d.ts +43 -0
  39. package/dist/dsl/property.d.ts.map +1 -0
  40. package/dist/dsl/property.js +125 -0
  41. package/dist/dsl/property.js.map +1 -0
  42. package/dist/index.d.ts +47 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +63 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/lock/lockfile.d.ts +31 -0
  47. package/dist/lock/lockfile.d.ts.map +1 -0
  48. package/dist/lock/lockfile.js +86 -0
  49. package/dist/lock/lockfile.js.map +1 -0
  50. package/dist/model-assurance.d.ts +27 -0
  51. package/dist/model-assurance.d.ts.map +1 -0
  52. package/dist/model-assurance.js +194 -0
  53. package/dist/model-assurance.js.map +1 -0
  54. package/dist/pull/emit-schema.d.ts +24 -0
  55. package/dist/pull/emit-schema.d.ts.map +1 -0
  56. package/dist/pull/emit-schema.js +476 -0
  57. package/dist/pull/emit-schema.js.map +1 -0
  58. package/dist/push/execute.d.ts +34 -0
  59. package/dist/push/execute.d.ts.map +1 -0
  60. package/dist/push/execute.js +119 -0
  61. package/dist/push/execute.js.map +1 -0
  62. package/dist/push/plan.d.ts +37 -0
  63. package/dist/push/plan.d.ts.map +1 -0
  64. package/dist/push/plan.js +484 -0
  65. package/dist/push/plan.js.map +1 -0
  66. package/dist/types.d.ts +330 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +5 -0
  69. package/dist/types.js.map +1 -0
  70. package/package.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Format a DiffResult into human-readable output with +/-/~ prefixes.
3
+ */
4
+ import type { DiffResult } from '../types.js';
5
+ /**
6
+ * Format a DiffResult into human-readable output.
7
+ *
8
+ * @example
9
+ * ```
10
+ * + ObjectType: Invoice (new)
11
+ * ~ ObjectType: Employee
12
+ * + property: department (string, required)
13
+ * - property: title (removed)
14
+ * ~ property: salary (indexed: false → true)
15
+ * - LinkType: Employee__company (removed)
16
+ *
17
+ * 2 types changed, 1 link changed
18
+ * ```
19
+ */
20
+ export declare function formatDiff(result: DiffResult): string;
21
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/diff/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AA4B1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAmDrD"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Format a DiffResult into human-readable output with +/-/~ prefixes.
3
+ */
4
+ function formatPropertyChange(change) {
5
+ const before = change.before;
6
+ const after = change.after;
7
+ if (change.kind === 'added') {
8
+ const type = after?.dataType ?? 'unknown';
9
+ const req = after?.required ? ', required' : '';
10
+ return ` + property: ${change.name} (${type}${req})`;
11
+ }
12
+ if (change.kind === 'removed') {
13
+ return ` - property: ${change.name} (removed)`;
14
+ }
15
+ // Modified — show what changed
16
+ const details = [];
17
+ if (before && after) {
18
+ for (const key of ['dataType', 'required', 'indexed', 'unique', 'semanticType']) {
19
+ if (before[key] !== after[key]) {
20
+ details.push(`${key}: ${String(before[key])} → ${String(after[key])}`);
21
+ }
22
+ }
23
+ }
24
+ return ` ~ property: ${change.name} (${details.join(', ')})`;
25
+ }
26
+ /**
27
+ * Format a DiffResult into human-readable output.
28
+ *
29
+ * @example
30
+ * ```
31
+ * + ObjectType: Invoice (new)
32
+ * ~ ObjectType: Employee
33
+ * + property: department (string, required)
34
+ * - property: title (removed)
35
+ * ~ property: salary (indexed: false → true)
36
+ * - LinkType: Employee__company (removed)
37
+ *
38
+ * 2 types changed, 1 link changed
39
+ * ```
40
+ */
41
+ export function formatDiff(result) {
42
+ if (!result.hasChanges) {
43
+ return 'No changes detected.';
44
+ }
45
+ const lines = [];
46
+ const typeChanges = result.changes.filter(c => c.entity === 'objectType');
47
+ const propChanges = result.changes.filter(c => c.entity === 'property');
48
+ const linkChanges = result.changes.filter(c => c.entity === 'linkType');
49
+ // Group property changes by parent type
50
+ const propsByParent = new Map();
51
+ for (const pc of propChanges) {
52
+ const parent = pc.parent ?? '?';
53
+ const list = propsByParent.get(parent) ?? [];
54
+ list.push(pc);
55
+ propsByParent.set(parent, list);
56
+ }
57
+ // Output type-level changes
58
+ for (const tc of typeChanges) {
59
+ const prefix = tc.kind === 'added' ? '+' : tc.kind === 'removed' ? '-' : '~';
60
+ const suffix = tc.kind === 'added' ? ' (new)' : tc.kind === 'removed' ? ' (removed)' : '';
61
+ lines.push(`${prefix} ObjectType: ${tc.name}${suffix}`);
62
+ // Append property changes under this type
63
+ const childProps = propsByParent.get(tc.name);
64
+ if (childProps) {
65
+ for (const pc of childProps) {
66
+ lines.push(formatPropertyChange(pc));
67
+ }
68
+ }
69
+ }
70
+ // Output link-level changes
71
+ for (const lc of linkChanges) {
72
+ const prefix = lc.kind === 'added' ? '+' : lc.kind === 'removed' ? '-' : '~';
73
+ const suffix = lc.kind === 'added' ? ' (new)' : lc.kind === 'removed' ? ' (removed)' : '';
74
+ lines.push(`${prefix} LinkType: ${lc.name}${suffix}`);
75
+ }
76
+ // Summary line
77
+ const typesChanged = typeChanges.length;
78
+ const linksChanged = linkChanges.length;
79
+ const parts = [];
80
+ if (typesChanged > 0)
81
+ parts.push(`${typesChanged} type${typesChanged > 1 ? 's' : ''} changed`);
82
+ if (linksChanged > 0)
83
+ parts.push(`${linksChanged} link${linksChanged > 1 ? 's' : ''} changed`);
84
+ lines.push('');
85
+ lines.push(parts.join(', '));
86
+ return lines.join('\n');
87
+ }
88
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/diff/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Action DSL — declarative business action definitions
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const approveContract = action('approve')
7
+ * .on(() => Contract)
8
+ * .input({ comment: { dataType: 'string', required: false, description: 'Review comment' } })
9
+ * .when({ field: 'status', operator: 'equals', value: 'pending_review' })
10
+ * .set({ field: 'status', value: 'approved' })
11
+ * .set({ field: 'approvedAt', value: '__NOW__' })
12
+ * .requires('contracts.write', 'actions.run')
13
+ * .trigger('MANUAL')
14
+ * .timeout(5000)
15
+ * .description('Approve a pending contract after review');
16
+ * ```
17
+ */
18
+ import type { ObjectTypeDefinition, PropertyDefinition, ActionDefinition, ActionConditionDefinition, ActionEffectDefinition, ActionTrigger, ActionType, ActionRiskLevel, ActionExecutionMode, ActionLimits, EffectFieldValue, SymbolicRef, DataType, ModelDecision, ModelEvidence, ModelExceptionPath, ModelRole, ModelSourceRef, ModelTerm } from '../types.js';
19
+ import type { PropertyBuilderLike } from './property.js';
20
+ type InputFieldSpec = {
21
+ dataType: DataType;
22
+ required?: boolean;
23
+ defaultValue?: unknown;
24
+ description?: string;
25
+ sensitive?: boolean;
26
+ ref?: string;
27
+ };
28
+ type InputSchema = Record<string, InputFieldSpec | PropertyDefinition | PropertyBuilderLike>;
29
+ type ActionTarget = ObjectTypeDefinition | (() => ObjectTypeDefinition);
30
+ type ConditionFieldOps = {
31
+ eq(value: unknown): ActionConditionDefinition;
32
+ neq(value: unknown): ActionConditionDefinition;
33
+ gt(value: unknown): ActionConditionDefinition;
34
+ gte(value: unknown): ActionConditionDefinition;
35
+ lt(value: unknown): ActionConditionDefinition;
36
+ lte(value: unknown): ActionConditionDefinition;
37
+ contains(value: unknown): ActionConditionDefinition;
38
+ startsWith(value: unknown): ActionConditionDefinition;
39
+ in(values: readonly unknown[]): ActionConditionDefinition;
40
+ notIn(values: readonly unknown[]): ActionConditionDefinition;
41
+ isNull(): ActionConditionDefinition;
42
+ };
43
+ type ConditionProxy = Record<string, ConditionFieldOps>;
44
+ type ConditionPredicate = (fields: ConditionProxy) => ActionConditionDefinition;
45
+ type EffectObject = Record<string, EffectFieldValue>;
46
+ type EffectFactory = (fields: Record<string, SymbolicRef>, input: Record<string, SymbolicRef>) => EffectObject;
47
+ type SetInput = ActionEffectDefinition | EffectObject | EffectFactory;
48
+ declare class ActionBuilder {
49
+ private readonly def;
50
+ constructor(apiName: string, overrides?: Partial<ActionDefinition>);
51
+ /** Bind this action to an ObjectType. Use a thunk to support circular refs. */
52
+ on(target: ActionTarget): ActionBuilder;
53
+ /** Define input parameters. */
54
+ input(schema: InputSchema): ActionBuilder;
55
+ /** Add a precondition: the action can only run when this condition is met. */
56
+ when(condition: ActionConditionDefinition | ConditionPredicate): ActionBuilder;
57
+ /** Declare a field mutation effect. */
58
+ set(effect: SetInput): ActionBuilder;
59
+ /** Required permission scopes to execute this action. */
60
+ requires(...scopes: Array<string | ModelRole>): ActionBuilder;
61
+ /** Set the action type (WORKFLOW, VALIDATE, TRANSFORM, NOTIFY, AGGREGATE, CUSTOM). */
62
+ type(actionType: ActionType): ActionBuilder;
63
+ /** Set the trigger (MANUAL, ON_CREATE, ON_UPDATE, SCHEDULED, EVENT). */
64
+ trigger(trigger: ActionTrigger): ActionBuilder;
65
+ /** Set execution timeout in ms. */
66
+ timeout(ms: number): ActionBuilder;
67
+ /** Human-readable display name. */
68
+ displayName(name: string): ActionBuilder;
69
+ /** Description of what the action does. */
70
+ description(text: string): ActionBuilder;
71
+ /** Set risk level (low/medium/high/critical). Affects plan confirmation requirements. */
72
+ risk(level: ActionRiskLevel): ActionBuilder;
73
+ /** Alias used by public docs/templates. */
74
+ riskLevel(level: ActionRiskLevel): ActionBuilder;
75
+ /** Set execution mode. Stable V1 apply supports twin_apply; other modes remain plan/audit only. */
76
+ executionMode(mode: ActionExecutionMode): ActionBuilder;
77
+ /** Set execution limits for this action. */
78
+ limits(limits: ActionLimits): ActionBuilder;
79
+ /** Attach V2 Model Assurance metadata (decision_criteria, evidence_required, etc.). */
80
+ metadata(meta: Record<string, unknown>): ActionBuilder;
81
+ sourceRef(...refs: ModelSourceRef[]): ActionBuilder;
82
+ decision(...decisions: ModelDecision[]): ActionBuilder;
83
+ evidence(...evidence: ModelEvidence[]): ActionBuilder;
84
+ role(...roles: ModelRole[]): ActionBuilder;
85
+ exceptionPath(...exceptionPaths: ModelExceptionPath[]): ActionBuilder;
86
+ term(...terms: ModelTerm[]): ActionBuilder;
87
+ /** Declare a secondary object creation effect. */
88
+ createRelated(linkName: string, targetType: (() => ObjectTypeDefinition) | string, fields: Record<string, EffectFieldValue>): ActionBuilder;
89
+ /** Declare a link-existing-instance effect. */
90
+ link(linkName: string, ref: string): ActionBuilder;
91
+ /** Declare an unlink effect. */
92
+ unlink(linkName: string, ref: string): ActionBuilder;
93
+ /** Finalize to ActionDefinition. */
94
+ build(): ActionDefinition;
95
+ }
96
+ export type ActionBuilderLike = ActionBuilder & ActionDefinition;
97
+ /**
98
+ * Define a declarative business action.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const approve = action('approve')
103
+ * .on(() => Contract)
104
+ * .when({ field: 'status', operator: 'equals', value: 'pending_review' })
105
+ * .set({ field: 'status', value: 'approved' })
106
+ * .requires('contracts.write')
107
+ * .description('Approve a pending contract');
108
+ * ```
109
+ */
110
+ export declare function action(apiName: string): ActionBuilderLike;
111
+ /**
112
+ * Materialize an ActionBuilderLike into a clean ActionDefinition.
113
+ */
114
+ export declare function materializeAction(a: ActionDefinition | ActionBuilderLike): ActionDefinition;
115
+ /** Server UTC timestamp at apply time */
116
+ export declare function now(): {
117
+ ref: '$applyTime';
118
+ };
119
+ /** Actor identity helpers */
120
+ export declare const actor: {
121
+ readonly id: () => {
122
+ ref: "actor.id";
123
+ };
124
+ readonly subjectId: () => {
125
+ ref: "actor.subjectId";
126
+ };
127
+ readonly principalType: () => {
128
+ ref: "actor.principalType";
129
+ };
130
+ };
131
+ /** Target instance helpers */
132
+ export declare const target: {
133
+ readonly id: () => {
134
+ ref: "target.id";
135
+ };
136
+ };
137
+ /** Reference an input field value */
138
+ export declare function input(field: string): {
139
+ ref: string;
140
+ };
141
+ /** Workspace identity helpers */
142
+ export declare const workspace: {
143
+ readonly id: () => {
144
+ ref: "workspace.id";
145
+ };
146
+ };
147
+ export {};
148
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/dsl/action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Action DSL — declarative business action definitions
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const approveContract = action('approve')
7
+ * .on(() => Contract)
8
+ * .input({ comment: { dataType: 'string', required: false, description: 'Review comment' } })
9
+ * .when({ field: 'status', operator: 'equals', value: 'pending_review' })
10
+ * .set({ field: 'status', value: 'approved' })
11
+ * .set({ field: 'approvedAt', value: '__NOW__' })
12
+ * .requires('contracts.write', 'actions.run')
13
+ * .trigger('MANUAL')
14
+ * .timeout(5000)
15
+ * .description('Approve a pending contract after review');
16
+ * ```
17
+ */
18
+ import { mergeModelAssuranceMetadata } from '../model-assurance.js';
19
+ import { materializeProperty } from './property.js';
20
+ function inputSchemaToParams(schema) {
21
+ return Object.entries(schema).map(([name, spec]) => {
22
+ const normalized = typeof spec.build === 'function'
23
+ || spec._kind === 'property'
24
+ ? materializeProperty(spec)
25
+ : spec;
26
+ return {
27
+ name,
28
+ dataType: normalized.dataType,
29
+ required: normalized.required ?? false,
30
+ defaultValue: normalized.defaultValue,
31
+ description: normalized.description,
32
+ sensitive: normalized.sensitive,
33
+ ref: normalized.ref,
34
+ };
35
+ });
36
+ }
37
+ function normalizeTarget(target) {
38
+ return typeof target === 'function' ? target : () => target;
39
+ }
40
+ function fieldOps(field) {
41
+ return {
42
+ eq: (value) => ({ field, operator: 'equals', value }),
43
+ neq: (value) => ({ field, operator: 'not_equals', value }),
44
+ gt: (value) => ({ field, operator: 'greater_than', value }),
45
+ gte: (value) => ({ field, operator: 'greater_than_or_equal', value }),
46
+ lt: (value) => ({ field, operator: 'less_than', value }),
47
+ lte: (value) => ({ field, operator: 'less_than_or_equal', value }),
48
+ contains: (value) => ({ field, operator: 'contains', value }),
49
+ startsWith: (value) => ({ field, operator: 'starts_with', value }),
50
+ in: (value) => ({ field, operator: 'in', value }),
51
+ notIn: (value) => ({ field, operator: 'not_in', value }),
52
+ isNull: () => ({ field, operator: 'is_null', value: true }),
53
+ };
54
+ }
55
+ function conditionProxy() {
56
+ return new Proxy({}, {
57
+ get(_target, prop) {
58
+ if (typeof prop !== 'string')
59
+ return undefined;
60
+ return fieldOps(prop);
61
+ },
62
+ });
63
+ }
64
+ function refProxy(prefix) {
65
+ return new Proxy({}, {
66
+ get(_target, prop) {
67
+ if (typeof prop !== 'string')
68
+ return undefined;
69
+ return { ref: `${prefix}.${prop}` };
70
+ },
71
+ });
72
+ }
73
+ function looksLikeStructuredEffect(effect) {
74
+ return 'kind' in effect || 'field' in effect || 'value' in effect || 'linkName' in effect || 'targetType' in effect || 'ref' in effect;
75
+ }
76
+ function normalizeSetInput(input) {
77
+ const raw = typeof input === 'function'
78
+ ? input(refProxy('target'), refProxy('input'))
79
+ : input;
80
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
81
+ return [];
82
+ if (looksLikeStructuredEffect(raw)) {
83
+ return [raw];
84
+ }
85
+ return Object.entries(raw).map(([field, value]) => ({
86
+ kind: 'set',
87
+ field,
88
+ value,
89
+ }));
90
+ }
91
+ // ---------------------------------------------------------------------------
92
+ // Builder
93
+ // ---------------------------------------------------------------------------
94
+ class ActionBuilder {
95
+ def;
96
+ constructor(apiName, overrides) {
97
+ this.def = {
98
+ _kind: 'action',
99
+ apiName,
100
+ objectType: () => { throw new Error(`Action "${apiName}": no target type set — call .on(() => Type)`); },
101
+ actionType: 'CUSTOM',
102
+ trigger: 'MANUAL',
103
+ parameters: [],
104
+ conditions: [],
105
+ effects: [],
106
+ requiredScopes: [],
107
+ executionMode: 'twin_apply',
108
+ ...overrides,
109
+ };
110
+ }
111
+ /** Bind this action to an ObjectType. Use a thunk to support circular refs. */
112
+ on(target) {
113
+ return new ActionBuilder(this.def.apiName, { ...this.def, objectType: normalizeTarget(target) });
114
+ }
115
+ /** Define input parameters. */
116
+ input(schema) {
117
+ return new ActionBuilder(this.def.apiName, {
118
+ ...this.def,
119
+ parameters: [...this.def.parameters, ...inputSchemaToParams(schema)],
120
+ });
121
+ }
122
+ /** Add a precondition: the action can only run when this condition is met. */
123
+ when(condition) {
124
+ const normalized = typeof condition === 'function' ? condition(conditionProxy()) : condition;
125
+ return new ActionBuilder(this.def.apiName, {
126
+ ...this.def,
127
+ conditions: [...this.def.conditions, normalized],
128
+ });
129
+ }
130
+ /** Declare a field mutation effect. */
131
+ set(effect) {
132
+ return new ActionBuilder(this.def.apiName, {
133
+ ...this.def,
134
+ effects: [...this.def.effects, ...normalizeSetInput(effect)],
135
+ });
136
+ }
137
+ /** Required permission scopes to execute this action. */
138
+ requires(...scopes) {
139
+ const scopeIds = scopes.map(scope => typeof scope === 'string' ? scope : scope.id);
140
+ const roles = scopes.filter((scope) => typeof scope !== 'string');
141
+ return new ActionBuilder(this.def.apiName, {
142
+ ...this.def,
143
+ requiredScopes: [...this.def.requiredScopes, ...scopeIds],
144
+ ...(roles.length > 0
145
+ ? { metadata: mergeModelAssuranceMetadata(this.def.metadata, { roles }) }
146
+ : {}),
147
+ });
148
+ }
149
+ /** Set the action type (WORKFLOW, VALIDATE, TRANSFORM, NOTIFY, AGGREGATE, CUSTOM). */
150
+ type(actionType) {
151
+ return new ActionBuilder(this.def.apiName, { ...this.def, actionType });
152
+ }
153
+ /** Set the trigger (MANUAL, ON_CREATE, ON_UPDATE, SCHEDULED, EVENT). */
154
+ trigger(trigger) {
155
+ return new ActionBuilder(this.def.apiName, { ...this.def, trigger });
156
+ }
157
+ /** Set execution timeout in ms. */
158
+ timeout(ms) {
159
+ return new ActionBuilder(this.def.apiName, { ...this.def, timeout: ms });
160
+ }
161
+ /** Human-readable display name. */
162
+ displayName(name) {
163
+ return new ActionBuilder(this.def.apiName, { ...this.def, displayName: name });
164
+ }
165
+ /** Description of what the action does. */
166
+ description(text) {
167
+ return new ActionBuilder(this.def.apiName, { ...this.def, description: text });
168
+ }
169
+ /** Set risk level (low/medium/high/critical). Affects plan confirmation requirements. */
170
+ risk(level) {
171
+ return new ActionBuilder(this.def.apiName, { ...this.def, risk: level });
172
+ }
173
+ /** Alias used by public docs/templates. */
174
+ riskLevel(level) {
175
+ return this.risk(level);
176
+ }
177
+ /** Set execution mode. Stable V1 apply supports twin_apply; other modes remain plan/audit only. */
178
+ executionMode(mode) {
179
+ return new ActionBuilder(this.def.apiName, { ...this.def, executionMode: mode });
180
+ }
181
+ /** Set execution limits for this action. */
182
+ limits(limits) {
183
+ return new ActionBuilder(this.def.apiName, { ...this.def, limits });
184
+ }
185
+ /** Attach V2 Model Assurance metadata (decision_criteria, evidence_required, etc.). */
186
+ metadata(meta) {
187
+ return new ActionBuilder(this.def.apiName, { ...this.def, metadata: meta });
188
+ }
189
+ sourceRef(...refs) {
190
+ return new ActionBuilder(this.def.apiName, {
191
+ ...this.def,
192
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { sourceRefs: refs }),
193
+ });
194
+ }
195
+ decision(...decisions) {
196
+ return new ActionBuilder(this.def.apiName, {
197
+ ...this.def,
198
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { decisions }),
199
+ });
200
+ }
201
+ evidence(...evidence) {
202
+ return new ActionBuilder(this.def.apiName, {
203
+ ...this.def,
204
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { evidence }),
205
+ });
206
+ }
207
+ role(...roles) {
208
+ return new ActionBuilder(this.def.apiName, {
209
+ ...this.def,
210
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { roles }),
211
+ });
212
+ }
213
+ exceptionPath(...exceptionPaths) {
214
+ return new ActionBuilder(this.def.apiName, {
215
+ ...this.def,
216
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { exceptionPaths }),
217
+ });
218
+ }
219
+ term(...terms) {
220
+ return new ActionBuilder(this.def.apiName, {
221
+ ...this.def,
222
+ metadata: mergeModelAssuranceMetadata(this.def.metadata, { terms }),
223
+ });
224
+ }
225
+ /** Declare a secondary object creation effect. */
226
+ createRelated(linkName, targetType, fields) {
227
+ const effect = { kind: 'createRelated', linkName, targetType, fields };
228
+ return new ActionBuilder(this.def.apiName, {
229
+ ...this.def,
230
+ effects: [...this.def.effects, effect],
231
+ });
232
+ }
233
+ /** Declare a link-existing-instance effect. */
234
+ link(linkName, ref) {
235
+ const effect = { kind: 'link', linkName, ref };
236
+ return new ActionBuilder(this.def.apiName, {
237
+ ...this.def,
238
+ effects: [...this.def.effects, effect],
239
+ });
240
+ }
241
+ /** Declare an unlink effect. */
242
+ unlink(linkName, ref) {
243
+ const effect = { kind: 'unlink', linkName, ref };
244
+ return new ActionBuilder(this.def.apiName, {
245
+ ...this.def,
246
+ effects: [...this.def.effects, effect],
247
+ });
248
+ }
249
+ /** Finalize to ActionDefinition. */
250
+ build() {
251
+ return this.def;
252
+ }
253
+ }
254
+ /**
255
+ * Define a declarative business action.
256
+ *
257
+ * @example
258
+ * ```ts
259
+ * const approve = action('approve')
260
+ * .on(() => Contract)
261
+ * .when({ field: 'status', operator: 'equals', value: 'pending_review' })
262
+ * .set({ field: 'status', value: 'approved' })
263
+ * .requires('contracts.write')
264
+ * .description('Approve a pending contract');
265
+ * ```
266
+ */
267
+ export function action(apiName) {
268
+ return wrapActionProxy(new ActionBuilder(apiName));
269
+ }
270
+ /** Wrap an ActionBuilder in a Proxy that re-wraps chained returns */
271
+ function wrapActionProxy(builder) {
272
+ return new Proxy(builder, {
273
+ get(target, prop, receiver) {
274
+ if (prop === '_kind')
275
+ return 'action';
276
+ if (prop === 'apiName')
277
+ return target.def.apiName;
278
+ const builderVal = Reflect.get(target, prop, receiver);
279
+ if (typeof builderVal === 'function') {
280
+ return (...args) => {
281
+ const result = builderVal.apply(target, args);
282
+ // Re-wrap if the method returned a new ActionBuilder (chaining)
283
+ if (result instanceof ActionBuilder) {
284
+ return wrapActionProxy(result);
285
+ }
286
+ return result;
287
+ };
288
+ }
289
+ if (builderVal !== undefined)
290
+ return builderVal;
291
+ return target.def[prop];
292
+ },
293
+ });
294
+ }
295
+ /**
296
+ * Materialize an ActionBuilderLike into a clean ActionDefinition.
297
+ */
298
+ export function materializeAction(a) {
299
+ if ('build' in a && typeof a.build === 'function') {
300
+ return a.build();
301
+ }
302
+ return a;
303
+ }
304
+ // ---------------------------------------------------------------------------
305
+ // Symbolic function helpers — compile to { ref: "..." } tokens
306
+ // resolved at apply time by DynamicTokenResolver
307
+ // ---------------------------------------------------------------------------
308
+ /** Server UTC timestamp at apply time */
309
+ export function now() {
310
+ return { ref: '$applyTime' };
311
+ }
312
+ /** Actor identity helpers */
313
+ export const actor = {
314
+ id: () => ({ ref: 'actor.id' }),
315
+ subjectId: () => ({ ref: 'actor.subjectId' }),
316
+ principalType: () => ({ ref: 'actor.principalType' }),
317
+ };
318
+ /** Target instance helpers */
319
+ export const target = {
320
+ id: () => ({ ref: 'target.id' }),
321
+ };
322
+ /** Reference an input field value */
323
+ export function input(field) {
324
+ return { ref: `input.${field}` };
325
+ }
326
+ /** Workspace identity helpers */
327
+ export const workspace = {
328
+ id: () => ({ ref: 'workspace.id' }),
329
+ };
330
+ //# sourceMappingURL=action.js.map