@backendkit-labs/agent-enterprise 0.3.2 → 0.3.6

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 (120) hide show
  1. package/README.md +2 -0
  2. package/dist/__tests__/integration/EventPublisher.integration.test.d.ts +2 -0
  3. package/dist/__tests__/integration/EventPublisher.integration.test.d.ts.map +1 -0
  4. package/dist/__tests__/integration/EventPublisher.integration.test.js +122 -0
  5. package/dist/__tests__/integration/EventPublisher.integration.test.js.map +1 -0
  6. package/dist/__tests__/unit/ComplianceGate.test.d.ts +2 -0
  7. package/dist/__tests__/unit/ComplianceGate.test.d.ts.map +1 -0
  8. package/dist/__tests__/unit/ComplianceGate.test.js +271 -0
  9. package/dist/__tests__/unit/ComplianceGate.test.js.map +1 -0
  10. package/dist/__tests__/unit/EventPublisher.test.d.ts +2 -0
  11. package/dist/__tests__/unit/EventPublisher.test.d.ts.map +1 -0
  12. package/dist/__tests__/unit/EventPublisher.test.js +160 -0
  13. package/dist/__tests__/unit/EventPublisher.test.js.map +1 -0
  14. package/dist/__tests__/unit/FlowLoader.test.d.ts +2 -0
  15. package/dist/__tests__/unit/FlowLoader.test.d.ts.map +1 -0
  16. package/dist/__tests__/unit/FlowLoader.test.js +283 -0
  17. package/dist/__tests__/unit/FlowLoader.test.js.map +1 -0
  18. package/dist/__tests__/unit/FlowRunner.test.d.ts +2 -0
  19. package/dist/__tests__/unit/FlowRunner.test.d.ts.map +1 -0
  20. package/dist/__tests__/unit/FlowRunner.test.js +386 -0
  21. package/dist/__tests__/unit/FlowRunner.test.js.map +1 -0
  22. package/dist/__tests__/unit/PolicySeeder.test.d.ts +2 -0
  23. package/dist/__tests__/unit/PolicySeeder.test.d.ts.map +1 -0
  24. package/dist/__tests__/unit/PolicySeeder.test.js +146 -0
  25. package/dist/__tests__/unit/PolicySeeder.test.js.map +1 -0
  26. package/dist/__tests__/unit/ProfilePolicies.test.d.ts +2 -0
  27. package/dist/__tests__/unit/ProfilePolicies.test.d.ts.map +1 -0
  28. package/dist/__tests__/unit/ProfilePolicies.test.js +70 -0
  29. package/dist/__tests__/unit/ProfilePolicies.test.js.map +1 -0
  30. package/dist/__tests__/unit/ReconciliationSweeper.test.d.ts +2 -0
  31. package/dist/__tests__/unit/ReconciliationSweeper.test.d.ts.map +1 -0
  32. package/dist/__tests__/unit/ReconciliationSweeper.test.js +235 -0
  33. package/dist/__tests__/unit/ReconciliationSweeper.test.js.map +1 -0
  34. package/dist/__tests__/unit/n8nTriggerTool.test.d.ts +2 -0
  35. package/dist/__tests__/unit/n8nTriggerTool.test.d.ts.map +1 -0
  36. package/dist/__tests__/unit/n8nTriggerTool.test.js +103 -0
  37. package/dist/__tests__/unit/n8nTriggerTool.test.js.map +1 -0
  38. package/dist/events/EventPublisher.d.ts +47 -0
  39. package/dist/events/EventPublisher.d.ts.map +1 -0
  40. package/dist/events/EventPublisher.js +75 -0
  41. package/dist/events/EventPublisher.js.map +1 -0
  42. package/dist/events/ReconciliationSweeper.d.ts +37 -0
  43. package/dist/events/ReconciliationSweeper.d.ts.map +1 -0
  44. package/dist/events/ReconciliationSweeper.js +151 -0
  45. package/dist/events/ReconciliationSweeper.js.map +1 -0
  46. package/dist/events/index.d.ts +6 -0
  47. package/dist/events/index.d.ts.map +1 -0
  48. package/dist/events/index.js +8 -0
  49. package/dist/events/index.js.map +1 -0
  50. package/dist/events/types.d.ts +48 -0
  51. package/dist/events/types.d.ts.map +1 -0
  52. package/dist/events/types.js +3 -0
  53. package/dist/events/types.js.map +1 -0
  54. package/dist/factory.d.ts +6 -0
  55. package/dist/factory.d.ts.map +1 -1
  56. package/dist/factory.js +11 -5
  57. package/dist/factory.js.map +1 -1
  58. package/dist/flow/ComplianceGate.d.ts +80 -0
  59. package/dist/flow/ComplianceGate.d.ts.map +1 -0
  60. package/dist/flow/ComplianceGate.js +214 -0
  61. package/dist/flow/ComplianceGate.js.map +1 -0
  62. package/dist/flow/FlowLoader.d.ts +22 -0
  63. package/dist/flow/FlowLoader.d.ts.map +1 -0
  64. package/dist/flow/FlowLoader.js +170 -0
  65. package/dist/flow/FlowLoader.js.map +1 -0
  66. package/dist/flow/FlowRunner.d.ts +66 -0
  67. package/dist/flow/FlowRunner.d.ts.map +1 -0
  68. package/dist/flow/FlowRunner.js +153 -0
  69. package/dist/flow/FlowRunner.js.map +1 -0
  70. package/dist/flow/index.d.ts +8 -0
  71. package/dist/flow/index.d.ts.map +1 -0
  72. package/dist/flow/index.js +21 -0
  73. package/dist/flow/index.js.map +1 -0
  74. package/dist/flow/types.d.ts +306 -0
  75. package/dist/flow/types.d.ts.map +1 -0
  76. package/dist/flow/types.js +63 -0
  77. package/dist/flow/types.js.map +1 -0
  78. package/dist/index.d.ts +8 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +26 -1
  81. package/dist/index.js.map +1 -1
  82. package/dist/integrations/index.d.ts +3 -0
  83. package/dist/integrations/index.d.ts.map +1 -0
  84. package/dist/integrations/index.js +6 -0
  85. package/dist/integrations/index.js.map +1 -0
  86. package/dist/integrations/n8nTriggerTool.d.ts +12 -0
  87. package/dist/integrations/n8nTriggerTool.d.ts.map +1 -0
  88. package/dist/integrations/n8nTriggerTool.js +45 -0
  89. package/dist/integrations/n8nTriggerTool.js.map +1 -0
  90. package/dist/policies/PolicySeeder.d.ts +31 -0
  91. package/dist/policies/PolicySeeder.d.ts.map +1 -0
  92. package/dist/policies/PolicySeeder.js +270 -0
  93. package/dist/policies/PolicySeeder.js.map +1 -0
  94. package/dist/policies/index.d.ts +3 -0
  95. package/dist/policies/index.d.ts.map +1 -0
  96. package/dist/policies/index.js +6 -0
  97. package/dist/policies/index.js.map +1 -0
  98. package/dist/profiles/constants.d.ts +4 -0
  99. package/dist/profiles/constants.d.ts.map +1 -1
  100. package/dist/profiles/constants.js +4 -0
  101. package/dist/profiles/constants.js.map +1 -1
  102. package/dist/profiles/finance.d.ts.map +1 -1
  103. package/dist/profiles/finance.js +7 -8
  104. package/dist/profiles/finance.js.map +1 -1
  105. package/dist/profiles/general.d.ts.map +1 -1
  106. package/dist/profiles/general.js +1 -0
  107. package/dist/profiles/general.js.map +1 -1
  108. package/dist/profiles/hr.d.ts.map +1 -1
  109. package/dist/profiles/hr.js +6 -8
  110. package/dist/profiles/hr.js.map +1 -1
  111. package/dist/profiles/ops.d.ts.map +1 -1
  112. package/dist/profiles/ops.js +6 -10
  113. package/dist/profiles/ops.js.map +1 -1
  114. package/dist/profiles/sales.d.ts.map +1 -1
  115. package/dist/profiles/sales.js +3 -1
  116. package/dist/profiles/sales.js.map +1 -1
  117. package/dist/profiles/support.d.ts.map +1 -1
  118. package/dist/profiles/support.js +2 -4
  119. package/dist/profiles/support.js.map +1 -1
  120. package/package.json +6 -2
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs/promises"));
37
+ const path = __importStar(require("path"));
38
+ const os = __importStar(require("os"));
39
+ const FlowLoader_1 = require("../../flow/FlowLoader");
40
+ // ── Helpers ───────────────────────────────────────────────────────────────────
41
+ const VALID_FLOW = `
42
+ flow: onboarding-empleado
43
+ version: 1
44
+ trigger:
45
+ type: queue
46
+ queue: eventos.contratacion
47
+ steps:
48
+ - id: preparar-ficha
49
+ agent: rrhh
50
+ prompt: "Prepara la ficha del empleado: {{payload}}"
51
+ tools: [odoo_employee_create, search_knowledge]
52
+ gate:
53
+ criteria:
54
+ - "Ficha creada en Odoo"
55
+ evaluator: auditor
56
+ evidence: required
57
+ - id: bienvenida
58
+ agent: onboarding
59
+ after: [preparar-ficha]
60
+ prompt: "Envía el email de bienvenida"
61
+ - id: preliquidacion
62
+ agent: nomina
63
+ after: [preparar-ficha]
64
+ prompt: "Prepara la preliquidación"
65
+ gate:
66
+ approval: human
67
+ compensation:
68
+ - on: preliquidacion.failed
69
+ agent: nomina
70
+ prompt: "Revierte la preliquidación"
71
+ `;
72
+ function expectLoadError(yamlContent, issueFragment) {
73
+ try {
74
+ (0, FlowLoader_1.parseFlow)(yamlContent);
75
+ fail('expected FlowLoadError');
76
+ }
77
+ catch (err) {
78
+ expect(err).toBeInstanceOf(FlowLoader_1.FlowLoadError);
79
+ const issues = err.issues.join('\n');
80
+ expect(issues).toContain(issueFragment);
81
+ }
82
+ }
83
+ // ── parseFlow: valid input ────────────────────────────────────────────────────
84
+ describe('parseFlow — valid flows', () => {
85
+ it('parses a complete flow definition', () => {
86
+ const def = (0, FlowLoader_1.parseFlow)(VALID_FLOW);
87
+ expect(def.flow).toBe('onboarding-empleado');
88
+ expect(def.steps).toHaveLength(3);
89
+ expect(def.compensation).toHaveLength(1);
90
+ });
91
+ it('applies defaults: version 1, empty after, optional evidence', () => {
92
+ const def = (0, FlowLoader_1.parseFlow)(`
93
+ flow: minimal
94
+ trigger: { type: manual }
95
+ steps:
96
+ - id: solo
97
+ agent: general
98
+ prompt: "Haz algo"
99
+ gate:
100
+ criteria: ["criterio"]
101
+ evaluator: auditor
102
+ `);
103
+ expect(def.version).toBe(1);
104
+ expect(def.steps[0].after).toEqual([]);
105
+ expect(def.steps[0].gate?.evidence).toBe('optional');
106
+ expect(def.steps[0].gate?.approval).toBe('none');
107
+ expect(def.compensation).toEqual([]);
108
+ });
109
+ it('preserves gate metadata for later ComplianceGate enforcement', () => {
110
+ const def = (0, FlowLoader_1.parseFlow)(VALID_FLOW);
111
+ const gate = def.steps[0].gate;
112
+ expect(gate?.criteria).toEqual(['Ficha creada en Odoo']);
113
+ expect(gate?.evaluator).toBe('auditor');
114
+ expect(gate?.evidence).toBe('required');
115
+ });
116
+ it('parses parallel steps (same after) without errors', () => {
117
+ const def = (0, FlowLoader_1.parseFlow)(VALID_FLOW);
118
+ expect(def.steps[1].after).toEqual(['preparar-ficha']);
119
+ expect(def.steps[2].after).toEqual(['preparar-ficha']);
120
+ });
121
+ });
122
+ // ── parseFlow: structural validation ──────────────────────────────────────────
123
+ describe('parseFlow — structural validation', () => {
124
+ it('rejects YAML syntax errors', () => {
125
+ expectLoadError('flow: [unclosed', 'YAML syntax error');
126
+ });
127
+ it('rejects a missing flow name', () => {
128
+ expectLoadError(`
129
+ trigger: { type: manual }
130
+ steps:
131
+ - { id: a, agent: x, prompt: p }
132
+ `, 'flow');
133
+ });
134
+ it('rejects an empty steps array', () => {
135
+ expectLoadError(`
136
+ flow: empty
137
+ trigger: { type: manual }
138
+ steps: []
139
+ `, 'steps');
140
+ });
141
+ it('rejects a step without prompt', () => {
142
+ expectLoadError(`
143
+ flow: noprompt
144
+ trigger: { type: manual }
145
+ steps:
146
+ - { id: a, agent: x }
147
+ `, 'prompt');
148
+ });
149
+ it('rejects an invalid compensation selector', () => {
150
+ expectLoadError(`
151
+ flow: badcomp
152
+ trigger: { type: manual }
153
+ steps:
154
+ - { id: a, agent: x, prompt: p }
155
+ compensation:
156
+ - { on: "a.exploded", agent: x, prompt: p }
157
+ `, 'must be "<stepId>.failed"');
158
+ });
159
+ });
160
+ // ── parseFlow: semantic validation ────────────────────────────────────────────
161
+ describe('parseFlow — semantic validation', () => {
162
+ it('rejects duplicate step ids', () => {
163
+ expectLoadError(`
164
+ flow: dup
165
+ trigger: { type: manual }
166
+ steps:
167
+ - { id: a, agent: x, prompt: p }
168
+ - { id: a, agent: y, prompt: q }
169
+ `, 'duplicate step id "a"');
170
+ });
171
+ it('rejects unknown after references', () => {
172
+ expectLoadError(`
173
+ flow: ghost
174
+ trigger: { type: manual }
175
+ steps:
176
+ - { id: a, agent: x, prompt: p, after: [nope] }
177
+ `, 'unknown step "nope"');
178
+ });
179
+ it('rejects self-dependency', () => {
180
+ expectLoadError(`
181
+ flow: selfdep
182
+ trigger: { type: manual }
183
+ steps:
184
+ - { id: a, agent: x, prompt: p, after: [a] }
185
+ `, 'cannot depend on itself');
186
+ });
187
+ it('rejects dependency cycles', () => {
188
+ expectLoadError(`
189
+ flow: cycle
190
+ trigger: { type: manual }
191
+ steps:
192
+ - { id: a, agent: x, prompt: p, after: [b] }
193
+ - { id: b, agent: y, prompt: q, after: [a] }
194
+ `, 'dependency cycle');
195
+ });
196
+ it('rejects gate evaluator equal to the executing agent (evaluador ≠ ejecutor)', () => {
197
+ expectLoadError(`
198
+ flow: selfeval
199
+ trigger: { type: manual }
200
+ steps:
201
+ - id: a
202
+ agent: rrhh
203
+ prompt: p
204
+ gate:
205
+ criteria: ["c"]
206
+ evaluator: rrhh
207
+ `, 'must differ from the executing agent');
208
+ });
209
+ it('rejects compensation referencing an unknown step', () => {
210
+ expectLoadError(`
211
+ flow: orphancomp
212
+ trigger: { type: manual }
213
+ steps:
214
+ - { id: a, agent: x, prompt: p }
215
+ compensation:
216
+ - { on: "ghost.failed", agent: x, prompt: p }
217
+ `, 'unknown step "ghost"');
218
+ });
219
+ });
220
+ // ── parseFlow: trigger coherence ──────────────────────────────────────────────
221
+ describe('parseFlow — trigger coherence', () => {
222
+ it('requires queue name for queue triggers', () => {
223
+ expectLoadError(`
224
+ flow: q
225
+ trigger: { type: queue }
226
+ steps:
227
+ - { id: a, agent: x, prompt: p }
228
+ `, 'requires a queue name');
229
+ });
230
+ it('requires path for webhook triggers', () => {
231
+ expectLoadError(`
232
+ flow: w
233
+ trigger: { type: webhook }
234
+ steps:
235
+ - { id: a, agent: x, prompt: p }
236
+ `, 'requires a path');
237
+ });
238
+ it('requires schedule for cron triggers', () => {
239
+ expectLoadError(`
240
+ flow: c
241
+ trigger: { type: cron }
242
+ steps:
243
+ - { id: a, agent: x, prompt: p }
244
+ `, 'requires a schedule');
245
+ });
246
+ it('accepts manual triggers with no extra fields', () => {
247
+ const def = (0, FlowLoader_1.parseFlow)(`
248
+ flow: m
249
+ trigger: { type: manual }
250
+ steps:
251
+ - { id: a, agent: x, prompt: p }
252
+ `);
253
+ expect(def.trigger.type).toBe('manual');
254
+ });
255
+ });
256
+ // ── loadFlow / loadFlowsFromDir ───────────────────────────────────────────────
257
+ describe('loadFlow / loadFlowsFromDir', () => {
258
+ let tmpDir;
259
+ beforeEach(async () => {
260
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'flow-loader-'));
261
+ });
262
+ afterEach(async () => {
263
+ await fs.rm(tmpDir, { recursive: true, force: true });
264
+ });
265
+ it('loads a flow from a file', async () => {
266
+ const file = path.join(tmpDir, 'onboarding.yaml');
267
+ await fs.writeFile(file, VALID_FLOW, 'utf-8');
268
+ const def = await (0, FlowLoader_1.loadFlow)(file);
269
+ expect(def.flow).toBe('onboarding-empleado');
270
+ });
271
+ it('loads all yaml files from a directory in sorted order', async () => {
272
+ await fs.writeFile(path.join(tmpDir, 'b-second.yaml'), VALID_FLOW.replace('onboarding-empleado', 'flujo-b'), 'utf-8');
273
+ await fs.writeFile(path.join(tmpDir, 'a-first.yml'), VALID_FLOW.replace('onboarding-empleado', 'flujo-a'), 'utf-8');
274
+ await fs.writeFile(path.join(tmpDir, 'ignored.txt'), 'not yaml', 'utf-8');
275
+ const flows = await (0, FlowLoader_1.loadFlowsFromDir)(tmpDir);
276
+ expect(flows.map(f => f.flow)).toEqual(['flujo-a', 'flujo-b']);
277
+ });
278
+ it('throws FlowLoadError for an invalid file in the directory', async () => {
279
+ await fs.writeFile(path.join(tmpDir, 'bad.yaml'), 'flow: bad\ntrigger: { type: manual }\nsteps: []', 'utf-8');
280
+ await expect((0, FlowLoader_1.loadFlowsFromDir)(tmpDir)).rejects.toThrow(FlowLoader_1.FlowLoadError);
281
+ });
282
+ });
283
+ //# sourceMappingURL=FlowLoader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowLoader.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/FlowLoader.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FlowRunner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowRunner.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/FlowRunner.test.ts"],"names":[],"mappings":""}