business-as-code 2.1.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +2 -0
  3. package/package.json +16 -13
  4. package/src/dollar.ts +5 -2
  5. package/src/entities/organization.ts +31 -18
  6. package/src/goals.ts +78 -12
  7. package/src/index.ts +48 -18
  8. package/src/kpis.ts +62 -8
  9. package/src/metrics.ts +92 -79
  10. package/src/okrs.ts +120 -20
  11. package/src/organization.ts +12 -15
  12. package/src/process.ts +11 -12
  13. package/src/product.ts +8 -9
  14. package/src/queries.ts +238 -75
  15. package/src/roles.ts +62 -61
  16. package/src/workflow.ts +22 -15
  17. package/test/business.test.ts +282 -0
  18. package/test/dollar.test.ts +270 -0
  19. package/test/entities.test.ts +628 -0
  20. package/test/financials.test.ts +539 -0
  21. package/test/goals.test.ts +451 -0
  22. package/{src → test}/index.test.ts +1 -1
  23. package/test/kpis.test.ts +440 -0
  24. package/test/metrics.test.ts +744 -0
  25. package/test/okrs.test.ts +741 -0
  26. package/test/organization.test.ts +548 -0
  27. package/test/process.test.ts +503 -0
  28. package/test/product.test.ts +430 -0
  29. package/test/queries.test.ts +556 -0
  30. package/test/roles.test.ts +546 -0
  31. package/test/service.test.ts +450 -0
  32. package/test/types.test.ts +1141 -0
  33. package/test/vision.test.ts +214 -0
  34. package/test/workflow.test.ts +501 -0
  35. package/vitest.config.ts +47 -0
  36. package/.turbo/turbo-build.log +0 -5
  37. package/LICENSE +0 -21
  38. package/dist/business.d.ts +0 -62
  39. package/dist/business.d.ts.map +0 -1
  40. package/dist/business.js +0 -109
  41. package/dist/business.js.map +0 -1
  42. package/dist/canvas/activities.d.ts +0 -19
  43. package/dist/canvas/activities.d.ts.map +0 -1
  44. package/dist/canvas/activities.js +0 -20
  45. package/dist/canvas/activities.js.map +0 -1
  46. package/dist/canvas/channels.d.ts +0 -20
  47. package/dist/canvas/channels.d.ts.map +0 -1
  48. package/dist/canvas/channels.js +0 -21
  49. package/dist/canvas/channels.js.map +0 -1
  50. package/dist/canvas/relationships.d.ts +0 -20
  51. package/dist/canvas/relationships.d.ts.map +0 -1
  52. package/dist/canvas/relationships.js +0 -21
  53. package/dist/canvas/relationships.js.map +0 -1
  54. package/dist/canvas/resources.d.ts +0 -20
  55. package/dist/canvas/resources.d.ts.map +0 -1
  56. package/dist/canvas/resources.js +0 -30
  57. package/dist/canvas/resources.js.map +0 -1
  58. package/dist/canvas/revenue.d.ts +0 -22
  59. package/dist/canvas/revenue.d.ts.map +0 -1
  60. package/dist/canvas/revenue.js +0 -30
  61. package/dist/canvas/revenue.js.map +0 -1
  62. package/dist/canvas/segments.d.ts +0 -20
  63. package/dist/canvas/segments.d.ts.map +0 -1
  64. package/dist/canvas/segments.js +0 -28
  65. package/dist/canvas/segments.js.map +0 -1
  66. package/dist/canvas/types.d.ts +0 -232
  67. package/dist/canvas/types.d.ts.map +0 -1
  68. package/dist/canvas/types.js +0 -8
  69. package/dist/canvas/types.js.map +0 -1
  70. package/dist/canvas/value.d.ts +0 -20
  71. package/dist/canvas/value.d.ts.map +0 -1
  72. package/dist/canvas/value.js +0 -21
  73. package/dist/canvas/value.js.map +0 -1
  74. package/dist/dollar.d.ts +0 -60
  75. package/dist/dollar.d.ts.map +0 -1
  76. package/dist/dollar.js +0 -107
  77. package/dist/dollar.js.map +0 -1
  78. package/dist/entities/assets.d.ts +0 -21
  79. package/dist/entities/assets.d.ts.map +0 -1
  80. package/dist/entities/assets.js +0 -323
  81. package/dist/entities/assets.js.map +0 -1
  82. package/dist/entities/business.d.ts +0 -36
  83. package/dist/entities/business.d.ts.map +0 -1
  84. package/dist/entities/business.js +0 -370
  85. package/dist/entities/business.js.map +0 -1
  86. package/dist/entities/communication.d.ts +0 -21
  87. package/dist/entities/communication.d.ts.map +0 -1
  88. package/dist/entities/communication.js +0 -255
  89. package/dist/entities/communication.js.map +0 -1
  90. package/dist/entities/customers.d.ts +0 -58
  91. package/dist/entities/customers.d.ts.map +0 -1
  92. package/dist/entities/customers.js +0 -989
  93. package/dist/entities/customers.js.map +0 -1
  94. package/dist/entities/financials.d.ts +0 -59
  95. package/dist/entities/financials.d.ts.map +0 -1
  96. package/dist/entities/financials.js +0 -932
  97. package/dist/entities/financials.js.map +0 -1
  98. package/dist/entities/goals.d.ts +0 -58
  99. package/dist/entities/goals.d.ts.map +0 -1
  100. package/dist/entities/goals.js +0 -800
  101. package/dist/entities/goals.js.map +0 -1
  102. package/dist/entities/index.d.ts +0 -299
  103. package/dist/entities/index.d.ts.map +0 -1
  104. package/dist/entities/index.js +0 -198
  105. package/dist/entities/index.js.map +0 -1
  106. package/dist/entities/legal.d.ts +0 -21
  107. package/dist/entities/legal.d.ts.map +0 -1
  108. package/dist/entities/legal.js +0 -301
  109. package/dist/entities/legal.js.map +0 -1
  110. package/dist/entities/market.d.ts +0 -21
  111. package/dist/entities/market.d.ts.map +0 -1
  112. package/dist/entities/market.js +0 -301
  113. package/dist/entities/market.js.map +0 -1
  114. package/dist/entities/marketing.d.ts +0 -67
  115. package/dist/entities/marketing.d.ts.map +0 -1
  116. package/dist/entities/marketing.js +0 -1157
  117. package/dist/entities/marketing.js.map +0 -1
  118. package/dist/entities/offerings.d.ts +0 -51
  119. package/dist/entities/offerings.d.ts.map +0 -1
  120. package/dist/entities/offerings.js +0 -727
  121. package/dist/entities/offerings.js.map +0 -1
  122. package/dist/entities/operations.d.ts +0 -58
  123. package/dist/entities/operations.d.ts.map +0 -1
  124. package/dist/entities/operations.js +0 -787
  125. package/dist/entities/operations.js.map +0 -1
  126. package/dist/entities/organization.d.ts +0 -57
  127. package/dist/entities/organization.d.ts.map +0 -1
  128. package/dist/entities/organization.js +0 -807
  129. package/dist/entities/organization.js.map +0 -1
  130. package/dist/entities/partnerships.d.ts +0 -21
  131. package/dist/entities/partnerships.d.ts.map +0 -1
  132. package/dist/entities/partnerships.js +0 -300
  133. package/dist/entities/partnerships.js.map +0 -1
  134. package/dist/entities/planning.d.ts +0 -0
  135. package/dist/entities/planning.d.ts.map +0 -1
  136. package/dist/entities/planning.js +0 -271
  137. package/dist/entities/planning.js.map +0 -1
  138. package/dist/entities/projects.d.ts +0 -25
  139. package/dist/entities/projects.d.ts.map +0 -1
  140. package/dist/entities/projects.js +0 -349
  141. package/dist/entities/projects.js.map +0 -1
  142. package/dist/entities/risk.d.ts +0 -21
  143. package/dist/entities/risk.d.ts.map +0 -1
  144. package/dist/entities/risk.js +0 -293
  145. package/dist/entities/risk.js.map +0 -1
  146. package/dist/entities/sales.d.ts +0 -72
  147. package/dist/entities/sales.d.ts.map +0 -1
  148. package/dist/entities/sales.js +0 -1248
  149. package/dist/entities/sales.js.map +0 -1
  150. package/dist/financials.d.ts +0 -130
  151. package/dist/financials.d.ts.map +0 -1
  152. package/dist/financials.js +0 -297
  153. package/dist/financials.js.map +0 -1
  154. package/dist/goals.d.ts +0 -87
  155. package/dist/goals.d.ts.map +0 -1
  156. package/dist/goals.js +0 -215
  157. package/dist/goals.js.map +0 -1
  158. package/dist/index.d.ts +0 -97
  159. package/dist/index.d.ts.map +0 -1
  160. package/dist/index.js +0 -132
  161. package/dist/index.js.map +0 -1
  162. package/dist/kpis.d.ts +0 -118
  163. package/dist/kpis.d.ts.map +0 -1
  164. package/dist/kpis.js +0 -232
  165. package/dist/kpis.js.map +0 -1
  166. package/dist/metrics.d.ts +0 -448
  167. package/dist/metrics.d.ts.map +0 -1
  168. package/dist/metrics.js +0 -325
  169. package/dist/metrics.js.map +0 -1
  170. package/dist/okrs.d.ts +0 -123
  171. package/dist/okrs.d.ts.map +0 -1
  172. package/dist/okrs.js +0 -269
  173. package/dist/okrs.js.map +0 -1
  174. package/dist/organization.d.ts +0 -585
  175. package/dist/organization.d.ts.map +0 -1
  176. package/dist/organization.js +0 -173
  177. package/dist/organization.js.map +0 -1
  178. package/dist/process.d.ts +0 -112
  179. package/dist/process.d.ts.map +0 -1
  180. package/dist/process.js +0 -241
  181. package/dist/process.js.map +0 -1
  182. package/dist/product.d.ts +0 -85
  183. package/dist/product.d.ts.map +0 -1
  184. package/dist/product.js +0 -145
  185. package/dist/product.js.map +0 -1
  186. package/dist/queries.d.ts +0 -304
  187. package/dist/queries.d.ts.map +0 -1
  188. package/dist/queries.js +0 -415
  189. package/dist/queries.js.map +0 -1
  190. package/dist/roles.d.ts +0 -340
  191. package/dist/roles.d.ts.map +0 -1
  192. package/dist/roles.js +0 -255
  193. package/dist/roles.js.map +0 -1
  194. package/dist/service.d.ts +0 -61
  195. package/dist/service.d.ts.map +0 -1
  196. package/dist/service.js +0 -140
  197. package/dist/service.js.map +0 -1
  198. package/dist/types.d.ts +0 -459
  199. package/dist/types.d.ts.map +0 -1
  200. package/dist/types.js +0 -5
  201. package/dist/types.js.map +0 -1
  202. package/dist/vision.d.ts +0 -38
  203. package/dist/vision.d.ts.map +0 -1
  204. package/dist/vision.js +0 -68
  205. package/dist/vision.js.map +0 -1
  206. package/dist/workflow.d.ts +0 -115
  207. package/dist/workflow.d.ts.map +0 -1
  208. package/dist/workflow.js +0 -247
  209. package/dist/workflow.js.map +0 -1
  210. package/src/business.js +0 -108
  211. package/src/canvas/activities.ts +0 -32
  212. package/src/canvas/canvas.ts +0 -482
  213. package/src/canvas/channels.ts +0 -34
  214. package/src/canvas/costs.ts +0 -43
  215. package/src/canvas/economics.ts +0 -99
  216. package/src/canvas/index.ts +0 -206
  217. package/src/canvas/partnerships.ts +0 -34
  218. package/src/canvas/projections.ts +0 -141
  219. package/src/canvas/relationships.ts +0 -34
  220. package/src/canvas/resources.ts +0 -43
  221. package/src/canvas/revenue.ts +0 -56
  222. package/src/canvas/segments.ts +0 -42
  223. package/src/canvas/types.ts +0 -363
  224. package/src/canvas/value.ts +0 -34
  225. package/src/dollar.js +0 -106
  226. package/src/entities/assets.js +0 -322
  227. package/src/entities/business.js +0 -369
  228. package/src/entities/communication.js +0 -254
  229. package/src/entities/customers.js +0 -988
  230. package/src/entities/financials.js +0 -931
  231. package/src/entities/goals.js +0 -799
  232. package/src/entities/index.js +0 -197
  233. package/src/entities/legal.js +0 -300
  234. package/src/entities/market.js +0 -300
  235. package/src/entities/marketing.js +0 -1156
  236. package/src/entities/offerings.js +0 -726
  237. package/src/entities/operations.js +0 -786
  238. package/src/entities/organization.js +0 -806
  239. package/src/entities/partnerships.js +0 -299
  240. package/src/entities/planning.js +0 -270
  241. package/src/entities/projects.js +0 -348
  242. package/src/entities/risk.js +0 -292
  243. package/src/entities/sales.js +0 -1247
  244. package/src/financials.js +0 -296
  245. package/src/goals.js +0 -214
  246. package/src/index.js +0 -131
  247. package/src/index.test.js +0 -274
  248. package/src/kpis.js +0 -231
  249. package/src/metrics.js +0 -324
  250. package/src/okrs.js +0 -268
  251. package/src/organization.js +0 -172
  252. package/src/process.js +0 -240
  253. package/src/product.js +0 -144
  254. package/src/queries.js +0 -414
  255. package/src/roles.js +0 -254
  256. package/src/service.js +0 -139
  257. package/src/types.js +0 -4
  258. package/src/vision.js +0 -67
  259. package/src/workflow.js +0 -246
  260. package/tests/canvas.test.ts +0 -842
package/dist/roles.d.ts DELETED
@@ -1,340 +0,0 @@
1
- /**
2
- * Business Roles - Bridges digital-workers and ai-database authorization
3
- *
4
- * Connects:
5
- * - WorkerRole (business role: CEO, Engineer, Manager)
6
- * - Authorization Role (FGA/RBAC: permissions, access control)
7
- * - Task Assignment (who handles what in workflows/processes)
8
- *
9
- * @packageDocumentation
10
- */
11
- /**
12
- * Business role type - the function of a worker in the organization
13
- */
14
- export type BusinessRoleType = 'ceo' | 'cto' | 'cfo' | 'coo' | 'cmo' | 'cpo' | 'director' | 'manager' | 'lead' | 'supervisor' | 'engineer' | 'designer' | 'analyst' | 'specialist' | 'coordinator' | 'operator' | 'agent' | 'assistant' | string;
15
- /**
16
- * Business Role - extends WorkerRole with authorization and task capabilities
17
- *
18
- * @example
19
- * ```ts
20
- * const engineeringManager: BusinessRole = {
21
- * id: 'role_eng_manager',
22
- * name: 'Engineering Manager',
23
- * type: 'manager',
24
- * department: 'Engineering',
25
- * description: 'Leads engineering team and makes technical decisions',
26
- *
27
- * // Business responsibilities
28
- * responsibilities: [
29
- * 'Lead engineering team',
30
- * 'Make architecture decisions',
31
- * 'Conduct code reviews',
32
- * ],
33
- *
34
- * // Authorization permissions (from FGA)
35
- * permissions: {
36
- * repository: ['read', 'edit', 'act:merge', 'act:deploy'],
37
- * project: ['read', 'edit', 'manage'],
38
- * team: ['read', 'edit'],
39
- * },
40
- *
41
- * // Task capabilities
42
- * canHandle: ['code-review', 'architecture-decision', 'deployment-approval'],
43
- * canDelegate: ['code-review', 'testing'],
44
- * canApprove: ['pull-request', 'deployment', 'budget-under-5k'],
45
- *
46
- * // Worker type preference
47
- * workerType: 'human',
48
- * }
49
- * ```
50
- */
51
- export interface BusinessRole {
52
- /** Unique role identifier */
53
- id: string;
54
- /** Role display name */
55
- name: string;
56
- /** Role type classification */
57
- 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
- /**
67
- * Authorization permissions by resource type
68
- *
69
- * Maps resource types to allowed actions:
70
- * - 'read', 'edit', 'delete', 'manage' (standard)
71
- * - 'act:*' or 'act:verb' (domain-specific verbs)
72
- *
73
- * @example
74
- * ```ts
75
- * permissions: {
76
- * document: ['read', 'edit'],
77
- * invoice: ['read', 'act:send', 'act:void'],
78
- * project: ['read', 'edit', 'manage'],
79
- * }
80
- * ```
81
- */
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
- /** Compensation band */
98
- compensationBand?: string;
99
- /** Additional metadata */
100
- metadata?: Record<string, unknown>;
101
- }
102
- /**
103
- * Task status
104
- */
105
- export type TaskStatus = 'pending' | 'assigned' | 'in_progress' | 'blocked' | 'completed' | 'failed' | 'cancelled';
106
- /**
107
- * Task priority
108
- */
109
- export type TaskPriority = 'low' | 'normal' | 'high' | 'urgent' | 'critical';
110
- /**
111
- * Task assignment - links a worker to a task
112
- *
113
- * @example
114
- * ```ts
115
- * const assignment: TaskAssignment = {
116
- * id: 'assign_123',
117
- * taskId: 'task_review_pr_456',
118
- * taskType: 'code-review',
119
- *
120
- * // Who is assigned
121
- * assignee: { type: 'worker', id: 'worker_alice' },
122
- * role: 'role_eng_manager',
123
- *
124
- * // From what process/workflow
125
- * processId: 'process_code_review',
126
- * stepId: 'step_1_review',
127
- *
128
- * // Status and timing
129
- * status: 'in_progress',
130
- * priority: 'high',
131
- * assignedAt: new Date(),
132
- * dueAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
133
- *
134
- * // Context
135
- * context: {
136
- * pullRequestId: 'pr_789',
137
- * repository: 'acme/webapp',
138
- * },
139
- * }
140
- * ```
141
- */
142
- export interface TaskAssignment {
143
- /** Unique assignment ID */
144
- id: string;
145
- /** Task identifier */
146
- taskId: string;
147
- /** Task type (for routing) */
148
- taskType: string;
149
- /** Task description */
150
- description?: string;
151
- /** Who is assigned */
152
- assignee: AssigneeRef;
153
- /** Required role for this task */
154
- role?: string;
155
- /** Source process ID */
156
- processId?: string;
157
- /** Source workflow ID */
158
- workflowId?: string;
159
- /** Step ID within process/workflow */
160
- stepId?: string;
161
- /** Current status */
162
- status: TaskStatus;
163
- /** Priority */
164
- priority?: TaskPriority;
165
- /** When assigned */
166
- assignedAt: Date;
167
- /** Who assigned it */
168
- assignedBy?: AssigneeRef;
169
- /** Due date */
170
- dueAt?: Date;
171
- /** Started at */
172
- startedAt?: Date;
173
- /** Completed at */
174
- completedAt?: Date;
175
- /** Task context/data */
176
- context?: Record<string, unknown>;
177
- /** Task result */
178
- result?: unknown;
179
- /** Notes */
180
- notes?: string;
181
- /** Metadata */
182
- metadata?: Record<string, unknown>;
183
- }
184
- /**
185
- * Reference to an assignee (worker, team, or role)
186
- */
187
- export interface AssigneeRef {
188
- /** Type of assignee */
189
- type: 'worker' | 'team' | 'role';
190
- /** Assignee ID */
191
- id: string;
192
- /** Display name */
193
- name?: string;
194
- }
195
- /**
196
- * Task routing rule - determines who handles what tasks
197
- *
198
- * @example
199
- * ```ts
200
- * const routingRules: TaskRoutingRule[] = [
201
- * {
202
- * taskType: 'code-review',
203
- * requiredRole: 'engineer',
204
- * requiredLevel: 2,
205
- * requiredSkills: ['TypeScript'],
206
- * preferWorkerType: 'human',
207
- * },
208
- * {
209
- * taskType: 'expense-approval',
210
- * requiredRole: 'manager',
211
- * amountThreshold: 1000,
212
- * escalateAbove: 5000, // Escalate to director above $5k
213
- * escalateTo: 'director',
214
- * },
215
- * {
216
- * taskType: 'customer-inquiry',
217
- * requiredRole: 'agent',
218
- * preferWorkerType: 'ai',
219
- * fallbackTo: 'human', // Escalate to human if AI can't handle
220
- * },
221
- * ]
222
- * ```
223
- */
224
- export interface TaskRoutingRule {
225
- /** Task type this rule applies to */
226
- taskType: string;
227
- /** Required role type */
228
- requiredRole?: BusinessRoleType;
229
- /** Minimum level required */
230
- requiredLevel?: number;
231
- /** Required skills */
232
- requiredSkills?: string[];
233
- /** Required permissions */
234
- requiredPermissions?: string[];
235
- /** Preferred worker type */
236
- preferWorkerType?: 'ai' | 'human' | 'hybrid';
237
- /** Amount threshold (for approval tasks) */
238
- amountThreshold?: number;
239
- /** Amount above which to escalate */
240
- escalateAbove?: number;
241
- /** Role to escalate to */
242
- escalateTo?: BusinessRoleType | string;
243
- /** Fallback worker type if preferred unavailable */
244
- fallbackTo?: 'ai' | 'human';
245
- /** Priority for this task type */
246
- defaultPriority?: TaskPriority;
247
- /** SLA in minutes */
248
- slaMinutes?: number;
249
- /** Additional conditions */
250
- conditions?: Record<string, unknown>;
251
- }
252
- /**
253
- * Workflow role - defines a role within the context of a workflow
254
- *
255
- * @example
256
- * ```ts
257
- * const workflowRoles: WorkflowRole[] = [
258
- * {
259
- * name: 'Requester',
260
- * description: 'Person who initiates the request',
261
- * canInitiate: true,
262
- * canView: ['all'],
263
- * },
264
- * {
265
- * name: 'Approver',
266
- * description: 'Person who approves or rejects',
267
- * tasks: ['review', 'approve', 'reject'],
268
- * canView: ['details', 'history'],
269
- * requiredBusinessRole: 'manager',
270
- * },
271
- * {
272
- * name: 'Processor',
273
- * description: 'Person who processes after approval',
274
- * tasks: ['process', 'complete'],
275
- * requiredBusinessRole: 'operator',
276
- * },
277
- * ]
278
- * ```
279
- */
280
- export interface WorkflowRole {
281
- /** Role name within workflow */
282
- name: string;
283
- /** Description */
284
- description?: string;
285
- /** Can initiate this workflow */
286
- canInitiate?: boolean;
287
- /** Tasks this role handles */
288
- tasks?: string[];
289
- /** What this role can view */
290
- canView?: string[];
291
- /** Required business role */
292
- requiredBusinessRole?: BusinessRoleType | string;
293
- /** Required permissions */
294
- requiredPermissions?: string[];
295
- /** Minimum level */
296
- minLevel?: number;
297
- }
298
- /**
299
- * Standard business roles with typical permissions
300
- */
301
- export declare const StandardBusinessRoles: Record<string, Partial<BusinessRole>>;
302
- /**
303
- * Create a business role from a standard template
304
- */
305
- export declare function createBusinessRole(id: string, template: keyof typeof StandardBusinessRoles, overrides?: Partial<BusinessRole>): BusinessRole;
306
- /**
307
- * Check if a role has permission for an action on a resource type
308
- */
309
- export declare function hasPermission(role: BusinessRole, resourceType: string, action: string): boolean;
310
- /**
311
- * Check if a role can handle a task type
312
- */
313
- export declare function canHandleTask(role: BusinessRole, taskType: string): boolean;
314
- /**
315
- * Check if a role can approve a request type
316
- */
317
- export declare function canApproveRequest(role: BusinessRole, requestType: string): boolean;
318
- /**
319
- * Check if a role can delegate a task type
320
- */
321
- export declare function canDelegateTask(role: BusinessRole, taskType: string): boolean;
322
- /**
323
- * Find the best role for a task based on routing rules
324
- */
325
- export declare function findRoleForTask(taskType: string, rules: TaskRoutingRule[], context?: {
326
- amount?: number;
327
- skills?: string[];
328
- }): TaskRoutingRule | undefined;
329
- /**
330
- * Create a task assignment
331
- */
332
- export declare function createTaskAssignment(taskId: string, taskType: string, assignee: AssigneeRef, options?: Partial<Omit<TaskAssignment, 'id' | 'taskId' | 'taskType' | 'assignee' | 'status' | 'assignedAt'>>): TaskAssignment;
333
- /**
334
- * Transition task assignment status
335
- */
336
- export declare function transitionTaskStatus(assignment: TaskAssignment, newStatus: TaskStatus, options?: {
337
- result?: unknown;
338
- notes?: string;
339
- }): TaskAssignment;
340
- //# sourceMappingURL=roles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"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"}
package/dist/roles.js DELETED
@@ -1,255 +0,0 @@
1
- /**
2
- * Business Roles - Bridges digital-workers and ai-database authorization
3
- *
4
- * Connects:
5
- * - WorkerRole (business role: CEO, Engineer, Manager)
6
- * - Authorization Role (FGA/RBAC: permissions, access control)
7
- * - Task Assignment (who handles what in workflows/processes)
8
- *
9
- * @packageDocumentation
10
- */
11
- // =============================================================================
12
- // Standard Business Roles
13
- // =============================================================================
14
- /**
15
- * Standard business roles with typical permissions
16
- */
17
- export const StandardBusinessRoles = {
18
- // Executive
19
- ceo: {
20
- type: 'ceo',
21
- name: 'Chief Executive Officer',
22
- level: 10,
23
- permissions: { '*': ['manage'] },
24
- canApprove: ['*'],
25
- workerType: 'human',
26
- },
27
- cto: {
28
- type: 'cto',
29
- name: 'Chief Technology Officer',
30
- level: 10,
31
- department: 'Technology',
32
- permissions: {
33
- technology: ['manage'],
34
- repository: ['manage'],
35
- infrastructure: ['manage'],
36
- },
37
- canApprove: ['technical-decision', 'architecture', 'technology-budget'],
38
- workerType: 'human',
39
- },
40
- cfo: {
41
- type: 'cfo',
42
- name: 'Chief Financial Officer',
43
- level: 10,
44
- department: 'Finance',
45
- permissions: {
46
- finance: ['manage'],
47
- budget: ['manage'],
48
- expense: ['manage'],
49
- },
50
- canApprove: ['expense', 'budget', 'financial-decision'],
51
- workerType: 'human',
52
- },
53
- // Management
54
- director: {
55
- type: 'director',
56
- level: 8,
57
- permissions: {
58
- team: ['manage'],
59
- project: ['manage'],
60
- budget: ['read', 'edit'],
61
- },
62
- canApprove: ['hiring', 'budget-under-50k', 'project'],
63
- workerType: 'human',
64
- },
65
- manager: {
66
- type: 'manager',
67
- level: 6,
68
- permissions: {
69
- team: ['read', 'edit'],
70
- project: ['read', 'edit', 'manage'],
71
- },
72
- canApprove: ['expense-under-5k', 'time-off', 'code-review'],
73
- workerType: 'human',
74
- },
75
- lead: {
76
- type: 'lead',
77
- level: 5,
78
- permissions: {
79
- team: ['read'],
80
- project: ['read', 'edit'],
81
- repository: ['read', 'edit', 'act:merge'],
82
- },
83
- canDelegate: ['code-review', 'testing'],
84
- workerType: 'hybrid',
85
- },
86
- // Individual Contributors
87
- engineer: {
88
- type: 'engineer',
89
- level: 3,
90
- department: 'Engineering',
91
- permissions: {
92
- repository: ['read', 'edit'],
93
- project: ['read'],
94
- },
95
- canHandle: ['coding', 'code-review', 'bug-fix', 'testing'],
96
- workerType: 'hybrid',
97
- },
98
- analyst: {
99
- type: 'analyst',
100
- level: 3,
101
- permissions: {
102
- data: ['read'],
103
- report: ['read', 'edit'],
104
- },
105
- canHandle: ['data-analysis', 'reporting', 'research'],
106
- workerType: 'hybrid',
107
- },
108
- // Operations
109
- agent: {
110
- type: 'agent',
111
- level: 2,
112
- permissions: {
113
- ticket: ['read', 'edit', 'act:respond', 'act:escalate'],
114
- customer: ['read'],
115
- },
116
- canHandle: ['customer-inquiry', 'support-ticket', 'basic-troubleshooting'],
117
- workerType: 'ai', // AI-first
118
- },
119
- assistant: {
120
- type: 'assistant',
121
- level: 1,
122
- permissions: {
123
- calendar: ['read', 'edit'],
124
- email: ['read', 'act:draft'],
125
- task: ['read', 'edit'],
126
- },
127
- canHandle: ['scheduling', 'email-draft', 'task-management', 'research'],
128
- workerType: 'ai', // AI-first
129
- },
130
- };
131
- // =============================================================================
132
- // Helper Functions
133
- // =============================================================================
134
- /**
135
- * Create a business role from a standard template
136
- */
137
- export function createBusinessRole(id, template, overrides) {
138
- const standard = StandardBusinessRoles[template];
139
- if (!standard) {
140
- throw new Error(`Unknown role template: ${template}`);
141
- }
142
- return {
143
- id,
144
- name: standard.name || template,
145
- type: standard.type || template,
146
- ...standard,
147
- ...overrides,
148
- };
149
- }
150
- /**
151
- * Check if a role has permission for an action on a resource type
152
- */
153
- export function hasPermission(role, resourceType, action) {
154
- if (!role.permissions)
155
- return false;
156
- // Check wildcard permissions
157
- const wildcardPerms = role.permissions['*'];
158
- if (wildcardPerms) {
159
- if (wildcardPerms.includes('manage') || wildcardPerms.includes('*'))
160
- return true;
161
- if (wildcardPerms.includes(action))
162
- return true;
163
- }
164
- // Check resource-specific permissions
165
- const resourcePerms = role.permissions[resourceType];
166
- if (!resourcePerms)
167
- return false;
168
- // Check for exact match
169
- if (resourcePerms.includes(action))
170
- return true;
171
- // Check for 'manage' which includes all actions
172
- if (resourcePerms.includes('manage') || resourcePerms.includes('*'))
173
- return true;
174
- // Check for act:* pattern
175
- if (action.startsWith('act:')) {
176
- if (resourcePerms.includes('act:*'))
177
- return true;
178
- }
179
- return false;
180
- }
181
- /**
182
- * Check if a role can handle a task type
183
- */
184
- export function canHandleTask(role, taskType) {
185
- if (!role.canHandle)
186
- return false;
187
- return role.canHandle.includes(taskType) || role.canHandle.includes('*');
188
- }
189
- /**
190
- * Check if a role can approve a request type
191
- */
192
- export function canApproveRequest(role, requestType) {
193
- if (!role.canApprove)
194
- return false;
195
- return role.canApprove.includes(requestType) || role.canApprove.includes('*');
196
- }
197
- /**
198
- * Check if a role can delegate a task type
199
- */
200
- export function canDelegateTask(role, taskType) {
201
- if (!role.canDelegate)
202
- return false;
203
- return role.canDelegate.includes(taskType) || role.canDelegate.includes('*');
204
- }
205
- /**
206
- * Find the best role for a task based on routing rules
207
- */
208
- export function findRoleForTask(taskType, rules, context) {
209
- const matchingRules = rules.filter(rule => rule.taskType === taskType);
210
- if (matchingRules.length === 0)
211
- return undefined;
212
- // If there's an amount and escalation rules, check those
213
- if (context?.amount) {
214
- for (const rule of matchingRules) {
215
- if (rule.escalateAbove && context.amount > rule.escalateAbove) {
216
- // Find the escalated rule
217
- const escalatedRule = rules.find(r => r.taskType === taskType && r.requiredRole === rule.escalateTo);
218
- if (escalatedRule)
219
- return escalatedRule;
220
- }
221
- }
222
- }
223
- // Return the first matching rule
224
- return matchingRules[0];
225
- }
226
- /**
227
- * Create a task assignment
228
- */
229
- export function createTaskAssignment(taskId, taskType, assignee, options) {
230
- return {
231
- id: `assign_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`,
232
- taskId,
233
- taskType,
234
- assignee,
235
- status: 'assigned',
236
- assignedAt: new Date(),
237
- priority: 'normal',
238
- ...options,
239
- };
240
- }
241
- /**
242
- * Transition task assignment status
243
- */
244
- export function transitionTaskStatus(assignment, newStatus, options) {
245
- const now = new Date();
246
- return {
247
- ...assignment,
248
- status: newStatus,
249
- ...(newStatus === 'in_progress' && !assignment.startedAt ? { startedAt: now } : {}),
250
- ...(newStatus === 'completed' || newStatus === 'failed' ? { completedAt: now } : {}),
251
- ...(options?.result ? { result: options.result } : {}),
252
- ...(options?.notes ? { notes: options.notes } : {}),
253
- };
254
- }
255
- //# sourceMappingURL=roles.js.map
package/dist/roles.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../src/roles.ts"],"names":[],"mappings":"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"}
package/dist/service.d.ts DELETED
@@ -1,61 +0,0 @@
1
- /**
2
- * Service definition and management
3
- */
4
- import type { ServiceDefinition } from './types.js';
5
- /**
6
- * Define a service with pricing, SLA, and delivery information
7
- *
8
- * @example
9
- * ```ts
10
- * const service = Service({
11
- * name: 'Widget Consulting',
12
- * description: 'Expert widget implementation and optimization',
13
- * category: 'Consulting',
14
- * targetSegment: 'Enterprise',
15
- * valueProposition: 'Get expert help implementing widgets in 2 weeks',
16
- * pricingModel: 'fixed',
17
- * price: 5000,
18
- * currency: 'USD',
19
- * deliveryTime: '2 weeks',
20
- * sla: {
21
- * uptime: 99.9,
22
- * responseTime: '< 24 hours',
23
- * supportHours: 'Business hours (9-5 EST)',
24
- * penalties: '10% refund per day of delay',
25
- * },
26
- * })
27
- * ```
28
- */
29
- export declare function Service(definition: ServiceDefinition): ServiceDefinition;
30
- /**
31
- * Calculate service price based on hours (for hourly pricing)
32
- */
33
- export declare function calculateHourlyPrice(service: ServiceDefinition, hours: number): number;
34
- /**
35
- * Calculate monthly retainer equivalent
36
- */
37
- export declare function calculateMonthlyRetainer(service: ServiceDefinition, hoursPerMonth: number): number;
38
- /**
39
- * Check if service meets SLA uptime requirement
40
- */
41
- export declare function checkSLAUptime(service: ServiceDefinition, actualUptime: number): boolean;
42
- /**
43
- * Parse delivery time to days
44
- */
45
- export declare function parseDeliveryTimeToDays(deliveryTime?: string): number;
46
- /**
47
- * Estimate service completion date
48
- */
49
- export declare function estimateCompletionDate(service: ServiceDefinition, startDate?: Date): Date;
50
- /**
51
- * Calculate service value (for value-based pricing)
52
- */
53
- export declare function calculateValueBasedPrice(service: ServiceDefinition, customerValue: number, valueSharePercentage: number): number;
54
- /**
55
- * Validate service definition
56
- */
57
- export declare function validateService(service: ServiceDefinition): {
58
- valid: boolean;
59
- errors: string[];
60
- };
61
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,iBAAiB,GAAG,iBAAiB,CAWxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAKlG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAGxF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CA4BrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAMzF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA0BhG"}