@haneinfo/assignment 0.1.0 → 0.2.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/agent-guide.md CHANGED
@@ -30,14 +30,14 @@ steps and task hand-offs.
30
30
 
31
31
  Use it whenever a person must act before a business object moves on. Do not use it for plain
32
32
  notifications (that is a Timer `NOTIFY` action or the notification inbox) or for decisions a rule
33
- could make (rules engine, later).
33
+ could make (use a CHOICE state).
34
34
 
35
35
  ## Kind and example definition
36
36
 
37
- - `stateMachine`, `onEnter`: the machine and the state that opens the tasks. Not a FINAL state.
37
+ - `stateMachine`, `onEnter`: the machine and the state that opens the tasks. Not a FINAL or CHOICE state.
38
38
  - `assignees`: person resolvers — `SPECIFIC_USER` (`userIds`), `ROLE` (role machine name, resolved
39
39
  through RBAC), `FORM_FIELD_USER` (a `user_select` field of the machine's subject Form, by id),
40
- `SUBMITTER`. Resolving to nobody makes the transition into `onEnter` fail with
40
+ `SUBMITTER`, `DIRECT_SUPERVISOR`, `DEPARTMENT_HEAD`, `DIVISION_HEAD` (the last three require org-directory). Resolving to nobody makes the transition into `onEnter` fail with
41
41
  `ASSIGNEE_UNRESOLVED` — fix the role membership or the field.
42
42
  - `policy`: `ANY_ONE` (first response decides; use it for roles), `SINGLE` (same, but you expect
43
43
  exactly one person — a warning if the resolvers can produce several), `JOINT` (everybody must give
@@ -51,6 +51,11 @@ could make (rules engine, later).
51
51
  Instances pin the published assignments of their machine when they start; re-entering the state
52
52
  opens a new round. Leaving the state any other way (a Timer, a person) cancels open tasks.
53
53
 
54
+ Self-transitions also cancel the old round before opening the next. A deciding response leaves
55
+ the responding task `RESPONDED` and other open tasks `CLOSED`; an external state change uses
56
+ `CANCELLED`. PostgreSQL responses lock the instance before reading/writing the round, so concurrent
57
+ JOINT votes see committed earlier votes. Round evaluation reads every task, without a 500-row cap.
58
+
54
59
  Example: `examples/definitions/equipment-loan/equipment-manager-approval.assignment.json`.
55
60
 
56
61
  ## MCP tools
@@ -62,6 +67,10 @@ Example: `examples/definitions/equipment-loan/equipment-manager-approval.assignm
62
67
  There is no tool to respond: a response takes a transition (approve, reject) and stays a human
63
68
  step in the App. Register from the App: `assignmentMcpTools.registerInto(registry, { scopeNamespace })`.
64
69
 
70
+ The scope is required at listing and invocation by the MCP host. No definition-read permission is
71
+ required to see your own tasks: the acting user must own them. The client cannot select another
72
+ user. Invalid status input returns `INVALID_INPUT`; a credential without an acting user is refused.
73
+
65
74
  ## HTTP API (people)
66
75
 
67
76
  | Route | Purpose |
@@ -93,3 +102,15 @@ None. Roles resolve through `haneinfo.rbac-policy` (`userIdsWithRole`); assignee
93
102
  | `INVALID_DURATION` | `dueIn` is a positive duration without months or years |
94
103
  | `ASSIGNEE_UNRESOLVED` (runtime) | The resolvers produced nobody; see `details.unresolved` |
95
104
  | `TASK_NOT_OPEN` (runtime) | Someone else already decided, or the instance moved on |
105
+
106
+ ## Conditional activation
107
+
108
+ Optional spec.when uses the shared Form evaluateCondition function and PREDICATE/GROUP syntax,
109
+ including CONTEXT SUBMITTER_ID. False skips this assignment with no tasks or notifications and does
110
+ not block other transitions, even when every assignment is skipped. Empty inputs are errors.
111
+
112
+ The prepareStateEntry listener fixes when and assignee results before entry writes. Each matching
113
+ assignment resolves its people once and uses that exact result to open tasks. Any unresolved resolver
114
+ blocks entry, including partially resolved lists; details.unresolved preserves organization reasons
115
+ and unit information. A CHOICE stays in CHOICE and records/notifies the failure; other transitions
116
+ roll back to their original state and report the failure. Existing tasks keep their assignees.
@@ -13,6 +13,8 @@ export declare class AssignmentController {
13
13
  task: {
14
14
  status: "RESPONDED";
15
15
  response: string;
16
+ comment: string | null;
17
+ respondedAt: Date;
16
18
  id: string;
17
19
  instanceId: string;
18
20
  assignmentCode: string;
@@ -20,9 +22,7 @@ export declare class AssignmentController {
20
22
  round: number;
21
23
  assigneeId: string;
22
24
  title: string;
23
- comment: string | null;
24
25
  dueAt: Date | null;
25
- respondedAt: Date | null;
26
26
  createdAt: Date;
27
27
  };
28
28
  instance?: undefined;
@@ -31,6 +31,8 @@ export declare class AssignmentController {
31
31
  task: {
32
32
  status: "RESPONDED";
33
33
  response: string;
34
+ comment: string | null;
35
+ respondedAt: Date;
34
36
  id: string;
35
37
  instanceId: string;
36
38
  assignmentCode: string;
@@ -38,9 +40,7 @@ export declare class AssignmentController {
38
40
  round: number;
39
41
  assigneeId: string;
40
42
  title: string;
41
- comment: string | null;
42
43
  dueAt: Date | null;
43
- respondedAt: Date | null;
44
44
  createdAt: Date;
45
45
  };
46
46
  instance: {
@@ -10,7 +10,7 @@
10
10
  * transaction, with an ASSIGNMENT trigger (which skips the transition's person permission: the
11
11
  * assignment itself is the authorization).
12
12
  */
13
- import { type DefinitionRegistryPort, type NotificationInboxPort, type RbacPolicyPort, type StateMachineInstanceView, type StateMachineListener, type StateMachineRuntimePort } from '@haneinfo/plugin-api';
13
+ import { type DefinitionRegistryPort, type NotificationInboxPort, type OrgDirectoryPort, type RbacPolicyPort, type StateMachineInstanceView, type StateMachineListener, type StateMachineRuntimePort } from '@haneinfo/plugin-api';
14
14
  import { type OnModuleInit } from '@nestjs/common';
15
15
  import { type AssignmentStore, type TaskRecord } from './store';
16
16
  import type { AssignmentResponse, AssignmentSpec } from './types';
@@ -28,12 +28,14 @@ export declare class AssignmentService implements OnModuleInit {
28
28
  private readonly rbac?;
29
29
  private readonly notifications?;
30
30
  private readonly appName;
31
+ private readonly orgDirectory?;
31
32
  private readonly now;
33
+ private readonly preparedEntries;
32
34
  readonly listener: StateMachineListener;
33
- constructor(store: AssignmentStore, runtime: StateMachineRuntimePort, registry: DefinitionRegistryPort, rbac?: RbacPolicyPort | undefined, notifications?: NotificationInboxPort | undefined, clock?: () => Date, appName?: string);
35
+ constructor(store: AssignmentStore, runtime: StateMachineRuntimePort, registry: DefinitionRegistryPort, rbac?: RbacPolicyPort | undefined, notifications?: NotificationInboxPort | undefined, clock?: () => Date, appName?: string, orgDirectory?: OrgDirectoryPort | undefined);
34
36
  onModuleInit(): void;
35
37
  private pin;
36
- private onStateEntered;
38
+ private prepareEntry;
37
39
  private cancelOpen;
38
40
  private open;
39
41
  /** A person responds to their task. Human interface only (decision 202610-00b3, point 16 by analogy). */
@@ -47,6 +49,8 @@ export declare class AssignmentService implements OnModuleInit {
47
49
  task: {
48
50
  status: "RESPONDED";
49
51
  response: string;
52
+ comment: string | null;
53
+ respondedAt: Date;
50
54
  id: string;
51
55
  instanceId: string;
52
56
  assignmentCode: string;
@@ -54,9 +58,7 @@ export declare class AssignmentService implements OnModuleInit {
54
58
  round: number;
55
59
  assigneeId: string;
56
60
  title: string;
57
- comment: string | null;
58
61
  dueAt: Date | null;
59
- respondedAt: Date | null;
60
62
  createdAt: Date;
61
63
  };
62
64
  instance?: undefined;
@@ -65,6 +67,8 @@ export declare class AssignmentService implements OnModuleInit {
65
67
  task: {
66
68
  status: "RESPONDED";
67
69
  response: string;
70
+ comment: string | null;
71
+ respondedAt: Date;
68
72
  id: string;
69
73
  instanceId: string;
70
74
  assignmentCode: string;
@@ -72,9 +76,7 @@ export declare class AssignmentService implements OnModuleInit {
72
76
  round: number;
73
77
  assigneeId: string;
74
78
  title: string;
75
- comment: string | null;
76
79
  dueAt: Date | null;
77
- respondedAt: Date | null;
78
80
  createdAt: Date;
79
81
  };
80
82
  instance: {
@@ -1 +1 @@
1
- {"version":3,"file":"assignment.service.d.ts","sourceRoot":"","sources":["../src/assignment.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEL,KAAK,sBAAsB,EAG3B,KAAK,qBAAqB,EAG1B,KAAK,cAAc,EAGnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAsB,KAAK,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAEL,KAAK,eAAe,EAGpB,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,gBAAgB,eAA0C,CAAC;AACxE,eAAO,MAAM,mBAAmB,eAA6C,CAAC;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;IACvD,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,QAAQ,EAAE,IAAI,CACZ,wBAAwB,EACxB,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CACjE,GAAG,IAAI,CAAC;CACV;AAED,qBACa,iBAAkB,YAAW,YAAY;IASxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACf,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAdnE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IAEjC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAGrC;gBAG2C,KAAK,EAAE,eAAe,EACjB,OAAO,EAAE,uBAAuB,EAClC,QAAQ,EAAE,sBAAsB,EAC5B,IAAI,CAAC,EAAE,cAAc,YAAA,EACd,aAAa,CAAC,EAAE,qBAAqB,YAAA,EACxD,KAAK,CAAC,EAAE,MAAM,IAAI,EACE,OAAO,GAAE,MAAc;IAKnF,YAAY;YAME,GAAG;YAaH,cAAc;YAcd,UAAU;YAmBV,IAAI;IA2ElB,yGAAyG;IACnG,OAAO,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8FrF,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAkB,GAChD,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO1B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS1E,uDAAuD;IACjD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO;YAIhC,IAAI;CA4BnB"}
1
+ {"version":3,"file":"assignment.service.d.ts","sourceRoot":"","sources":["../src/assignment.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAEL,KAAK,sBAAsB,EAG3B,KAAK,qBAAqB,EAE1B,KAAK,gBAAgB,EAGrB,KAAK,cAAc,EAGnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAsB,KAAK,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAEL,KAAK,eAAe,EAGpB,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,gBAAgB,eAA0C,CAAC;AACxE,eAAO,MAAM,mBAAmB,eAA6C,CAAC;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;IACvD,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,QAAQ,EAAE,IAAI,CACZ,wBAAwB,EACxB,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CACjE,GAAG,IAAI,CAAC;CACV;AAED,qBACa,iBAAkB,YAAW,YAAY;IAqBxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACf,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IA3BnE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgD;IAEhF,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAcrC;gBAG2C,KAAK,EAAE,eAAe,EACjB,OAAO,EAAE,uBAAuB,EAClC,QAAQ,EAAE,sBAAsB,EAC5B,IAAI,CAAC,EAAE,cAAc,YAAA,EACd,aAAa,CAAC,EAAE,qBAAqB,YAAA,EACxD,KAAK,CAAC,EAAE,MAAM,IAAI,EACE,OAAO,GAAE,MAAc,EAC7B,YAAY,CAAC,EAAE,gBAAgB,YAAA;IAKrF,YAAY;YAME,GAAG;YAaH,YAAY;YA0CZ,UAAU;YAmBV,IAAI;IA6DlB,yGAAyG;IACnG,OAAO,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgHrF,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAkB,GAChD,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO1B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS1E,uDAAuD;IACjD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO;YAIhC,IAAI;CA4BnB"}
@@ -25,6 +25,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.AssignmentService = exports.ASSIGNMENT_APP_NAME = exports.ASSIGNMENT_CLOCK = void 0;
28
+ const form_1 = require("@haneinfo/form");
28
29
  const plugin_api_1 = require("@haneinfo/plugin-api");
29
30
  const common_1 = require("@nestjs/common");
30
31
  const kind_1 = require("./kind");
@@ -32,16 +33,30 @@ const store_1 = require("./store");
32
33
  exports.ASSIGNMENT_CLOCK = Symbol.for('haneinfo.assignment.clock');
33
34
  exports.ASSIGNMENT_APP_NAME = Symbol.for('haneinfo.assignment.app-name');
34
35
  let AssignmentService = class AssignmentService {
35
- constructor(store, runtime, registry, rbac, notifications, clock, appName = 'app') {
36
+ constructor(store, runtime, registry, rbac, notifications, clock, appName = 'app', orgDirectory) {
36
37
  this.store = store;
37
38
  this.runtime = runtime;
38
39
  this.registry = registry;
39
40
  this.rbac = rbac;
40
41
  this.notifications = notifications;
41
42
  this.appName = appName;
43
+ this.orgDirectory = orgDirectory;
44
+ this.preparedEntries = new WeakSet();
42
45
  this.listener = {
43
46
  onStarted: async ({ instance, tx }) => this.pin(instance, tx),
44
- onStateEntered: async ({ instance, tx }) => this.onStateEntered(instance, tx),
47
+ prepareStateEntry: async (event) => {
48
+ const apply = await this.prepareEntry(event);
49
+ return async () => {
50
+ await apply();
51
+ this.preparedEntries.add(event);
52
+ };
53
+ },
54
+ // Older normal-state runtimes have no preparation hook. Keep their transactional entry behavior.
55
+ onStateEntered: async (event) => {
56
+ if (this.preparedEntries.delete(event))
57
+ return;
58
+ await (await this.prepareEntry(event))();
59
+ },
45
60
  };
46
61
  this.now = clock ?? (() => new Date());
47
62
  }
@@ -61,18 +76,38 @@ let AssignmentService = class AssignmentService {
61
76
  }));
62
77
  await this.store.run(tx, (store) => store.saveBindings(bindings));
63
78
  }
64
- async onStateEntered(instance, tx) {
65
- await this.store.run(tx, async (store, t) => {
79
+ async prepareEntry({ instance, tx }) {
80
+ const plans = await this.store.run(tx, async (store) => {
66
81
  const bindings = await store.bindings(instance.id);
82
+ const plans = [];
67
83
  for (const binding of bindings) {
68
- if (binding.definition.spec.onEnter !== instance.state)
69
- await this.cancelOpen(store, instance.id, binding.assignmentCode, t);
70
- }
71
- for (const binding of bindings) {
72
- if (binding.definition.spec.onEnter === instance.state && !instance.finished)
73
- await this.open(store, instance, binding, t);
84
+ const spec = binding.definition.spec;
85
+ if (spec.onEnter !== instance.state || instance.finished)
86
+ continue;
87
+ if (spec.when &&
88
+ !(0, form_1.evaluateCondition)(spec.when, instance.data, { submitterId: instance.submitterId }))
89
+ continue;
90
+ const resolution = await (0, plugin_api_1.resolvePersons)(spec.assignees, {
91
+ submitterId: instance.submitterId,
92
+ data: instance.data,
93
+ rbac: this.rbac,
94
+ orgDirectory: this.orgDirectory,
95
+ tx,
96
+ });
97
+ if (!resolution.userIds.length || resolution.unresolved.length)
98
+ throw new plugin_api_1.MechanismError('ASSIGNEE_UNRESOLVED', `Assignment/${binding.assignmentCode} could not resolve its assignees`, 409, 'Repair the organization or assignee data', [], { unresolved: resolution.unresolved });
99
+ plans.push({ binding, resolution });
74
100
  }
101
+ return { bindings, plans };
75
102
  });
103
+ return async () => {
104
+ await this.store.run(tx, async (store, t) => {
105
+ for (const binding of plans.bindings)
106
+ await this.cancelOpen(store, instance.id, binding.assignmentCode, t);
107
+ for (const plan of plans.plans)
108
+ await this.open(store, instance, plan.binding, t, plan.resolution);
109
+ });
110
+ };
76
111
  }
77
112
  async cancelOpen(store, instanceId, assignmentCode, tx) {
78
113
  const open = await store.tasks({ instanceId, assignmentCode, status: 'OPEN' });
@@ -86,16 +121,8 @@ let AssignmentService = class AssignmentService {
86
121
  payload: { assignmentCode, round: open[0]?.round ?? 0, outcome: 'CANCELLED' },
87
122
  }, tx);
88
123
  }
89
- async open(store, instance, binding, tx) {
124
+ async open(store, instance, binding, tx, resolution) {
90
125
  const spec = binding.definition.spec;
91
- const resolution = await (0, plugin_api_1.resolvePersons)(spec.assignees, {
92
- submitterId: instance.submitterId,
93
- data: instance.data,
94
- rbac: this.rbac,
95
- });
96
- if (resolution.userIds.length === 0) {
97
- throw new plugin_api_1.MechanismError('ASSIGNEE_UNRESOLVED', `Assignment/${binding.assignmentCode} resolved to nobody, so the instance cannot enter "${instance.state}"`, 409, 'Check the assignees: the role must have members, the user field must be filled', [], { unresolved: resolution.unresolved });
98
- }
99
126
  const now = this.now();
100
127
  const dueIn = spec.dueIn ? (0, plugin_api_1.parseIsoDuration)(spec.dueIn) : null;
101
128
  const dueAt = dueIn ? new Date(now.getTime() + dueIn) : null;
@@ -142,10 +169,16 @@ let AssignmentService = class AssignmentService {
142
169
  /** A person responds to their task. Human interface only (decision 202610-00b3, point 16 by analogy). */
143
170
  async respond(input) {
144
171
  return this.store.run(undefined, async (store, tx) => {
145
- const task = await store.task(input.taskId);
172
+ let task = await store.task(input.taskId);
146
173
  if (!task || task.assigneeId !== input.userId) {
147
174
  throw new plugin_api_1.MechanismError('TASK_NOT_FOUND', 'No such task of yours', 404);
148
175
  }
176
+ // Lock the instance before any task writes. Other responders and state transitions use
177
+ // this same lock order, so concurrent JOINT votes cannot both miss each other's vote.
178
+ await this.runtime.get(task.instanceId, tx, { lock: true });
179
+ task = await store.task(input.taskId);
180
+ if (!task || task.assigneeId !== input.userId)
181
+ throw new plugin_api_1.MechanismError('TASK_NOT_FOUND', 'No such task of yours', 404);
149
182
  if (task.status !== 'OPEN') {
150
183
  throw new plugin_api_1.MechanismError('TASK_NOT_OPEN', `The task is ${task.status.toLowerCase()}`, 409, 'Nothing to do: someone else decided, or the request moved on');
151
184
  }
@@ -177,7 +210,13 @@ let AssignmentService = class AssignmentService {
177
210
  if (!completes)
178
211
  return {
179
212
  completed: false,
180
- task: { ...task, status: 'RESPONDED', response: response.key },
213
+ task: {
214
+ ...task,
215
+ status: 'RESPONDED',
216
+ response: response.key,
217
+ comment: input.comment ?? null,
218
+ respondedAt: at,
219
+ },
181
220
  };
182
221
  for (const other of round)
183
222
  if (other.status === 'OPEN')
@@ -202,7 +241,13 @@ let AssignmentService = class AssignmentService {
202
241
  }, tx);
203
242
  return {
204
243
  completed: true,
205
- task: { ...task, status: 'RESPONDED', response: response.key },
244
+ task: {
245
+ ...task,
246
+ status: 'RESPONDED',
247
+ response: response.key,
248
+ comment: input.comment ?? null,
249
+ respondedAt: at,
250
+ },
206
251
  instance: { id: instance.id, state: instance.state, revision: instance.revision },
207
252
  };
208
253
  });
@@ -262,6 +307,8 @@ exports.AssignmentService = AssignmentService = __decorate([
262
307
  __param(5, (0, common_1.Inject)(exports.ASSIGNMENT_CLOCK)),
263
308
  __param(6, (0, common_1.Optional)()),
264
309
  __param(6, (0, common_1.Inject)(exports.ASSIGNMENT_APP_NAME)),
265
- __metadata("design:paramtypes", [Object, Object, Object, Object, Object, Function, String])
310
+ __param(7, (0, common_1.Optional)()),
311
+ __param(7, (0, common_1.Inject)(plugin_api_1.ORG_DIRECTORY)),
312
+ __metadata("design:paramtypes", [Object, Object, Object, Object, Object, Function, String, Object])
266
313
  ], AssignmentService);
267
314
  //# sourceMappingURL=assignment.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assignment.service.js","sourceRoot":"","sources":["../src/assignment.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assignment.service.js","sourceRoot":"","sources":["../src/assignment.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools.d.ts","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAczD,qBACa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,iBAAiB;IAE3D,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE;CAmCvE"}
1
+ {"version":3,"file":"mcp-tools.d.ts","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAczD,qBACa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,iBAAiB;IAE3D,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE;CA4CvE"}
package/dist/mcp-tools.js CHANGED
@@ -50,7 +50,16 @@ let AssignmentMcpTools = class AssignmentMcpTools {
50
50
  ok: false,
51
51
  error: { code: 'FORBIDDEN', message: 'This credential is not bound to a user' },
52
52
  };
53
- const { status } = inputSchema.parse(raw ?? {});
53
+ const parsed = inputSchema.safeParse(raw ?? {});
54
+ if (!parsed.success)
55
+ return {
56
+ ok: false,
57
+ error: {
58
+ code: 'INVALID_INPUT',
59
+ message: 'Use status OPEN, RESPONDED, CLOSED or CANCELLED',
60
+ },
61
+ };
62
+ const { status } = parsed.data;
54
63
  const tasks = await this.assignments.listMine(userId, status);
55
64
  return {
56
65
  ok: true,
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,6FAA6F;AAC7F,eAAO,MAAM,wBAAwB,4EACsC,CAAC;AAE5E,eAAO,MAAM,kBAAkB,EAAE,gBAiEhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,gFAG3B,CAAC;AAEH,wBAAgB,UAAU,mFAEzB;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,6FAA6F;AAC7F,eAAO,MAAM,wBAAwB,4EACsC,CAAC;AAE5E,eAAO,MAAM,kBAAkB,EAAE,gBAqEhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,gFAG3B,CAAC;AAEH,wBAAgB,UAAU,mFAEzB;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/plugin.js CHANGED
@@ -30,7 +30,11 @@ exports.assignmentManifest = {
30
30
  'haneinfo.definition-registry',
31
31
  'haneinfo.state-machine-runtime',
32
32
  ],
33
- optionalRequires: ['haneinfo.rbac-policy', 'haneinfo.notification-inbox'],
33
+ optionalRequires: [
34
+ 'haneinfo.rbac-policy',
35
+ 'haneinfo.notification-inbox',
36
+ 'haneinfo.org-directory',
37
+ ],
34
38
  facets: {
35
39
  backend: {
36
40
  modulePath: './dist/assignment.module.js',
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";AAAA,sEAAsE;;;AAkFtE,gCAEC;AAlFD,qDAA2E;AAC3E,2DAAuD;AACvD,2CAAkD;AAElD,6FAA6F;AAChF,QAAA,wBAAwB,GACnC,yEAAyE,CAAC;AAE/D,QAAA,kBAAkB,GAAqB;IAClD,aAAa,EAAE,oBAAoB;IACnC,EAAE,EAAE,YAAY;IAChB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,UAAU;IACxB,MAAM,EAAE;QACN,iBAAiB,EAAE,QAAQ;QAC3B,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;YACV,gBAAgB,EAAE,SAAS;YAC3B,cAAc,EAAE,SAAS;YACzB,gBAAgB,EAAE,QAAQ;SAC3B;KACF;IACD,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE;QACR,iBAAiB;QACjB,4BAA4B;QAC5B,8BAA8B;QAC9B,gCAAgC;KACjC;IACD,gBAAgB,EAAE,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;IACzE,MAAM,EAAE;QACN,OAAO,EAAE;YACP,UAAU,EAAE,6BAA6B;YACzC,UAAU,EAAE,kBAAkB;YAC9B,gBAAgB,EAAE,CAAC,aAAa,CAAC;YACjC,eAAe,EAAE;gBACf;oBACE,IAAI,EAAE,YAAY;oBAClB,aAAa,EAAE,CAAC;oBAChB,UAAU,EAAE,8BAA8B;oBAC1C,WAAW,EAAE,YAAY;iBAC1B;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,+BAAmB,EAAE,cAAc,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAC1F,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,mBAAmB;oBACzB,aAAa,EAAE,CAAC;oBAChB,WAAW,EAAE,0EAA0E;iBACxF;gBACD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,aAAa,EAAE,CAAC;oBAChB,WAAW,EACT,kFAAkF;iBACrF;aACF;YACD,UAAU,EAAE,kBAAkB;SAC/B;QACD,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;YAC7C,cAAc,EAAE,0BAA0B;YAC1C,YAAY,EAAE,gCAAwB;SACvC;QACD,WAAW,EAAE;YACX,WAAW,EAAE;gBACX,4BAA4B;gBAC5B,6BAA6B;gBAC7B,+BAA+B;aAChC;SACF;KACF;CACF,CAAC;AAEW,QAAA,gBAAgB,GAAG,IAAA,yBAAY,EAAC;IAC3C,QAAQ,EAAE,0BAAkB;IAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,oCAAgB;CAChC,CAAC,CAAC;AAEH,SAAgB,UAAU;IACxB,OAAO,wBAAgB,CAAC;AAC1B,CAAC;AAED,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";AAAA,sEAAsE;;;AAsFtE,gCAEC;AAtFD,qDAA2E;AAC3E,2DAAuD;AACvD,2CAAkD;AAElD,6FAA6F;AAChF,QAAA,wBAAwB,GACnC,yEAAyE,CAAC;AAE/D,QAAA,kBAAkB,GAAqB;IAClD,aAAa,EAAE,oBAAoB;IACnC,EAAE,EAAE,YAAY;IAChB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,UAAU;IACxB,MAAM,EAAE;QACN,iBAAiB,EAAE,QAAQ;QAC3B,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;YACV,gBAAgB,EAAE,SAAS;YAC3B,cAAc,EAAE,SAAS;YACzB,gBAAgB,EAAE,QAAQ;SAC3B;KACF;IACD,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE;QACR,iBAAiB;QACjB,4BAA4B;QAC5B,8BAA8B;QAC9B,gCAAgC;KACjC;IACD,gBAAgB,EAAE;QAChB,sBAAsB;QACtB,6BAA6B;QAC7B,wBAAwB;KACzB;IACD,MAAM,EAAE;QACN,OAAO,EAAE;YACP,UAAU,EAAE,6BAA6B;YACzC,UAAU,EAAE,kBAAkB;YAC9B,gBAAgB,EAAE,CAAC,aAAa,CAAC;YACjC,eAAe,EAAE;gBACf;oBACE,IAAI,EAAE,YAAY;oBAClB,aAAa,EAAE,CAAC;oBAChB,UAAU,EAAE,8BAA8B;oBAC1C,WAAW,EAAE,YAAY;iBAC1B;aACF;YACD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,+BAAmB,EAAE,cAAc,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAC1F,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,mBAAmB;oBACzB,aAAa,EAAE,CAAC;oBAChB,WAAW,EAAE,0EAA0E;iBACxF;gBACD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,aAAa,EAAE,CAAC;oBAChB,WAAW,EACT,kFAAkF;iBACrF;aACF;YACD,UAAU,EAAE,kBAAkB;SAC/B;QACD,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;YAC7C,cAAc,EAAE,0BAA0B;YAC1C,YAAY,EAAE,gCAAwB;SACvC;QACD,WAAW,EAAE;YACX,WAAW,EAAE;gBACX,4BAA4B;gBAC5B,6BAA6B;gBAC7B,+BAA+B;aAChC;SACF;KACF;CACF,CAAC;AAEW,QAAA,gBAAgB,GAAG,IAAA,yBAAY,EAAC;IAC3C,QAAQ,EAAE,0BAAkB;IAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,oCAAgB;CAChC,CAAC,CAAC;AAEH,SAAgB,UAAU;IACxB,OAAO,wBAAgB,CAAC;AAC1B,CAAC;AAED,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-store.d.ts","sourceRoot":"","sources":["../src/prisma-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAmFjB,qBAAa,qBAAsB,YAAW,eAAe;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,OAAO;IAE5C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAM7F"}
1
+ {"version":3,"file":"prisma-store.d.ts","sourceRoot":"","sources":["../src/prisma-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAkFjB,qBAAa,qBAAsB,YAAW,eAAe;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,OAAO;IAE5C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAM7F"}
@@ -35,7 +35,6 @@ class PrismaTx {
35
35
  return this.db.assignmentTask.findMany({
36
36
  where: Object.fromEntries(Object.entries(filter).filter(([, value]) => value !== undefined)),
37
37
  orderBy: [{ createdAt: 'desc' }],
38
- take: 500,
39
38
  });
40
39
  }
41
40
  async updateTask(id, expectedStatus, patch) {
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-store.js","sourceRoot":"","sources":["../src/prisma-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prisma-store.js","sourceRoot":"","sources":["../src/prisma-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"semantics.d.ts","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAIjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAuB9C,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,oBAAoB,EAAE,CAoIxB"}
1
+ {"version":3,"file":"semantics.d.ts","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAIjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAuB9C,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,EACpB,OAAO,CAAC,EAAE,2BAA2B,GACpC,oBAAoB,EAAE,CA6IxB"}
package/dist/semantics.js CHANGED
@@ -6,6 +6,7 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.validateAssignmentSpec = validateAssignmentSpec;
9
+ const form_1 = require("@haneinfo/form");
9
10
  const plugin_api_1 = require("@haneinfo/plugin-api");
10
11
  function formFieldTypes(fields, out = new Map()) {
11
12
  for (const field of fields) {
@@ -17,6 +18,8 @@ function formFieldTypes(fields, out = new Map()) {
17
18
  }
18
19
  function validateAssignmentSpec(spec, context) {
19
20
  const diagnostics = [];
21
+ if (spec.when)
22
+ diagnostics.push(...(0, form_1.validateCondition)(spec.when, ['spec', 'when']));
20
23
  const add = (code, message, segments, suggestion, severity = 'ERROR') => diagnostics.push((0, plugin_api_1.definitionDiagnostic)(code, message, (0, plugin_api_1.toJsonPointer)(['spec', ...segments]), {
21
24
  suggestion,
22
25
  severity,
@@ -49,7 +52,7 @@ function validateAssignmentSpec(spec, context) {
49
52
  if (!state) {
50
53
  add('UNKNOWN_STATE', `"${spec.onEnter}" is not a state of StateMachine/${spec.stateMachine.code}`, ['onEnter'], `Use one of: ${machine.states.map((s) => s.key).join(', ')}`);
51
54
  }
52
- else if (state.type === 'FINAL') {
55
+ else if (state.type === 'FINAL' || state.type === 'CHOICE') {
53
56
  add('ASSIGNMENT_ON_FINAL_STATE', `"${spec.onEnter}" is FINAL, so nobody could act on the task`, ['onEnter'], 'Open the assignment on a state that has transitions out');
54
57
  }
55
58
  spec.responses.forEach((response, index) => {
@@ -62,6 +65,8 @@ function validateAssignmentSpec(spec, context) {
62
65
  }
63
66
  });
64
67
  const subject = machine.subject ? context?.resolve(machine.subject) : undefined;
68
+ if (spec.when && subject)
69
+ diagnostics.push(...(0, form_1.validateCondition)(spec.when, ['spec', 'when'], (0, form_1.conditionFieldIds)(subject.spec.fields)).filter((diagnostic) => diagnostic.code === 'UNKNOWN_FIELD'));
65
70
  const fieldTypes = subject
66
71
  ? formFieldTypes(subject.spec.fields ?? [])
67
72
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantics.js","sourceRoot":"","sources":["../src/semantics.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAiCH,wDAgJC;AA/KD,yCAAqF;AACrF,qDAM8B;AAgB9B,SAAS,cAAc,CAAC,MAA4B,EAAE,MAAM,IAAI,GAAG,EAAkB;IACnF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,QAAQ;YAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,sBAAsB,CACpC,IAAoB,EACpB,OAAqC;IAErC,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,IAAI;QAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,CACV,IAAY,EACZ,OAAe,EACf,QAA6B,EAC7B,UAAkB,EAClB,WAAgC,OAAO,EACvC,EAAE,CACF,WAAW,CAAC,IAAI,CACd,IAAA,iCAAoB,EAAC,IAAI,EAAE,OAAO,EAAE,IAAA,0BAAa,EAAC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE;QACxE,UAAU;QACV,QAAQ;KACT,CAAC,CACH,CAAC;IAEJ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxB,GAAG,CACD,wBAAwB,EACxB,iBAAiB,QAAQ,CAAC,GAAG,iBAAiB,EAC9C,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,EAC3B,kCAAkC,CACnC,CAAC;QACJ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACjD,GAAG,CACD,oBAAoB,EACpB,6CAA6C,EAC7C,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,EAChC,2DAA2D,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IACE,IAAI,CAAC,MAAM,KAAK,OAAO;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EACpE,CAAC;QACD,GAAG,CACD,2BAA2B,EAC3B,6EAA6E,EAC7E,CAAC,WAAW,CAAC,EACb,mDAAmD,CACpD,CAAC;IACJ,CAAC;IACD,IACE,IAAI,CAAC,MAAM,KAAK,QAAQ;QACxB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CACjF,CAAC,EACJ,CAAC;QACD,GAAG,CACD,yBAAyB,EACzB,sEAAsE,EACtE,CAAC,WAAW,CAAC,EACb,0CAA0C,EAC1C,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAA,6BAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,GAAG,CACD,kBAAkB,EAClB,IAAI,IAAI,CAAC,KAAK,uCAAuC,EACrD,CAAC,OAAO,CAAC,EACT,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAA+B,CAAC;IACrF,IAAI,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,CAAC,oDAAoD;IACtF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CACD,eAAe,EACf,IAAI,IAAI,CAAC,OAAO,oCAAoC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAC5E,CAAC,SAAS,CAAC,EACX,eAAe,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7D,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7D,GAAG,CACD,2BAA2B,EAC3B,IAAI,IAAI,CAAC,OAAO,6CAA6C,EAC7D,CAAC,SAAS,CAAC,EACX,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACzC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,QAAQ,CAAC,UAAU,CACrD,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CACD,oBAAoB,EACpB,IAAI,QAAQ,CAAC,UAAU,yCAAyC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EACxF,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,EAClC,eAAe,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClE,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,GAAG,CACD,2BAA2B,EAC3B,IAAI,QAAQ,CAAC,UAAU,qBAAqB,IAAI,CAAC,OAAO,GAAG,EAC3D,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,EAClC,2CAA2C,IAAI,CAAC,OAAO,GAAG,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO;QACtB,WAAW,CAAC,IAAI,CACd,GAAG,IAAA,wBAAiB,EAClB,IAAI,CAAC,IAAI,EACT,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,IAAA,wBAAiB,EAAE,OAAO,CAAC,IAAiB,CAAC,MAAM,CAAC,CACrD,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,eAAe,CAAC,CAC9D,CAAC;IACJ,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,cAAc,CAAE,OAAO,CAAC,IAAgC,CAAC,MAAM,IAAI,EAAE,CAAC;QACxE,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB;YAAE,OAAO;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CACD,iBAAiB,EACjB,gEAAgE,EAChE,CAAC,WAAW,EAAE,KAAK,CAAC,EACpB,2DAA2D,CAC5D,CAAC;QACJ,CAAC;aAAM,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,aAAa,EAAE,CAAC;YAC9D,GAAG,CACD,kBAAkB,EAClB,IAAI,QAAQ,CAAC,OAAO,kDAAkD,EACtE,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,EAC/B,qCAAqC,CACtC,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/dist/testing.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** `@haneinfo/assignment/testing` — the assignment runtime on in-memory stores, attached to a test state machine. */
2
- import type { DefinitionKindRegistration, NotificationInboxPort, RbacPolicyPort } from '@haneinfo/plugin-api';
2
+ import type { DefinitionKindRegistration, NotificationInboxPort, OrgDirectoryPort, PersonResolver, RbacPolicyPort } from '@haneinfo/plugin-api';
3
3
  import { AssignmentService } from './assignment.service';
4
4
  import { InMemoryAssignmentStore } from './store';
5
5
  export { InMemoryAssignmentStore } from './store';
@@ -8,6 +8,8 @@ export declare function createTestAssignmentRuntime(options?: {
8
8
  rbac?: RbacPolicyPort;
9
9
  clock?: () => Date;
10
10
  notifications?: NotificationInboxPort;
11
+ orgDirectory?: OrgDirectoryPort;
12
+ failureRecipients?: PersonResolver[];
11
13
  }): {
12
14
  assignments: AssignmentService;
13
15
  assignmentStore: InMemoryAssignmentStore;
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,qHAAqH;AAErH,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,2BAA2B,CACzC,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CAClC;;;;;;;EAmBP"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,qHAAqH;AAErH,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,2BAA2B,CACzC,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,iBAAiB,CAAC,EAAE,cAAc,EAAE,CAAC;CACjC;;;;;;;EAsBP"}
package/dist/testing.js CHANGED
@@ -14,9 +14,11 @@ function createTestAssignmentRuntime(options = {}) {
14
14
  kinds: [kind_1.assignmentDefinitionKind, ...(options.kinds ?? [])],
15
15
  rbac: options.rbac,
16
16
  clock: options.clock,
17
+ notifications: options.notifications,
18
+ config: { failureRecipients: options.failureRecipients },
17
19
  });
18
20
  const assignmentStore = new store_1.InMemoryAssignmentStore();
19
- const assignments = new assignment_service_1.AssignmentService(assignmentStore, base.runtime, base.registry, options.rbac, options.notifications, options.clock, 'test');
21
+ const assignments = new assignment_service_1.AssignmentService(assignmentStore, base.runtime, base.registry, options.rbac, options.notifications, options.clock, 'test', options.orgDirectory);
20
22
  assignments.onModuleInit();
21
23
  return { ...base, assignments, assignmentStore };
22
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":";AAAA,qHAAqH;;;AAcrH,kEAyBC;AAhCD,6DAAgF;AAChF,6DAAyD;AACzD,iCAAkD;AAClD,mCAAkD;AAElD,iCAAkD;AAAzC,gHAAA,uBAAuB,OAAA;AAEhC,SAAgB,2BAA2B,CACzC,UAKI,EAAE;IAEN,MAAM,IAAI,GAAG,IAAA,uCAA6B,EAAC;QACzC,KAAK,EAAE,CAAC,+BAAwB,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAI,+BAAuB,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,sCAAiB,CACvC,eAAe,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,KAAK,EACb,MAAM,CACP,CAAC;IACF,WAAW,CAAC,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":";AAAA,qHAAqH;;;AAgBrH,kEA8BC;AArCD,6DAAgF;AAChF,6DAAyD;AACzD,iCAAkD;AAClD,mCAAkD;AAElD,iCAAkD;AAAzC,gHAAA,uBAAuB,OAAA;AAEhC,SAAgB,2BAA2B,CACzC,UAOI,EAAE;IAEN,MAAM,IAAI,GAAG,IAAA,uCAA6B,EAAC;QACzC,KAAK,EAAE,CAAC,+BAAwB,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;KACzD,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAI,+BAAuB,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,sCAAiB,CACvC,eAAe,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,KAAK,EACb,MAAM,EACN,OAAO,CAAC,YAAY,CACrB,CAAC;IACF,WAAW,CAAC,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AACnD,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { ConditionExpression } from '@haneinfo/form';
1
2
  import type { PersonResolver } from '@haneinfo/plugin-api';
2
3
  export type AssignmentPolicy = 'SINGLE' | 'ANY_ONE' | 'JOINT';
3
4
  export interface AssignmentResponse {
@@ -14,6 +15,7 @@ export interface AssignmentSpec {
14
15
  code: string;
15
16
  };
16
17
  onEnter: string;
18
+ when?: ConditionExpression;
17
19
  title?: string;
18
20
  assignees: PersonResolver[];
19
21
  policy: AssignmentPolicy;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -5,7 +5,7 @@
5
5
  "cardinality": "singleton",
6
6
  "distribution": "official",
7
7
  "engine": {
8
- "haneinfoPluginApi": "^1.6.0",
8
+ "haneinfoPluginApi": "^1.7.0",
9
9
  "node": ">=22.0.0",
10
10
  "frameworks": {
11
11
  "@nestjs/common": "^11.0.5",
@@ -20,7 +20,11 @@
20
20
  "haneinfo.definition-registry",
21
21
  "haneinfo.state-machine-runtime"
22
22
  ],
23
- "optionalRequires": ["haneinfo.rbac-policy", "haneinfo.notification-inbox"],
23
+ "optionalRequires": [
24
+ "haneinfo.rbac-policy",
25
+ "haneinfo.notification-inbox",
26
+ "haneinfo.org-directory"
27
+ ],
24
28
  "facets": {
25
29
  "backend": {
26
30
  "modulePath": "./dist/assignment.module.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haneinfo/assignment",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "private": false,
5
5
  "description": "Assignment mechanism: Assignment definitions (who must respond when a state machine enters a state) and the task runtime, registered with @haneinfo/definition-registry.",
6
6
  "files": [
@@ -38,12 +38,13 @@
38
38
  "./package.json": "./package.json"
39
39
  },
40
40
  "dependencies": {
41
- "@haneinfo/plugin-api": "1.6.0"
41
+ "@haneinfo/plugin-api": "1.7.0",
42
+ "@haneinfo/form": "0.2.0"
42
43
  },
43
44
  "peerDependencies": {
44
45
  "@haneinfo/common": "^0.3.4",
45
46
  "@haneinfo/definition-registry": "^0.1.0",
46
- "@haneinfo/state-machine": "^0.1.0",
47
+ "@haneinfo/state-machine": "^0.1.1 || ^0.2.0",
47
48
  "@haneinfo/plugin-host-nest": "^2.0.0",
48
49
  "@nestjs/common": "^11.0.0",
49
50
  "@nestjs/core": "^11.0.0",
@@ -63,12 +64,11 @@
63
64
  "typescript": "^5.9.3",
64
65
  "vitest": "^4.1.11",
65
66
  "zod": "^4.4.0",
66
- "@haneinfo/definition-registry": "0.1.0",
67
+ "@haneinfo/state-machine": "0.2.0",
67
68
  "@haneinfo/common": "0.3.4",
68
- "@haneinfo/form": "0.1.0",
69
- "@haneinfo/plugin-host-nest": "2.1.0",
70
- "@haneinfo/state-machine": "0.1.0",
71
- "@haneinfo/plugin-testkit": "2.3.0"
69
+ "@haneinfo/definition-registry": "0.1.2",
70
+ "@haneinfo/plugin-testkit": "2.3.0",
71
+ "@haneinfo/plugin-host-nest": "2.1.0"
72
72
  },
73
73
  "license": "UNLICENSED",
74
74
  "publishConfig": {
@@ -11,8 +11,13 @@
11
11
  "additionalProperties": false,
12
12
  "required": ["kind", "code"],
13
13
  "properties": {
14
- "kind": { "const": "StateMachine" },
15
- "code": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" }
14
+ "kind": {
15
+ "const": "StateMachine"
16
+ },
17
+ "code": {
18
+ "type": "string",
19
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
20
+ }
16
21
  }
17
22
  },
18
23
  "onEnter": {
@@ -37,11 +42,16 @@
37
42
  "additionalProperties": false,
38
43
  "required": ["type", "userIds"],
39
44
  "properties": {
40
- "type": { "const": "SPECIFIC_USER" },
45
+ "type": {
46
+ "const": "SPECIFIC_USER"
47
+ },
41
48
  "userIds": {
42
49
  "type": "array",
43
50
  "minItems": 1,
44
- "items": { "type": "string", "minLength": 1 }
51
+ "items": {
52
+ "type": "string",
53
+ "minLength": 1
54
+ }
45
55
  }
46
56
  }
47
57
  },
@@ -50,8 +60,13 @@
50
60
  "additionalProperties": false,
51
61
  "required": ["type", "role"],
52
62
  "properties": {
53
- "type": { "const": "ROLE" },
54
- "role": { "type": "string", "pattern": "^[A-Z][A-Z0-9_]*$" }
63
+ "type": {
64
+ "const": "ROLE"
65
+ },
66
+ "role": {
67
+ "type": "string",
68
+ "pattern": "^[A-Z][A-Z0-9_]*$"
69
+ }
55
70
  }
56
71
  },
57
72
  {
@@ -59,15 +74,34 @@
59
74
  "additionalProperties": false,
60
75
  "required": ["type", "fieldId"],
61
76
  "properties": {
62
- "type": { "const": "FORM_FIELD_USER" },
63
- "fieldId": { "type": "string", "minLength": 1 }
77
+ "type": {
78
+ "const": "FORM_FIELD_USER"
79
+ },
80
+ "fieldId": {
81
+ "type": "string",
82
+ "minLength": 1
83
+ }
64
84
  }
65
85
  },
66
86
  {
67
87
  "type": "object",
68
88
  "additionalProperties": false,
69
89
  "required": ["type"],
70
- "properties": { "type": { "const": "SUBMITTER" } }
90
+ "properties": {
91
+ "type": {
92
+ "const": "SUBMITTER"
93
+ }
94
+ }
95
+ },
96
+ {
97
+ "type": "object",
98
+ "additionalProperties": false,
99
+ "required": ["type"],
100
+ "properties": {
101
+ "type": {
102
+ "enum": ["DIRECT_SUPERVISOR", "DEPARTMENT_HEAD", "DIVISION_HEAD"]
103
+ }
104
+ }
71
105
  }
72
106
  ]
73
107
  }
@@ -85,9 +119,19 @@
85
119
  "additionalProperties": false,
86
120
  "required": ["key", "label", "transition"],
87
121
  "properties": {
88
- "key": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]*$" },
89
- "label": { "type": "string", "minLength": 1, "maxLength": 200 },
90
- "transition": { "type": "string", "minLength": 1 },
122
+ "key": {
123
+ "type": "string",
124
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$"
125
+ },
126
+ "label": {
127
+ "type": "string",
128
+ "minLength": 1,
129
+ "maxLength": 200
130
+ },
131
+ "transition": {
132
+ "type": "string",
133
+ "minLength": 1
134
+ },
91
135
  "decisive": {
92
136
  "type": "boolean",
93
137
  "description": "JOINT only: this response completes the assignment at once (e.g. reject)."
@@ -99,6 +143,111 @@
99
143
  "type": "string",
100
144
  "pattern": "^P(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$",
101
145
  "description": "ISO 8601 duration from opening to the due time, e.g. P2D. What happens when it passes is a Timer's job."
146
+ },
147
+ "when": {
148
+ "$ref": "#/$defs/predicate"
149
+ }
150
+ },
151
+ "$defs": {
152
+ "predicate": {
153
+ "oneOf": [
154
+ {
155
+ "type": "object",
156
+ "additionalProperties": false,
157
+ "required": ["kind", "operator", "left"],
158
+ "properties": {
159
+ "kind": {
160
+ "const": "PREDICATE"
161
+ },
162
+ "operator": {
163
+ "enum": ["EQ", "NEQ", "GT", "GTE", "LT", "LTE", "IN", "NOT_EMPTY"]
164
+ },
165
+ "left": {
166
+ "$ref": "#/$defs/valueExpression"
167
+ },
168
+ "right": {
169
+ "oneOf": [
170
+ {
171
+ "$ref": "#/$defs/valueExpression"
172
+ },
173
+ {
174
+ "type": "array",
175
+ "minItems": 1,
176
+ "items": {
177
+ "$ref": "#/$defs/valueExpression"
178
+ }
179
+ }
180
+ ]
181
+ }
182
+ }
183
+ },
184
+ {
185
+ "type": "object",
186
+ "additionalProperties": false,
187
+ "required": ["kind", "operator", "expressions"],
188
+ "properties": {
189
+ "kind": {
190
+ "const": "GROUP"
191
+ },
192
+ "operator": {
193
+ "enum": ["AND", "OR"]
194
+ },
195
+ "expressions": {
196
+ "type": "array",
197
+ "minItems": 1,
198
+ "items": {
199
+ "$ref": "#/$defs/predicate"
200
+ }
201
+ }
202
+ }
203
+ }
204
+ ]
205
+ },
206
+ "valueExpression": {
207
+ "oneOf": [
208
+ {
209
+ "type": "object",
210
+ "additionalProperties": false,
211
+ "required": ["kind", "value"],
212
+ "properties": {
213
+ "kind": {
214
+ "const": "LITERAL"
215
+ },
216
+ "value": {
217
+ "type": ["string", "number", "boolean", "null"]
218
+ }
219
+ }
220
+ },
221
+ {
222
+ "type": "object",
223
+ "additionalProperties": false,
224
+ "required": ["kind", "fieldId"],
225
+ "properties": {
226
+ "kind": {
227
+ "const": "FIELD"
228
+ },
229
+ "fieldId": {
230
+ "type": "string",
231
+ "minLength": 1,
232
+ "maxLength": 64
233
+ }
234
+ }
235
+ },
236
+ {
237
+ "type": "object",
238
+ "additionalProperties": false,
239
+ "required": ["kind", "key"],
240
+ "properties": {
241
+ "kind": {
242
+ "const": "CONTEXT"
243
+ },
244
+ "key": {
245
+ "type": "string",
246
+ "minLength": 1
247
+ }
248
+ }
249
+ }
250
+ ]
102
251
  }
103
252
  }
104
253
  }