@vorionsys/atsf-core 0.2.0 → 0.2.2
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/CHANGELOG.md +67 -0
- package/LICENSE +190 -0
- package/README.md +305 -181
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +86 -4
- package/dist/api/server.js.map +1 -1
- package/dist/basis/parser.d.ts +210 -210
- package/dist/basis/parser.js.map +1 -1
- package/dist/chain/index.d.ts +147 -0
- package/dist/chain/index.d.ts.map +1 -0
- package/dist/chain/index.js +219 -0
- package/dist/chain/index.js.map +1 -0
- package/dist/common/adapters.d.ts +9 -9
- package/dist/common/adapters.d.ts.map +1 -1
- package/dist/common/adapters.js +6 -6
- package/dist/common/config.d.ts +152 -152
- package/dist/common/types.d.ts +35 -15
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/enforce/index.d.ts +226 -16
- package/dist/enforce/index.d.ts.map +1 -1
- package/dist/enforce/index.js +196 -49
- package/dist/enforce/index.js.map +1 -1
- package/dist/governance/index.d.ts +2 -0
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +1 -0
- package/dist/governance/index.js.map +1 -1
- package/dist/governance/proof-bridge.d.ts +86 -0
- package/dist/governance/proof-bridge.d.ts.map +1 -0
- package/dist/governance/proof-bridge.js +139 -0
- package/dist/governance/proof-bridge.js.map +1 -0
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -4
- package/dist/index.js.map +1 -1
- package/dist/intent/index.d.ts +127 -10
- package/dist/intent/index.d.ts.map +1 -1
- package/dist/intent/index.js +121 -16
- package/dist/intent/index.js.map +1 -1
- package/dist/langchain/executor.d.ts +19 -5
- package/dist/langchain/executor.d.ts.map +1 -1
- package/dist/langchain/executor.js +287 -36
- package/dist/langchain/executor.js.map +1 -1
- package/dist/langchain/index.d.ts +2 -1
- package/dist/langchain/index.d.ts.map +1 -1
- package/dist/langchain/index.js +3 -1
- package/dist/langchain/index.js.map +1 -1
- package/dist/langchain/tools.d.ts.map +1 -1
- package/dist/langchain/tools.js +2 -1
- package/dist/langchain/tools.js.map +1 -1
- package/dist/langchain/types.d.ts +41 -0
- package/dist/langchain/types.d.ts.map +1 -1
- package/dist/layers/index.d.ts +1 -1
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/persistence/file.d.ts +35 -3
- package/dist/persistence/file.d.ts.map +1 -1
- package/dist/persistence/file.js +138 -11
- package/dist/persistence/file.js.map +1 -1
- package/dist/persistence/index.d.ts +10 -1
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +15 -1
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/sqlite.d.ts +135 -0
- package/dist/persistence/sqlite.d.ts.map +1 -0
- package/dist/persistence/sqlite.js +372 -0
- package/dist/persistence/sqlite.js.map +1 -0
- package/dist/phase6/ceiling.d.ts +177 -0
- package/dist/phase6/ceiling.d.ts.map +1 -0
- package/dist/phase6/ceiling.js +463 -0
- package/dist/phase6/ceiling.js.map +1 -0
- package/dist/phase6/context.d.ts +207 -0
- package/dist/phase6/context.d.ts.map +1 -0
- package/dist/phase6/context.js +603 -0
- package/dist/phase6/context.js.map +1 -0
- package/dist/phase6/index.d.ts +79 -0
- package/dist/phase6/index.d.ts.map +1 -0
- package/dist/phase6/index.js +152 -0
- package/dist/phase6/index.js.map +1 -0
- package/dist/phase6/presets.d.ts +148 -0
- package/dist/phase6/presets.d.ts.map +1 -0
- package/dist/phase6/presets.js +467 -0
- package/dist/phase6/presets.js.map +1 -0
- package/dist/phase6/provenance.d.ts +148 -0
- package/dist/phase6/provenance.d.ts.map +1 -0
- package/dist/phase6/provenance.js +545 -0
- package/dist/phase6/provenance.js.map +1 -0
- package/dist/phase6/role-gates/index.d.ts +7 -0
- package/dist/phase6/role-gates/index.d.ts.map +1 -0
- package/dist/phase6/role-gates/index.js +7 -0
- package/dist/phase6/role-gates/index.js.map +1 -0
- package/dist/phase6/role-gates/kernel.d.ts +84 -0
- package/dist/phase6/role-gates/kernel.d.ts.map +1 -0
- package/dist/phase6/role-gates/kernel.js +258 -0
- package/dist/phase6/role-gates/kernel.js.map +1 -0
- package/dist/phase6/role-gates/policy.d.ts +110 -0
- package/dist/phase6/role-gates/policy.d.ts.map +1 -0
- package/dist/phase6/role-gates/policy.js +157 -0
- package/dist/phase6/role-gates/policy.js.map +1 -0
- package/dist/phase6/role-gates.d.ts +164 -0
- package/dist/phase6/role-gates.d.ts.map +1 -0
- package/dist/phase6/role-gates.js +536 -0
- package/dist/phase6/role-gates.js.map +1 -0
- package/dist/phase6/types.d.ts +1829 -0
- package/dist/phase6/types.d.ts.map +1 -0
- package/dist/phase6/types.js +452 -0
- package/dist/phase6/types.js.map +1 -0
- package/dist/phase6/weight-presets/canonical.d.ts +93 -0
- package/dist/phase6/weight-presets/canonical.d.ts.map +1 -0
- package/dist/phase6/weight-presets/canonical.js +122 -0
- package/dist/phase6/weight-presets/canonical.js.map +1 -0
- package/dist/phase6/weight-presets/deltas.d.ts +144 -0
- package/dist/phase6/weight-presets/deltas.d.ts.map +1 -0
- package/dist/phase6/weight-presets/deltas.js +184 -0
- package/dist/phase6/weight-presets/deltas.js.map +1 -0
- package/dist/phase6/weight-presets/index.d.ts +8 -0
- package/dist/phase6/weight-presets/index.d.ts.map +1 -0
- package/dist/phase6/weight-presets/index.js +8 -0
- package/dist/phase6/weight-presets/index.js.map +1 -0
- package/dist/phase6/weight-presets/merger.d.ts +79 -0
- package/dist/phase6/weight-presets/merger.d.ts.map +1 -0
- package/dist/phase6/weight-presets/merger.js +161 -0
- package/dist/phase6/weight-presets/merger.js.map +1 -0
- package/dist/proof/index.d.ts +6 -0
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +56 -6
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/merkle.d.ts +195 -0
- package/dist/proof/merkle.d.ts.map +1 -0
- package/dist/proof/merkle.js +412 -0
- package/dist/proof/merkle.js.map +1 -0
- package/dist/proof/zk-proofs.d.ts +218 -0
- package/dist/proof/zk-proofs.d.ts.map +1 -0
- package/dist/proof/zk-proofs.js +531 -0
- package/dist/proof/zk-proofs.js.map +1 -0
- package/dist/sandbox-training/challenges.d.ts +16 -0
- package/dist/sandbox-training/challenges.d.ts.map +1 -0
- package/dist/sandbox-training/challenges.js +561 -0
- package/dist/sandbox-training/challenges.js.map +1 -0
- package/dist/sandbox-training/graduation.d.ts +25 -0
- package/dist/sandbox-training/graduation.d.ts.map +1 -0
- package/dist/sandbox-training/graduation.js +143 -0
- package/dist/sandbox-training/graduation.js.map +1 -0
- package/dist/sandbox-training/index.d.ts +19 -0
- package/dist/sandbox-training/index.d.ts.map +1 -0
- package/dist/sandbox-training/index.js +22 -0
- package/dist/sandbox-training/index.js.map +1 -0
- package/dist/sandbox-training/promotion-service.d.ts +76 -0
- package/dist/sandbox-training/promotion-service.d.ts.map +1 -0
- package/dist/sandbox-training/promotion-service.js +117 -0
- package/dist/sandbox-training/promotion-service.js.map +1 -0
- package/dist/sandbox-training/runner.d.ts +58 -0
- package/dist/sandbox-training/runner.d.ts.map +1 -0
- package/dist/sandbox-training/runner.js +388 -0
- package/dist/sandbox-training/runner.js.map +1 -0
- package/dist/sandbox-training/scorer.d.ts +40 -0
- package/dist/sandbox-training/scorer.d.ts.map +1 -0
- package/dist/sandbox-training/scorer.js +79 -0
- package/dist/sandbox-training/scorer.js.map +1 -0
- package/dist/sandbox-training/types.d.ts +162 -0
- package/dist/sandbox-training/types.d.ts.map +1 -0
- package/dist/sandbox-training/types.js +32 -0
- package/dist/sandbox-training/types.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts +98 -0
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/audit.js +160 -0
- package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/index.d.ts +6 -0
- package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/index.js +6 -0
- package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +112 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.js +158 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -0
- package/dist/trust-engine/context-policy/enforcement.d.ts +62 -0
- package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/enforcement.js +104 -0
- package/dist/trust-engine/context-policy/enforcement.js.map +1 -0
- package/dist/trust-engine/context-policy/factory.d.ts +75 -0
- package/dist/trust-engine/context-policy/factory.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/factory.js +130 -0
- package/dist/trust-engine/context-policy/factory.js.map +1 -0
- package/dist/trust-engine/context-policy/index.d.ts +6 -0
- package/dist/trust-engine/context-policy/index.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/index.js +6 -0
- package/dist/trust-engine/context-policy/index.js.map +1 -0
- package/dist/trust-engine/creation-modifiers/index.d.ts +5 -0
- package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -0
- package/dist/trust-engine/creation-modifiers/index.js +5 -0
- package/dist/trust-engine/creation-modifiers/index.js.map +1 -0
- package/dist/trust-engine/creation-modifiers/types.d.ts +112 -0
- package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -0
- package/dist/trust-engine/creation-modifiers/types.js +166 -0
- package/dist/trust-engine/creation-modifiers/types.js.map +1 -0
- package/dist/trust-engine/index.d.ts +54 -1
- package/dist/trust-engine/index.d.ts.map +1 -1
- package/dist/trust-engine/index.js +118 -1
- package/dist/trust-engine/index.js.map +1 -1
- package/dist/trust-engine/phase6-types.d.ts +123 -0
- package/dist/trust-engine/phase6-types.d.ts.map +1 -0
- package/dist/trust-engine/phase6-types.js +88 -0
- package/dist/trust-engine/phase6-types.js.map +1 -0
- package/package.json +42 -12
- package/dist/audit/key-manager.d.ts +0 -118
- package/dist/audit/key-manager.d.ts.map +0 -1
- package/dist/audit/key-manager.js +0 -565
- package/dist/audit/key-manager.js.map +0 -1
- package/dist/carbon-aware/carbon-metrics.d.ts +0 -151
- package/dist/carbon-aware/carbon-metrics.d.ts.map +0 -1
- package/dist/carbon-aware/carbon-metrics.js +0 -370
- package/dist/carbon-aware/carbon-metrics.js.map +0 -1
- package/dist/carbon-aware/carbon-router.d.ts +0 -101
- package/dist/carbon-aware/carbon-router.d.ts.map +0 -1
- package/dist/carbon-aware/carbon-router.js +0 -400
- package/dist/carbon-aware/carbon-router.js.map +0 -1
package/dist/intent/index.js
CHANGED
|
@@ -1,64 +1,169 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* INTENT - Goal Processing
|
|
2
|
+
* INTENT - Goal Processing (SDK Package)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* This module provides intent handling for the @vorionsys/atsf-core SDK.
|
|
5
|
+
*
|
|
6
|
+
* For production use with persistence, use the full implementation from the
|
|
7
|
+
* vorion core package. This SDK package provides:
|
|
8
|
+
* - Type definitions aligned with @vorion/contracts
|
|
9
|
+
* - In-memory mock for testing
|
|
10
|
+
* - Interface definitions for custom implementations
|
|
5
11
|
*
|
|
6
12
|
* @packageDocumentation
|
|
7
13
|
*/
|
|
8
14
|
import { createLogger } from '../common/logger.js';
|
|
9
15
|
const logger = createLogger({ component: 'intent' });
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// CANONICAL FIELD ENUMS (aligned with @vorion/contracts)
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Action types for categorizing intents
|
|
21
|
+
*/
|
|
22
|
+
export const ActionType = {
|
|
23
|
+
READ: 'read',
|
|
24
|
+
WRITE: 'write',
|
|
25
|
+
DELETE: 'delete',
|
|
26
|
+
EXECUTE: 'execute',
|
|
27
|
+
COMMUNICATE: 'communicate',
|
|
28
|
+
TRANSFER: 'transfer',
|
|
29
|
+
};
|
|
10
30
|
/**
|
|
11
|
-
*
|
|
31
|
+
* Data sensitivity levels
|
|
12
32
|
*/
|
|
13
|
-
export
|
|
33
|
+
export const DataSensitivity = {
|
|
34
|
+
PUBLIC: 'PUBLIC',
|
|
35
|
+
INTERNAL: 'INTERNAL',
|
|
36
|
+
CONFIDENTIAL: 'CONFIDENTIAL',
|
|
37
|
+
RESTRICTED: 'RESTRICTED',
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Action reversibility classification
|
|
41
|
+
*/
|
|
42
|
+
export const Reversibility = {
|
|
43
|
+
REVERSIBLE: 'REVERSIBLE',
|
|
44
|
+
PARTIALLY_REVERSIBLE: 'PARTIALLY_REVERSIBLE',
|
|
45
|
+
IRREVERSIBLE: 'IRREVERSIBLE',
|
|
46
|
+
};
|
|
47
|
+
// =============================================================================
|
|
48
|
+
// IN-MEMORY MOCK IMPLEMENTATION
|
|
49
|
+
// =============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* In-memory intent service for testing and development
|
|
52
|
+
*
|
|
53
|
+
* WARNING: This is NOT suitable for production use.
|
|
54
|
+
* For production, connect to the Vorion API or use the full
|
|
55
|
+
* implementation from the vorion core package.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // For testing
|
|
60
|
+
* const mockService = new MockIntentService();
|
|
61
|
+
* const intent = await mockService.submit({
|
|
62
|
+
* entityId: 'agent-123',
|
|
63
|
+
* goal: 'Send notification',
|
|
64
|
+
* context: { channel: 'email' },
|
|
65
|
+
* actionType: ActionType.COMMUNICATE,
|
|
66
|
+
* dataSensitivity: DataSensitivity.INTERNAL,
|
|
67
|
+
* reversibility: Reversibility.REVERSIBLE,
|
|
68
|
+
* }, { tenantId: 'tenant-1' });
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export class MockIntentService {
|
|
14
72
|
intents = new Map();
|
|
15
73
|
/**
|
|
16
|
-
* Submit a new intent
|
|
74
|
+
* Submit a new intent (in-memory)
|
|
17
75
|
*/
|
|
18
|
-
async submit(submission) {
|
|
76
|
+
async submit(submission, options) {
|
|
77
|
+
const now = new Date().toISOString();
|
|
78
|
+
const correlationId = submission.correlationId ?? crypto.randomUUID();
|
|
19
79
|
const intent = {
|
|
20
80
|
id: crypto.randomUUID(),
|
|
81
|
+
tenantId: options.tenantId,
|
|
21
82
|
entityId: submission.entityId,
|
|
22
83
|
goal: submission.goal,
|
|
23
84
|
context: submission.context,
|
|
24
85
|
metadata: submission.metadata ?? {},
|
|
25
86
|
status: 'pending',
|
|
26
|
-
createdAt:
|
|
27
|
-
updatedAt:
|
|
87
|
+
createdAt: now,
|
|
88
|
+
updatedAt: now,
|
|
89
|
+
trustSnapshot: options.trustSnapshot ?? null,
|
|
90
|
+
trustLevel: options.trustLevel ?? null,
|
|
91
|
+
// Canonical fields
|
|
92
|
+
correlationId,
|
|
93
|
+
actionType: submission.actionType ?? null,
|
|
94
|
+
resourceScope: submission.resourceScope ?? null,
|
|
95
|
+
dataSensitivity: submission.dataSensitivity ?? null,
|
|
96
|
+
reversibility: submission.reversibility ?? null,
|
|
97
|
+
expiresAt: submission.expiresIn
|
|
98
|
+
? new Date(Date.now() + submission.expiresIn).toISOString()
|
|
99
|
+
: null,
|
|
100
|
+
source: submission.source ?? null,
|
|
28
101
|
};
|
|
29
102
|
this.intents.set(intent.id, intent);
|
|
30
|
-
logger.info({ intentId: intent.id, goal: intent.goal }, 'Intent submitted');
|
|
103
|
+
logger.info({ intentId: intent.id, goal: intent.goal, correlationId }, 'Intent submitted (mock)');
|
|
31
104
|
return intent;
|
|
32
105
|
}
|
|
33
106
|
/**
|
|
34
107
|
* Get an intent by ID
|
|
35
108
|
*/
|
|
36
|
-
async get(id) {
|
|
37
|
-
|
|
109
|
+
async get(id, tenantId) {
|
|
110
|
+
const intent = this.intents.get(id);
|
|
111
|
+
if (intent && intent.tenantId === tenantId) {
|
|
112
|
+
return intent;
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
38
115
|
}
|
|
39
116
|
/**
|
|
40
117
|
* Update intent status
|
|
41
118
|
*/
|
|
42
|
-
async updateStatus(id, status) {
|
|
119
|
+
async updateStatus(id, tenantId, status) {
|
|
43
120
|
const intent = this.intents.get(id);
|
|
44
|
-
if (!intent)
|
|
121
|
+
if (!intent || intent.tenantId !== tenantId)
|
|
45
122
|
return undefined;
|
|
46
123
|
intent.status = status;
|
|
47
124
|
intent.updatedAt = new Date().toISOString();
|
|
48
|
-
logger.info({ intentId: id, status }, 'Intent status updated');
|
|
125
|
+
logger.info({ intentId: id, status }, 'Intent status updated (mock)');
|
|
49
126
|
return intent;
|
|
50
127
|
}
|
|
51
128
|
/**
|
|
52
129
|
* List intents for an entity
|
|
53
130
|
*/
|
|
54
|
-
async listByEntity(entityId) {
|
|
55
|
-
return Array.from(this.intents.values()).filter((i) => i.entityId === entityId);
|
|
131
|
+
async listByEntity(entityId, tenantId) {
|
|
132
|
+
return Array.from(this.intents.values()).filter((i) => i.entityId === entityId && i.tenantId === tenantId);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Clear all intents (useful for test cleanup)
|
|
136
|
+
*/
|
|
137
|
+
clear() {
|
|
138
|
+
this.intents.clear();
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get total count of intents (useful for testing)
|
|
142
|
+
*/
|
|
143
|
+
count() {
|
|
144
|
+
return this.intents.size;
|
|
56
145
|
}
|
|
57
146
|
}
|
|
147
|
+
// =============================================================================
|
|
148
|
+
// BACKWARDS COMPATIBLE EXPORTS
|
|
149
|
+
// =============================================================================
|
|
150
|
+
/**
|
|
151
|
+
* Intent service class
|
|
152
|
+
*
|
|
153
|
+
* @deprecated Use MockIntentService explicitly for testing, or implement
|
|
154
|
+
* IIntentService for production use with the Vorion API.
|
|
155
|
+
*/
|
|
156
|
+
export class IntentService extends MockIntentService {
|
|
157
|
+
}
|
|
58
158
|
/**
|
|
59
159
|
* Create a new intent service instance
|
|
160
|
+
*
|
|
161
|
+
* @deprecated Use new MockIntentService() for testing, or implement
|
|
162
|
+
* IIntentService for production use.
|
|
60
163
|
*/
|
|
61
164
|
export function createIntentService() {
|
|
165
|
+
logger.warn('createIntentService() creates an in-memory mock. ' +
|
|
166
|
+
'For production, connect to the Vorion API.');
|
|
62
167
|
return new IntentService();
|
|
63
168
|
}
|
|
64
169
|
//# sourceMappingURL=index.js.map
|
package/dist/intent/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intent/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/intent/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Trust-Aware LangChain Executor
|
|
3
3
|
*
|
|
4
|
-
* Wraps LangChain agents with trust-based access control.
|
|
4
|
+
* Wraps LangChain agents with trust-based access control and robust error handling.
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
8
8
|
import type { TrustLevel } from '../common/types.js';
|
|
9
9
|
import type { TrustEngine, TrustRecord } from '../trust-engine/index.js';
|
|
10
10
|
import { TrustCallbackHandler } from './callback.js';
|
|
11
|
-
import type { TrustAwareAgentConfig, TrustCheckResult, TrustedExecutionResult } from './types.js';
|
|
11
|
+
import type { TrustAwareAgentConfig, TrustCheckResult, TrustedExecutionResult, ClassifiedLLMError, TrustAwareAgentConfigWithRetry } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Classify an error into a known LLM error type
|
|
14
|
+
*/
|
|
15
|
+
export declare function classifyLLMError(error: Error): ClassifiedLLMError;
|
|
12
16
|
/**
|
|
13
17
|
* Trust-aware agent executor
|
|
14
18
|
*
|
|
15
|
-
* Provides trust-gated execution for LangChain agents.
|
|
19
|
+
* Provides trust-gated execution for LangChain agents with robust error handling.
|
|
16
20
|
*/
|
|
17
21
|
export declare class TrustAwareExecutor {
|
|
18
22
|
private trustEngine;
|
|
19
23
|
private callback;
|
|
20
24
|
private config;
|
|
21
|
-
|
|
25
|
+
private retryConfig;
|
|
26
|
+
private errorClassifier;
|
|
27
|
+
constructor(trustEngine: TrustEngine, config: TrustAwareAgentConfigWithRetry);
|
|
22
28
|
/**
|
|
23
29
|
* Get the callback handler for use with LangChain
|
|
24
30
|
*/
|
|
@@ -36,13 +42,21 @@ export declare class TrustAwareExecutor {
|
|
|
36
42
|
*/
|
|
37
43
|
checkTrust(requiredLevel?: TrustLevel): Promise<TrustCheckResult>;
|
|
38
44
|
/**
|
|
39
|
-
* Execute a function with trust gating
|
|
45
|
+
* Execute a function with trust gating and automatic retry
|
|
40
46
|
*
|
|
41
47
|
* @param fn - The function to execute (typically agent.invoke)
|
|
42
48
|
* @param requiredLevel - Override minimum trust level for this execution
|
|
43
49
|
* @throws TrustInsufficientError if trust is too low
|
|
44
50
|
*/
|
|
45
51
|
execute<T>(fn: () => Promise<T>, requiredLevel?: TrustLevel): Promise<TrustedExecutionResult<T>>;
|
|
52
|
+
/**
|
|
53
|
+
* Execute a function with automatic retry for transient errors
|
|
54
|
+
*/
|
|
55
|
+
private executeWithRetry;
|
|
56
|
+
/**
|
|
57
|
+
* Record a classified failure signal
|
|
58
|
+
*/
|
|
59
|
+
private recordClassifiedFailure;
|
|
46
60
|
/**
|
|
47
61
|
* Get current trust record for the agent
|
|
48
62
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/langchain/executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAuB,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/langchain/executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAuB,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAGlB,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AA0BpB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,CAqKjE;AA4BD;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,WAAW,CAAsF;IACzG,OAAO,CAAC,eAAe,CAAuC;gBAElD,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,8BAA8B;IAe5E;;OAEG;IACH,IAAI,eAAe,IAAI,oBAAoB,CAE1C;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,UAAU,CAAC,aAAa,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6BvE;;;;;;OAMG;IACG,OAAO,CAAC,CAAC,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,aAAa,CAAC,EAAE,UAAU,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IA8CrC;;OAEG;YACW,gBAAgB;IAuE9B;;OAEG;YACW,uBAAuB;IAyBrC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAIxD;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7D;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAW9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,qBAAqB,GAC5B,kBAAkB,CAEpB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Trust-Aware LangChain Executor
|
|
3
3
|
*
|
|
4
|
-
* Wraps LangChain agents with trust-based access control.
|
|
4
|
+
* Wraps LangChain agents with trust-based access control and robust error handling.
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
@@ -10,19 +10,207 @@ import { TrustInsufficientError } from '../common/types.js';
|
|
|
10
10
|
import { TRUST_LEVEL_NAMES } from '../trust-engine/index.js';
|
|
11
11
|
import { createTrustCallback } from './callback.js';
|
|
12
12
|
const logger = createLogger({ component: 'langchain-executor' });
|
|
13
|
+
/**
|
|
14
|
+
* Default retryable error types
|
|
15
|
+
*/
|
|
16
|
+
const DEFAULT_RETRYABLE_ERRORS = [
|
|
17
|
+
'rate_limit',
|
|
18
|
+
'timeout',
|
|
19
|
+
'network',
|
|
20
|
+
'server_error',
|
|
21
|
+
'model_unavailable',
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Default retry configuration
|
|
25
|
+
*/
|
|
26
|
+
const DEFAULT_RETRY_CONFIG = {
|
|
27
|
+
maxRetries: 3,
|
|
28
|
+
baseDelayMs: 1000,
|
|
29
|
+
maxDelayMs: 30000,
|
|
30
|
+
backoffMultiplier: 2,
|
|
31
|
+
retryableErrors: DEFAULT_RETRYABLE_ERRORS,
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Classify an error into a known LLM error type
|
|
35
|
+
*/
|
|
36
|
+
export function classifyLLMError(error) {
|
|
37
|
+
const message = error.message.toLowerCase();
|
|
38
|
+
const name = error.name.toLowerCase();
|
|
39
|
+
// Rate limit errors
|
|
40
|
+
if (message.includes('rate limit') ||
|
|
41
|
+
message.includes('rate_limit') ||
|
|
42
|
+
message.includes('too many requests') ||
|
|
43
|
+
message.includes('429')) {
|
|
44
|
+
// Try to extract retry-after header
|
|
45
|
+
const retryMatch = message.match(/retry after (\d+)/i);
|
|
46
|
+
const retryAfterMs = retryMatch ? parseInt(retryMatch[1], 10) * 1000 : undefined;
|
|
47
|
+
return {
|
|
48
|
+
type: 'rate_limit',
|
|
49
|
+
message: 'API rate limit exceeded',
|
|
50
|
+
originalError: error,
|
|
51
|
+
retryable: true,
|
|
52
|
+
retryAfterMs,
|
|
53
|
+
metadata: { originalMessage: error.message },
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Context length errors
|
|
57
|
+
if (message.includes('context length') ||
|
|
58
|
+
message.includes('maximum context') ||
|
|
59
|
+
message.includes('too long') ||
|
|
60
|
+
message.includes('token limit') ||
|
|
61
|
+
message.includes('max_tokens')) {
|
|
62
|
+
return {
|
|
63
|
+
type: 'context_length',
|
|
64
|
+
message: 'Input or output exceeds maximum context length',
|
|
65
|
+
originalError: error,
|
|
66
|
+
retryable: false,
|
|
67
|
+
metadata: { originalMessage: error.message },
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// Authentication errors
|
|
71
|
+
if (message.includes('unauthorized') ||
|
|
72
|
+
message.includes('invalid api key') ||
|
|
73
|
+
message.includes('authentication') ||
|
|
74
|
+
message.includes('401') ||
|
|
75
|
+
message.includes('403')) {
|
|
76
|
+
return {
|
|
77
|
+
type: 'authentication',
|
|
78
|
+
message: 'API authentication failed',
|
|
79
|
+
originalError: error,
|
|
80
|
+
retryable: false,
|
|
81
|
+
metadata: { originalMessage: error.message },
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Model unavailable
|
|
85
|
+
if (message.includes('model not found') ||
|
|
86
|
+
message.includes('model_not_available') ||
|
|
87
|
+
message.includes('overloaded') ||
|
|
88
|
+
message.includes('capacity')) {
|
|
89
|
+
return {
|
|
90
|
+
type: 'model_unavailable',
|
|
91
|
+
message: 'Model is unavailable or overloaded',
|
|
92
|
+
originalError: error,
|
|
93
|
+
retryable: true,
|
|
94
|
+
metadata: { originalMessage: error.message },
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// Content filter errors
|
|
98
|
+
if (message.includes('content filter') ||
|
|
99
|
+
message.includes('content_policy') ||
|
|
100
|
+
message.includes('safety') ||
|
|
101
|
+
message.includes('blocked')) {
|
|
102
|
+
return {
|
|
103
|
+
type: 'content_filter',
|
|
104
|
+
message: 'Content blocked by safety filters',
|
|
105
|
+
originalError: error,
|
|
106
|
+
retryable: false,
|
|
107
|
+
metadata: { originalMessage: error.message },
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Timeout errors
|
|
111
|
+
if (message.includes('timeout') ||
|
|
112
|
+
message.includes('timed out') ||
|
|
113
|
+
name.includes('timeout') ||
|
|
114
|
+
message.includes('econnreset')) {
|
|
115
|
+
return {
|
|
116
|
+
type: 'timeout',
|
|
117
|
+
message: 'Request timed out',
|
|
118
|
+
originalError: error,
|
|
119
|
+
retryable: true,
|
|
120
|
+
metadata: { originalMessage: error.message },
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
// Network errors
|
|
124
|
+
if (message.includes('network') ||
|
|
125
|
+
message.includes('enotfound') ||
|
|
126
|
+
message.includes('econnrefused') ||
|
|
127
|
+
message.includes('socket') ||
|
|
128
|
+
name.includes('fetch')) {
|
|
129
|
+
return {
|
|
130
|
+
type: 'network',
|
|
131
|
+
message: 'Network connectivity error',
|
|
132
|
+
originalError: error,
|
|
133
|
+
retryable: true,
|
|
134
|
+
metadata: { originalMessage: error.message },
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
// Invalid request errors
|
|
138
|
+
if (message.includes('invalid') ||
|
|
139
|
+
message.includes('bad request') ||
|
|
140
|
+
message.includes('400')) {
|
|
141
|
+
return {
|
|
142
|
+
type: 'invalid_request',
|
|
143
|
+
message: 'Invalid request format',
|
|
144
|
+
originalError: error,
|
|
145
|
+
retryable: false,
|
|
146
|
+
metadata: { originalMessage: error.message },
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// Server errors
|
|
150
|
+
if (message.includes('500') ||
|
|
151
|
+
message.includes('502') ||
|
|
152
|
+
message.includes('503') ||
|
|
153
|
+
message.includes('504') ||
|
|
154
|
+
message.includes('internal server error') ||
|
|
155
|
+
message.includes('service unavailable')) {
|
|
156
|
+
return {
|
|
157
|
+
type: 'server_error',
|
|
158
|
+
message: 'Provider server error',
|
|
159
|
+
originalError: error,
|
|
160
|
+
retryable: true,
|
|
161
|
+
metadata: { originalMessage: error.message },
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// Unknown error
|
|
165
|
+
return {
|
|
166
|
+
type: 'unknown',
|
|
167
|
+
message: error.message,
|
|
168
|
+
originalError: error,
|
|
169
|
+
retryable: false,
|
|
170
|
+
metadata: { originalMessage: error.message, errorName: error.name },
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Calculate delay for retry with exponential backoff
|
|
175
|
+
*/
|
|
176
|
+
function calculateRetryDelay(attempt, config, classifiedError) {
|
|
177
|
+
// Use retry-after if provided by the error
|
|
178
|
+
if (classifiedError?.retryAfterMs) {
|
|
179
|
+
return Math.min(classifiedError.retryAfterMs, config.maxDelayMs);
|
|
180
|
+
}
|
|
181
|
+
// Exponential backoff with jitter
|
|
182
|
+
const exponentialDelay = config.baseDelayMs * Math.pow(config.backoffMultiplier, attempt - 1);
|
|
183
|
+
const jitter = Math.random() * 0.1 * exponentialDelay; // 10% jitter
|
|
184
|
+
return Math.min(exponentialDelay + jitter, config.maxDelayMs);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Sleep for a given number of milliseconds
|
|
188
|
+
*/
|
|
189
|
+
function sleep(ms) {
|
|
190
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
191
|
+
}
|
|
13
192
|
/**
|
|
14
193
|
* Trust-aware agent executor
|
|
15
194
|
*
|
|
16
|
-
* Provides trust-gated execution for LangChain agents.
|
|
195
|
+
* Provides trust-gated execution for LangChain agents with robust error handling.
|
|
17
196
|
*/
|
|
18
197
|
export class TrustAwareExecutor {
|
|
19
198
|
trustEngine;
|
|
20
199
|
callback;
|
|
21
200
|
config;
|
|
201
|
+
retryConfig;
|
|
202
|
+
errorClassifier;
|
|
22
203
|
constructor(trustEngine, config) {
|
|
23
204
|
this.trustEngine = trustEngine;
|
|
24
205
|
this.config = config;
|
|
25
206
|
this.callback = createTrustCallback(trustEngine, config);
|
|
207
|
+
// Set up retry configuration
|
|
208
|
+
this.retryConfig = {
|
|
209
|
+
...DEFAULT_RETRY_CONFIG,
|
|
210
|
+
...config.retryConfig,
|
|
211
|
+
};
|
|
212
|
+
// Set up error classifier
|
|
213
|
+
this.errorClassifier = config.errorClassifier ?? classifyLLMError;
|
|
26
214
|
}
|
|
27
215
|
/**
|
|
28
216
|
* Get the callback handler for use with LangChain
|
|
@@ -71,7 +259,7 @@ export class TrustAwareExecutor {
|
|
|
71
259
|
};
|
|
72
260
|
}
|
|
73
261
|
/**
|
|
74
|
-
* Execute a function with trust gating
|
|
262
|
+
* Execute a function with trust gating and automatic retry
|
|
75
263
|
*
|
|
76
264
|
* @param fn - The function to execute (typically agent.invoke)
|
|
77
265
|
* @param requiredLevel - Override minimum trust level for this execution
|
|
@@ -89,41 +277,104 @@ export class TrustAwareExecutor {
|
|
|
89
277
|
throw new TrustInsufficientError(trustCheck.requiredLevel, trustCheck.currentLevel);
|
|
90
278
|
}
|
|
91
279
|
const initialSignals = this.callback.signalsRecorded;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
value: 0.1,
|
|
118
|
-
source: 'langchain-executor',
|
|
119
|
-
timestamp: new Date().toISOString(),
|
|
120
|
-
metadata: {
|
|
121
|
-
error: error instanceof Error ? error.message : String(error),
|
|
122
|
-
},
|
|
123
|
-
});
|
|
280
|
+
// Execute with retry logic
|
|
281
|
+
const result = await this.executeWithRetry(fn);
|
|
282
|
+
// Get final trust state
|
|
283
|
+
const finalRecord = await this.trustEngine.getScore(this.config.agentId);
|
|
284
|
+
logger.info({
|
|
285
|
+
agentId: this.config.agentId,
|
|
286
|
+
signalsRecorded: this.callback.signalsRecorded - initialSignals,
|
|
287
|
+
finalScore: finalRecord?.score,
|
|
288
|
+
}, 'Trusted execution completed');
|
|
289
|
+
return {
|
|
290
|
+
result,
|
|
291
|
+
trustCheck,
|
|
292
|
+
signalsRecorded: this.callback.signalsRecorded - initialSignals,
|
|
293
|
+
finalScore: finalRecord?.score ?? 0,
|
|
294
|
+
finalLevel: finalRecord?.level ?? 0,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Execute a function with automatic retry for transient errors
|
|
299
|
+
*/
|
|
300
|
+
async executeWithRetry(fn) {
|
|
301
|
+
let lastError;
|
|
302
|
+
for (let attempt = 1; attempt <= this.retryConfig.maxRetries + 1; attempt++) {
|
|
303
|
+
try {
|
|
304
|
+
return await fn();
|
|
124
305
|
}
|
|
125
|
-
|
|
306
|
+
catch (error) {
|
|
307
|
+
const classifiedError = this.errorClassifier(error instanceof Error ? error : new Error(String(error)));
|
|
308
|
+
lastError = classifiedError;
|
|
309
|
+
// Log the error with classification
|
|
310
|
+
logger.warn({
|
|
311
|
+
agentId: this.config.agentId,
|
|
312
|
+
attempt,
|
|
313
|
+
maxAttempts: this.retryConfig.maxRetries + 1,
|
|
314
|
+
errorType: classifiedError.type,
|
|
315
|
+
retryable: classifiedError.retryable,
|
|
316
|
+
message: classifiedError.message,
|
|
317
|
+
}, 'Execution attempt failed');
|
|
318
|
+
// Check if we should retry
|
|
319
|
+
const isRetryableType = this.retryConfig.retryableErrors.includes(classifiedError.type);
|
|
320
|
+
const hasRetriesLeft = attempt <= this.retryConfig.maxRetries;
|
|
321
|
+
const shouldRetry = classifiedError.retryable && isRetryableType && hasRetriesLeft;
|
|
322
|
+
if (!shouldRetry) {
|
|
323
|
+
// Record failure signal with classification
|
|
324
|
+
await this.recordClassifiedFailure(classifiedError);
|
|
325
|
+
throw classifiedError.originalError;
|
|
326
|
+
}
|
|
327
|
+
// Calculate delay and wait
|
|
328
|
+
const delayMs = calculateRetryDelay(attempt, this.retryConfig, classifiedError);
|
|
329
|
+
logger.info({
|
|
330
|
+
agentId: this.config.agentId,
|
|
331
|
+
attempt,
|
|
332
|
+
delayMs,
|
|
333
|
+
errorType: classifiedError.type,
|
|
334
|
+
}, 'Retrying after delay');
|
|
335
|
+
// Call retry callback if configured
|
|
336
|
+
if (this.retryConfig.onRetry) {
|
|
337
|
+
try {
|
|
338
|
+
this.retryConfig.onRetry(classifiedError, attempt, delayMs);
|
|
339
|
+
}
|
|
340
|
+
catch (callbackError) {
|
|
341
|
+
logger.warn({ callbackError }, 'Error in onRetry callback');
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
await sleep(delayMs);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// Should never reach here, but just in case
|
|
348
|
+
if (lastError) {
|
|
349
|
+
await this.recordClassifiedFailure(lastError);
|
|
350
|
+
throw lastError.originalError;
|
|
126
351
|
}
|
|
352
|
+
throw new Error('Execution failed with no error captured');
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Record a classified failure signal
|
|
356
|
+
*/
|
|
357
|
+
async recordClassifiedFailure(classifiedError) {
|
|
358
|
+
if (this.config.recordErrors === false) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
// Determine signal value based on error type
|
|
362
|
+
// Non-retryable errors have lower trust impact (not the agent's fault)
|
|
363
|
+
const signalValue = classifiedError.retryable ? 0.1 : 0.2;
|
|
364
|
+
await this.trustEngine.recordSignal({
|
|
365
|
+
id: crypto.randomUUID(),
|
|
366
|
+
entityId: this.config.agentId,
|
|
367
|
+
type: `behavioral.execution_failure.${classifiedError.type}`,
|
|
368
|
+
value: signalValue,
|
|
369
|
+
source: 'langchain-executor',
|
|
370
|
+
timestamp: new Date().toISOString(),
|
|
371
|
+
metadata: {
|
|
372
|
+
errorType: classifiedError.type,
|
|
373
|
+
errorMessage: classifiedError.message,
|
|
374
|
+
retryable: classifiedError.retryable,
|
|
375
|
+
...classifiedError.metadata,
|
|
376
|
+
},
|
|
377
|
+
});
|
|
127
378
|
}
|
|
128
379
|
/**
|
|
129
380
|
* Get current trust record for the agent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/langchain/executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/langchain/executor.ts"],"names":[],"mappings":"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"}
|