business-as-code 2.1.3 → 2.4.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/.turbo/turbo-build.log +4 -5
- package/CHANGELOG.md +53 -0
- package/README.md +2 -0
- package/dist/dollar.d.ts.map +1 -1
- package/dist/dollar.js +2 -2
- package/dist/dollar.js.map +1 -1
- package/dist/entities/organization.d.ts +4 -0
- package/dist/entities/organization.d.ts.map +1 -1
- package/dist/entities/organization.js +27 -18
- package/dist/entities/organization.js.map +1 -1
- package/dist/entities/planning.d.ts +87 -0
- package/dist/finance/account.d.ts +44 -0
- package/dist/finance/account.d.ts.map +1 -0
- package/dist/finance/account.js +6 -0
- package/dist/finance/account.js.map +1 -0
- package/dist/finance/authority.d.ts +78 -0
- package/dist/finance/authority.d.ts.map +1 -0
- package/dist/finance/authority.js +27 -0
- package/dist/finance/authority.js.map +1 -0
- package/dist/finance/card.d.ts +36 -0
- package/dist/finance/card.d.ts.map +1 -0
- package/dist/finance/card.js +6 -0
- package/dist/finance/card.js.map +1 -0
- package/dist/finance/identity.d.ts +30 -0
- package/dist/finance/identity.d.ts.map +1 -0
- package/dist/finance/identity.js +8 -0
- package/dist/finance/identity.js.map +1 -0
- package/dist/finance/index.d.ts +36 -0
- package/dist/finance/index.d.ts.map +1 -0
- package/dist/finance/index.js +22 -0
- package/dist/finance/index.js.map +1 -0
- package/dist/finance/ledger.d.ts +24 -0
- package/dist/finance/ledger.d.ts.map +1 -0
- package/dist/finance/ledger.js +8 -0
- package/dist/finance/ledger.js.map +1 -0
- package/dist/finance/merchant.d.ts +129 -0
- package/dist/finance/merchant.d.ts.map +1 -0
- package/dist/finance/merchant.js +21 -0
- package/dist/finance/merchant.js.map +1 -0
- package/dist/finance/outcome-contract.d.ts +139 -0
- package/dist/finance/outcome-contract.d.ts.map +1 -0
- package/dist/finance/outcome-contract.js +27 -0
- package/dist/finance/outcome-contract.js.map +1 -0
- package/dist/finance/port.d.ts +121 -0
- package/dist/finance/port.d.ts.map +1 -0
- package/dist/finance/port.js +10 -0
- package/dist/finance/port.js.map +1 -0
- package/dist/finance/pricing.d.ts +154 -0
- package/dist/finance/pricing.d.ts.map +1 -0
- package/dist/finance/pricing.js +79 -0
- package/dist/finance/pricing.js.map +1 -0
- package/dist/finance/proof-predicate.d.ts +92 -0
- package/dist/finance/proof-predicate.d.ts.map +1 -0
- package/dist/finance/proof-predicate.js +80 -0
- package/dist/finance/proof-predicate.js.map +1 -0
- package/dist/finance/refund.d.ts +44 -0
- package/dist/finance/refund.d.ts.map +1 -0
- package/dist/finance/refund.js +41 -0
- package/dist/finance/refund.js.map +1 -0
- package/dist/finance/sla.d.ts +25 -0
- package/dist/finance/sla.d.ts.map +1 -0
- package/dist/finance/sla.js +7 -0
- package/dist/finance/sla.js.map +1 -0
- package/dist/finance/types.d.ts +79 -0
- package/dist/finance/types.d.ts.map +1 -0
- package/dist/finance/types.js +8 -0
- package/dist/{canvas → finance}/types.js.map +1 -1
- package/dist/goals.d.ts +19 -0
- package/dist/goals.d.ts.map +1 -1
- package/dist/goals.js +81 -12
- package/dist/goals.js.map +1 -1
- package/dist/index.d.ts +12 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/kpis.d.ts +19 -0
- package/dist/kpis.d.ts.map +1 -1
- package/dist/kpis.js +71 -6
- package/dist/kpis.js.map +1 -1
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +29 -24
- package/dist/metrics.js.map +1 -1
- package/dist/okrs.d.ts +34 -0
- package/dist/okrs.d.ts.map +1 -1
- package/dist/okrs.js +135 -13
- package/dist/okrs.js.map +1 -1
- package/dist/organization.d.ts.map +1 -1
- package/dist/organization.js +11 -11
- package/dist/organization.js.map +1 -1
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +13 -12
- package/dist/process.js.map +1 -1
- package/dist/product.d.ts.map +1 -1
- package/dist/product.js +9 -9
- package/dist/product.js.map +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +194 -32
- package/dist/queries.js.map +1 -1
- package/dist/roles.d.ts +25 -31
- package/dist/roles.d.ts.map +1 -1
- package/dist/roles.js +37 -10
- package/dist/roles.js.map +1 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +13 -12
- package/dist/workflow.js.map +1 -1
- package/package.json +20 -13
- package/src/dollar.ts +5 -2
- package/src/entities/organization.ts +31 -18
- package/src/finance/account.ts +48 -0
- package/src/finance/authority.ts +42 -0
- package/src/finance/card.ts +38 -0
- package/src/finance/identity.ts +31 -0
- package/src/finance/index.ts +117 -0
- package/src/finance/ledger.ts +26 -0
- package/src/finance/merchant.ts +127 -0
- package/src/finance/outcome-contract.ts +157 -0
- package/src/finance/port.ts +144 -0
- package/src/finance/pricing.ts +197 -0
- package/src/finance/proof-predicate.ts +106 -0
- package/src/finance/refund.ts +52 -0
- package/src/finance/sla.ts +33 -0
- package/src/finance/types.ts +75 -0
- package/src/goals.ts +78 -12
- package/src/index.ts +48 -18
- package/src/kpis.ts +62 -8
- package/src/metrics.ts +92 -79
- package/src/okrs.ts +120 -20
- package/src/organization.ts +12 -15
- package/src/process.ts +11 -12
- package/src/product.ts +8 -9
- package/src/queries.ts +238 -75
- package/src/roles.ts +62 -61
- package/src/workflow.ts +22 -15
- package/test/business.test.ts +282 -0
- package/test/dollar.test.ts +270 -0
- package/test/entities.test.ts +628 -0
- package/test/financials.test.ts +539 -0
- package/test/goals.test.ts +451 -0
- package/{src → test}/index.test.ts +1 -1
- package/test/kpis.test.ts +440 -0
- package/test/metrics.test.ts +744 -0
- package/test/okrs.test.ts +741 -0
- package/test/organization.test.ts +548 -0
- package/test/process.test.ts +503 -0
- package/test/product.test.ts +430 -0
- package/test/queries.test.ts +556 -0
- package/test/roles.test.ts +546 -0
- package/test/service.test.ts +450 -0
- package/test/types.test.ts +1141 -0
- package/test/vision.test.ts +214 -0
- package/test/workflow.test.ts +501 -0
- package/vitest.config.ts +47 -0
- package/LICENSE +0 -21
- package/dist/canvas/activities.d.ts +0 -19
- package/dist/canvas/activities.d.ts.map +0 -1
- package/dist/canvas/activities.js +0 -20
- package/dist/canvas/activities.js.map +0 -1
- package/dist/canvas/channels.d.ts +0 -20
- package/dist/canvas/channels.d.ts.map +0 -1
- package/dist/canvas/channels.js +0 -21
- package/dist/canvas/channels.js.map +0 -1
- package/dist/canvas/relationships.d.ts +0 -20
- package/dist/canvas/relationships.d.ts.map +0 -1
- package/dist/canvas/relationships.js +0 -21
- package/dist/canvas/relationships.js.map +0 -1
- package/dist/canvas/resources.d.ts +0 -20
- package/dist/canvas/resources.d.ts.map +0 -1
- package/dist/canvas/resources.js +0 -30
- package/dist/canvas/resources.js.map +0 -1
- package/dist/canvas/revenue.d.ts +0 -22
- package/dist/canvas/revenue.d.ts.map +0 -1
- package/dist/canvas/revenue.js +0 -30
- package/dist/canvas/revenue.js.map +0 -1
- package/dist/canvas/segments.d.ts +0 -20
- package/dist/canvas/segments.d.ts.map +0 -1
- package/dist/canvas/segments.js +0 -28
- package/dist/canvas/segments.js.map +0 -1
- package/dist/canvas/types.d.ts +0 -232
- package/dist/canvas/types.d.ts.map +0 -1
- package/dist/canvas/types.js +0 -8
- package/dist/canvas/value.d.ts +0 -20
- package/dist/canvas/value.d.ts.map +0 -1
- package/dist/canvas/value.js +0 -21
- package/dist/canvas/value.js.map +0 -1
- package/src/business.js +0 -108
- package/src/canvas/activities.ts +0 -32
- package/src/canvas/canvas.ts +0 -482
- package/src/canvas/channels.ts +0 -34
- package/src/canvas/costs.ts +0 -43
- package/src/canvas/economics.ts +0 -99
- package/src/canvas/index.ts +0 -206
- package/src/canvas/partnerships.ts +0 -34
- package/src/canvas/projections.ts +0 -141
- package/src/canvas/relationships.ts +0 -34
- package/src/canvas/resources.ts +0 -43
- package/src/canvas/revenue.ts +0 -56
- package/src/canvas/segments.ts +0 -42
- package/src/canvas/types.ts +0 -363
- package/src/canvas/value.ts +0 -34
- package/src/dollar.js +0 -106
- package/src/entities/assets.js +0 -322
- package/src/entities/business.js +0 -369
- package/src/entities/communication.js +0 -254
- package/src/entities/customers.js +0 -988
- package/src/entities/financials.js +0 -931
- package/src/entities/goals.js +0 -799
- package/src/entities/index.js +0 -197
- package/src/entities/legal.js +0 -300
- package/src/entities/market.js +0 -300
- package/src/entities/marketing.js +0 -1156
- package/src/entities/offerings.js +0 -726
- package/src/entities/operations.js +0 -786
- package/src/entities/organization.js +0 -806
- package/src/entities/partnerships.js +0 -299
- package/src/entities/planning.js +0 -270
- package/src/entities/projects.js +0 -348
- package/src/entities/risk.js +0 -292
- package/src/entities/sales.js +0 -1247
- package/src/financials.js +0 -296
- package/src/goals.js +0 -214
- package/src/index.js +0 -131
- package/src/index.test.js +0 -274
- package/src/kpis.js +0 -231
- package/src/metrics.js +0 -324
- package/src/okrs.js +0 -268
- package/src/organization.js +0 -172
- package/src/process.js +0 -240
- package/src/product.js +0 -144
- package/src/queries.js +0 -414
- package/src/roles.js +0 -254
- package/src/service.js +0 -139
- package/src/types.js +0 -4
- package/src/vision.js +0 -67
- package/src/workflow.js +0 -246
- package/tests/canvas.test.ts +0 -842
package/dist/roles.d.ts
CHANGED
|
@@ -8,12 +8,19 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @packageDocumentation
|
|
10
10
|
*/
|
|
11
|
+
import type { Role as OrgRole, RoleType as OrgRoleType, RoleWorkerType } from 'org.ai';
|
|
12
|
+
import type { WorkerRef } from 'digital-workers';
|
|
13
|
+
export type { Worker, WorkerRef } from 'digital-workers';
|
|
14
|
+
export type { OrgRole, OrgRoleType, RoleWorkerType };
|
|
11
15
|
/**
|
|
12
16
|
* Business role type - the function of a worker in the organization
|
|
13
17
|
*/
|
|
14
18
|
export type BusinessRoleType = 'ceo' | 'cto' | 'cfo' | 'coo' | 'cmo' | 'cpo' | 'director' | 'manager' | 'lead' | 'supervisor' | 'engineer' | 'designer' | 'analyst' | 'specialist' | 'coordinator' | 'operator' | 'agent' | 'assistant' | string;
|
|
15
19
|
/**
|
|
16
|
-
* Business Role - extends
|
|
20
|
+
* Business Role - extends org.ai Role with authorization and task capabilities
|
|
21
|
+
*
|
|
22
|
+
* Composes with org.ai Role to provide additional business-specific properties
|
|
23
|
+
* like authorization permissions, task capabilities, and compensation.
|
|
17
24
|
*
|
|
18
25
|
* @example
|
|
19
26
|
* ```ts
|
|
@@ -24,6 +31,9 @@ export type BusinessRoleType = 'ceo' | 'cto' | 'cfo' | 'coo' | 'cmo' | 'cpo' | '
|
|
|
24
31
|
* department: 'Engineering',
|
|
25
32
|
* description: 'Leads engineering team and makes technical decisions',
|
|
26
33
|
*
|
|
34
|
+
* // From org.ai Role
|
|
35
|
+
* skills: ['TypeScript', 'Architecture', 'Team Leadership'],
|
|
36
|
+
*
|
|
27
37
|
* // Business responsibilities
|
|
28
38
|
* responsibilities: [
|
|
29
39
|
* 'Lead engineering team',
|
|
@@ -48,21 +58,9 @@ export type BusinessRoleType = 'ceo' | 'cto' | 'cfo' | 'coo' | 'cmo' | 'cpo' | '
|
|
|
48
58
|
* }
|
|
49
59
|
* ```
|
|
50
60
|
*/
|
|
51
|
-
export interface BusinessRole {
|
|
52
|
-
/**
|
|
53
|
-
id: string;
|
|
54
|
-
/** Role display name */
|
|
55
|
-
name: string;
|
|
56
|
-
/** Role type classification */
|
|
61
|
+
export interface BusinessRole extends Omit<OrgRole, 'permissions'> {
|
|
62
|
+
/** Role type classification (overrides OrgRole.type with business-specific types) */
|
|
57
63
|
type: BusinessRoleType;
|
|
58
|
-
/** Department or team */
|
|
59
|
-
department?: string;
|
|
60
|
-
/** Human-readable description */
|
|
61
|
-
description?: string;
|
|
62
|
-
/** Key responsibilities */
|
|
63
|
-
responsibilities?: string[];
|
|
64
|
-
/** Required skills */
|
|
65
|
-
skills?: string[];
|
|
66
64
|
/**
|
|
67
65
|
* Authorization permissions by resource type
|
|
68
66
|
*
|
|
@@ -70,6 +68,8 @@ export interface BusinessRole {
|
|
|
70
68
|
* - 'read', 'edit', 'delete', 'manage' (standard)
|
|
71
69
|
* - 'act:*' or 'act:verb' (domain-specific verbs)
|
|
72
70
|
*
|
|
71
|
+
* Note: This differs from OrgRole.permissions which is string[]
|
|
72
|
+
*
|
|
73
73
|
* @example
|
|
74
74
|
* ```ts
|
|
75
75
|
* permissions: {
|
|
@@ -80,24 +80,8 @@ export interface BusinessRole {
|
|
|
80
80
|
* ```
|
|
81
81
|
*/
|
|
82
82
|
permissions?: Record<string, string[]>;
|
|
83
|
-
/** Task types this role can handle */
|
|
84
|
-
canHandle?: string[];
|
|
85
|
-
/** Task types this role can delegate to others */
|
|
86
|
-
canDelegate?: string[];
|
|
87
|
-
/** Request types this role can approve */
|
|
88
|
-
canApprove?: string[];
|
|
89
|
-
/** Escalation path - role to escalate to */
|
|
90
|
-
escalateTo?: string;
|
|
91
|
-
/** Reports to - manager role */
|
|
92
|
-
reportsTo?: string;
|
|
93
|
-
/** Worker type preference: 'ai' | 'human' | 'hybrid' */
|
|
94
|
-
workerType?: 'ai' | 'human' | 'hybrid';
|
|
95
|
-
/** Level in hierarchy (1 = entry, higher = more senior) */
|
|
96
|
-
level?: number;
|
|
97
83
|
/** Compensation band */
|
|
98
84
|
compensationBand?: string;
|
|
99
|
-
/** Additional metadata */
|
|
100
|
-
metadata?: Record<string, unknown>;
|
|
101
85
|
}
|
|
102
86
|
/**
|
|
103
87
|
* Task status
|
|
@@ -183,6 +167,8 @@ export interface TaskAssignment {
|
|
|
183
167
|
}
|
|
184
168
|
/**
|
|
185
169
|
* Reference to an assignee (worker, team, or role)
|
|
170
|
+
*
|
|
171
|
+
* Compatible with digital-workers WorkerRef for worker assignments.
|
|
186
172
|
*/
|
|
187
173
|
export interface AssigneeRef {
|
|
188
174
|
/** Type of assignee */
|
|
@@ -192,6 +178,14 @@ export interface AssigneeRef {
|
|
|
192
178
|
/** Display name */
|
|
193
179
|
name?: string;
|
|
194
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Convert a digital-workers WorkerRef to an AssigneeRef
|
|
183
|
+
*/
|
|
184
|
+
export declare function workerRefToAssignee(workerRef: WorkerRef): AssigneeRef;
|
|
185
|
+
/**
|
|
186
|
+
* Convert an AssigneeRef to a digital-workers WorkerRef (if type is 'worker')
|
|
187
|
+
*/
|
|
188
|
+
export declare function assigneeToWorkerRef(assignee: AssigneeRef): WorkerRef | null;
|
|
195
189
|
/**
|
|
196
190
|
* Task routing rule - determines who handles what tasks
|
|
197
191
|
*
|
package/dist/roles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"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"}
|
package/dist/roles.js
CHANGED
|
@@ -8,6 +8,33 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @packageDocumentation
|
|
10
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* Convert a digital-workers WorkerRef to an AssigneeRef
|
|
13
|
+
*/
|
|
14
|
+
export function workerRefToAssignee(workerRef) {
|
|
15
|
+
const result = {
|
|
16
|
+
type: 'worker',
|
|
17
|
+
id: workerRef.id,
|
|
18
|
+
};
|
|
19
|
+
if (workerRef.name !== undefined) {
|
|
20
|
+
result.name = workerRef.name;
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Convert an AssigneeRef to a digital-workers WorkerRef (if type is 'worker')
|
|
26
|
+
*/
|
|
27
|
+
export function assigneeToWorkerRef(assignee) {
|
|
28
|
+
if (assignee.type !== 'worker')
|
|
29
|
+
return null;
|
|
30
|
+
const result = {
|
|
31
|
+
id: assignee.id,
|
|
32
|
+
};
|
|
33
|
+
if (assignee.name !== undefined) {
|
|
34
|
+
result.name = assignee.name;
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
11
38
|
// =============================================================================
|
|
12
39
|
// Standard Business Roles
|
|
13
40
|
// =============================================================================
|
|
@@ -141,8 +168,8 @@ export function createBusinessRole(id, template, overrides) {
|
|
|
141
168
|
}
|
|
142
169
|
return {
|
|
143
170
|
id,
|
|
144
|
-
name: standard
|
|
145
|
-
type: standard
|
|
171
|
+
name: standard['name'] || template,
|
|
172
|
+
type: standard['type'] || template,
|
|
146
173
|
...standard,
|
|
147
174
|
...overrides,
|
|
148
175
|
};
|
|
@@ -182,31 +209,31 @@ export function hasPermission(role, resourceType, action) {
|
|
|
182
209
|
* Check if a role can handle a task type
|
|
183
210
|
*/
|
|
184
211
|
export function canHandleTask(role, taskType) {
|
|
185
|
-
if (!role
|
|
212
|
+
if (!role['canHandle'])
|
|
186
213
|
return false;
|
|
187
|
-
return role
|
|
214
|
+
return role['canHandle'].includes(taskType) || role['canHandle'].includes('*');
|
|
188
215
|
}
|
|
189
216
|
/**
|
|
190
217
|
* Check if a role can approve a request type
|
|
191
218
|
*/
|
|
192
219
|
export function canApproveRequest(role, requestType) {
|
|
193
|
-
if (!role
|
|
220
|
+
if (!role['canApprove'])
|
|
194
221
|
return false;
|
|
195
|
-
return role
|
|
222
|
+
return role['canApprove'].includes(requestType) || role['canApprove'].includes('*');
|
|
196
223
|
}
|
|
197
224
|
/**
|
|
198
225
|
* Check if a role can delegate a task type
|
|
199
226
|
*/
|
|
200
227
|
export function canDelegateTask(role, taskType) {
|
|
201
|
-
if (!role
|
|
228
|
+
if (!role['canDelegate'])
|
|
202
229
|
return false;
|
|
203
|
-
return role
|
|
230
|
+
return role['canDelegate'].includes(taskType) || role['canDelegate'].includes('*');
|
|
204
231
|
}
|
|
205
232
|
/**
|
|
206
233
|
* Find the best role for a task based on routing rules
|
|
207
234
|
*/
|
|
208
235
|
export function findRoleForTask(taskType, rules, context) {
|
|
209
|
-
const matchingRules = rules.filter(rule => rule.taskType === taskType);
|
|
236
|
+
const matchingRules = rules.filter((rule) => rule.taskType === taskType);
|
|
210
237
|
if (matchingRules.length === 0)
|
|
211
238
|
return undefined;
|
|
212
239
|
// If there's an amount and escalation rules, check those
|
|
@@ -214,7 +241,7 @@ export function findRoleForTask(taskType, rules, context) {
|
|
|
214
241
|
for (const rule of matchingRules) {
|
|
215
242
|
if (rule.escalateAbove && context.amount > rule.escalateAbove) {
|
|
216
243
|
// Find the escalated rule
|
|
217
|
-
const escalatedRule = rules.find(r => r.taskType === taskType && r.requiredRole === rule.escalateTo);
|
|
244
|
+
const escalatedRule = rules.find((r) => r.taskType === taskType && r.requiredRole === rule.escalateTo);
|
|
218
245
|
if (escalatedRule)
|
|
219
246
|
return escalatedRule;
|
|
220
247
|
}
|
package/dist/roles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"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"}
|
package/dist/workflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,CAc3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAEhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAC3B,cAAc,EAAE,CAElB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAEpF;AAED;;GAEG;AACH,wBAAgB,SAAS,
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,CAc3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAEhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAC3B,cAAc,EAAE,CAElB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAEpF;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,cAAc,GACrB,kBAAkB,CAKpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAK5F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,kBAAkB,CAQpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiC1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAgB9F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAKvF;AASD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG;IAC9D,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CA2CA"}
|
package/dist/workflow.js
CHANGED
|
@@ -78,13 +78,13 @@ export function getActionsInOrder(workflow) {
|
|
|
78
78
|
* Get actions by type
|
|
79
79
|
*/
|
|
80
80
|
export function getActionsByType(workflow, type) {
|
|
81
|
-
return workflow.actions?.filter(action => action.type === type) || [];
|
|
81
|
+
return workflow.actions?.filter((action) => action.type === type) || [];
|
|
82
82
|
}
|
|
83
83
|
/**
|
|
84
84
|
* Get conditional actions
|
|
85
85
|
*/
|
|
86
86
|
export function getConditionalActions(workflow) {
|
|
87
|
-
return workflow.actions?.filter(action => action.condition) || [];
|
|
87
|
+
return workflow.actions?.filter((action) => action.condition) || [];
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* Add action to workflow
|
|
@@ -99,20 +99,21 @@ export function addAction(workflow, action) {
|
|
|
99
99
|
* Remove action from workflow
|
|
100
100
|
*/
|
|
101
101
|
export function removeAction(workflow, order) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
const actions = workflow.actions?.filter((a) => a.order !== order);
|
|
103
|
+
const result = { ...workflow };
|
|
104
|
+
if (actions !== undefined)
|
|
105
|
+
result.actions = actions;
|
|
106
|
+
return result;
|
|
106
107
|
}
|
|
107
108
|
/**
|
|
108
109
|
* Update action in workflow
|
|
109
110
|
*/
|
|
110
111
|
export function updateAction(workflow, order, updates) {
|
|
111
|
-
const actions = workflow.actions?.map(action => action.order === order ? { ...action, ...updates } : action);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
actions
|
|
115
|
-
|
|
112
|
+
const actions = workflow.actions?.map((action) => action.order === order ? { ...action, ...updates } : action);
|
|
113
|
+
const result = { ...workflow };
|
|
114
|
+
if (actions !== undefined)
|
|
115
|
+
result.actions = actions;
|
|
116
|
+
return result;
|
|
116
117
|
}
|
|
117
118
|
/**
|
|
118
119
|
* Check if trigger is event-based
|
|
@@ -234,7 +235,7 @@ export function validateWorkflow(workflow) {
|
|
|
234
235
|
}
|
|
235
236
|
orders.add(action.order);
|
|
236
237
|
// Validate action-specific requirements
|
|
237
|
-
if (action.type === 'wait' && !action.params?.duration) {
|
|
238
|
+
if (action.type === 'wait' && !action.params?.['duration']) {
|
|
238
239
|
errors.push(`Wait action at order ${action.order} must specify duration`);
|
|
239
240
|
}
|
|
240
241
|
}
|
package/dist/workflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,UAAU,QAAQ,CAAC,UAA8B;IACrD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;QACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,EAAE;KACpC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA4B;IAC5D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAA4B,EAC5B,IAA4B;IAE5B,OAAO,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "business-as-code",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Primitives for expressing business logic and processes as code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -9,25 +9,32 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"import": "./dist/index.js",
|
|
11
11
|
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./finance": {
|
|
14
|
+
"import": "./dist/finance/index.js",
|
|
15
|
+
"types": "./dist/finance/index.d.ts"
|
|
12
16
|
}
|
|
13
17
|
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc --watch",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"lint": "eslint .",
|
|
24
|
+
"clean": "rm -rf dist"
|
|
25
|
+
},
|
|
14
26
|
"dependencies": {
|
|
15
|
-
"ai-database": "2.
|
|
16
|
-
"ai-functions": "2.
|
|
27
|
+
"ai-database": "2.4.0",
|
|
28
|
+
"ai-functions": "2.4.0",
|
|
29
|
+
"digital-workers": "2.4.0",
|
|
30
|
+
"org.ai": "0.0.1"
|
|
17
31
|
},
|
|
32
|
+
"devDependencies": {},
|
|
18
33
|
"keywords": [
|
|
19
34
|
"business",
|
|
20
35
|
"logic",
|
|
21
36
|
"code",
|
|
22
37
|
"primitives"
|
|
23
38
|
],
|
|
24
|
-
"license": "MIT"
|
|
25
|
-
|
|
26
|
-
"build": "tsc",
|
|
27
|
-
"dev": "tsc --watch",
|
|
28
|
-
"test": "vitest",
|
|
29
|
-
"typecheck": "tsc --noEmit",
|
|
30
|
-
"lint": "eslint .",
|
|
31
|
-
"clean": "rm -rf dist"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
39
|
+
"license": "MIT"
|
|
40
|
+
}
|
package/src/dollar.ts
CHANGED
|
@@ -57,7 +57,10 @@ export function createBusinessOperations(initialContext?: BusinessContext): Busi
|
|
|
57
57
|
|
|
58
58
|
return {
|
|
59
59
|
format: (amount: number, currency?: Currency) => {
|
|
60
|
-
return formatCurrency(
|
|
60
|
+
return formatCurrency(
|
|
61
|
+
amount,
|
|
62
|
+
currency || (context.business?.metadata?.['currency'] as Currency) || 'USD'
|
|
63
|
+
)
|
|
61
64
|
},
|
|
62
65
|
|
|
63
66
|
percent: (value: number, total: number) => {
|
|
@@ -126,7 +129,7 @@ export function getContext(): BusinessContext {
|
|
|
126
129
|
* Reset business context
|
|
127
130
|
*/
|
|
128
131
|
export function resetContext(): void {
|
|
129
|
-
Object.keys($.context).forEach(key => {
|
|
132
|
+
Object.keys($.context).forEach((key) => {
|
|
130
133
|
delete $.context[key]
|
|
131
134
|
})
|
|
132
135
|
}
|
|
@@ -3,10 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Organizational hierarchy: Organization, Department, Team, Position, Role.
|
|
5
5
|
*
|
|
6
|
+
* Uses digital-workers Worker type for position holders.
|
|
7
|
+
*
|
|
6
8
|
* @packageDocumentation
|
|
7
9
|
*/
|
|
8
10
|
|
|
9
11
|
import type { Noun } from 'ai-database'
|
|
12
|
+
import type { Worker as DigitalWorker, WorkerRef } from 'digital-workers'
|
|
13
|
+
|
|
14
|
+
// Re-export for convenience
|
|
15
|
+
export type { DigitalWorker, WorkerRef }
|
|
10
16
|
|
|
11
17
|
// =============================================================================
|
|
12
18
|
// Organization
|
|
@@ -109,23 +115,9 @@ export const Organization: Noun = {
|
|
|
109
115
|
},
|
|
110
116
|
},
|
|
111
117
|
|
|
112
|
-
actions: [
|
|
113
|
-
'create',
|
|
114
|
-
'update',
|
|
115
|
-
'restructure',
|
|
116
|
-
'merge',
|
|
117
|
-
'split',
|
|
118
|
-
'archive',
|
|
119
|
-
],
|
|
118
|
+
actions: ['create', 'update', 'restructure', 'merge', 'split', 'archive'],
|
|
120
119
|
|
|
121
|
-
events: [
|
|
122
|
-
'created',
|
|
123
|
-
'updated',
|
|
124
|
-
'restructured',
|
|
125
|
-
'merged',
|
|
126
|
-
'split',
|
|
127
|
-
'archived',
|
|
128
|
-
],
|
|
120
|
+
events: ['created', 'updated', 'restructured', 'merged', 'split', 'archived'],
|
|
129
121
|
}
|
|
130
122
|
|
|
131
123
|
// =============================================================================
|
|
@@ -164,7 +156,18 @@ export const Department: Noun = {
|
|
|
164
156
|
type: 'string',
|
|
165
157
|
optional: true,
|
|
166
158
|
description: 'Department type',
|
|
167
|
-
examples: [
|
|
159
|
+
examples: [
|
|
160
|
+
'engineering',
|
|
161
|
+
'product',
|
|
162
|
+
'design',
|
|
163
|
+
'marketing',
|
|
164
|
+
'sales',
|
|
165
|
+
'operations',
|
|
166
|
+
'finance',
|
|
167
|
+
'hr',
|
|
168
|
+
'legal',
|
|
169
|
+
'support',
|
|
170
|
+
],
|
|
168
171
|
},
|
|
169
172
|
|
|
170
173
|
// Budget
|
|
@@ -440,7 +443,17 @@ export const Position: Noun = {
|
|
|
440
443
|
type: 'string',
|
|
441
444
|
optional: true,
|
|
442
445
|
description: 'Job level',
|
|
443
|
-
examples: [
|
|
446
|
+
examples: [
|
|
447
|
+
'intern',
|
|
448
|
+
'junior',
|
|
449
|
+
'mid',
|
|
450
|
+
'senior',
|
|
451
|
+
'staff',
|
|
452
|
+
'principal',
|
|
453
|
+
'director',
|
|
454
|
+
'vp',
|
|
455
|
+
'c-level',
|
|
456
|
+
],
|
|
444
457
|
},
|
|
445
458
|
track: {
|
|
446
459
|
type: 'string',
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account — bank/treasury/wallet account abstraction across providers.
|
|
3
|
+
* Stripe Treasury, Mercury, Column, Increase, Privy non-custodial wallet, etc.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Currency, Money } from './types.js'
|
|
7
|
+
|
|
8
|
+
export interface Account {
|
|
9
|
+
$id: string
|
|
10
|
+
$type: 'Account'
|
|
11
|
+
/** Tenant the account belongs to (ThingRef shape). */
|
|
12
|
+
tenantRef?: string
|
|
13
|
+
purpose: string
|
|
14
|
+
currency: Currency
|
|
15
|
+
providerData: {
|
|
16
|
+
provider: string
|
|
17
|
+
externalId: string
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface AccountSpec {
|
|
22
|
+
tenantRef?: string
|
|
23
|
+
purpose: string
|
|
24
|
+
currency: Currency
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface TransferOpts {
|
|
28
|
+
fromAccountRef: string
|
|
29
|
+
toAccountRef: string
|
|
30
|
+
amount: Money
|
|
31
|
+
/** Idempotency key for at-most-once semantics. */
|
|
32
|
+
idempotencyKey?: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface TransferResult {
|
|
36
|
+
$id: string
|
|
37
|
+
$type: 'Transfer'
|
|
38
|
+
fromAccountRef: string
|
|
39
|
+
toAccountRef: string
|
|
40
|
+
amount: Money
|
|
41
|
+
status: 'pending' | 'settled' | 'failed' | 'reversed'
|
|
42
|
+
/** ISO-8601 timestamp. */
|
|
43
|
+
createdAt: string
|
|
44
|
+
providerData: {
|
|
45
|
+
provider: string
|
|
46
|
+
externalId: string
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AuthorityBoundary — typed regulatory marker on a Service.
|
|
3
|
+
* The 12-tag catalog (per startup-builder SERVICES.md) lets a cascade
|
|
4
|
+
* declare the boundary it operates within; routing and HITL gates
|
|
5
|
+
* compose against the boundary.
|
|
6
|
+
*
|
|
7
|
+
* 10 regulated tags + 2 sentinels (none, self-only).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export type AuthorityBoundaryRef =
|
|
11
|
+
| 'self-only' // sentinel: agent acts for itself; no externally-binding outputs
|
|
12
|
+
| 'tenant-only' // sentinel: outputs bind only the tenant; no external counterparties
|
|
13
|
+
| 'unlicensed-advisory' // general-knowledge advisory; no professional license claimed
|
|
14
|
+
| 'cpa-attest' // CPA-signed attestation required
|
|
15
|
+
| 'jd-bar-admitted' // attorney admitted to relevant bar
|
|
16
|
+
| 'md-licensed' // physician with current state license
|
|
17
|
+
| 'fiduciary-investment-advice' // RIA / fiduciary-grade investment recommendation
|
|
18
|
+
| 'broker-dealer' // broker-dealer scope (FINRA-registered context)
|
|
19
|
+
| 'insurance-licensed' // licensed insurance producer
|
|
20
|
+
| 'real-estate-licensed' // licensed real-estate broker / agent
|
|
21
|
+
| 'pe-stamp' // PE-stamped engineering output
|
|
22
|
+
| 'kyc-aml-required' // identity + AML screening before action
|
|
23
|
+
| (string & { __brand?: 'AuthorityBoundaryRef' })
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Catalog of canonical AuthorityBoundary tags with policy hints. Consumers
|
|
27
|
+
* reference by id; substrate enforces gating + HITL routing per tag.
|
|
28
|
+
*/
|
|
29
|
+
export const AuthorityBoundaries = {
|
|
30
|
+
'self-only': { regulated: false, requiresHumanSign: false, requiresKYC: false },
|
|
31
|
+
'tenant-only': { regulated: false, requiresHumanSign: false, requiresKYC: false },
|
|
32
|
+
'unlicensed-advisory': { regulated: false, requiresHumanSign: false, requiresKYC: false },
|
|
33
|
+
'cpa-attest': { regulated: true, requiresHumanSign: true, requiresKYC: true },
|
|
34
|
+
'jd-bar-admitted': { regulated: true, requiresHumanSign: true, requiresKYC: true },
|
|
35
|
+
'md-licensed': { regulated: true, requiresHumanSign: true, requiresKYC: true },
|
|
36
|
+
'fiduciary-investment-advice': { regulated: true, requiresHumanSign: true, requiresKYC: true },
|
|
37
|
+
'broker-dealer': { regulated: true, requiresHumanSign: true, requiresKYC: true },
|
|
38
|
+
'insurance-licensed': { regulated: true, requiresHumanSign: true, requiresKYC: true },
|
|
39
|
+
'real-estate-licensed': { regulated: true, requiresHumanSign: true, requiresKYC: true },
|
|
40
|
+
'pe-stamp': { regulated: true, requiresHumanSign: true, requiresKYC: false },
|
|
41
|
+
'kyc-aml-required': { regulated: true, requiresHumanSign: false, requiresKYC: true },
|
|
42
|
+
} as const
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Card — virtual card issued by a finance provider (Stripe Issuing, Brex, Lithic, etc.).
|
|
3
|
+
* Per-Worker / per-Function / per-Task lifecycle.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Money } from './types.js'
|
|
7
|
+
|
|
8
|
+
export interface Card {
|
|
9
|
+
$id: string
|
|
10
|
+
$type: 'Card'
|
|
11
|
+
scope: 'single-use' | 'recurring'
|
|
12
|
+
/** Worker the card is issued to (Person/Agent/Role); ThingRef shape. */
|
|
13
|
+
workerRef?: string
|
|
14
|
+
caps: {
|
|
15
|
+
perTransaction?: Money
|
|
16
|
+
daily?: Money
|
|
17
|
+
total?: Money
|
|
18
|
+
}
|
|
19
|
+
/** Allowed Merchant Category Codes. */
|
|
20
|
+
mccAllowed?: string[]
|
|
21
|
+
/** Velocity controls. */
|
|
22
|
+
velocity?: {
|
|
23
|
+
maxTxPerDay?: number
|
|
24
|
+
}
|
|
25
|
+
state: 'issued' | 'active' | 'locked' | 'disposed'
|
|
26
|
+
providerData: {
|
|
27
|
+
provider: string
|
|
28
|
+
externalId: string
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface CardSpec {
|
|
33
|
+
scope: 'single-use' | 'recurring'
|
|
34
|
+
workerRef?: string
|
|
35
|
+
caps: Card['caps']
|
|
36
|
+
mccAllowed?: string[]
|
|
37
|
+
velocity?: Card['velocity']
|
|
38
|
+
}
|