@vorionsys/atsf-core 0.2.2 → 0.2.3

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 (326) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/README.md +77 -11
  3. package/dist/api/index.d.ts +1 -1
  4. package/dist/api/index.js +1 -1
  5. package/dist/api/server.d.ts +5 -2
  6. package/dist/api/server.d.ts.map +1 -1
  7. package/dist/api/server.js +186 -149
  8. package/dist/api/server.js.map +1 -1
  9. package/dist/arbitration/index.d.ts +4 -4
  10. package/dist/arbitration/index.d.ts.map +1 -1
  11. package/dist/arbitration/index.js +46 -41
  12. package/dist/arbitration/index.js.map +1 -1
  13. package/dist/arbitration/types.d.ts +10 -10
  14. package/dist/arbitration/types.d.ts.map +1 -1
  15. package/dist/basis/evaluator.d.ts +1 -1
  16. package/dist/basis/evaluator.d.ts.map +1 -1
  17. package/dist/basis/evaluator.js +56 -54
  18. package/dist/basis/evaluator.js.map +1 -1
  19. package/dist/basis/index.d.ts +3 -3
  20. package/dist/basis/index.js +3 -3
  21. package/dist/basis/parser.d.ts +16 -16
  22. package/dist/basis/parser.d.ts.map +1 -1
  23. package/dist/basis/parser.js +32 -25
  24. package/dist/basis/parser.js.map +1 -1
  25. package/dist/basis/types.d.ts +2 -2
  26. package/dist/chain/index.d.ts.map +1 -1
  27. package/dist/chain/index.js +16 -16
  28. package/dist/chain/index.js.map +1 -1
  29. package/dist/cognigate/index.d.ts +1 -1
  30. package/dist/cognigate/index.d.ts.map +1 -1
  31. package/dist/cognigate/index.js +44 -33
  32. package/dist/cognigate/index.js.map +1 -1
  33. package/dist/common/adapters.d.ts +18 -11
  34. package/dist/common/adapters.d.ts.map +1 -1
  35. package/dist/common/adapters.js +100 -79
  36. package/dist/common/adapters.js.map +1 -1
  37. package/dist/common/config.d.ts +67 -67
  38. package/dist/common/config.js +49 -49
  39. package/dist/common/config.js.map +1 -1
  40. package/dist/common/index.d.ts +4 -4
  41. package/dist/common/index.js +4 -4
  42. package/dist/common/logger.d.ts +1 -1
  43. package/dist/common/logger.js +8 -8
  44. package/dist/common/types.d.ts +8 -8
  45. package/dist/common/types.js +5 -5
  46. package/dist/containment/index.d.ts +3 -3
  47. package/dist/containment/index.d.ts.map +1 -1
  48. package/dist/containment/index.js +119 -105
  49. package/dist/containment/index.js.map +1 -1
  50. package/dist/containment/types.d.ts +11 -11
  51. package/dist/containment/types.d.ts.map +1 -1
  52. package/dist/contracts/index.d.ts +9 -9
  53. package/dist/contracts/index.d.ts.map +1 -1
  54. package/dist/contracts/index.js +59 -54
  55. package/dist/contracts/index.js.map +1 -1
  56. package/dist/contracts/types.d.ts +12 -12
  57. package/dist/contracts/types.d.ts.map +1 -1
  58. package/dist/crewai/callback.d.ts +91 -0
  59. package/dist/crewai/callback.d.ts.map +1 -0
  60. package/dist/crewai/callback.js +271 -0
  61. package/dist/crewai/callback.js.map +1 -0
  62. package/dist/crewai/executor.d.ts +135 -0
  63. package/dist/crewai/executor.d.ts.map +1 -0
  64. package/dist/crewai/executor.js +381 -0
  65. package/dist/crewai/executor.js.map +1 -0
  66. package/dist/crewai/index.d.ts +12 -0
  67. package/dist/crewai/index.d.ts.map +1 -0
  68. package/dist/crewai/index.js +12 -0
  69. package/dist/crewai/index.js.map +1 -0
  70. package/dist/crewai/tools.d.ts +21 -0
  71. package/dist/crewai/tools.d.ts.map +1 -0
  72. package/dist/crewai/tools.js +164 -0
  73. package/dist/crewai/tools.js.map +1 -0
  74. package/dist/crewai/types.d.ts +139 -0
  75. package/dist/crewai/types.d.ts.map +1 -0
  76. package/dist/crewai/types.js +9 -0
  77. package/dist/crewai/types.js.map +1 -0
  78. package/dist/enforce/index.d.ts +48 -222
  79. package/dist/enforce/index.d.ts.map +1 -1
  80. package/dist/enforce/index.js +144 -47
  81. package/dist/enforce/index.js.map +1 -1
  82. package/dist/enforce/trust-aware-enforcement-service.d.ts +121 -0
  83. package/dist/enforce/trust-aware-enforcement-service.d.ts.map +1 -0
  84. package/dist/enforce/trust-aware-enforcement-service.js +601 -0
  85. package/dist/enforce/trust-aware-enforcement-service.js.map +1 -0
  86. package/dist/enforce/types.d.ts +234 -0
  87. package/dist/enforce/types.d.ts.map +1 -0
  88. package/dist/enforce/types.js +10 -0
  89. package/dist/enforce/types.js.map +1 -0
  90. package/dist/governance/fluid-workflow.d.ts +8 -8
  91. package/dist/governance/fluid-workflow.d.ts.map +1 -1
  92. package/dist/governance/fluid-workflow.js +114 -86
  93. package/dist/governance/fluid-workflow.js.map +1 -1
  94. package/dist/governance/index.d.ts +7 -7
  95. package/dist/governance/index.d.ts.map +1 -1
  96. package/dist/governance/index.js +81 -74
  97. package/dist/governance/index.js.map +1 -1
  98. package/dist/governance/proof-bridge.d.ts +6 -6
  99. package/dist/governance/proof-bridge.d.ts.map +1 -1
  100. package/dist/governance/proof-bridge.js +5 -5
  101. package/dist/governance/proof-bridge.js.map +1 -1
  102. package/dist/governance/types.d.ts +16 -9
  103. package/dist/governance/types.d.ts.map +1 -1
  104. package/dist/governance/types.js.map +1 -1
  105. package/dist/index.d.ts +29 -25
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +33 -23
  108. package/dist/index.js.map +1 -1
  109. package/dist/intent/index.d.ts +21 -56
  110. package/dist/intent/index.d.ts.map +1 -1
  111. package/dist/intent/index.js +58 -24
  112. package/dist/intent/index.js.map +1 -1
  113. package/dist/intent/persistent-intent-service.d.ts +68 -0
  114. package/dist/intent/persistent-intent-service.d.ts.map +1 -0
  115. package/dist/intent/persistent-intent-service.js +277 -0
  116. package/dist/intent/persistent-intent-service.js.map +1 -0
  117. package/dist/intent/types.d.ts +69 -0
  118. package/dist/intent/types.d.ts.map +1 -0
  119. package/dist/intent/types.js +10 -0
  120. package/dist/intent/types.js.map +1 -0
  121. package/dist/intent-gateway/index.d.ts +522 -0
  122. package/dist/intent-gateway/index.d.ts.map +1 -0
  123. package/dist/intent-gateway/index.js +1499 -0
  124. package/dist/intent-gateway/index.js.map +1 -0
  125. package/dist/langchain/callback.d.ts +2 -2
  126. package/dist/langchain/callback.d.ts.map +1 -1
  127. package/dist/langchain/callback.js +30 -30
  128. package/dist/langchain/callback.js.map +1 -1
  129. package/dist/langchain/executor.d.ts +4 -4
  130. package/dist/langchain/executor.d.ts.map +1 -1
  131. package/dist/langchain/executor.js +82 -80
  132. package/dist/langchain/executor.js.map +1 -1
  133. package/dist/langchain/index.d.ts +5 -5
  134. package/dist/langchain/index.js +5 -5
  135. package/dist/langchain/tools.d.ts +1 -1
  136. package/dist/langchain/tools.d.ts.map +1 -1
  137. package/dist/langchain/tools.js +33 -33
  138. package/dist/langchain/tools.js.map +1 -1
  139. package/dist/langchain/types.d.ts +3 -3
  140. package/dist/langchain/types.d.ts.map +1 -1
  141. package/dist/layers/implementations/L0-request-format.d.ts +37 -0
  142. package/dist/layers/implementations/L0-request-format.d.ts.map +1 -0
  143. package/dist/layers/implementations/L0-request-format.js +218 -0
  144. package/dist/layers/implementations/L0-request-format.js.map +1 -0
  145. package/dist/layers/implementations/L1-input-size.d.ts +36 -0
  146. package/dist/layers/implementations/L1-input-size.d.ts.map +1 -0
  147. package/dist/layers/implementations/L1-input-size.js +160 -0
  148. package/dist/layers/implementations/L1-input-size.js.map +1 -0
  149. package/dist/layers/implementations/L2-charset-sanitizer.d.ts +28 -0
  150. package/dist/layers/implementations/L2-charset-sanitizer.d.ts.map +1 -0
  151. package/dist/layers/implementations/L2-charset-sanitizer.js +230 -0
  152. package/dist/layers/implementations/L2-charset-sanitizer.js.map +1 -0
  153. package/dist/layers/implementations/L3-schema-conformance.d.ts +47 -0
  154. package/dist/layers/implementations/L3-schema-conformance.d.ts.map +1 -0
  155. package/dist/layers/implementations/L3-schema-conformance.js +267 -0
  156. package/dist/layers/implementations/L3-schema-conformance.js.map +1 -0
  157. package/dist/layers/implementations/L4-injection-detector.d.ts +47 -0
  158. package/dist/layers/implementations/L4-injection-detector.d.ts.map +1 -0
  159. package/dist/layers/implementations/L4-injection-detector.js +260 -0
  160. package/dist/layers/implementations/L4-injection-detector.js.map +1 -0
  161. package/dist/layers/implementations/L5-rate-limiter.d.ts +51 -0
  162. package/dist/layers/implementations/L5-rate-limiter.d.ts.map +1 -0
  163. package/dist/layers/implementations/L5-rate-limiter.js +183 -0
  164. package/dist/layers/implementations/L5-rate-limiter.js.map +1 -0
  165. package/dist/layers/implementations/index.d.ts +16 -0
  166. package/dist/layers/implementations/index.d.ts.map +1 -0
  167. package/dist/layers/implementations/index.js +16 -0
  168. package/dist/layers/implementations/index.js.map +1 -0
  169. package/dist/layers/index.d.ts +3 -3
  170. package/dist/layers/index.d.ts.map +1 -1
  171. package/dist/layers/index.js +99 -71
  172. package/dist/layers/index.js.map +1 -1
  173. package/dist/layers/types.d.ts +16 -16
  174. package/dist/layers/types.d.ts.map +1 -1
  175. package/dist/persistence/file.d.ts +3 -3
  176. package/dist/persistence/file.d.ts.map +1 -1
  177. package/dist/persistence/file.js +32 -28
  178. package/dist/persistence/file.js.map +1 -1
  179. package/dist/persistence/index.d.ts +7 -7
  180. package/dist/persistence/index.d.ts.map +1 -1
  181. package/dist/persistence/index.js +18 -18
  182. package/dist/persistence/index.js.map +1 -1
  183. package/dist/persistence/memory.d.ts +3 -3
  184. package/dist/persistence/memory.d.ts.map +1 -1
  185. package/dist/persistence/memory.js +10 -8
  186. package/dist/persistence/memory.js.map +1 -1
  187. package/dist/persistence/sqlite.d.ts +3 -3
  188. package/dist/persistence/sqlite.d.ts.map +1 -1
  189. package/dist/persistence/sqlite.js +36 -36
  190. package/dist/persistence/sqlite.js.map +1 -1
  191. package/dist/persistence/supabase.d.ts +3 -3
  192. package/dist/persistence/supabase.d.ts.map +1 -1
  193. package/dist/persistence/supabase.js +41 -43
  194. package/dist/persistence/supabase.js.map +1 -1
  195. package/dist/persistence/types.d.ts +5 -5
  196. package/dist/phase6/ceiling.d.ts +5 -5
  197. package/dist/phase6/ceiling.d.ts.map +1 -1
  198. package/dist/phase6/ceiling.js +67 -34
  199. package/dist/phase6/ceiling.js.map +1 -1
  200. package/dist/phase6/context.d.ts +3 -3
  201. package/dist/phase6/context.d.ts.map +1 -1
  202. package/dist/phase6/context.js +91 -45
  203. package/dist/phase6/context.js.map +1 -1
  204. package/dist/phase6/index.d.ts +13 -13
  205. package/dist/phase6/index.d.ts.map +1 -1
  206. package/dist/phase6/index.js +16 -16
  207. package/dist/phase6/index.js.map +1 -1
  208. package/dist/phase6/presets.d.ts +2 -2
  209. package/dist/phase6/presets.d.ts.map +1 -1
  210. package/dist/phase6/presets.js +39 -33
  211. package/dist/phase6/presets.js.map +1 -1
  212. package/dist/phase6/provenance.d.ts +4 -4
  213. package/dist/phase6/provenance.d.ts.map +1 -1
  214. package/dist/phase6/provenance.js +42 -35
  215. package/dist/phase6/provenance.js.map +1 -1
  216. package/dist/phase6/role-gates/index.d.ts +2 -2
  217. package/dist/phase6/role-gates/index.js +2 -2
  218. package/dist/phase6/role-gates/kernel.d.ts.map +1 -1
  219. package/dist/phase6/role-gates/kernel.js +16 -16
  220. package/dist/phase6/role-gates/kernel.js.map +1 -1
  221. package/dist/phase6/role-gates/policy.d.ts +2 -2
  222. package/dist/phase6/role-gates/policy.js +6 -6
  223. package/dist/phase6/role-gates.d.ts +4 -4
  224. package/dist/phase6/role-gates.d.ts.map +1 -1
  225. package/dist/phase6/role-gates.js +80 -58
  226. package/dist/phase6/role-gates.js.map +1 -1
  227. package/dist/phase6/types.d.ts +35 -35
  228. package/dist/phase6/types.d.ts.map +1 -1
  229. package/dist/phase6/types.js +166 -66
  230. package/dist/phase6/types.js.map +1 -1
  231. package/dist/phase6/weight-presets/canonical.d.ts +2 -2
  232. package/dist/phase6/weight-presets/canonical.d.ts.map +1 -1
  233. package/dist/phase6/weight-presets/canonical.js +12 -12
  234. package/dist/phase6/weight-presets/canonical.js.map +1 -1
  235. package/dist/phase6/weight-presets/deltas.d.ts +2 -2
  236. package/dist/phase6/weight-presets/deltas.d.ts.map +1 -1
  237. package/dist/phase6/weight-presets/deltas.js +27 -27
  238. package/dist/phase6/weight-presets/deltas.js.map +1 -1
  239. package/dist/phase6/weight-presets/index.d.ts +4 -4
  240. package/dist/phase6/weight-presets/index.js +4 -4
  241. package/dist/phase6/weight-presets/merger.d.ts +3 -3
  242. package/dist/phase6/weight-presets/merger.d.ts.map +1 -1
  243. package/dist/phase6/weight-presets/merger.js +40 -44
  244. package/dist/phase6/weight-presets/merger.js.map +1 -1
  245. package/dist/proof/index.d.ts +3 -3
  246. package/dist/proof/index.d.ts.map +1 -1
  247. package/dist/proof/index.js +44 -38
  248. package/dist/proof/index.js.map +1 -1
  249. package/dist/proof/merkle.d.ts +3 -3
  250. package/dist/proof/merkle.d.ts.map +1 -1
  251. package/dist/proof/merkle.js +26 -25
  252. package/dist/proof/merkle.js.map +1 -1
  253. package/dist/proof/zk-proofs.d.ts +6 -6
  254. package/dist/proof/zk-proofs.d.ts.map +1 -1
  255. package/dist/proof/zk-proofs.js +42 -43
  256. package/dist/proof/zk-proofs.js.map +1 -1
  257. package/dist/provenance/index.d.ts +3 -3
  258. package/dist/provenance/index.d.ts.map +1 -1
  259. package/dist/provenance/index.js +19 -17
  260. package/dist/provenance/index.js.map +1 -1
  261. package/dist/provenance/types.d.ts +4 -4
  262. package/dist/provenance/types.d.ts.map +1 -1
  263. package/dist/sandbox-training/challenges.d.ts +1 -1
  264. package/dist/sandbox-training/challenges.d.ts.map +1 -1
  265. package/dist/sandbox-training/challenges.js +228 -228
  266. package/dist/sandbox-training/challenges.js.map +1 -1
  267. package/dist/sandbox-training/graduation.d.ts +1 -1
  268. package/dist/sandbox-training/graduation.d.ts.map +1 -1
  269. package/dist/sandbox-training/graduation.js +14 -15
  270. package/dist/sandbox-training/graduation.js.map +1 -1
  271. package/dist/sandbox-training/index.d.ts +9 -9
  272. package/dist/sandbox-training/index.d.ts.map +1 -1
  273. package/dist/sandbox-training/index.js +6 -6
  274. package/dist/sandbox-training/index.js.map +1 -1
  275. package/dist/sandbox-training/promotion-service.d.ts +4 -4
  276. package/dist/sandbox-training/promotion-service.d.ts.map +1 -1
  277. package/dist/sandbox-training/promotion-service.js +5 -5
  278. package/dist/sandbox-training/promotion-service.js.map +1 -1
  279. package/dist/sandbox-training/runner.d.ts +1 -1
  280. package/dist/sandbox-training/runner.d.ts.map +1 -1
  281. package/dist/sandbox-training/runner.js +74 -73
  282. package/dist/sandbox-training/runner.js.map +1 -1
  283. package/dist/sandbox-training/scorer.d.ts +4 -4
  284. package/dist/sandbox-training/scorer.js +5 -5
  285. package/dist/sandbox-training/types.d.ts +4 -4
  286. package/dist/sandbox-training/types.d.ts.map +1 -1
  287. package/dist/sandbox-training/types.js +11 -7
  288. package/dist/sandbox-training/types.js.map +1 -1
  289. package/dist/trust-engine/ceiling-enforcement/audit.d.ts +1 -1
  290. package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -1
  291. package/dist/trust-engine/ceiling-enforcement/audit.js +3 -4
  292. package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -1
  293. package/dist/trust-engine/ceiling-enforcement/index.d.ts +2 -2
  294. package/dist/trust-engine/ceiling-enforcement/index.js +2 -2
  295. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +1 -1
  296. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -1
  297. package/dist/trust-engine/ceiling-enforcement/kernel.js +1 -1
  298. package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -1
  299. package/dist/trust-engine/context-policy/factory.d.ts +1 -1
  300. package/dist/trust-engine/context-policy/factory.d.ts.map +1 -1
  301. package/dist/trust-engine/context-policy/factory.js +1 -1
  302. package/dist/trust-engine/context-policy/factory.js.map +1 -1
  303. package/dist/trust-engine/context-policy/index.d.ts +2 -2
  304. package/dist/trust-engine/context-policy/index.js +2 -2
  305. package/dist/trust-engine/creation-modifiers/index.d.ts +1 -1
  306. package/dist/trust-engine/creation-modifiers/index.js +1 -1
  307. package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -1
  308. package/dist/trust-engine/creation-modifiers/types.js +2 -3
  309. package/dist/trust-engine/creation-modifiers/types.js.map +1 -1
  310. package/dist/trust-engine/decay-profiles.d.ts +1 -1
  311. package/dist/trust-engine/decay-profiles.d.ts.map +1 -1
  312. package/dist/trust-engine/decay-profiles.js +4 -4
  313. package/dist/trust-engine/decay-profiles.js.map +1 -1
  314. package/dist/trust-engine/index.d.ts +111 -45
  315. package/dist/trust-engine/index.d.ts.map +1 -1
  316. package/dist/trust-engine/index.js +418 -61
  317. package/dist/trust-engine/index.js.map +1 -1
  318. package/dist/trust-engine/phase6-types.d.ts +10 -10
  319. package/dist/trust-engine/phase6-types.d.ts.map +1 -1
  320. package/dist/trust-engine/phase6-types.js +25 -23
  321. package/dist/trust-engine/phase6-types.js.map +1 -1
  322. package/dist/trust-engine/types.d.ts +77 -0
  323. package/dist/trust-engine/types.d.ts.map +1 -0
  324. package/dist/trust-engine/types.js +20 -0
  325. package/dist/trust-engine/types.js.map +1 -0
  326. package/package.json +5 -4
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Persistent Intent Service
3
+ *
4
+ * Production-quality intent service that provides:
5
+ * - Input validation via Zod schemas
6
+ * - Automatic expiration of stale intents
7
+ * - State machine enforcement for status transitions
8
+ * - Correlation ID tracking for distributed tracing
9
+ * - Tenant isolation
10
+ *
11
+ * Uses an in-memory store by default. For durable persistence, subclass
12
+ * and override the storage methods, or use the Supabase-backed variant.
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ import type { Intent, ID, IntentStatus } from "../common/types.js";
17
+ import type { IIntentService, IntentSubmission, SubmitOptions } from "./types.js";
18
+ export interface PersistentIntentServiceConfig {
19
+ /** Default expiration time for intents without explicit expiresIn (ms). Default: 1 hour */
20
+ defaultExpirationMs?: number;
21
+ /** How often to sweep expired intents (ms). Default: 60 seconds. 0 to disable. */
22
+ expirationSweepIntervalMs?: number;
23
+ /** Maximum intents per entity per tenant. Default: 1000 */
24
+ maxIntentsPerEntity?: number;
25
+ }
26
+ /**
27
+ * Production-quality intent service with validation, state machine,
28
+ * expiration, and tenant isolation.
29
+ */
30
+ export declare class PersistentIntentService implements IIntentService {
31
+ private intents;
32
+ private entityIndex;
33
+ private config;
34
+ private sweepTimer;
35
+ constructor(config?: PersistentIntentServiceConfig);
36
+ /**
37
+ * Submit a new intent with full validation.
38
+ */
39
+ submit(submission: IntentSubmission, options: SubmitOptions): Promise<Intent>;
40
+ /**
41
+ * Get an intent by ID with tenant isolation.
42
+ */
43
+ get(id: ID, tenantId: ID): Promise<Intent | undefined>;
44
+ /**
45
+ * Update intent status with state machine enforcement.
46
+ */
47
+ updateStatus(id: ID, tenantId: ID, status: IntentStatus): Promise<Intent | undefined>;
48
+ /**
49
+ * List intents for an entity with tenant isolation.
50
+ */
51
+ listByEntity(entityId: ID, tenantId: ID): Promise<Intent[]>;
52
+ /**
53
+ * Get count of active intents.
54
+ */
55
+ count(): number;
56
+ /**
57
+ * Shut down the service and clean up timers.
58
+ */
59
+ close(): void;
60
+ /**
61
+ * Clear all intents (for testing).
62
+ */
63
+ clear(): void;
64
+ private isExpired;
65
+ private expireIntent;
66
+ private sweepExpired;
67
+ }
68
+ //# sourceMappingURL=persistent-intent-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-intent-service.d.ts","sourceRoot":"","sources":["../../src/intent/persistent-intent-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AA8DpB,MAAM,WAAW,6BAA6B;IAC5C,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAQD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,UAAU,CAA+C;gBAErD,MAAM,CAAC,EAAE,6BAA6B;IAmBlD;;OAEG;IACG,MAAM,CACV,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC;IAuElB;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAe5D;;OAEG;IACG,YAAY,CAChB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,EAAE,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAqC9B;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBjE;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,SAAS;YAKH,YAAY;IAY1B,OAAO,CAAC,YAAY;CA0BrB"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Persistent Intent Service
3
+ *
4
+ * Production-quality intent service that provides:
5
+ * - Input validation via Zod schemas
6
+ * - Automatic expiration of stale intents
7
+ * - State machine enforcement for status transitions
8
+ * - Correlation ID tracking for distributed tracing
9
+ * - Tenant isolation
10
+ *
11
+ * Uses an in-memory store by default. For durable persistence, subclass
12
+ * and override the storage methods, or use the Supabase-backed variant.
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ import { createLogger } from "../common/logger.js";
17
+ const logger = createLogger({ component: "persistent-intent-service" });
18
+ // =============================================================================
19
+ // STATE MACHINE
20
+ // =============================================================================
21
+ /**
22
+ * Valid status transitions for the intent lifecycle.
23
+ * Any transition not listed here is rejected.
24
+ */
25
+ const VALID_TRANSITIONS = {
26
+ pending: ["evaluating", "cancelled"],
27
+ evaluating: ["approved", "denied", "escalated", "failed"],
28
+ approved: ["executing", "cancelled"],
29
+ denied: [],
30
+ escalated: ["approved", "denied", "cancelled"],
31
+ executing: ["completed", "failed"],
32
+ completed: [],
33
+ failed: ["pending"], // allow retry
34
+ cancelled: [],
35
+ };
36
+ // =============================================================================
37
+ // VALIDATION
38
+ // =============================================================================
39
+ function validateSubmission(submission) {
40
+ const errors = [];
41
+ if (!submission.entityId || typeof submission.entityId !== "string") {
42
+ errors.push("entityId is required and must be a non-empty string");
43
+ }
44
+ if (!submission.goal || typeof submission.goal !== "string") {
45
+ errors.push("goal is required and must be a non-empty string");
46
+ }
47
+ if (submission.goal && submission.goal.length > 10_000) {
48
+ errors.push("goal must be 10,000 characters or fewer");
49
+ }
50
+ if (submission.context !== undefined &&
51
+ (typeof submission.context !== "object" || submission.context === null)) {
52
+ errors.push("context must be a plain object");
53
+ }
54
+ if (submission.expiresIn !== undefined) {
55
+ if (typeof submission.expiresIn !== "number" || submission.expiresIn <= 0) {
56
+ errors.push("expiresIn must be a positive number (milliseconds)");
57
+ }
58
+ if (submission.expiresIn > 86_400_000) {
59
+ errors.push("expiresIn cannot exceed 24 hours (86400000ms)");
60
+ }
61
+ }
62
+ return errors;
63
+ }
64
+ const DEFAULT_CONFIG = {
65
+ defaultExpirationMs: 3_600_000,
66
+ expirationSweepIntervalMs: 60_000,
67
+ maxIntentsPerEntity: 1_000,
68
+ };
69
+ /**
70
+ * Production-quality intent service with validation, state machine,
71
+ * expiration, and tenant isolation.
72
+ */
73
+ export class PersistentIntentService {
74
+ intents = new Map();
75
+ entityIndex = new Map(); // "tenantId:entityId" → intent IDs
76
+ config;
77
+ sweepTimer = null;
78
+ constructor(config) {
79
+ this.config = { ...DEFAULT_CONFIG, ...config };
80
+ if (this.config.expirationSweepIntervalMs > 0) {
81
+ this.sweepTimer = setInterval(() => this.sweepExpired(), this.config.expirationSweepIntervalMs);
82
+ // Don't prevent Node.js from exiting
83
+ if (this.sweepTimer &&
84
+ typeof this.sweepTimer === "object" &&
85
+ "unref" in this.sweepTimer) {
86
+ this.sweepTimer.unref();
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Submit a new intent with full validation.
92
+ */
93
+ async submit(submission, options) {
94
+ // Validate input
95
+ const errors = validateSubmission(submission);
96
+ if (errors.length > 0) {
97
+ throw new Error(`Invalid intent submission: ${errors.join("; ")}`);
98
+ }
99
+ if (!options.tenantId) {
100
+ throw new Error("tenantId is required in SubmitOptions");
101
+ }
102
+ // Check per-entity limit
103
+ const indexKey = `${options.tenantId}:${submission.entityId}`;
104
+ const existingIds = this.entityIndex.get(indexKey);
105
+ if (existingIds && existingIds.size >= this.config.maxIntentsPerEntity) {
106
+ throw new Error(`Entity '${submission.entityId}' has reached the maximum of ${this.config.maxIntentsPerEntity} active intents`);
107
+ }
108
+ const now = new Date().toISOString();
109
+ const correlationId = submission.correlationId ?? crypto.randomUUID();
110
+ const expiresAt = submission.expiresIn
111
+ ? new Date(Date.now() + submission.expiresIn).toISOString()
112
+ : new Date(Date.now() + this.config.defaultExpirationMs).toISOString();
113
+ const intent = {
114
+ id: crypto.randomUUID(),
115
+ tenantId: options.tenantId,
116
+ entityId: submission.entityId,
117
+ goal: submission.goal,
118
+ context: submission.context ?? {},
119
+ metadata: submission.metadata ?? {},
120
+ status: "pending",
121
+ createdAt: now,
122
+ updatedAt: now,
123
+ trustSnapshot: options.trustSnapshot ?? null,
124
+ trustLevel: options.trustLevel ?? null,
125
+ correlationId,
126
+ actionType: submission.actionType ?? null,
127
+ resourceScope: submission.resourceScope ?? null,
128
+ dataSensitivity: submission.dataSensitivity ?? null,
129
+ reversibility: submission.reversibility ?? null,
130
+ expiresAt,
131
+ source: submission.source ?? null,
132
+ };
133
+ // Store
134
+ this.intents.set(intent.id, intent);
135
+ // Update entity index
136
+ if (!this.entityIndex.has(indexKey)) {
137
+ this.entityIndex.set(indexKey, new Set());
138
+ }
139
+ this.entityIndex.get(indexKey).add(intent.id);
140
+ logger.info({
141
+ intentId: intent.id,
142
+ entityId: intent.entityId,
143
+ tenantId: options.tenantId,
144
+ goal: intent.goal.slice(0, 100),
145
+ correlationId,
146
+ actionType: intent.actionType,
147
+ }, "Intent submitted");
148
+ return intent;
149
+ }
150
+ /**
151
+ * Get an intent by ID with tenant isolation.
152
+ */
153
+ async get(id, tenantId) {
154
+ const intent = this.intents.get(id);
155
+ if (!intent || intent.tenantId !== tenantId) {
156
+ return undefined;
157
+ }
158
+ // Check expiration
159
+ if (this.isExpired(intent)) {
160
+ await this.expireIntent(intent);
161
+ return undefined;
162
+ }
163
+ return intent;
164
+ }
165
+ /**
166
+ * Update intent status with state machine enforcement.
167
+ */
168
+ async updateStatus(id, tenantId, status) {
169
+ const intent = this.intents.get(id);
170
+ if (!intent || intent.tenantId !== tenantId) {
171
+ return undefined;
172
+ }
173
+ // Validate transition
174
+ const allowed = VALID_TRANSITIONS[intent.status];
175
+ if (!allowed || !allowed.includes(status)) {
176
+ throw new Error(`Invalid status transition: '${intent.status}' → '${status}'. ` +
177
+ `Allowed transitions from '${intent.status}': [${allowed?.join(", ") ?? "none"}]`);
178
+ }
179
+ const previousStatus = intent.status;
180
+ intent.status = status;
181
+ intent.updatedAt = new Date().toISOString();
182
+ // Clean up terminal intents from entity index
183
+ if (status === "completed" ||
184
+ status === "cancelled" ||
185
+ status === "denied") {
186
+ const indexKey = `${tenantId}:${intent.entityId}`;
187
+ this.entityIndex.get(indexKey)?.delete(id);
188
+ }
189
+ logger.info({ intentId: id, from: previousStatus, to: status }, "Intent status updated");
190
+ return intent;
191
+ }
192
+ /**
193
+ * List intents for an entity with tenant isolation.
194
+ */
195
+ async listByEntity(entityId, tenantId) {
196
+ const indexKey = `${tenantId}:${entityId}`;
197
+ const ids = this.entityIndex.get(indexKey);
198
+ if (!ids || ids.size === 0)
199
+ return [];
200
+ const results = [];
201
+ for (const id of ids) {
202
+ const intent = this.intents.get(id);
203
+ if (intent && !this.isExpired(intent)) {
204
+ results.push(intent);
205
+ }
206
+ }
207
+ // Sort by creation time (newest first)
208
+ return results.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
209
+ }
210
+ /**
211
+ * Get count of active intents.
212
+ */
213
+ count() {
214
+ return this.intents.size;
215
+ }
216
+ /**
217
+ * Shut down the service and clean up timers.
218
+ */
219
+ close() {
220
+ if (this.sweepTimer) {
221
+ clearInterval(this.sweepTimer);
222
+ this.sweepTimer = null;
223
+ }
224
+ }
225
+ /**
226
+ * Clear all intents (for testing).
227
+ */
228
+ clear() {
229
+ this.intents.clear();
230
+ this.entityIndex.clear();
231
+ }
232
+ // ===========================================================================
233
+ // Private Helpers
234
+ // ===========================================================================
235
+ isExpired(intent) {
236
+ if (!intent.expiresAt)
237
+ return false;
238
+ return new Date(intent.expiresAt).getTime() < Date.now();
239
+ }
240
+ async expireIntent(intent) {
241
+ if (intent.status !== "completed" &&
242
+ intent.status !== "cancelled" &&
243
+ intent.status !== "denied") {
244
+ intent.status = "cancelled";
245
+ intent.updatedAt = new Date().toISOString();
246
+ logger.debug({ intentId: intent.id }, "Intent expired");
247
+ }
248
+ }
249
+ sweepExpired() {
250
+ let swept = 0;
251
+ for (const [id, intent] of this.intents) {
252
+ if (this.isExpired(intent)) {
253
+ // Remove terminal intents entirely, expire active ones
254
+ const isTerminal = [
255
+ "completed",
256
+ "cancelled",
257
+ "denied",
258
+ "failed",
259
+ ].includes(intent.status);
260
+ if (isTerminal) {
261
+ this.intents.delete(id);
262
+ const indexKey = `${intent.tenantId}:${intent.entityId}`;
263
+ this.entityIndex.get(indexKey)?.delete(id);
264
+ swept++;
265
+ }
266
+ else {
267
+ this.expireIntent(intent);
268
+ swept++;
269
+ }
270
+ }
271
+ }
272
+ if (swept > 0) {
273
+ logger.debug({ swept }, "Expired intents swept");
274
+ }
275
+ }
276
+ }
277
+ //# sourceMappingURL=persistent-intent-service.js.map
@@ -0,0 +1 @@
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,69 @@
1
+ /**
2
+ * Intent Service Types
3
+ *
4
+ * Extracted from intent/index.ts to break circular dependency with
5
+ * persistent-intent-service.ts.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { Intent, ID, IntentStatus } from "../common/types.js";
10
+ /** Action type values (mirrors ActionType const in index.ts) */
11
+ type ActionTypeValue = "read" | "write" | "delete" | "execute" | "communicate" | "transfer";
12
+ /** Data sensitivity values (mirrors DataSensitivity const in index.ts) */
13
+ type DataSensitivityValue = "PUBLIC" | "INTERNAL" | "CONFIDENTIAL" | "RESTRICTED";
14
+ /** Reversibility values (mirrors Reversibility const in index.ts) */
15
+ type ReversibilityValue = "REVERSIBLE" | "PARTIALLY_REVERSIBLE" | "IRREVERSIBLE";
16
+ /**
17
+ * Intent submission request with canonical fields
18
+ */
19
+ export interface IntentSubmission {
20
+ /** Agent/entity making the request */
21
+ entityId: ID;
22
+ /** Human-readable goal/action description */
23
+ goal: string;
24
+ /** Additional context for evaluation */
25
+ context: Record<string, unknown>;
26
+ /** Optional metadata */
27
+ metadata?: Record<string, unknown>;
28
+ /** Correlation ID for distributed tracing */
29
+ correlationId?: string;
30
+ /** Action type category */
31
+ actionType?: ActionTypeValue;
32
+ /** Resources this intent accesses/modifies */
33
+ resourceScope?: string[];
34
+ /** Data sensitivity level */
35
+ dataSensitivity?: DataSensitivityValue;
36
+ /** Whether action can be undone */
37
+ reversibility?: ReversibilityValue;
38
+ /** Intent expiration in milliseconds from now */
39
+ expiresIn?: number;
40
+ /** Source system identifier */
41
+ source?: string;
42
+ }
43
+ /**
44
+ * Options for submitting an intent
45
+ */
46
+ export interface SubmitOptions {
47
+ /** Tenant identifier */
48
+ tenantId: ID;
49
+ /** Trust snapshot at submission time */
50
+ trustSnapshot?: Record<string, unknown> | null;
51
+ /** Current trust level of the entity */
52
+ trustLevel?: number;
53
+ }
54
+ /**
55
+ * Interface for intent service implementations
56
+ *
57
+ * Implement this interface to create custom intent handling:
58
+ * - API client for remote Vorion service
59
+ * - Custom persistence layer
60
+ * - Testing mocks with specific behaviors
61
+ */
62
+ export interface IIntentService {
63
+ submit(submission: IntentSubmission, options: SubmitOptions): Promise<Intent>;
64
+ get(id: ID, tenantId: ID): Promise<Intent | undefined>;
65
+ updateStatus(id: ID, tenantId: ID, status: IntentStatus): Promise<Intent | undefined>;
66
+ listByEntity(entityId: ID, tenantId: ID): Promise<Intent[]>;
67
+ }
68
+ export {};
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOnE,gEAAgE;AAChE,KAAK,eAAe,GAChB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,GACT,aAAa,GACb,UAAU,CAAC;AAEf,0EAA0E;AAC1E,KAAK,oBAAoB,GACrB,QAAQ,GACR,UAAU,GACV,cAAc,GACd,YAAY,CAAC;AAEjB,qEAAqE;AACrE,KAAK,kBAAkB,GACnB,YAAY,GACZ,sBAAsB,GACtB,cAAc,CAAC;AAMnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,EAAE,EAAE,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGnC,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,6BAA6B;IAC7B,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,mCAAmC;IACnC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,QAAQ,EAAE,EAAE,CAAC;IACb,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACvD,YAAY,CACV,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,EAAE,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/B,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Intent Service Types
3
+ *
4
+ * Extracted from intent/index.ts to break circular dependency with
5
+ * persistent-intent-service.ts.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/intent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}