@rytass/bpm-core-shared 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/package.json +3 -2
  3. package/src/index.js +13 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/condition.d.ts +43 -0
  6. package/src/lib/condition.js +3 -0
  7. package/src/lib/condition.js.map +1 -0
  8. package/src/lib/form.d.ts +48 -0
  9. package/src/lib/form.js +3 -0
  10. package/src/lib/form.js.map +1 -0
  11. package/src/lib/identity.d.ts +24 -0
  12. package/src/lib/identity.js +3 -0
  13. package/src/lib/identity.js.map +1 -0
  14. package/src/lib/organization.d.ts +47 -0
  15. package/src/lib/organization.js +3 -0
  16. package/src/lib/organization.js.map +1 -0
  17. package/src/lib/status.d.ts +7 -0
  18. package/src/lib/status.js +3 -0
  19. package/src/lib/status.js.map +1 -0
  20. package/src/lib/workflow-command.d.ts +156 -0
  21. package/src/lib/workflow-command.js +292 -0
  22. package/src/lib/workflow-command.js.map +1 -0
  23. package/src/lib/workflow-graph.d.ts +96 -0
  24. package/src/lib/workflow-graph.js +605 -0
  25. package/src/lib/workflow-graph.js.map +1 -0
  26. package/src/lib/workflow-toolset.d.ts +105 -0
  27. package/src/lib/workflow-toolset.js +702 -0
  28. package/src/lib/workflow-toolset.js.map +1 -0
  29. package/src/lib/workflow.d.ts +160 -0
  30. package/src/lib/workflow.js +3 -0
  31. package/src/lib/workflow.js.map +1 -0
  32. package/eslint.config.mjs +0 -19
  33. package/jest.config.cts +0 -10
  34. package/project.json +0 -49
  35. package/src/lib/condition.ts +0 -55
  36. package/src/lib/form.ts +0 -77
  37. package/src/lib/identity.ts +0 -25
  38. package/src/lib/organization.ts +0 -52
  39. package/src/lib/shared.spec.ts +0 -13
  40. package/src/lib/status.ts +0 -29
  41. package/src/lib/workflow-command.spec.ts +0 -278
  42. package/src/lib/workflow-command.ts +0 -848
  43. package/src/lib/workflow-graph.ts +0 -974
  44. package/src/lib/workflow-toolset.spec.ts +0 -230
  45. package/src/lib/workflow-toolset.ts +0 -1083
  46. package/src/lib/workflow.ts +0 -216
  47. package/tsconfig.json +0 -23
  48. package/tsconfig.lib.json +0 -16
  49. package/tsconfig.spec.json +0 -16
  50. /package/src/{index.ts → index.d.ts} +0 -0
@@ -0,0 +1,105 @@
1
+ import { FormDefinitionSchema } from './form';
2
+ import { WorkflowNode } from './workflow';
3
+ import { WorkflowCommandOptions, WorkflowCommandResult, WorkflowDesignerState } from './workflow-command';
4
+ export type { AnyWorkflowCommand } from './workflow-command';
5
+ /**
6
+ * The LLM-facing toolset for the template designer. It exposes every workflow
7
+ * mutation as a provider-agnostic tool (JSON Schema input), plus read-only
8
+ * query tools so the assistant can inspect the graph before acting.
9
+ *
10
+ * The same {@link applyWorkflowCommand} reducer powers both the React UI and
11
+ * this toolset — an LLM driving these tools can do exactly what a user can do
12
+ * on the canvas, node palette, and property form.
13
+ *
14
+ * Usage (Anthropic / AI SDK / OpenAI tool-calling are all compatible):
15
+ * 1. Advertise `WORKFLOW_TOOLSET` to the model as its tools.
16
+ * 2. On each tool call, run `executeWorkflowTool(state, name, input, opts)`.
17
+ * 3. For mutations, persist `result.state`; if `result.effects.layout`, run
18
+ * dagre layout (in the React controller); return `snapshot` to the model.
19
+ */
20
+ /** A minimal JSON Schema object (provider-agnostic tool input contract). */
21
+ export type JsonSchema = Readonly<Record<string, unknown>>;
22
+ export type WorkflowToolKind = 'mutation' | 'macro' | 'query';
23
+ export interface WorkflowTool {
24
+ readonly name: string;
25
+ readonly description: string;
26
+ readonly inputSchema: JsonSchema;
27
+ readonly kind: WorkflowToolKind;
28
+ }
29
+ export declare const WORKFLOW_TOOLSET: readonly WorkflowTool[];
30
+ /** Quick lookup of a tool definition by name. */
31
+ export declare const WORKFLOW_TOOL_BY_NAME: ReadonlyMap<string, WorkflowTool>;
32
+ export interface WorkflowNodeSnapshot {
33
+ readonly id: string;
34
+ readonly type: WorkflowNode['type'];
35
+ readonly typeLabel: string;
36
+ readonly label: string;
37
+ readonly summary: string;
38
+ }
39
+ export interface WorkflowEdgeSnapshot {
40
+ readonly id: string;
41
+ readonly source: string;
42
+ readonly target: string;
43
+ readonly isDefault: boolean;
44
+ readonly conditionLabel: string | null;
45
+ readonly condition: string | null;
46
+ }
47
+ export interface WorkflowSnapshot {
48
+ readonly nodes: readonly WorkflowNodeSnapshot[];
49
+ readonly edges: readonly WorkflowEdgeSnapshot[];
50
+ readonly selectedNodeId: string | null;
51
+ readonly selectedEdgeIds: readonly string[];
52
+ readonly formDefinitionVersionId: string | null;
53
+ readonly initiatorPolicyCel: string | null;
54
+ readonly issue: string | null;
55
+ }
56
+ export declare function readWorkflowSnapshot(state: WorkflowDesignerState): WorkflowSnapshot;
57
+ export type WorkflowToolResult = {
58
+ readonly ok: true;
59
+ readonly kind: 'mutation' | 'macro';
60
+ readonly result: WorkflowCommandResult;
61
+ readonly snapshot: WorkflowSnapshot;
62
+ } | {
63
+ readonly ok: true;
64
+ readonly kind: 'query';
65
+ readonly data: unknown;
66
+ } | {
67
+ readonly ok: false;
68
+ readonly error: string;
69
+ };
70
+ export interface WorkflowDirectoryItem {
71
+ readonly id: string;
72
+ readonly name: string;
73
+ readonly email?: string;
74
+ }
75
+ /**
76
+ * Host-injected resolver for organisation data. Lets the directory query tools
77
+ * (`list_org_units` / `list_positions` / `search_members`) surface the real ids
78
+ * an LLM needs to assign concrete approvers — without the pure toolset knowing
79
+ * where the data comes from. The React designer backs this with its already
80
+ * loaded org/position data plus the BPM client's member search.
81
+ */
82
+ export interface WorkflowDirectory {
83
+ readonly listOrgUnits: () => Promise<readonly WorkflowDirectoryItem[]>;
84
+ readonly listPositions: () => Promise<readonly WorkflowDirectoryItem[]>;
85
+ readonly searchMembers: (query: string) => Promise<readonly WorkflowDirectoryItem[]>;
86
+ }
87
+ export interface ExecuteWorkflowToolOptions extends WorkflowCommandOptions {
88
+ /**
89
+ * Host-injected organisation directory. When absent, directory query tools
90
+ * report `available: false` so the assistant falls back to defaults.
91
+ */
92
+ readonly directory?: WorkflowDirectory;
93
+ /**
94
+ * Resolves a form version id to its schema (host-managed). Required only if
95
+ * a tool needs the bound form schema. Not used by the current toolset, which
96
+ * compiles conditions against the already-bound `state.formSchema`.
97
+ */
98
+ readonly resolveFormSchema?: (formDefinitionVersionId: string) => FormDefinitionSchema | null;
99
+ }
100
+ /**
101
+ * Execute a single LLM tool call against the designer state. Mutations and
102
+ * macros return the new state + a fresh snapshot; queries return read-only data.
103
+ * Async because directory query tools may fetch from the host (GraphQL).
104
+ */
105
+ export declare function executeWorkflowTool(state: WorkflowDesignerState, toolName: string, rawInput: unknown, options?: ExecuteWorkflowToolOptions): Promise<WorkflowToolResult>;