avantgate 1.4.0 → 1.6.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.
@@ -20,10 +20,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/workflow/index.ts
21
21
  var workflow_exports = {};
22
22
  __export(workflow_exports, {
23
+ WorkflowAbortSignal: () => WorkflowAbortSignal,
23
24
  WorkflowSagaRollbackError: () => WorkflowSagaRollbackError,
24
25
  WorkflowValidationError: () => WorkflowValidationError,
25
26
  defineWorkflow: () => defineWorkflow,
26
- executeWorkflow: () => executeWorkflow
27
+ executeWorkflow: () => executeWorkflow,
28
+ isWorkflowAbortSignal: () => isWorkflowAbortSignal
27
29
  });
28
30
  module.exports = __toCommonJS(workflow_exports);
29
31
 
@@ -339,21 +341,35 @@ var WorkflowValidationError = class extends Error {
339
341
  this.issues = issues;
340
342
  }
341
343
  };
344
+ var WorkflowAbortSignal = class extends Error {
345
+ __isWorkflowAbort = true;
346
+ reason;
347
+ payload;
348
+ constructor(reason, payload) {
349
+ super(`Workflow aborted: ${reason}`);
350
+ this.name = "WorkflowAbortSignal";
351
+ this.reason = reason;
352
+ this.payload = payload;
353
+ }
354
+ };
355
+ var isWorkflowAbortSignal = (value) => {
356
+ return typeof value === "object" && value !== null && value.__isWorkflowAbort === true;
357
+ };
342
358
 
343
359
  // src/workflow/engine.ts
344
- function generateRunId(workflowId) {
360
+ var generateRunId = (workflowId) => {
345
361
  const timestamp = Date.now();
346
362
  const randomSuffix = Math.random().toString(36).substring(2, 9);
347
363
  return `run_${workflowId}_${timestamp}_${randomSuffix}`;
348
- }
349
- function validateInput(config, input) {
364
+ };
365
+ var validateInput = (config, input) => {
350
366
  const parseResult = config.inputSchema.safeParse(input);
351
367
  if (!parseResult.success) {
352
368
  throw new WorkflowValidationError(config.id, parseResult.error.issues);
353
369
  }
354
370
  return parseResult.data;
355
- }
356
- function createStepContext(params) {
371
+ };
372
+ var createStepContext = (params) => {
357
373
  const { workflowId, stepId, runId, context, stepResults } = params;
358
374
  return {
359
375
  workflowId,
@@ -382,10 +398,13 @@ function createStepContext(params) {
382
398
  });
383
399
  }
384
400
  throw new StepSuspendedError(stepId, workflowId, options?.prompt);
401
+ },
402
+ abort: (reason, payload) => {
403
+ throw new WorkflowAbortSignal(reason, payload);
385
404
  }
386
405
  };
387
- }
388
- async function rollbackSaga(params) {
406
+ };
407
+ var rollbackSaga = async (params) => {
389
408
  const {
390
409
  workflowId,
391
410
  failedStepId,
@@ -429,12 +448,38 @@ async function rollbackSaga(params) {
429
448
  compensatedSteps,
430
449
  failedCompensations
431
450
  });
432
- }
433
- async function executeWorkflow(config, rawInput, context) {
451
+ };
452
+ var executeWorkflow = async (config, rawInput, context) => {
434
453
  const input = validateInput(config, rawInput);
435
454
  const runId = context?.runId ?? generateRunId(config.id);
436
455
  const stepResults = {};
437
456
  const completedSteps = [];
457
+ const handleAbort = async (stepId, signal) => {
458
+ stepResults[stepId] = {
459
+ aborted: true,
460
+ reason: signal.reason,
461
+ payload: signal.payload
462
+ };
463
+ if (context?.storage) {
464
+ await context.storage.updateStepStatus(config.id, stepId, "ABORTED", {
465
+ result: signal.payload,
466
+ metadata: { abortReason: signal.reason }
467
+ });
468
+ }
469
+ const abortOutput = signal.payload ?? {
470
+ aborted: true,
471
+ reason: signal.reason
472
+ };
473
+ return {
474
+ workflowId: config.id,
475
+ runId,
476
+ status: "ABORTED",
477
+ stepResults,
478
+ abortReason: signal.reason,
479
+ abortPayload: signal.payload,
480
+ output: abortOutput
481
+ };
482
+ };
438
483
  for (const step of config.steps) {
439
484
  const stepCtx = createStepContext({
440
485
  workflowId: config.id,
@@ -445,6 +490,9 @@ async function executeWorkflow(config, rawInput, context) {
445
490
  });
446
491
  try {
447
492
  const result = await step.execute(input, stepCtx);
493
+ if (isWorkflowAbortSignal(result)) {
494
+ return await handleAbort(step.id, result);
495
+ }
448
496
  stepResults[step.id] = result;
449
497
  completedSteps.push({ step, result });
450
498
  if (context?.storage) {
@@ -459,6 +507,9 @@ async function executeWorkflow(config, rawInput, context) {
459
507
  stepResults
460
508
  };
461
509
  }
510
+ if (isWorkflowAbortSignal(error)) {
511
+ return await handleAbort(step.id, error);
512
+ }
462
513
  await rollbackSaga({
463
514
  workflowId: config.id,
464
515
  failedStepId: step.id,
@@ -479,22 +530,22 @@ async function executeWorkflow(config, rawInput, context) {
479
530
  stepResults,
480
531
  output: finalOutput
481
532
  };
482
- }
533
+ };
483
534
 
484
535
  // src/workflow/define-workflow.ts
485
- function resolveWorkflowImpact(config, options) {
536
+ var resolveWorkflowImpact = (config, options) => {
486
537
  if (options?.impact) {
487
538
  return options.impact;
488
539
  }
489
540
  return config.impact ?? "MUTATIVE";
490
- }
491
- function resolveRequireApproval(impact, options) {
541
+ };
542
+ var resolveRequireApproval = (impact, options) => {
492
543
  if (options?.requireApproval !== void 0) {
493
544
  return options.requireApproval;
494
545
  }
495
546
  return impact === "DESTRUCTIVE";
496
- }
497
- function buildToolExecutionContext(options, toolCtx) {
547
+ };
548
+ var buildToolExecutionContext = (options, toolCtx) => {
498
549
  const tenantId = typeof toolCtx?.tenantId === "string" ? toolCtx.tenantId : options?.defaultContext?.tenantId;
499
550
  const userId = typeof toolCtx?.userId === "string" ? toolCtx.userId : options?.defaultContext?.userId;
500
551
  return {
@@ -503,8 +554,8 @@ function buildToolExecutionContext(options, toolCtx) {
503
554
  services: options?.defaultContext?.services ?? {},
504
555
  storage: options?.storage ?? options?.defaultContext?.storage
505
556
  };
506
- }
507
- function defineWorkflow(config) {
557
+ };
558
+ var defineWorkflow = (config) => {
508
559
  const workflowImpact = config.impact ?? "MUTATIVE";
509
560
  return {
510
561
  id: config.id,
@@ -548,11 +599,13 @@ function defineWorkflow(config) {
548
599
  return tool;
549
600
  }
550
601
  };
551
- }
602
+ };
552
603
  // Annotate the CommonJS export names for ESM import in node:
553
604
  0 && (module.exports = {
605
+ WorkflowAbortSignal,
554
606
  WorkflowSagaRollbackError,
555
607
  WorkflowValidationError,
556
608
  defineWorkflow,
557
- executeWorkflow
609
+ executeWorkflow,
610
+ isWorkflowAbortSignal
558
611
  });
@@ -1,13 +1,17 @@
1
1
  import {
2
+ WorkflowAbortSignal,
2
3
  WorkflowSagaRollbackError,
3
4
  WorkflowValidationError,
4
5
  defineWorkflow,
5
- executeWorkflow
6
- } from "../chunk-DTM2OLCG.mjs";
6
+ executeWorkflow,
7
+ isWorkflowAbortSignal
8
+ } from "../chunk-4XWO3NZW.mjs";
7
9
  import "../chunk-5VA3EKPJ.mjs";
8
10
  export {
11
+ WorkflowAbortSignal,
9
12
  WorkflowSagaRollbackError,
10
13
  WorkflowValidationError,
11
14
  defineWorkflow,
12
- executeWorkflow
15
+ executeWorkflow,
16
+ isWorkflowAbortSignal
13
17
  };
@@ -10,6 +10,7 @@ export interface WorkflowStepContext {
10
10
  readonly storage?: StepStorageAdapter;
11
11
  getStepResult<T = unknown>(stepId: string): T | undefined;
12
12
  waitForApproval<T = unknown>(options?: StepApprovalOptions<T>): Promise<T>;
13
+ abort<TPayload = unknown>(reason: string, payload?: TPayload): never;
13
14
  }
14
15
  export interface WorkflowStepConfig<TInput = any, TOutput = any> {
15
16
  id: string;
@@ -47,9 +48,11 @@ export interface WorkflowAsToolOptions {
47
48
  export interface WorkflowExecutionResult<TOutput = any> {
48
49
  workflowId: string;
49
50
  runId: string;
50
- status: "COMPLETED" | "FAILED" | "WAITING_APPROVAL";
51
+ status: "COMPLETED" | "FAILED" | "WAITING_APPROVAL" | "ABORTED";
51
52
  stepResults: Record<string, any>;
52
53
  output?: TOutput;
54
+ abortReason?: string;
55
+ abortPayload?: unknown;
53
56
  }
54
57
  export interface WorkflowInstance<TInput = any, TOutput = any> {
55
58
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workflow/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workflow/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "avantgate",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Zero-infrastructure, in-process AI Application Firewall (AI-WAF) & privacy control plane for TypeScript: real-time prompt guardrails, zero-egress PII redaction, agent tool isolation, anti-IDOR defense, pre-flight token budgets, and multi-model failover.",
5
5
  "author": "Antigravity & LexTalk Team",
6
6
  "license": "MIT",
@@ -59,21 +59,35 @@
59
59
  "import": "./dist/workflow/index.mjs",
60
60
  "require": "./dist/workflow/index.js"
61
61
  },
62
+ "./client": {
63
+ "types": "./dist/client/index.d.ts",
64
+ "import": "./dist/client/index.mjs",
65
+ "require": "./dist/client/index.js"
66
+ },
62
67
  "./package.json": "./package.json"
63
68
  },
69
+ "peerDependencies": {
70
+ "react": ">=18.0.0"
71
+ },
72
+ "peerDependenciesMeta": {
73
+ "react": {
74
+ "optional": true
75
+ }
76
+ },
64
77
  "files": [
65
78
  "dist",
66
79
  "README.md",
67
80
  "LICENSE"
68
81
  ],
69
82
  "scripts": {
70
- "build": "tsup src/index.ts src/finance/index.ts src/agent/index.ts src/workflow/index.ts --format cjs --format esm --clean && tsc --emitDeclarationOnly --outDir dist",
71
- "test": "tsx tests/avantgate.test.ts && tsx tests/preflight-budget.test.ts && tsx tests/financial-normalizer.test.ts && tsx tests/prompt-builder.test.ts && tsx tests/pii-extended.test.ts && npm run test:agent && npm run test:workflow",
83
+ "build": "tsup src/index.ts src/finance/index.ts src/agent/index.ts src/workflow/index.ts src/client/index.ts --format cjs --format esm --clean && tsc --emitDeclarationOnly --outDir dist",
84
+ "test": "tsx tests/avantgate.test.ts && tsx tests/preflight-budget.test.ts && tsx tests/financial-normalizer.test.ts && tsx tests/prompt-builder.test.ts && tsx tests/pii-extended.test.ts && npm run test:agent && npm run test:workflow && npm run test:client",
72
85
  "test:finance": "tsx tests/financial-normalizer.test.ts",
73
86
  "test:prompts": "tsx tests/prompt-builder.test.ts",
74
87
  "test:pii": "tsx tests/pii-extended.test.ts",
75
88
  "test:agent": "tsx tests/agent/step-runner.test.ts && tsx tests/agent/isolated-tool.test.ts && tsx tests/agent/dto-pattern.test.ts && tsx tests/agent/tool-patterns.test.ts && tsx tests/agent/storage-adapters.test.ts && tsx tests/agent/tool-aliasing.test.ts && tsx tests/agent/tool-chaining.test.ts && tsx tests/agent/tool-storage.test.ts && tsx tests/agent/telemetry-exporter.test.ts && tsx tests/agent/platform-adapter.test.ts && tsx tests/agent/tool-governance.test.ts && tsx tests/agent/tool-impact.test.ts",
76
- "test:workflow": "tsx tests/workflow/workflow-saga.test.ts",
89
+ "test:workflow": "tsx tests/workflow/workflow-saga.test.ts && tsx tests/workflow/workflow-abort.test.ts",
90
+ "test:client": "tsx tests/client/browser-exporter.test.ts",
77
91
  "lint": "tsc --noEmit",
78
92
  "prepublishOnly": "npm run build && npm test"
79
93
  },
@@ -81,6 +95,8 @@
81
95
  "zod": "^3.23.0 || ^4.0.0"
82
96
  },
83
97
  "devDependencies": {
98
+ "@types/react": "^18.3.18",
99
+ "react": "^18.3.1",
84
100
  "tsup": "^8.3.5",
85
101
  "tsx": "^4.19.0",
86
102
  "typescript": "^5.4.0"