@vorionsys/atsf-core 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE +1 -1
  3. package/README.md +82 -29
  4. package/dist/adapters/base-adapter.d.ts +94 -0
  5. package/dist/adapters/base-adapter.d.ts.map +1 -0
  6. package/dist/adapters/base-adapter.js +233 -0
  7. package/dist/adapters/base-adapter.js.map +1 -0
  8. package/dist/adapters/index.d.ts +9 -0
  9. package/dist/adapters/index.d.ts.map +1 -0
  10. package/dist/adapters/index.js +5 -0
  11. package/dist/adapters/index.js.map +1 -0
  12. package/dist/adapters/types.d.ts +83 -0
  13. package/dist/adapters/types.d.ts.map +1 -0
  14. package/dist/adapters/types.js +4 -0
  15. package/dist/adapters/types.js.map +1 -0
  16. package/dist/adapters/webhook-handler.d.ts +64 -0
  17. package/dist/adapters/webhook-handler.d.ts.map +1 -0
  18. package/dist/adapters/webhook-handler.js +170 -0
  19. package/dist/adapters/webhook-handler.js.map +1 -0
  20. package/dist/api/index.d.ts +1 -1
  21. package/dist/api/index.d.ts.map +1 -1
  22. package/dist/api/index.js +3 -1
  23. package/dist/api/index.js.map +1 -1
  24. package/dist/api/server.d.ts +2 -2
  25. package/dist/api/server.d.ts.map +1 -1
  26. package/dist/api/server.js +149 -184
  27. package/dist/api/server.js.map +1 -1
  28. package/dist/arbitration/index.d.ts +4 -12
  29. package/dist/arbitration/index.d.ts.map +1 -1
  30. package/dist/arbitration/index.js +43 -46
  31. package/dist/arbitration/index.js.map +1 -1
  32. package/dist/arbitration/types.d.ts +10 -10
  33. package/dist/arbitration/types.d.ts.map +1 -1
  34. package/dist/arbitration/types.js +2 -8
  35. package/dist/arbitration/types.js.map +1 -1
  36. package/dist/basis/evaluator.d.ts +1 -6
  37. package/dist/basis/evaluator.d.ts.map +1 -1
  38. package/dist/basis/evaluator.js +56 -56
  39. package/dist/basis/evaluator.js.map +1 -1
  40. package/dist/basis/index.d.ts +3 -3
  41. package/dist/basis/index.d.ts.map +1 -1
  42. package/dist/basis/index.js +5 -3
  43. package/dist/basis/index.js.map +1 -1
  44. package/dist/basis/parser.d.ts +30 -30
  45. package/dist/basis/parser.d.ts.map +1 -1
  46. package/dist/basis/parser.js +27 -32
  47. package/dist/basis/parser.js.map +1 -1
  48. package/dist/basis/types.d.ts +2 -2
  49. package/dist/basis/types.d.ts.map +1 -1
  50. package/dist/basis/types.js +2 -3
  51. package/dist/basis/types.js.map +1 -1
  52. package/dist/chain/index.d.ts +0 -8
  53. package/dist/chain/index.d.ts.map +1 -1
  54. package/dist/chain/index.js +18 -16
  55. package/dist/chain/index.js.map +1 -1
  56. package/dist/cognigate/index.d.ts +1 -9
  57. package/dist/cognigate/index.d.ts.map +1 -1
  58. package/dist/cognigate/index.js +35 -44
  59. package/dist/cognigate/index.js.map +1 -1
  60. package/dist/common/adapters.d.ts +4 -4
  61. package/dist/common/adapters.d.ts.map +1 -1
  62. package/dist/common/adapters.js +54 -70
  63. package/dist/common/adapters.js.map +1 -1
  64. package/dist/common/config.d.ts +69 -68
  65. package/dist/common/config.d.ts.map +1 -1
  66. package/dist/common/config.js +52 -50
  67. package/dist/common/config.js.map +1 -1
  68. package/dist/common/index.d.ts +4 -4
  69. package/dist/common/index.d.ts.map +1 -1
  70. package/dist/common/index.js +6 -4
  71. package/dist/common/index.js.map +1 -1
  72. package/dist/common/logger.d.ts +1 -1
  73. package/dist/common/logger.d.ts.map +1 -1
  74. package/dist/common/logger.js +10 -8
  75. package/dist/common/logger.js.map +1 -1
  76. package/dist/common/types.d.ts +12 -12
  77. package/dist/common/types.d.ts.map +1 -1
  78. package/dist/common/types.js +7 -14
  79. package/dist/common/types.js.map +1 -1
  80. package/dist/containment/index.d.ts +3 -11
  81. package/dist/containment/index.d.ts.map +1 -1
  82. package/dist/containment/index.js +107 -119
  83. package/dist/containment/index.js.map +1 -1
  84. package/dist/containment/types.d.ts +11 -11
  85. package/dist/containment/types.d.ts.map +1 -1
  86. package/dist/containment/types.js +2 -8
  87. package/dist/containment/types.js.map +1 -1
  88. package/dist/contracts/index.d.ts +9 -17
  89. package/dist/contracts/index.d.ts.map +1 -1
  90. package/dist/contracts/index.js +56 -59
  91. package/dist/contracts/index.js.map +1 -1
  92. package/dist/contracts/types.d.ts +12 -12
  93. package/dist/contracts/types.d.ts.map +1 -1
  94. package/dist/contracts/types.js +2 -8
  95. package/dist/contracts/types.js.map +1 -1
  96. package/dist/crewai/callback.d.ts +2 -9
  97. package/dist/crewai/callback.d.ts.map +1 -1
  98. package/dist/crewai/callback.js +29 -27
  99. package/dist/crewai/callback.js.map +1 -1
  100. package/dist/crewai/executor.d.ts +95 -11
  101. package/dist/crewai/executor.d.ts.map +1 -1
  102. package/dist/crewai/executor.js +459 -16
  103. package/dist/crewai/executor.js.map +1 -1
  104. package/dist/crewai/index.d.ts +4 -4
  105. package/dist/crewai/index.d.ts.map +1 -1
  106. package/dist/crewai/index.js +6 -4
  107. package/dist/crewai/index.js.map +1 -1
  108. package/dist/crewai/tools.d.ts +1 -1
  109. package/dist/crewai/tools.d.ts.map +1 -1
  110. package/dist/crewai/tools.js +40 -46
  111. package/dist/crewai/tools.js.map +1 -1
  112. package/dist/crewai/types.d.ts +66 -3
  113. package/dist/crewai/types.d.ts.map +1 -1
  114. package/dist/crewai/types.js +2 -7
  115. package/dist/crewai/types.js.map +1 -1
  116. package/dist/enforce/index.d.ts +226 -19
  117. package/dist/enforce/index.d.ts.map +1 -1
  118. package/dist/enforce/index.js +55 -81
  119. package/dist/enforce/index.js.map +1 -1
  120. package/dist/enforce/trust-aware-enforcement-service.d.ts +8 -23
  121. package/dist/enforce/trust-aware-enforcement-service.d.ts.map +1 -1
  122. package/dist/enforce/trust-aware-enforcement-service.js +109 -125
  123. package/dist/enforce/trust-aware-enforcement-service.js.map +1 -1
  124. package/dist/governance/fluid-workflow.d.ts +8 -16
  125. package/dist/governance/fluid-workflow.d.ts.map +1 -1
  126. package/dist/governance/fluid-workflow.js +88 -114
  127. package/dist/governance/fluid-workflow.js.map +1 -1
  128. package/dist/governance/index.d.ts +7 -15
  129. package/dist/governance/index.d.ts.map +1 -1
  130. package/dist/governance/index.js +76 -81
  131. package/dist/governance/index.js.map +1 -1
  132. package/dist/governance/proof-bridge.d.ts +6 -6
  133. package/dist/governance/proof-bridge.d.ts.map +1 -1
  134. package/dist/governance/proof-bridge.js +6 -16
  135. package/dist/governance/proof-bridge.js.map +1 -1
  136. package/dist/governance/types.d.ts +9 -16
  137. package/dist/governance/types.d.ts.map +1 -1
  138. package/dist/governance/types.js +2 -8
  139. package/dist/governance/types.js.map +1 -1
  140. package/dist/index.d.ts +30 -29
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +33 -31
  143. package/dist/index.js.map +1 -1
  144. package/dist/intent/index.d.ts +55 -18
  145. package/dist/intent/index.d.ts.map +1 -1
  146. package/dist/intent/index.js +25 -26
  147. package/dist/intent/index.js.map +1 -1
  148. package/dist/intent/persistent-intent-service.d.ts +2 -17
  149. package/dist/intent/persistent-intent-service.d.ts.map +1 -1
  150. package/dist/intent/persistent-intent-service.js +33 -43
  151. package/dist/intent/persistent-intent-service.js.map +1 -1
  152. package/dist/intent/supabase-intent-repository.d.ts +107 -0
  153. package/dist/intent/supabase-intent-repository.d.ts.map +1 -0
  154. package/dist/intent/supabase-intent-repository.js +406 -0
  155. package/dist/intent/supabase-intent-repository.js.map +1 -0
  156. package/dist/intent-gateway/index.d.ts +5 -28
  157. package/dist/intent-gateway/index.d.ts.map +1 -1
  158. package/dist/intent-gateway/index.js +341 -508
  159. package/dist/intent-gateway/index.js.map +1 -1
  160. package/dist/langchain/callback.d.ts +2 -9
  161. package/dist/langchain/callback.d.ts.map +1 -1
  162. package/dist/langchain/callback.js +32 -30
  163. package/dist/langchain/callback.js.map +1 -1
  164. package/dist/langchain/executor.d.ts +4 -11
  165. package/dist/langchain/executor.d.ts.map +1 -1
  166. package/dist/langchain/executor.js +82 -82
  167. package/dist/langchain/executor.js.map +1 -1
  168. package/dist/langchain/index.d.ts +5 -5
  169. package/dist/langchain/index.d.ts.map +1 -1
  170. package/dist/langchain/index.js +7 -5
  171. package/dist/langchain/index.js.map +1 -1
  172. package/dist/langchain/tools.d.ts +1 -1
  173. package/dist/langchain/tools.d.ts.map +1 -1
  174. package/dist/langchain/tools.js +36 -43
  175. package/dist/langchain/tools.js.map +1 -1
  176. package/dist/langchain/types.d.ts +3 -3
  177. package/dist/langchain/types.d.ts.map +1 -1
  178. package/dist/langchain/types.js +2 -7
  179. package/dist/langchain/types.js.map +1 -1
  180. package/dist/layers/implementations/L0-request-format.d.ts +2 -2
  181. package/dist/layers/implementations/L0-request-format.d.ts.map +1 -1
  182. package/dist/layers/implementations/L0-request-format.js +54 -54
  183. package/dist/layers/implementations/L0-request-format.js.map +1 -1
  184. package/dist/layers/implementations/L1-input-size.d.ts +2 -2
  185. package/dist/layers/implementations/L1-input-size.d.ts.map +1 -1
  186. package/dist/layers/implementations/L1-input-size.js +41 -49
  187. package/dist/layers/implementations/L1-input-size.js.map +1 -1
  188. package/dist/layers/implementations/L2-charset-sanitizer.d.ts +2 -2
  189. package/dist/layers/implementations/L2-charset-sanitizer.d.ts.map +1 -1
  190. package/dist/layers/implementations/L2-charset-sanitizer.js +73 -81
  191. package/dist/layers/implementations/L2-charset-sanitizer.js.map +1 -1
  192. package/dist/layers/implementations/L3-schema-conformance.d.ts +3 -3
  193. package/dist/layers/implementations/L3-schema-conformance.d.ts.map +1 -1
  194. package/dist/layers/implementations/L3-schema-conformance.js +75 -82
  195. package/dist/layers/implementations/L3-schema-conformance.js.map +1 -1
  196. package/dist/layers/implementations/L4-injection-detector.d.ts +4 -4
  197. package/dist/layers/implementations/L4-injection-detector.d.ts.map +1 -1
  198. package/dist/layers/implementations/L4-injection-detector.js +83 -85
  199. package/dist/layers/implementations/L4-injection-detector.js.map +1 -1
  200. package/dist/layers/implementations/L5-rate-limiter.d.ts +2 -2
  201. package/dist/layers/implementations/L5-rate-limiter.d.ts.map +1 -1
  202. package/dist/layers/implementations/L5-rate-limiter.js +22 -20
  203. package/dist/layers/implementations/L5-rate-limiter.js.map +1 -1
  204. package/dist/layers/implementations/index.d.ts +6 -6
  205. package/dist/layers/implementations/index.d.ts.map +1 -1
  206. package/dist/layers/implementations/index.js +8 -6
  207. package/dist/layers/implementations/index.js.map +1 -1
  208. package/dist/layers/index.d.ts +3 -11
  209. package/dist/layers/index.d.ts.map +1 -1
  210. package/dist/layers/index.js +73 -99
  211. package/dist/layers/index.js.map +1 -1
  212. package/dist/layers/types.d.ts +16 -16
  213. package/dist/layers/types.d.ts.map +1 -1
  214. package/dist/layers/types.js +2 -8
  215. package/dist/layers/types.js.map +1 -1
  216. package/dist/paramesphere/activation-collector.d.ts +128 -0
  217. package/dist/paramesphere/activation-collector.d.ts.map +1 -0
  218. package/dist/paramesphere/activation-collector.js +260 -0
  219. package/dist/paramesphere/activation-collector.js.map +1 -0
  220. package/dist/paramesphere/cognitive-envelope.d.ts +73 -0
  221. package/dist/paramesphere/cognitive-envelope.d.ts.map +1 -0
  222. package/dist/paramesphere/cognitive-envelope.js +209 -0
  223. package/dist/paramesphere/cognitive-envelope.js.map +1 -0
  224. package/dist/paramesphere/envelope-integration.d.ts +60 -0
  225. package/dist/paramesphere/envelope-integration.d.ts.map +1 -0
  226. package/dist/paramesphere/envelope-integration.js +93 -0
  227. package/dist/paramesphere/envelope-integration.js.map +1 -0
  228. package/dist/paramesphere/fingerprint-monitor.d.ts +136 -0
  229. package/dist/paramesphere/fingerprint-monitor.d.ts.map +1 -0
  230. package/dist/paramesphere/fingerprint-monitor.js +212 -0
  231. package/dist/paramesphere/fingerprint-monitor.js.map +1 -0
  232. package/dist/paramesphere/fingerprint-store.d.ts +85 -0
  233. package/dist/paramesphere/fingerprint-store.d.ts.map +1 -0
  234. package/dist/paramesphere/fingerprint-store.js +68 -0
  235. package/dist/paramesphere/fingerprint-store.js.map +1 -0
  236. package/dist/paramesphere/index.d.ts +21 -0
  237. package/dist/paramesphere/index.d.ts.map +1 -0
  238. package/dist/paramesphere/index.js +18 -0
  239. package/dist/paramesphere/index.js.map +1 -0
  240. package/dist/paramesphere/monitor-integration.d.ts +37 -0
  241. package/dist/paramesphere/monitor-integration.d.ts.map +1 -0
  242. package/dist/paramesphere/monitor-integration.js +81 -0
  243. package/dist/paramesphere/monitor-integration.js.map +1 -0
  244. package/dist/paramesphere/paramesphere-engine.d.ts +111 -0
  245. package/dist/paramesphere/paramesphere-engine.d.ts.map +1 -0
  246. package/dist/paramesphere/paramesphere-engine.js +542 -0
  247. package/dist/paramesphere/paramesphere-engine.js.map +1 -0
  248. package/dist/paramesphere/types.d.ts +142 -0
  249. package/dist/paramesphere/types.d.ts.map +1 -0
  250. package/dist/paramesphere/types.js +4 -0
  251. package/dist/paramesphere/types.js.map +1 -0
  252. package/dist/persistence/file.d.ts +3 -10
  253. package/dist/persistence/file.d.ts.map +1 -1
  254. package/dist/persistence/file.js +30 -32
  255. package/dist/persistence/file.js.map +1 -1
  256. package/dist/persistence/index.d.ts +7 -7
  257. package/dist/persistence/index.d.ts.map +1 -1
  258. package/dist/persistence/index.js +20 -18
  259. package/dist/persistence/index.js.map +1 -1
  260. package/dist/persistence/memory.d.ts +3 -3
  261. package/dist/persistence/memory.d.ts.map +1 -1
  262. package/dist/persistence/memory.js +10 -17
  263. package/dist/persistence/memory.js.map +1 -1
  264. package/dist/persistence/sqlite.d.ts +3 -11
  265. package/dist/persistence/sqlite.d.ts.map +1 -1
  266. package/dist/persistence/sqlite.js +42 -39
  267. package/dist/persistence/sqlite.js.map +1 -1
  268. package/dist/persistence/supabase.d.ts +3 -3
  269. package/dist/persistence/supabase.d.ts.map +1 -1
  270. package/dist/persistence/supabase.js +46 -49
  271. package/dist/persistence/supabase.js.map +1 -1
  272. package/dist/persistence/types.d.ts +5 -5
  273. package/dist/persistence/types.d.ts.map +1 -1
  274. package/dist/persistence/types.js +2 -7
  275. package/dist/persistence/types.js.map +1 -1
  276. package/dist/phase6/ceiling.d.ts +5 -21
  277. package/dist/phase6/ceiling.d.ts.map +1 -1
  278. package/dist/phase6/ceiling.js +38 -69
  279. package/dist/phase6/ceiling.js.map +1 -1
  280. package/dist/phase6/context.d.ts +3 -20
  281. package/dist/phase6/context.d.ts.map +1 -1
  282. package/dist/phase6/context.js +49 -93
  283. package/dist/phase6/context.js.map +1 -1
  284. package/dist/phase6/index.d.ts +12 -12
  285. package/dist/phase6/index.d.ts.map +1 -1
  286. package/dist/phase6/index.js +17 -15
  287. package/dist/phase6/index.js.map +1 -1
  288. package/dist/phase6/presets.d.ts +2 -18
  289. package/dist/phase6/presets.d.ts.map +1 -1
  290. package/dist/phase6/presets.js +35 -39
  291. package/dist/phase6/presets.js.map +1 -1
  292. package/dist/phase6/provenance.d.ts +4 -19
  293. package/dist/phase6/provenance.d.ts.map +1 -1
  294. package/dist/phase6/provenance.js +37 -42
  295. package/dist/phase6/provenance.js.map +1 -1
  296. package/dist/phase6/role-gates/index.d.ts +2 -2
  297. package/dist/phase6/role-gates/index.d.ts.map +1 -1
  298. package/dist/phase6/role-gates/index.js +4 -2
  299. package/dist/phase6/role-gates/index.js.map +1 -1
  300. package/dist/phase6/role-gates/kernel.d.ts.map +1 -1
  301. package/dist/phase6/role-gates/kernel.js +18 -16
  302. package/dist/phase6/role-gates/kernel.js.map +1 -1
  303. package/dist/phase6/role-gates/policy.d.ts +2 -2
  304. package/dist/phase6/role-gates/policy.d.ts.map +1 -1
  305. package/dist/phase6/role-gates/policy.js +8 -17
  306. package/dist/phase6/role-gates/policy.js.map +1 -1
  307. package/dist/phase6/role-gates.d.ts +4 -20
  308. package/dist/phase6/role-gates.d.ts.map +1 -1
  309. package/dist/phase6/role-gates.js +60 -80
  310. package/dist/phase6/role-gates.js.map +1 -1
  311. package/dist/phase6/types.d.ts +53 -23
  312. package/dist/phase6/types.d.ts.map +1 -1
  313. package/dist/phase6/types.js +131 -177
  314. package/dist/phase6/types.js.map +1 -1
  315. package/dist/phase6/weight-presets/canonical.d.ts.map +1 -1
  316. package/dist/phase6/weight-presets/canonical.js +12 -10
  317. package/dist/phase6/weight-presets/canonical.js.map +1 -1
  318. package/dist/phase6/weight-presets/deltas.d.ts +2 -2
  319. package/dist/phase6/weight-presets/deltas.d.ts.map +1 -1
  320. package/dist/phase6/weight-presets/deltas.js +29 -37
  321. package/dist/phase6/weight-presets/deltas.js.map +1 -1
  322. package/dist/phase6/weight-presets/index.d.ts +3 -3
  323. package/dist/phase6/weight-presets/index.d.ts.map +1 -1
  324. package/dist/phase6/weight-presets/index.js +5 -3
  325. package/dist/phase6/weight-presets/index.js.map +1 -1
  326. package/dist/phase6/weight-presets/merger.d.ts +2 -12
  327. package/dist/phase6/weight-presets/merger.d.ts.map +1 -1
  328. package/dist/phase6/weight-presets/merger.js +45 -39
  329. package/dist/phase6/weight-presets/merger.js.map +1 -1
  330. package/dist/proof/index.d.ts +6 -13
  331. package/dist/proof/index.d.ts.map +1 -1
  332. package/dist/proof/index.js +63 -51
  333. package/dist/proof/index.js.map +1 -1
  334. package/dist/proof/merkle.d.ts +24 -19
  335. package/dist/proof/merkle.d.ts.map +1 -1
  336. package/dist/proof/merkle.js +118 -32
  337. package/dist/proof/merkle.js.map +1 -1
  338. package/dist/proof/zk-proofs.d.ts +6 -24
  339. package/dist/proof/zk-proofs.d.ts.map +1 -1
  340. package/dist/proof/zk-proofs.js +45 -42
  341. package/dist/proof/zk-proofs.js.map +1 -1
  342. package/dist/provenance/index.d.ts +3 -11
  343. package/dist/provenance/index.d.ts.map +1 -1
  344. package/dist/provenance/index.js +19 -19
  345. package/dist/provenance/index.js.map +1 -1
  346. package/dist/provenance/types.d.ts +4 -4
  347. package/dist/provenance/types.d.ts.map +1 -1
  348. package/dist/provenance/types.js +2 -8
  349. package/dist/provenance/types.js.map +1 -1
  350. package/dist/sandbox-training/challenges.d.ts +1 -1
  351. package/dist/sandbox-training/challenges.d.ts.map +1 -1
  352. package/dist/sandbox-training/challenges.js +230 -236
  353. package/dist/sandbox-training/challenges.js.map +1 -1
  354. package/dist/sandbox-training/graduation.d.ts +1 -1
  355. package/dist/sandbox-training/graduation.d.ts.map +1 -1
  356. package/dist/sandbox-training/graduation.js +17 -22
  357. package/dist/sandbox-training/graduation.js.map +1 -1
  358. package/dist/sandbox-training/index.d.ts +9 -9
  359. package/dist/sandbox-training/index.d.ts.map +1 -1
  360. package/dist/sandbox-training/index.js +8 -6
  361. package/dist/sandbox-training/index.js.map +1 -1
  362. package/dist/sandbox-training/promotion-service.d.ts +4 -4
  363. package/dist/sandbox-training/promotion-service.d.ts.map +1 -1
  364. package/dist/sandbox-training/promotion-service.js +7 -16
  365. package/dist/sandbox-training/promotion-service.js.map +1 -1
  366. package/dist/sandbox-training/runner.d.ts +1 -1
  367. package/dist/sandbox-training/runner.d.ts.map +1 -1
  368. package/dist/sandbox-training/runner.js +75 -82
  369. package/dist/sandbox-training/runner.js.map +1 -1
  370. package/dist/sandbox-training/scorer.d.ts +4 -4
  371. package/dist/sandbox-training/scorer.d.ts.map +1 -1
  372. package/dist/sandbox-training/scorer.js +7 -13
  373. package/dist/sandbox-training/scorer.js.map +1 -1
  374. package/dist/sandbox-training/types.d.ts +4 -4
  375. package/dist/sandbox-training/types.d.ts.map +1 -1
  376. package/dist/sandbox-training/types.js +9 -19
  377. package/dist/sandbox-training/types.js.map +1 -1
  378. package/dist/trust-engine/ceiling-enforcement/audit.d.ts +1 -9
  379. package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -1
  380. package/dist/trust-engine/ceiling-enforcement/audit.js +6 -11
  381. package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -1
  382. package/dist/trust-engine/ceiling-enforcement/index.d.ts +2 -2
  383. package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -1
  384. package/dist/trust-engine/ceiling-enforcement/index.js +4 -2
  385. package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -1
  386. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +12 -10
  387. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -1
  388. package/dist/trust-engine/ceiling-enforcement/kernel.js +28 -20
  389. package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -1
  390. package/dist/trust-engine/context-policy/enforcement.d.ts +0 -9
  391. package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -1
  392. package/dist/trust-engine/context-policy/enforcement.js +2 -9
  393. package/dist/trust-engine/context-policy/enforcement.js.map +1 -1
  394. package/dist/trust-engine/context-policy/factory.d.ts +1 -1
  395. package/dist/trust-engine/context-policy/factory.d.ts.map +1 -1
  396. package/dist/trust-engine/context-policy/factory.js +3 -1
  397. package/dist/trust-engine/context-policy/factory.js.map +1 -1
  398. package/dist/trust-engine/context-policy/index.d.ts +2 -2
  399. package/dist/trust-engine/context-policy/index.d.ts.map +1 -1
  400. package/dist/trust-engine/context-policy/index.js +4 -2
  401. package/dist/trust-engine/context-policy/index.js.map +1 -1
  402. package/dist/trust-engine/creation-modifiers/index.d.ts +1 -1
  403. package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -1
  404. package/dist/trust-engine/creation-modifiers/index.js +3 -1
  405. package/dist/trust-engine/creation-modifiers/index.js.map +1 -1
  406. package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -1
  407. package/dist/trust-engine/creation-modifiers/types.js +5 -2
  408. package/dist/trust-engine/creation-modifiers/types.js.map +1 -1
  409. package/dist/trust-engine/decay-profiles.d.ts +37 -136
  410. package/dist/trust-engine/decay-profiles.d.ts.map +1 -1
  411. package/dist/trust-engine/decay-profiles.js +61 -183
  412. package/dist/trust-engine/decay-profiles.js.map +1 -1
  413. package/dist/trust-engine/index.d.ts +327 -22
  414. package/dist/trust-engine/index.d.ts.map +1 -1
  415. package/dist/trust-engine/index.js +706 -130
  416. package/dist/trust-engine/index.js.map +1 -1
  417. package/dist/trust-engine/phase6-types.d.ts +15 -18
  418. package/dist/trust-engine/phase6-types.d.ts.map +1 -1
  419. package/dist/trust-engine/phase6-types.js +32 -36
  420. package/dist/trust-engine/phase6-types.js.map +1 -1
  421. package/dist/trust-engine/trust-verifier.d.ts +121 -0
  422. package/dist/trust-engine/trust-verifier.d.ts.map +1 -0
  423. package/dist/trust-engine/trust-verifier.js +226 -0
  424. package/dist/trust-engine/trust-verifier.js.map +1 -0
  425. package/package.json +140 -135
  426. package/dist/enforce/types.d.ts +0 -234
  427. package/dist/enforce/types.d.ts.map +0 -1
  428. package/dist/enforce/types.js +0 -10
  429. package/dist/enforce/types.js.map +0 -1
  430. package/dist/intent/types.d.ts +0 -69
  431. package/dist/intent/types.d.ts.map +0 -1
  432. package/dist/intent/types.js +0 -10
  433. package/dist/intent/types.js.map +0 -1
  434. package/dist/trust-engine/types.d.ts +0 -77
  435. package/dist/trust-engine/types.d.ts.map +0 -1
  436. package/dist/trust-engine/types.js +0 -20
  437. package/dist/trust-engine/types.js.map +0 -1
@@ -1,3 +1,5 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright 2024-2026 Vorion LLC
1
3
  /**
2
4
  * L2 — Character Set Sanitizer
3
5
  *
@@ -10,88 +12,87 @@
10
12
  *
11
13
  * @packageDocumentation
12
14
  */
13
- import { BaseSecurityLayer, createLayerConfig } from "../index.js";
15
+ import { BaseSecurityLayer, createLayerConfig } from '../index.js';
14
16
  /**
15
17
  * Unicode categories of dangerous characters
16
18
  */
17
19
  const DANGEROUS_PATTERNS = [
18
20
  {
19
- name: "bidi_override",
21
+ name: 'bidi_override',
20
22
  // Bi-directional override characters (used in trojan source attacks)
21
- pattern: /(?:\u200E|\u200F|\u202A|\u202B|\u202C|\u202D|\u202E|\u2066|\u2067|\u2068|\u2069)/g,
22
- severity: "critical",
23
- description: "Bi-directional text override characters can disguise malicious content",
23
+ pattern: /[\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,
24
+ severity: 'critical',
25
+ description: 'Bi-directional text override characters can disguise malicious content',
24
26
  },
25
27
  {
26
- name: "zero_width",
28
+ name: 'zero_width',
27
29
  // Zero-width characters (invisible text injection)
28
- pattern: /(?:\u200B|\u200C|\u200D|\uFEFF)/g,
29
- severity: "high",
30
- description: "Zero-width characters can hide content from human reviewers",
30
+ pattern: /[\u200B\u200C\u200D\uFEFF]/g,
31
+ severity: 'high',
32
+ description: 'Zero-width characters can hide content from human reviewers',
31
33
  },
32
34
  {
33
- name: "control_chars",
35
+ name: 'control_chars',
34
36
  // C0/C1 control characters except common whitespace (tab, newline, carriage return)
35
- // eslint-disable-next-line no-control-regex
36
37
  pattern: /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x80-\x9F]/g,
37
- severity: "high",
38
- description: "Control characters can corrupt parsing or inject escape sequences",
38
+ severity: 'high',
39
+ description: 'Control characters can corrupt parsing or inject escape sequences',
39
40
  },
40
41
  {
41
- name: "tag_chars",
42
+ name: 'tag_chars',
42
43
  // Unicode tag characters (U+E0001-U+E007F) — used to hide instructions
43
- pattern: /\uDB40[\uDC01-\uDC7F]/g,
44
- severity: "high",
45
- description: "Unicode tag characters can embed hidden instructions",
44
+ pattern: /[\uDB40][\uDC01-\uDC7F]/g,
45
+ severity: 'high',
46
+ description: 'Unicode tag characters can embed hidden instructions',
46
47
  },
47
48
  {
48
- name: "interlinear_annotation",
49
+ name: 'interlinear_annotation',
49
50
  // Interlinear annotation characters
50
51
  pattern: /[\uFFF9\uFFFA\uFFFB]/g,
51
- severity: "medium",
52
- description: "Annotation characters can inject hidden metadata",
52
+ severity: 'medium',
53
+ description: 'Annotation characters can inject hidden metadata',
53
54
  },
54
55
  {
55
- name: "replacement_char",
56
+ name: 'replacement_char',
56
57
  // Object replacement character (can mask embedded objects)
57
58
  pattern: /\uFFFC/g,
58
- severity: "medium",
59
- description: "Object replacement character may mask embedded content",
59
+ severity: 'medium',
60
+ description: 'Object replacement character may mask embedded content',
60
61
  },
61
62
  {
62
- name: "variation_selector_abuse",
63
+ name: 'variation_selector_abuse',
63
64
  // Excessive variation selectors (emoji/glyph variant abuse)
64
65
  pattern: /[\uFE00-\uFE0F]{3,}/g,
65
- severity: "low",
66
- description: "Excessive variation selectors suggest encoding manipulation",
66
+ severity: 'low',
67
+ description: 'Excessive variation selectors suggest encoding manipulation',
67
68
  },
68
69
  ];
69
70
  /**
70
71
  * Common homoglyph mappings (confusable characters → ASCII equivalent)
71
72
  */
72
73
  const HOMOGLYPH_MAP = {
73
- "\u0410": "A", // Cyrillic А → Latin A
74
- "\u0412": "B", // Cyrillic В → Latin B
75
- "\u0421": "C", // Cyrillic С → Latin C
76
- "\u0415": "E", // Cyrillic Е → Latin E
77
- "\u041D": "H", // Cyrillic Н → Latin H
78
- "\u041A": "K", // Cyrillic К → Latin K
79
- "\u041C": "M", // Cyrillic М → Latin M
80
- "\u041E": "O", // Cyrillic О → Latin O
81
- "\u0420": "P", // Cyrillic Р → Latin P
82
- "\u0422": "T", // Cyrillic Т → Latin T
83
- "\u0425": "X", // Cyrillic Х → Latin X
84
- "\u0430": "a", // Cyrillic а → Latin a
85
- "\u0435": "e", // Cyrillic е → Latin e
86
- "\u043E": "o", // Cyrillic о → Latin o
87
- "\u0440": "p", // Cyrillic р → Latin p
88
- "\u0441": "c", // Cyrillic с → Latin c
89
- "\u0443": "y", // Cyrillic у → Latin y
90
- "\u0445": "x", // Cyrillic х → Latin x
91
- "\u0456": "i", // Cyrillic і → Latin i
92
- "\u0458": "j", // Cyrillic ј → Latin j
93
- "\u0455": "s", // Cyrillic ѕ → Latin s
94
- "\u0501": "d", // Cyrillic ԁ → Latin d
74
+ '\u0410': 'A', // Cyrillic А → Latin A
75
+ '\u0412': 'B', // Cyrillic В → Latin B
76
+ '\u0421': 'C', // Cyrillic С → Latin C
77
+ '\u0415': 'E', // Cyrillic Е → Latin E
78
+ '\u041D': 'H', // Cyrillic Н → Latin H
79
+ '\u041A': 'K', // Cyrillic К → Latin K
80
+ '\u041C': 'M', // Cyrillic М → Latin M
81
+ '\u041E': 'O', // Cyrillic О → Latin O
82
+ '\u0420': 'P', // Cyrillic Р → Latin P
83
+ '\u0422': 'T', // Cyrillic Т → Latin T
84
+ '\u0425': 'X', // Cyrillic Х → Latin X
85
+ '\u0430': 'a', // Cyrillic а → Latin a
86
+ '\u0435': 'e', // Cyrillic е → Latin e
87
+ '\u043E': 'o', // Cyrillic о → Latin o
88
+ '\u0440': 'p', // Cyrillic р → Latin p
89
+ '\u0441': 'c', // Cyrillic с → Latin c
90
+ '\u0443': 'y', // Cyrillic у → Latin y
91
+ '\u0445': 'x', // Cyrillic х → Latin x
92
+ '\u0456': 'i', // Cyrillic і → Latin i
93
+ '\u0458': 'j', // Cyrillic ј → Latin j
94
+ '\u0455': 's', // Cyrillic ѕ → Latin s
95
+ '\u0501': 'd', // Cyrillic ԁ → Latin d
95
96
  };
96
97
  /**
97
98
  * L2 Character Set Sanitizer
@@ -100,12 +101,12 @@ const HOMOGLYPH_MAP = {
100
101
  */
101
102
  export class L2CharsetSanitizer extends BaseSecurityLayer {
102
103
  constructor() {
103
- super(createLayerConfig(2, "Character Set Sanitizer", {
104
- description: "Detects and sanitizes dangerous Unicode sequences, invisible characters, and homoglyph attacks",
105
- tier: "input_validation",
106
- primaryThreat: "prompt_injection",
107
- secondaryThreats: ["deceptive_output", "audit_evasion"],
108
- failMode: "block",
104
+ super(createLayerConfig(2, 'Character Set Sanitizer', {
105
+ description: 'Detects and sanitizes dangerous Unicode sequences, invisible characters, and homoglyph attacks',
106
+ tier: 'input_validation',
107
+ primaryThreat: 'prompt_injection',
108
+ secondaryThreats: ['deceptive_output', 'audit_evasion'],
109
+ failMode: 'block',
109
110
  required: true,
110
111
  timeoutMs: 300,
111
112
  parallelizable: true,
@@ -118,20 +119,20 @@ export class L2CharsetSanitizer extends BaseSecurityLayer {
118
119
  const findings = [];
119
120
  const modifications = [];
120
121
  // Walk all string values in the payload
121
- this.scanObject(input.payload, "", findings, modifications);
122
+ this.scanObject(input.payload, '', findings, modifications);
122
123
  const timing = this.buildTiming(startedAt, t0);
123
- const hasCritical = findings.some((f) => f.severity === "critical");
124
- const hasHigh = findings.some((f) => f.severity === "high");
124
+ const hasCritical = findings.some((f) => f.severity === 'critical');
125
+ const hasHigh = findings.some((f) => f.severity === 'high');
125
126
  const passed = !hasCritical && !hasHigh;
126
127
  if (passed) {
127
- return this.createSuccessResult("allow", 0.9, findings, modifications, timing);
128
+ return this.createSuccessResult('allow', 0.9, findings, modifications, timing);
128
129
  }
129
- return this.createFailureResult(hasCritical ? "deny" : "escalate", 0.85, findings, timing);
130
+ return this.createFailureResult(hasCritical ? 'deny' : 'escalate', 0.85, findings, timing);
130
131
  }
131
132
  scanObject(obj, path, findings, modifications) {
132
133
  if (obj === null || obj === undefined)
133
134
  return;
134
- if (typeof obj === "string") {
135
+ if (typeof obj === 'string') {
135
136
  this.scanString(obj, path, findings, modifications);
136
137
  return;
137
138
  }
@@ -141,10 +142,10 @@ export class L2CharsetSanitizer extends BaseSecurityLayer {
141
142
  }
142
143
  return;
143
144
  }
144
- if (typeof obj === "object") {
145
+ if (typeof obj === 'object') {
145
146
  for (const [key, val] of Object.entries(obj)) {
146
147
  // Also scan keys for homoglyphs
147
- this.scanString(key, `${path ? path + "." : ""}(key:${key})`, findings, modifications);
148
+ this.scanString(key, `${path ? path + '.' : ''}(key:${key})`, findings, modifications);
148
149
  this.scanObject(val, path ? `${path}.${key}` : key, findings, modifications);
149
150
  }
150
151
  }
@@ -157,24 +158,21 @@ export class L2CharsetSanitizer extends BaseSecurityLayer {
157
158
  const matches = value.match(pattern);
158
159
  if (matches && matches.length > 0) {
159
160
  findings.push({
160
- type: "threat_detected",
161
+ type: 'threat_detected',
161
162
  severity,
162
163
  code: `L2_${name.toUpperCase()}`,
163
164
  description: `${description} at '${path}'`,
164
165
  evidence: [
165
166
  `Found ${matches.length} instance(s)`,
166
- `Code points: ${matches
167
- .slice(0, 5)
168
- .map((c) => `U+${c.charCodeAt(0).toString(16).toUpperCase().padStart(4, "0")}`)
169
- .join(", ")}`,
167
+ `Code points: ${matches.slice(0, 5).map((c) => `U+${c.charCodeAt(0).toString(16).toUpperCase().padStart(4, '0')}`).join(', ')}`,
170
168
  ],
171
169
  remediation: `Remove ${name} characters from the input`,
172
170
  });
173
171
  modifications.push({
174
172
  target: path,
175
- type: "sanitize",
173
+ type: 'sanitize',
176
174
  originalValue: `[${matches.length} ${name} chars]`,
177
- newValue: "[stripped]",
175
+ newValue: '[stripped]',
178
176
  reason: description,
179
177
  });
180
178
  }
@@ -183,14 +181,12 @@ export class L2CharsetSanitizer extends BaseSecurityLayer {
183
181
  const homoglyphs = this.detectHomoglyphs(value);
184
182
  if (homoglyphs.length > 0) {
185
183
  findings.push({
186
- type: "threat_detected",
187
- severity: "high",
188
- code: "L2_HOMOGLYPH_ATTACK",
184
+ type: 'threat_detected',
185
+ severity: 'high',
186
+ code: 'L2_HOMOGLYPH_ATTACK',
189
187
  description: `Mixed-script homoglyph characters detected at '${path}'`,
190
- evidence: homoglyphs
191
- .slice(0, 10)
192
- .map((h) => `'${h.char}' (U+${h.codePoint}) looks like '${h.looksLike}'`),
193
- remediation: "Use consistent character scripts (do not mix Cyrillic with Latin)",
188
+ evidence: homoglyphs.slice(0, 10).map((h) => `'${h.char}' (U+${h.codePoint}) looks like '${h.looksLike}'`),
189
+ remediation: 'Use consistent character scripts (do not mix Cyrillic with Latin)',
194
190
  });
195
191
  }
196
192
  }
@@ -205,11 +201,7 @@ export class L2CharsetSanitizer extends BaseSecurityLayer {
205
201
  if (mapped) {
206
202
  results.push({
207
203
  char,
208
- codePoint: char
209
- .charCodeAt(0)
210
- .toString(16)
211
- .toUpperCase()
212
- .padStart(4, "0"),
204
+ codePoint: char.charCodeAt(0).toString(16).toUpperCase().padStart(4, '0'),
213
205
  looksLike: mapped,
214
206
  });
215
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"L2-charset-sanitizer.js","sourceRoot":"","sources":["../../../src/layers/implementations/L2-charset-sanitizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"L2-charset-sanitizer.js","sourceRoot":"","sources":["../../../src/layers/implementations/L2-charset-sanitizer.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@
10
10
  *
11
11
  * @packageDocumentation
12
12
  */
13
- import { BaseSecurityLayer } from "../index.js";
14
- import type { LayerInput, LayerExecutionResult } from "../types.js";
13
+ import { BaseSecurityLayer } from '../index.js';
14
+ import type { LayerInput, LayerExecutionResult } from '../types.js';
15
15
  /**
16
16
  * Schema definition for a known action
17
17
  */
@@ -25,7 +25,7 @@ export interface ActionSchema {
25
25
  /** Maximum number of extra fields allowed beyond defined ones */
26
26
  maxExtraFields?: number;
27
27
  }
28
- type FieldType = "string" | "number" | "boolean" | "object" | "array" | "string[]" | "number[]";
28
+ type FieldType = 'string' | 'number' | 'boolean' | 'object' | 'array' | 'string[]' | 'number[]';
29
29
  /**
30
30
  * L3 Schema Conformance Validator
31
31
  *
@@ -1 +1 @@
1
- {"version":3,"file":"L3-schema-conformance.d.ts","sourceRoot":"","sources":["../../../src/layers/implementations/L3-schema-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EAGrB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,SAAS,GACV,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,GACP,UAAU,GACV,UAAU,CAAC;AAiDf;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,OAAO,CAAC,OAAO,CAA4B;gBAE/B,iBAAiB,CAAC,EAAE,YAAY,EAAE;IA2B9C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmI/D,OAAO,CAAC,SAAS;IA+DjB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,WAAW;CAUpB"}
1
+ {"version":3,"file":"L3-schema-conformance.d.ts","sourceRoot":"","sources":["../../../src/layers/implementations/L3-schema-conformance.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAA6B,MAAM,aAAa,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AA4ChG;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,OAAO,CAAC,OAAO,CAA4B;gBAE/B,iBAAiB,CAAC,EAAE,YAAY,EAAE;IA0B9C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2H/D,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,WAAW;CAUpB"}
@@ -1,3 +1,5 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright 2024-2026 Vorion LLC
1
3
  /**
2
4
  * L3 — Schema Conformance Validator
3
5
  *
@@ -10,50 +12,45 @@
10
12
  *
11
13
  * @packageDocumentation
12
14
  */
13
- import { BaseSecurityLayer, createLayerConfig } from "../index.js";
15
+ import { BaseSecurityLayer, createLayerConfig } from '../index.js';
14
16
  /**
15
17
  * Built-in action schemas for the ATSF governance pipeline
16
18
  */
17
19
  const KNOWN_ACTION_SCHEMAS = [
18
20
  {
19
- action: "query",
20
- required: { content: "string" },
21
- optional: {
22
- context: "object",
23
- model: "string",
24
- temperature: "number",
25
- maxTokens: "number",
26
- },
21
+ action: 'query',
22
+ required: { content: 'string' },
23
+ optional: { context: 'object', model: 'string', temperature: 'number', maxTokens: 'number' },
27
24
  maxExtraFields: 10,
28
25
  },
29
26
  {
30
- action: "execute",
31
- required: { content: "string", target: "string" },
32
- optional: { args: "object", timeout: "number", dryRun: "boolean" },
27
+ action: 'execute',
28
+ required: { content: 'string', target: 'string' },
29
+ optional: { args: 'object', timeout: 'number', dryRun: 'boolean' },
33
30
  maxExtraFields: 5,
34
31
  },
35
32
  {
36
- action: "read",
37
- required: { content: "string", resource: "string" },
38
- optional: { format: "string", limit: "number", offset: "number" },
33
+ action: 'read',
34
+ required: { content: 'string', resource: 'string' },
35
+ optional: { format: 'string', limit: 'number', offset: 'number' },
39
36
  maxExtraFields: 5,
40
37
  },
41
38
  {
42
- action: "write",
43
- required: { content: "string", resource: "string", data: "object" },
44
- optional: { overwrite: "boolean", format: "string" },
39
+ action: 'write',
40
+ required: { content: 'string', resource: 'string', data: 'object' },
41
+ optional: { overwrite: 'boolean', format: 'string' },
45
42
  maxExtraFields: 5,
46
43
  },
47
44
  {
48
- action: "delete",
49
- required: { content: "string", resource: "string" },
50
- optional: { recursive: "boolean", force: "boolean" },
45
+ action: 'delete',
46
+ required: { content: 'string', resource: 'string' },
47
+ optional: { recursive: 'boolean', force: 'boolean' },
51
48
  maxExtraFields: 3,
52
49
  },
53
50
  {
54
- action: "communicate",
55
- required: { content: "string", recipient: "string" },
56
- optional: { channel: "string", priority: "string", metadata: "object" },
51
+ action: 'communicate',
52
+ required: { content: 'string', recipient: 'string' },
53
+ optional: { channel: 'string', priority: 'string', metadata: 'object' },
57
54
  maxExtraFields: 5,
58
55
  },
59
56
  ];
@@ -65,12 +62,12 @@ const KNOWN_ACTION_SCHEMAS = [
65
62
  export class L3SchemaConformance extends BaseSecurityLayer {
66
63
  schemas;
67
64
  constructor(additionalSchemas) {
68
- super(createLayerConfig(3, "Schema Conformance", {
69
- description: "Validates payload action and fields against known schemas",
70
- tier: "input_validation",
71
- primaryThreat: "unauthorized_action",
72
- secondaryThreats: ["capability_abuse", "prompt_injection"],
73
- failMode: "block",
65
+ super(createLayerConfig(3, 'Schema Conformance', {
66
+ description: 'Validates payload action and fields against known schemas',
67
+ tier: 'input_validation',
68
+ primaryThreat: 'unauthorized_action',
69
+ secondaryThreats: ['capability_abuse', 'prompt_injection'],
70
+ failMode: 'block',
74
71
  required: true,
75
72
  timeoutMs: 200,
76
73
  parallelizable: true,
@@ -98,57 +95,57 @@ export class L3SchemaConformance extends BaseSecurityLayer {
98
95
  const findings = [];
99
96
  const payload = input.payload;
100
97
  // 1. Check that action field exists
101
- const action = payload["action"];
98
+ const action = payload['action'];
102
99
  if (action === undefined || action === null) {
103
100
  findings.push({
104
- type: "threat_detected",
105
- severity: "high",
106
- code: "L3_MISSING_ACTION",
101
+ type: 'threat_detected',
102
+ severity: 'high',
103
+ code: 'L3_MISSING_ACTION',
107
104
  description: 'Payload has no "action" field — cannot determine request type',
108
- evidence: ["payload.action is undefined"],
105
+ evidence: ['payload.action is undefined'],
109
106
  remediation: 'Include an "action" field in the payload (e.g., "query", "execute", "read")',
110
107
  });
111
108
  const timing = this.buildTiming(startedAt, t0);
112
- return this.createFailureResult("deny", 0.9, findings, timing);
109
+ return this.createFailureResult('deny', 0.9, findings, timing);
113
110
  }
114
- if (typeof action !== "string") {
111
+ if (typeof action !== 'string') {
115
112
  findings.push({
116
- type: "threat_detected",
117
- severity: "high",
118
- code: "L3_INVALID_ACTION_TYPE",
113
+ type: 'threat_detected',
114
+ severity: 'high',
115
+ code: 'L3_INVALID_ACTION_TYPE',
119
116
  description: `Action field must be a string, got ${typeof action}`,
120
117
  evidence: [`typeof action = ${typeof action}`],
121
- remediation: "Provide action as a string value",
118
+ remediation: 'Provide action as a string value',
122
119
  });
123
120
  const timing = this.buildTiming(startedAt, t0);
124
- return this.createFailureResult("deny", 0.9, findings, timing);
121
+ return this.createFailureResult('deny', 0.9, findings, timing);
125
122
  }
126
123
  // 2. Look up schema for this action
127
124
  const schema = this.schemas.get(action);
128
125
  if (!schema) {
129
126
  findings.push({
130
- type: "threat_detected",
131
- severity: "medium",
132
- code: "L3_UNKNOWN_ACTION",
127
+ type: 'threat_detected',
128
+ severity: 'medium',
129
+ code: 'L3_UNKNOWN_ACTION',
133
130
  description: `Unknown action '${action}' — not in registered schemas`,
134
131
  evidence: [
135
132
  `action=${action}`,
136
- `known actions: ${Array.from(this.schemas.keys()).join(", ")}`,
133
+ `known actions: ${Array.from(this.schemas.keys()).join(', ')}`,
137
134
  ],
138
- remediation: `Use a known action: ${Array.from(this.schemas.keys()).join(", ")}`,
135
+ remediation: `Use a known action: ${Array.from(this.schemas.keys()).join(', ')}`,
139
136
  });
140
137
  const timing = this.buildTiming(startedAt, t0);
141
138
  // Unknown actions are escalated, not denied — allows extension
142
- return this.createFailureResult("escalate", 0.7, findings, timing);
139
+ return this.createFailureResult('escalate', 0.7, findings, timing);
143
140
  }
144
141
  // 3. Check required fields
145
142
  for (const [field, expectedType] of Object.entries(schema.required)) {
146
143
  const value = payload[field];
147
144
  if (value === undefined || value === null) {
148
145
  findings.push({
149
- type: "threat_detected",
150
- severity: "high",
151
- code: "L3_MISSING_REQUIRED_FIELD",
146
+ type: 'threat_detected',
147
+ severity: 'high',
148
+ code: 'L3_MISSING_REQUIRED_FIELD',
152
149
  description: `Required field '${field}' missing for action '${action}'`,
153
150
  evidence: [`field=${field}, action=${action}`],
154
151
  remediation: `Include required field '${field}' (type: ${expectedType})`,
@@ -175,7 +172,7 @@ export class L3SchemaConformance extends BaseSecurityLayer {
175
172
  }
176
173
  // 5. Check for unexpected extra fields
177
174
  const allKnownFields = new Set([
178
- "action",
175
+ 'action',
179
176
  ...Object.keys(schema.required),
180
177
  ...Object.keys(schema.optional ?? {}),
181
178
  ]);
@@ -183,61 +180,57 @@ export class L3SchemaConformance extends BaseSecurityLayer {
183
180
  const maxExtra = schema.maxExtraFields ?? 10;
184
181
  if (extraFields.length > maxExtra) {
185
182
  findings.push({
186
- type: "warning",
187
- severity: "medium",
188
- code: "L3_EXCESS_EXTRA_FIELDS",
183
+ type: 'warning',
184
+ severity: 'medium',
185
+ code: 'L3_EXCESS_EXTRA_FIELDS',
189
186
  description: `${extraFields.length} extra fields exceed maximum ${maxExtra} for action '${action}'`,
190
- evidence: [
191
- `extra fields: ${extraFields.slice(0, 10).join(", ")}${extraFields.length > 10 ? "..." : ""}`,
192
- ],
187
+ evidence: [`extra fields: ${extraFields.slice(0, 10).join(', ')}${extraFields.length > 10 ? '...' : ''}`],
193
188
  remediation: `Reduce extra fields to at most ${maxExtra}`,
194
189
  });
195
190
  }
196
191
  const timing = this.buildTiming(startedAt, t0);
197
- const hasHigh = findings.some((f) => f.severity === "high" || f.severity === "critical");
192
+ const hasHigh = findings.some((f) => f.severity === 'high' || f.severity === 'critical');
198
193
  const passed = !hasHigh;
199
194
  if (passed) {
200
- return this.createSuccessResult("allow", 0.9, findings, [], timing);
195
+ return this.createSuccessResult('allow', 0.9, findings, [], timing);
201
196
  }
202
- return this.createFailureResult("deny", 0.85, findings, timing);
197
+ return this.createFailureResult('deny', 0.85, findings, timing);
203
198
  }
204
199
  checkType(value, expectedType, field) {
205
200
  switch (expectedType) {
206
- case "string":
207
- if (typeof value !== "string") {
201
+ case 'string':
202
+ if (typeof value !== 'string') {
208
203
  return this.typeError(field, expectedType, typeof value);
209
204
  }
210
205
  break;
211
- case "number":
212
- if (typeof value !== "number" || !Number.isFinite(value)) {
206
+ case 'number':
207
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
213
208
  return this.typeError(field, expectedType, typeof value);
214
209
  }
215
210
  break;
216
- case "boolean":
217
- if (typeof value !== "boolean") {
211
+ case 'boolean':
212
+ if (typeof value !== 'boolean') {
218
213
  return this.typeError(field, expectedType, typeof value);
219
214
  }
220
215
  break;
221
- case "object":
222
- if (typeof value !== "object" || Array.isArray(value)) {
223
- return this.typeError(field, expectedType, Array.isArray(value) ? "array" : typeof value);
216
+ case 'object':
217
+ if (typeof value !== 'object' || Array.isArray(value)) {
218
+ return this.typeError(field, expectedType, Array.isArray(value) ? 'array' : typeof value);
224
219
  }
225
220
  break;
226
- case "array":
221
+ case 'array':
227
222
  if (!Array.isArray(value)) {
228
223
  return this.typeError(field, expectedType, typeof value);
229
224
  }
230
225
  break;
231
- case "string[]":
232
- if (!Array.isArray(value) ||
233
- !value.every((v) => typeof v === "string")) {
234
- return this.typeError(field, expectedType, Array.isArray(value) ? "mixed array" : typeof value);
226
+ case 'string[]':
227
+ if (!Array.isArray(value) || !value.every((v) => typeof v === 'string')) {
228
+ return this.typeError(field, expectedType, Array.isArray(value) ? 'mixed array' : typeof value);
235
229
  }
236
230
  break;
237
- case "number[]":
238
- if (!Array.isArray(value) ||
239
- !value.every((v) => typeof v === "number")) {
240
- return this.typeError(field, expectedType, Array.isArray(value) ? "mixed array" : typeof value);
231
+ case 'number[]':
232
+ if (!Array.isArray(value) || !value.every((v) => typeof v === 'number')) {
233
+ return this.typeError(field, expectedType, Array.isArray(value) ? 'mixed array' : typeof value);
241
234
  }
242
235
  break;
243
236
  }
@@ -245,9 +238,9 @@ export class L3SchemaConformance extends BaseSecurityLayer {
245
238
  }
246
239
  typeError(field, expected, actual) {
247
240
  return {
248
- type: "threat_detected",
249
- severity: "high",
250
- code: "L3_TYPE_MISMATCH",
241
+ type: 'threat_detected',
242
+ severity: 'high',
243
+ code: 'L3_TYPE_MISMATCH',
251
244
  description: `Field '${field}' expected type '${expected}', got '${actual}'`,
252
245
  evidence: [`field=${field}, expected=${expected}, actual=${actual}`],
253
246
  remediation: `Provide '${field}' as type '${expected}'`,