@vorionsys/atsf-core 0.2.3 → 0.2.4
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/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/server.d.ts +2 -2
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +147 -184
- package/dist/api/server.js.map +1 -1
- package/dist/arbitration/index.d.ts +4 -4
- package/dist/arbitration/index.d.ts.map +1 -1
- package/dist/arbitration/index.js +41 -46
- package/dist/arbitration/index.js.map +1 -1
- package/dist/arbitration/types.d.ts +10 -10
- package/dist/arbitration/types.d.ts.map +1 -1
- package/dist/basis/evaluator.d.ts +1 -1
- package/dist/basis/evaluator.d.ts.map +1 -1
- package/dist/basis/evaluator.js +54 -56
- package/dist/basis/evaluator.js.map +1 -1
- package/dist/basis/index.d.ts +3 -3
- package/dist/basis/index.js +3 -3
- package/dist/basis/parser.d.ts +2 -2
- package/dist/basis/parser.d.ts.map +1 -1
- package/dist/basis/parser.js +25 -32
- package/dist/basis/parser.js.map +1 -1
- package/dist/basis/types.d.ts +2 -2
- package/dist/chain/index.d.ts.map +1 -1
- package/dist/chain/index.js +16 -16
- package/dist/chain/index.js.map +1 -1
- package/dist/cognigate/index.d.ts +1 -1
- package/dist/cognigate/index.d.ts.map +1 -1
- package/dist/cognigate/index.js +33 -44
- package/dist/cognigate/index.js.map +1 -1
- package/dist/common/adapters.d.ts +4 -4
- package/dist/common/adapters.d.ts.map +1 -1
- package/dist/common/adapters.js +52 -62
- package/dist/common/adapters.js.map +1 -1
- package/dist/common/config.d.ts +69 -68
- package/dist/common/config.d.ts.map +1 -1
- package/dist/common/config.js +50 -50
- package/dist/common/config.js.map +1 -1
- package/dist/common/index.d.ts +4 -4
- package/dist/common/index.js +4 -4
- package/dist/common/logger.d.ts +1 -1
- package/dist/common/logger.js +8 -8
- package/dist/common/types.d.ts +5 -5
- package/dist/common/types.js +5 -5
- package/dist/containment/index.d.ts +3 -3
- package/dist/containment/index.d.ts.map +1 -1
- package/dist/containment/index.js +105 -119
- package/dist/containment/index.js.map +1 -1
- package/dist/containment/types.d.ts +11 -11
- package/dist/containment/types.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +9 -9
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +54 -59
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/types.d.ts +12 -12
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/crewai/callback.d.ts +2 -2
- package/dist/crewai/callback.d.ts.map +1 -1
- package/dist/crewai/callback.js +27 -27
- package/dist/crewai/callback.js.map +1 -1
- package/dist/crewai/executor.d.ts +95 -4
- package/dist/crewai/executor.d.ts.map +1 -1
- package/dist/crewai/executor.js +457 -16
- package/dist/crewai/executor.js.map +1 -1
- package/dist/crewai/index.d.ts +4 -4
- package/dist/crewai/index.js +4 -4
- package/dist/crewai/tools.d.ts +1 -1
- package/dist/crewai/tools.d.ts.map +1 -1
- package/dist/crewai/tools.js +38 -39
- package/dist/crewai/tools.js.map +1 -1
- package/dist/crewai/types.d.ts +66 -3
- package/dist/crewai/types.d.ts.map +1 -1
- package/dist/enforce/index.d.ts +229 -7
- package/dist/enforce/index.d.ts.map +1 -1
- package/dist/enforce/index.js +52 -80
- package/dist/enforce/index.js.map +1 -1
- package/dist/enforce/trust-aware-enforcement-service.d.ts +8 -8
- package/dist/enforce/trust-aware-enforcement-service.d.ts.map +1 -1
- package/dist/enforce/trust-aware-enforcement-service.js +107 -125
- package/dist/enforce/trust-aware-enforcement-service.js.map +1 -1
- package/dist/governance/fluid-workflow.d.ts +8 -8
- package/dist/governance/fluid-workflow.d.ts.map +1 -1
- package/dist/governance/fluid-workflow.js +86 -114
- package/dist/governance/fluid-workflow.js.map +1 -1
- package/dist/governance/index.d.ts +7 -7
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +74 -81
- package/dist/governance/index.js.map +1 -1
- package/dist/governance/proof-bridge.d.ts +6 -6
- package/dist/governance/proof-bridge.d.ts.map +1 -1
- package/dist/governance/proof-bridge.js +5 -5
- package/dist/governance/proof-bridge.js.map +1 -1
- package/dist/governance/types.d.ts +9 -16
- package/dist/governance/types.d.ts.map +1 -1
- package/dist/governance/types.js.map +1 -1
- package/dist/index.d.ts +27 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -31
- package/dist/index.js.map +1 -1
- package/dist/intent/index.d.ts +55 -5
- package/dist/intent/index.d.ts.map +1 -1
- package/dist/intent/index.js +21 -24
- package/dist/intent/index.js.map +1 -1
- package/dist/intent/persistent-intent-service.d.ts +2 -2
- package/dist/intent/persistent-intent-service.d.ts.map +1 -1
- package/dist/intent/persistent-intent-service.js +31 -43
- package/dist/intent/persistent-intent-service.js.map +1 -1
- package/dist/intent/supabase-intent-repository.d.ts +124 -0
- package/dist/intent/supabase-intent-repository.d.ts.map +1 -0
- package/dist/intent/supabase-intent-repository.js +404 -0
- package/dist/intent/supabase-intent-repository.js.map +1 -0
- package/dist/langchain/callback.d.ts +2 -2
- package/dist/langchain/callback.d.ts.map +1 -1
- package/dist/langchain/callback.js +30 -30
- package/dist/langchain/callback.js.map +1 -1
- package/dist/langchain/executor.d.ts +4 -4
- package/dist/langchain/executor.d.ts.map +1 -1
- package/dist/langchain/executor.js +80 -82
- package/dist/langchain/executor.js.map +1 -1
- package/dist/langchain/index.d.ts +5 -5
- package/dist/langchain/index.js +5 -5
- package/dist/langchain/tools.d.ts +1 -1
- package/dist/langchain/tools.d.ts.map +1 -1
- package/dist/langchain/tools.js +34 -36
- package/dist/langchain/tools.js.map +1 -1
- package/dist/langchain/types.d.ts +3 -3
- package/dist/langchain/types.d.ts.map +1 -1
- package/dist/layers/implementations/L0-request-format.d.ts +2 -2
- package/dist/layers/implementations/L0-request-format.d.ts.map +1 -1
- package/dist/layers/implementations/L0-request-format.js +52 -54
- package/dist/layers/implementations/L0-request-format.js.map +1 -1
- package/dist/layers/implementations/L1-input-size.d.ts +2 -2
- package/dist/layers/implementations/L1-input-size.d.ts.map +1 -1
- package/dist/layers/implementations/L1-input-size.js +39 -49
- package/dist/layers/implementations/L1-input-size.js.map +1 -1
- package/dist/layers/implementations/L2-charset-sanitizer.d.ts +2 -2
- package/dist/layers/implementations/L2-charset-sanitizer.d.ts.map +1 -1
- package/dist/layers/implementations/L2-charset-sanitizer.js +71 -81
- package/dist/layers/implementations/L2-charset-sanitizer.js.map +1 -1
- package/dist/layers/implementations/L3-schema-conformance.d.ts +3 -3
- package/dist/layers/implementations/L3-schema-conformance.d.ts.map +1 -1
- package/dist/layers/implementations/L3-schema-conformance.js +73 -82
- package/dist/layers/implementations/L3-schema-conformance.js.map +1 -1
- package/dist/layers/implementations/L4-injection-detector.d.ts +4 -4
- package/dist/layers/implementations/L4-injection-detector.d.ts.map +1 -1
- package/dist/layers/implementations/L4-injection-detector.js +81 -85
- package/dist/layers/implementations/L4-injection-detector.js.map +1 -1
- package/dist/layers/implementations/L5-rate-limiter.d.ts +2 -2
- package/dist/layers/implementations/L5-rate-limiter.d.ts.map +1 -1
- package/dist/layers/implementations/L5-rate-limiter.js +20 -20
- package/dist/layers/implementations/L5-rate-limiter.js.map +1 -1
- package/dist/layers/implementations/index.d.ts +6 -6
- package/dist/layers/implementations/index.d.ts.map +1 -1
- package/dist/layers/implementations/index.js +6 -6
- package/dist/layers/implementations/index.js.map +1 -1
- package/dist/layers/index.d.ts +3 -3
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/layers/index.js +71 -99
- package/dist/layers/index.js.map +1 -1
- package/dist/layers/types.d.ts +16 -16
- package/dist/layers/types.d.ts.map +1 -1
- package/dist/persistence/file.d.ts +3 -3
- package/dist/persistence/file.d.ts.map +1 -1
- package/dist/persistence/file.js +28 -32
- package/dist/persistence/file.js.map +1 -1
- package/dist/persistence/index.d.ts +7 -7
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +18 -18
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/memory.d.ts +3 -3
- package/dist/persistence/memory.d.ts.map +1 -1
- package/dist/persistence/memory.js +8 -10
- package/dist/persistence/memory.js.map +1 -1
- package/dist/persistence/sqlite.d.ts +3 -3
- package/dist/persistence/sqlite.d.ts.map +1 -1
- package/dist/persistence/sqlite.js +40 -39
- package/dist/persistence/sqlite.js.map +1 -1
- package/dist/persistence/supabase.d.ts +3 -3
- package/dist/persistence/supabase.d.ts.map +1 -1
- package/dist/persistence/supabase.js +45 -43
- package/dist/persistence/supabase.js.map +1 -1
- package/dist/persistence/types.d.ts +5 -5
- package/dist/phase6/ceiling.d.ts +5 -5
- package/dist/phase6/ceiling.d.ts.map +1 -1
- package/dist/phase6/ceiling.js +36 -69
- package/dist/phase6/ceiling.js.map +1 -1
- package/dist/phase6/context.d.ts +3 -3
- package/dist/phase6/context.d.ts.map +1 -1
- package/dist/phase6/context.js +47 -93
- package/dist/phase6/context.js.map +1 -1
- package/dist/phase6/index.d.ts +12 -12
- package/dist/phase6/index.d.ts.map +1 -1
- package/dist/phase6/index.js +15 -15
- package/dist/phase6/index.js.map +1 -1
- package/dist/phase6/presets.d.ts +2 -2
- package/dist/phase6/presets.d.ts.map +1 -1
- package/dist/phase6/presets.js +33 -39
- package/dist/phase6/presets.js.map +1 -1
- package/dist/phase6/provenance.d.ts +4 -4
- package/dist/phase6/provenance.d.ts.map +1 -1
- package/dist/phase6/provenance.js +35 -42
- package/dist/phase6/provenance.js.map +1 -1
- package/dist/phase6/role-gates/index.d.ts +2 -2
- package/dist/phase6/role-gates/index.js +2 -2
- package/dist/phase6/role-gates/kernel.d.ts.map +1 -1
- package/dist/phase6/role-gates/kernel.js +16 -16
- package/dist/phase6/role-gates/kernel.js.map +1 -1
- package/dist/phase6/role-gates/policy.d.ts +2 -2
- package/dist/phase6/role-gates/policy.js +6 -6
- package/dist/phase6/role-gates.d.ts +4 -4
- package/dist/phase6/role-gates.d.ts.map +1 -1
- package/dist/phase6/role-gates.js +58 -80
- package/dist/phase6/role-gates.js.map +1 -1
- package/dist/phase6/types.d.ts +20 -19
- package/dist/phase6/types.d.ts.map +1 -1
- package/dist/phase6/types.js +82 -177
- package/dist/phase6/types.js.map +1 -1
- package/dist/phase6/weight-presets/canonical.d.ts.map +1 -1
- package/dist/phase6/weight-presets/canonical.js +10 -10
- package/dist/phase6/weight-presets/canonical.js.map +1 -1
- package/dist/phase6/weight-presets/deltas.d.ts +2 -2
- package/dist/phase6/weight-presets/deltas.d.ts.map +1 -1
- package/dist/phase6/weight-presets/deltas.js +27 -27
- package/dist/phase6/weight-presets/deltas.js.map +1 -1
- package/dist/phase6/weight-presets/index.d.ts +3 -3
- package/dist/phase6/weight-presets/index.js +3 -3
- package/dist/phase6/weight-presets/merger.d.ts +2 -2
- package/dist/phase6/weight-presets/merger.d.ts.map +1 -1
- package/dist/phase6/weight-presets/merger.js +43 -39
- package/dist/phase6/weight-presets/merger.js.map +1 -1
- package/dist/proof/index.d.ts +3 -3
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +38 -44
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/merkle.d.ts +24 -3
- package/dist/proof/merkle.d.ts.map +1 -1
- package/dist/proof/merkle.js +116 -32
- package/dist/proof/merkle.js.map +1 -1
- package/dist/proof/zk-proofs.d.ts +6 -6
- package/dist/proof/zk-proofs.d.ts.map +1 -1
- package/dist/proof/zk-proofs.js +43 -42
- package/dist/proof/zk-proofs.js.map +1 -1
- package/dist/provenance/index.d.ts +3 -3
- package/dist/provenance/index.d.ts.map +1 -1
- package/dist/provenance/index.js +17 -19
- package/dist/provenance/index.js.map +1 -1
- package/dist/provenance/types.d.ts +4 -4
- package/dist/provenance/types.d.ts.map +1 -1
- package/dist/sandbox-training/challenges.d.ts +1 -1
- package/dist/sandbox-training/challenges.d.ts.map +1 -1
- package/dist/sandbox-training/challenges.js +228 -228
- package/dist/sandbox-training/challenges.js.map +1 -1
- package/dist/sandbox-training/graduation.d.ts +1 -1
- package/dist/sandbox-training/graduation.d.ts.map +1 -1
- package/dist/sandbox-training/graduation.js +15 -14
- package/dist/sandbox-training/graduation.js.map +1 -1
- package/dist/sandbox-training/index.d.ts +9 -9
- package/dist/sandbox-training/index.d.ts.map +1 -1
- package/dist/sandbox-training/index.js +6 -6
- package/dist/sandbox-training/index.js.map +1 -1
- package/dist/sandbox-training/promotion-service.d.ts +4 -4
- package/dist/sandbox-training/promotion-service.d.ts.map +1 -1
- package/dist/sandbox-training/promotion-service.js +5 -5
- package/dist/sandbox-training/promotion-service.js.map +1 -1
- package/dist/sandbox-training/runner.d.ts +1 -1
- package/dist/sandbox-training/runner.d.ts.map +1 -1
- package/dist/sandbox-training/runner.js +73 -74
- package/dist/sandbox-training/runner.js.map +1 -1
- package/dist/sandbox-training/scorer.d.ts +4 -4
- package/dist/sandbox-training/scorer.js +5 -5
- package/dist/sandbox-training/types.d.ts +4 -4
- package/dist/sandbox-training/types.d.ts.map +1 -1
- package/dist/sandbox-training/types.js +7 -11
- package/dist/sandbox-training/types.js.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.js +4 -3
- package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/index.d.ts +2 -2
- package/dist/trust-engine/ceiling-enforcement/index.js +2 -2
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +12 -10
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/kernel.js +26 -20
- package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -1
- package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -1
- package/dist/trust-engine/context-policy/factory.d.ts +1 -1
- package/dist/trust-engine/context-policy/factory.d.ts.map +1 -1
- package/dist/trust-engine/context-policy/factory.js +1 -1
- package/dist/trust-engine/context-policy/factory.js.map +1 -1
- package/dist/trust-engine/context-policy/index.d.ts +2 -2
- package/dist/trust-engine/context-policy/index.js +2 -2
- package/dist/trust-engine/creation-modifiers/index.d.ts +1 -1
- package/dist/trust-engine/creation-modifiers/index.js +1 -1
- package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -1
- package/dist/trust-engine/creation-modifiers/types.js +3 -2
- package/dist/trust-engine/creation-modifiers/types.js.map +1 -1
- package/dist/trust-engine/decay-profiles.d.ts +37 -136
- package/dist/trust-engine/decay-profiles.d.ts.map +1 -1
- package/dist/trust-engine/decay-profiles.js +68 -178
- package/dist/trust-engine/decay-profiles.js.map +1 -1
- package/dist/trust-engine/index.d.ts +135 -168
- package/dist/trust-engine/index.d.ts.map +1 -1
- package/dist/trust-engine/index.js +239 -525
- package/dist/trust-engine/index.js.map +1 -1
- package/dist/trust-engine/phase6-types.d.ts +18 -11
- package/dist/trust-engine/phase6-types.d.ts.map +1 -1
- package/dist/trust-engine/phase6-types.js +33 -29
- package/dist/trust-engine/phase6-types.js.map +1 -1
- package/package.json +1 -1
- package/dist/enforce/types.d.ts +0 -234
- package/dist/enforce/types.d.ts.map +0 -1
- package/dist/enforce/types.js +0 -10
- package/dist/enforce/types.js.map +0 -1
- package/dist/intent/types.d.ts +0 -69
- package/dist/intent/types.d.ts.map +0 -1
- package/dist/intent/types.js +0 -10
- package/dist/intent/types.js.map +0 -1
- package/dist/intent-gateway/index.d.ts +0 -522
- package/dist/intent-gateway/index.d.ts.map +0 -1
- package/dist/intent-gateway/index.js +0 -1499
- package/dist/intent-gateway/index.js.map +0 -1
- package/dist/trust-engine/types.d.ts +0 -77
- package/dist/trust-engine/types.d.ts.map +0 -1
- package/dist/trust-engine/types.js +0 -20
- package/dist/trust-engine/types.js.map +0 -1
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @packageDocumentation
|
|
15
15
|
*/
|
|
16
|
-
import { createLogger } from
|
|
17
|
-
const logger = createLogger({ component:
|
|
16
|
+
import { createLogger } from '../common/logger.js';
|
|
17
|
+
const logger = createLogger({ component: 'persistent-intent-service' });
|
|
18
18
|
// =============================================================================
|
|
19
19
|
// STATE MACHINE
|
|
20
20
|
// =============================================================================
|
|
@@ -23,14 +23,14 @@ const logger = createLogger({ component: "persistent-intent-service" });
|
|
|
23
23
|
* Any transition not listed here is rejected.
|
|
24
24
|
*/
|
|
25
25
|
const VALID_TRANSITIONS = {
|
|
26
|
-
pending: [
|
|
27
|
-
evaluating: [
|
|
28
|
-
approved: [
|
|
26
|
+
pending: ['evaluating', 'cancelled'],
|
|
27
|
+
evaluating: ['approved', 'denied', 'escalated', 'failed'],
|
|
28
|
+
approved: ['executing', 'cancelled'],
|
|
29
29
|
denied: [],
|
|
30
|
-
escalated: [
|
|
31
|
-
executing: [
|
|
30
|
+
escalated: ['approved', 'denied', 'cancelled'],
|
|
31
|
+
executing: ['completed', 'failed'],
|
|
32
32
|
completed: [],
|
|
33
|
-
failed: [
|
|
33
|
+
failed: ['pending'], // allow retry
|
|
34
34
|
cancelled: [],
|
|
35
35
|
};
|
|
36
36
|
// =============================================================================
|
|
@@ -38,25 +38,24 @@ const VALID_TRANSITIONS = {
|
|
|
38
38
|
// =============================================================================
|
|
39
39
|
function validateSubmission(submission) {
|
|
40
40
|
const errors = [];
|
|
41
|
-
if (!submission.entityId || typeof submission.entityId !==
|
|
42
|
-
errors.push(
|
|
41
|
+
if (!submission.entityId || typeof submission.entityId !== 'string') {
|
|
42
|
+
errors.push('entityId is required and must be a non-empty string');
|
|
43
43
|
}
|
|
44
|
-
if (!submission.goal || typeof submission.goal !==
|
|
45
|
-
errors.push(
|
|
44
|
+
if (!submission.goal || typeof submission.goal !== 'string') {
|
|
45
|
+
errors.push('goal is required and must be a non-empty string');
|
|
46
46
|
}
|
|
47
47
|
if (submission.goal && submission.goal.length > 10_000) {
|
|
48
|
-
errors.push(
|
|
48
|
+
errors.push('goal must be 10,000 characters or fewer');
|
|
49
49
|
}
|
|
50
|
-
if (submission.context !== undefined &&
|
|
51
|
-
(
|
|
52
|
-
errors.push("context must be a plain object");
|
|
50
|
+
if (submission.context !== undefined && (typeof submission.context !== 'object' || submission.context === null)) {
|
|
51
|
+
errors.push('context must be a plain object');
|
|
53
52
|
}
|
|
54
53
|
if (submission.expiresIn !== undefined) {
|
|
55
|
-
if (typeof submission.expiresIn !==
|
|
56
|
-
errors.push(
|
|
54
|
+
if (typeof submission.expiresIn !== 'number' || submission.expiresIn <= 0) {
|
|
55
|
+
errors.push('expiresIn must be a positive number (milliseconds)');
|
|
57
56
|
}
|
|
58
57
|
if (submission.expiresIn > 86_400_000) {
|
|
59
|
-
errors.push(
|
|
58
|
+
errors.push('expiresIn cannot exceed 24 hours (86400000ms)');
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
return errors;
|
|
@@ -80,9 +79,7 @@ export class PersistentIntentService {
|
|
|
80
79
|
if (this.config.expirationSweepIntervalMs > 0) {
|
|
81
80
|
this.sweepTimer = setInterval(() => this.sweepExpired(), this.config.expirationSweepIntervalMs);
|
|
82
81
|
// Don't prevent Node.js from exiting
|
|
83
|
-
if (this.sweepTimer &&
|
|
84
|
-
typeof this.sweepTimer === "object" &&
|
|
85
|
-
"unref" in this.sweepTimer) {
|
|
82
|
+
if (this.sweepTimer && typeof this.sweepTimer === 'object' && 'unref' in this.sweepTimer) {
|
|
86
83
|
this.sweepTimer.unref();
|
|
87
84
|
}
|
|
88
85
|
}
|
|
@@ -94,10 +91,10 @@ export class PersistentIntentService {
|
|
|
94
91
|
// Validate input
|
|
95
92
|
const errors = validateSubmission(submission);
|
|
96
93
|
if (errors.length > 0) {
|
|
97
|
-
throw new Error(`Invalid intent submission: ${errors.join(
|
|
94
|
+
throw new Error(`Invalid intent submission: ${errors.join('; ')}`);
|
|
98
95
|
}
|
|
99
96
|
if (!options.tenantId) {
|
|
100
|
-
throw new Error(
|
|
97
|
+
throw new Error('tenantId is required in SubmitOptions');
|
|
101
98
|
}
|
|
102
99
|
// Check per-entity limit
|
|
103
100
|
const indexKey = `${options.tenantId}:${submission.entityId}`;
|
|
@@ -117,7 +114,7 @@ export class PersistentIntentService {
|
|
|
117
114
|
goal: submission.goal,
|
|
118
115
|
context: submission.context ?? {},
|
|
119
116
|
metadata: submission.metadata ?? {},
|
|
120
|
-
status:
|
|
117
|
+
status: 'pending',
|
|
121
118
|
createdAt: now,
|
|
122
119
|
updatedAt: now,
|
|
123
120
|
trustSnapshot: options.trustSnapshot ?? null,
|
|
@@ -144,7 +141,7 @@ export class PersistentIntentService {
|
|
|
144
141
|
goal: intent.goal.slice(0, 100),
|
|
145
142
|
correlationId,
|
|
146
143
|
actionType: intent.actionType,
|
|
147
|
-
},
|
|
144
|
+
}, 'Intent submitted');
|
|
148
145
|
return intent;
|
|
149
146
|
}
|
|
150
147
|
/**
|
|
@@ -174,19 +171,17 @@ export class PersistentIntentService {
|
|
|
174
171
|
const allowed = VALID_TRANSITIONS[intent.status];
|
|
175
172
|
if (!allowed || !allowed.includes(status)) {
|
|
176
173
|
throw new Error(`Invalid status transition: '${intent.status}' → '${status}'. ` +
|
|
177
|
-
`Allowed transitions from '${intent.status}': [${allowed?.join(
|
|
174
|
+
`Allowed transitions from '${intent.status}': [${allowed?.join(', ') ?? 'none'}]`);
|
|
178
175
|
}
|
|
179
176
|
const previousStatus = intent.status;
|
|
180
177
|
intent.status = status;
|
|
181
178
|
intent.updatedAt = new Date().toISOString();
|
|
182
179
|
// Clean up terminal intents from entity index
|
|
183
|
-
if (status ===
|
|
184
|
-
status === "cancelled" ||
|
|
185
|
-
status === "denied") {
|
|
180
|
+
if (status === 'completed' || status === 'cancelled' || status === 'denied') {
|
|
186
181
|
const indexKey = `${tenantId}:${intent.entityId}`;
|
|
187
182
|
this.entityIndex.get(indexKey)?.delete(id);
|
|
188
183
|
}
|
|
189
|
-
logger.info({ intentId: id, from: previousStatus, to: status },
|
|
184
|
+
logger.info({ intentId: id, from: previousStatus, to: status }, 'Intent status updated');
|
|
190
185
|
return intent;
|
|
191
186
|
}
|
|
192
187
|
/**
|
|
@@ -238,12 +233,10 @@ export class PersistentIntentService {
|
|
|
238
233
|
return new Date(intent.expiresAt).getTime() < Date.now();
|
|
239
234
|
}
|
|
240
235
|
async expireIntent(intent) {
|
|
241
|
-
if (intent.status !==
|
|
242
|
-
intent.status
|
|
243
|
-
intent.status !== "denied") {
|
|
244
|
-
intent.status = "cancelled";
|
|
236
|
+
if (intent.status !== 'completed' && intent.status !== 'cancelled' && intent.status !== 'denied') {
|
|
237
|
+
intent.status = 'cancelled';
|
|
245
238
|
intent.updatedAt = new Date().toISOString();
|
|
246
|
-
logger.debug({ intentId: intent.id },
|
|
239
|
+
logger.debug({ intentId: intent.id }, 'Intent expired');
|
|
247
240
|
}
|
|
248
241
|
}
|
|
249
242
|
sweepExpired() {
|
|
@@ -251,12 +244,7 @@ export class PersistentIntentService {
|
|
|
251
244
|
for (const [id, intent] of this.intents) {
|
|
252
245
|
if (this.isExpired(intent)) {
|
|
253
246
|
// Remove terminal intents entirely, expire active ones
|
|
254
|
-
const isTerminal = [
|
|
255
|
-
"completed",
|
|
256
|
-
"cancelled",
|
|
257
|
-
"denied",
|
|
258
|
-
"failed",
|
|
259
|
-
].includes(intent.status);
|
|
247
|
+
const isTerminal = ['completed', 'cancelled', 'denied', 'failed'].includes(intent.status);
|
|
260
248
|
if (isTerminal) {
|
|
261
249
|
this.intents.delete(id);
|
|
262
250
|
const indexKey = `${intent.tenantId}:${intent.entityId}`;
|
|
@@ -270,7 +258,7 @@ export class PersistentIntentService {
|
|
|
270
258
|
}
|
|
271
259
|
}
|
|
272
260
|
if (swept > 0) {
|
|
273
|
-
logger.debug({ swept },
|
|
261
|
+
logger.debug({ swept }, 'Expired intents swept');
|
|
274
262
|
}
|
|
275
263
|
}
|
|
276
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-intent-service.js","sourceRoot":"","sources":["../../src/intent/persistent-intent-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"persistent-intent-service.js","sourceRoot":"","sources":["../../src/intent/persistent-intent-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supabase/Postgres Persistence Adapter for Intent Service
|
|
3
|
+
*
|
|
4
|
+
* Production-quality intent service backed by Supabase (PostgreSQL). Provides:
|
|
5
|
+
* - Full IIntentService interface implementation
|
|
6
|
+
* - Input validation (same rules as PersistentIntentService)
|
|
7
|
+
* - State machine enforcement for status transitions
|
|
8
|
+
* - Tenant isolation via tenantId column (and optional RLS)
|
|
9
|
+
* - Configurable table name and schema for multi-schema deployments
|
|
10
|
+
* - Correlation ID tracking for distributed tracing
|
|
11
|
+
* - Type-only import of @supabase/supabase-js to avoid hard dependency
|
|
12
|
+
*
|
|
13
|
+
* Requires the migration in ./migrations/001_create_intents_table.sql to be
|
|
14
|
+
* applied before use.
|
|
15
|
+
*
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
import type { Intent, ID, IntentStatus } from '../common/types.js';
|
|
19
|
+
import type { IIntentService, IntentSubmission, SubmitOptions } from './index.js';
|
|
20
|
+
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
21
|
+
/**
|
|
22
|
+
* Configuration for the Supabase intent repository.
|
|
23
|
+
*/
|
|
24
|
+
export interface SupabaseIntentRepositoryConfig {
|
|
25
|
+
/** Supabase client instance (caller must provide) */
|
|
26
|
+
client: SupabaseClient;
|
|
27
|
+
/** Table name to use. Default: 'intents' */
|
|
28
|
+
tableName?: string;
|
|
29
|
+
/** Database schema to use (for multi-schema Supabase setups). Default: 'public' */
|
|
30
|
+
schema?: string;
|
|
31
|
+
/** Default expiration time for intents without explicit expiresIn (ms). Default: 1 hour */
|
|
32
|
+
defaultExpirationMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Supabase/Postgres-backed intent service.
|
|
36
|
+
*
|
|
37
|
+
* Implements the full IIntentService interface with durable persistence,
|
|
38
|
+
* input validation, state machine enforcement, and tenant isolation.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import { createClient } from '@supabase/supabase-js';
|
|
43
|
+
* import { createSupabaseIntentRepository } from '@vorionsys/atsf-core/intent/supabase-intent-repository';
|
|
44
|
+
*
|
|
45
|
+
* const supabase = createClient(SUPABASE_URL, SUPABASE_KEY);
|
|
46
|
+
* const intentService = createSupabaseIntentRepository({ client: supabase });
|
|
47
|
+
*
|
|
48
|
+
* const intent = await intentService.submit(
|
|
49
|
+
* { entityId: 'agent-1', goal: 'Send email', context: {} },
|
|
50
|
+
* { tenantId: 'tenant-abc' }
|
|
51
|
+
* );
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare class SupabaseIntentRepository implements IIntentService {
|
|
55
|
+
private readonly client;
|
|
56
|
+
private readonly tableName;
|
|
57
|
+
private readonly schema;
|
|
58
|
+
private readonly defaultExpirationMs;
|
|
59
|
+
constructor(config: SupabaseIntentRepositoryConfig);
|
|
60
|
+
private table;
|
|
61
|
+
/**
|
|
62
|
+
* Submit a new intent with full validation and persist to Supabase.
|
|
63
|
+
*/
|
|
64
|
+
submit(submission: IntentSubmission, options: SubmitOptions): Promise<Intent>;
|
|
65
|
+
/**
|
|
66
|
+
* Retrieve an intent by ID with tenant isolation.
|
|
67
|
+
* Returns undefined if not found or if the intent belongs to a different tenant.
|
|
68
|
+
*/
|
|
69
|
+
get(id: ID, tenantId: ID): Promise<Intent | undefined>;
|
|
70
|
+
/**
|
|
71
|
+
* Update the status of an intent with state machine enforcement.
|
|
72
|
+
* Returns the updated intent, or undefined if not found / wrong tenant.
|
|
73
|
+
* Throws if the requested transition is invalid.
|
|
74
|
+
*/
|
|
75
|
+
updateStatus(id: ID, tenantId: ID, status: IntentStatus): Promise<Intent | undefined>;
|
|
76
|
+
/**
|
|
77
|
+
* List all intents for a given entity within a tenant.
|
|
78
|
+
* Results are sorted by creation time (newest first).
|
|
79
|
+
* Expired intents are excluded.
|
|
80
|
+
*/
|
|
81
|
+
listByEntity(entityId: ID, tenantId: ID): Promise<Intent[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Check if an intent has passed its expiration time.
|
|
84
|
+
*/
|
|
85
|
+
private isExpired;
|
|
86
|
+
/**
|
|
87
|
+
* Mark an expired, non-terminal intent as cancelled in the database.
|
|
88
|
+
*/
|
|
89
|
+
private expireIntent;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create a new SupabaseIntentRepository instance.
|
|
93
|
+
*
|
|
94
|
+
* This factory provides a convenient way to instantiate the repository
|
|
95
|
+
* without directly importing the class, useful for dependency injection
|
|
96
|
+
* and testing.
|
|
97
|
+
*
|
|
98
|
+
* @param config - Repository configuration including the Supabase client
|
|
99
|
+
* @returns A configured SupabaseIntentRepository implementing IIntentService
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* import { createClient } from '@supabase/supabase-js';
|
|
104
|
+
* import { createSupabaseIntentRepository } from '@vorionsys/atsf-core/intent/supabase-intent-repository';
|
|
105
|
+
*
|
|
106
|
+
* const supabase = createClient(
|
|
107
|
+
* process.env.SUPABASE_URL!,
|
|
108
|
+
* process.env.SUPABASE_SERVICE_KEY!
|
|
109
|
+
* );
|
|
110
|
+
*
|
|
111
|
+
* const intentService = createSupabaseIntentRepository({
|
|
112
|
+
* client: supabase,
|
|
113
|
+
* tableName: 'intents', // default
|
|
114
|
+
* schema: 'public', // default
|
|
115
|
+
* defaultExpirationMs: 3600000, // 1 hour default
|
|
116
|
+
* });
|
|
117
|
+
*
|
|
118
|
+
* // Wire it into the service locator
|
|
119
|
+
* import { setIntentService } from '@vorionsys/atsf-core';
|
|
120
|
+
* setIntentService(intentService);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export declare function createSupabaseIntentRepository(config: SupabaseIntentRepositoryConfig): SupabaseIntentRepository;
|
|
124
|
+
//# sourceMappingURL=supabase-intent-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-intent-repository.d.ts","sourceRoot":"","sources":["../../src/intent/supabase-intent-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMlF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA+F5D;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,qDAAqD;IACrD,MAAM,EAAE,cAAc,CAAC;IACvB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAoED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,wBAAyB,YAAW,cAAc;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAEjC,MAAM,EAAE,8BAA8B;IAoBlD,OAAO,CAAC,KAAK;IAQb;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA0EnF;;;OAGG;IACG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAkC5D;;;;OAIG;IACG,YAAY,CAChB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,EAAE,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA6D9B;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAoCjE;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;YACW,YAAY;CAoB3B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,8BAA8B,GACrC,wBAAwB,CAE1B"}
|