@zhin.js/agent 0.1.24 → 0.1.26

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 (308) hide show
  1. package/README.md +1 -1
  2. package/lib/agent-prompt/registry.js +1 -1
  3. package/lib/agent-prompt/registry.js.map +1 -1
  4. package/lib/ai-event-bus.d.ts +19 -0
  5. package/lib/ai-event-bus.d.ts.map +1 -0
  6. package/lib/ai-event-bus.js +75 -0
  7. package/lib/ai-event-bus.js.map +1 -0
  8. package/lib/ai-event-subscriber.d.ts +38 -0
  9. package/lib/ai-event-subscriber.d.ts.map +1 -0
  10. package/lib/ai-event-subscriber.js +61 -0
  11. package/lib/ai-event-subscriber.js.map +1 -0
  12. package/lib/builtin/ask-user-tool.d.ts +2 -0
  13. package/lib/builtin/ask-user-tool.d.ts.map +1 -1
  14. package/lib/builtin/ask-user-tool.js +2 -0
  15. package/lib/builtin/ask-user-tool.js.map +1 -1
  16. package/lib/builtin/bash-tool.d.ts +7 -3
  17. package/lib/builtin/bash-tool.d.ts.map +1 -1
  18. package/lib/builtin/bash-tool.js +51 -9
  19. package/lib/builtin/bash-tool.js.map +1 -1
  20. package/lib/builtin/bing-search-html.d.ts.map +1 -1
  21. package/lib/builtin/bing-search-html.js +14 -7
  22. package/lib/builtin/bing-search-html.js.map +1 -1
  23. package/lib/builtin/builtin-base-tool.d.ts +2 -0
  24. package/lib/builtin/builtin-base-tool.d.ts.map +1 -1
  25. package/lib/builtin/builtin-base-tool.js +5 -0
  26. package/lib/builtin/builtin-base-tool.js.map +1 -1
  27. package/lib/builtin/edit-file-tool.d.ts +1 -1
  28. package/lib/builtin/edit-file-tool.d.ts.map +1 -1
  29. package/lib/builtin/edit-file-tool.js +33 -1
  30. package/lib/builtin/edit-file-tool.js.map +1 -1
  31. package/lib/builtin/file-edit-quote-utils.d.ts +1 -3
  32. package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -1
  33. package/lib/builtin/file-edit-quote-utils.js +1 -3
  34. package/lib/builtin/file-edit-quote-utils.js.map +1 -1
  35. package/lib/builtin/glob-tool.d.ts +1 -1
  36. package/lib/builtin/glob-tool.d.ts.map +1 -1
  37. package/lib/builtin/glob-tool.js +15 -3
  38. package/lib/builtin/glob-tool.js.map +1 -1
  39. package/lib/builtin/grep-tool.d.ts +1 -1
  40. package/lib/builtin/grep-tool.d.ts.map +1 -1
  41. package/lib/builtin/grep-tool.js +16 -3
  42. package/lib/builtin/grep-tool.js.map +1 -1
  43. package/lib/builtin/list-dir-tool.d.ts +1 -1
  44. package/lib/builtin/list-dir-tool.d.ts.map +1 -1
  45. package/lib/builtin/list-dir-tool.js +14 -3
  46. package/lib/builtin/list-dir-tool.js.map +1 -1
  47. package/lib/builtin/read-file-tool.d.ts +1 -1
  48. package/lib/builtin/read-file-tool.d.ts.map +1 -1
  49. package/lib/builtin/read-file-tool.js +24 -3
  50. package/lib/builtin/read-file-tool.js.map +1 -1
  51. package/lib/builtin/run-deferred-task-tool.d.ts +3 -0
  52. package/lib/builtin/run-deferred-task-tool.d.ts.map +1 -1
  53. package/lib/builtin/run-deferred-task-tool.js +2 -0
  54. package/lib/builtin/run-deferred-task-tool.js.map +1 -1
  55. package/lib/builtin/spawn-task-tool.d.ts.map +1 -1
  56. package/lib/builtin/spawn-task-tool.js +2 -0
  57. package/lib/builtin/spawn-task-tool.js.map +1 -1
  58. package/lib/builtin/web-fetch-tool.d.ts +2 -2
  59. package/lib/builtin/web-fetch-tool.d.ts.map +1 -1
  60. package/lib/builtin/web-fetch-tool.js +12 -18
  61. package/lib/builtin/web-fetch-tool.js.map +1 -1
  62. package/lib/builtin/write-file-tool.d.ts +1 -1
  63. package/lib/builtin/write-file-tool.d.ts.map +1 -1
  64. package/lib/builtin/write-file-tool.js +33 -1
  65. package/lib/builtin/write-file-tool.js.map +1 -1
  66. package/lib/common-adapter-tools.d.ts +8 -41
  67. package/lib/common-adapter-tools.d.ts.map +1 -1
  68. package/lib/common-adapter-tools.js +23 -182
  69. package/lib/common-adapter-tools.js.map +1 -1
  70. package/lib/deferred-worker-runner.d.ts +13 -2
  71. package/lib/deferred-worker-runner.d.ts.map +1 -1
  72. package/lib/deferred-worker-runner.js +91 -13
  73. package/lib/deferred-worker-runner.js.map +1 -1
  74. package/lib/discovery/agents.js +1 -1
  75. package/lib/discovery/agents.js.map +1 -1
  76. package/lib/discovery/skills.js +1 -1
  77. package/lib/discovery/skills.js.map +1 -1
  78. package/lib/discovery/tools.d.ts +1 -1
  79. package/lib/discovery/tools.d.ts.map +1 -1
  80. package/lib/discovery/tools.js +17 -4
  81. package/lib/discovery/tools.js.map +1 -1
  82. package/lib/discovery/utils.js +1 -1
  83. package/lib/discovery/utils.js.map +1 -1
  84. package/lib/hooks.d.ts.map +1 -1
  85. package/lib/hooks.js +2 -0
  86. package/lib/hooks.js.map +1 -1
  87. package/lib/index.d.ts +9 -1
  88. package/lib/index.d.ts.map +1 -1
  89. package/lib/index.js +6 -0
  90. package/lib/index.js.map +1 -1
  91. package/lib/init/message-media.d.ts +3 -1
  92. package/lib/init/message-media.d.ts.map +1 -1
  93. package/lib/init/message-media.js +20 -0
  94. package/lib/init/message-media.js.map +1 -1
  95. package/lib/init/register-ai-service.js.map +1 -1
  96. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  97. package/lib/init/register-ai-trigger.js +71 -10
  98. package/lib/init/register-ai-trigger.js.map +1 -1
  99. package/lib/init/register-builtin-tools.js +7 -7
  100. package/lib/init/register-builtin-tools.js.map +1 -1
  101. package/lib/init/register-typing-indicator.d.ts +9 -0
  102. package/lib/init/register-typing-indicator.d.ts.map +1 -0
  103. package/lib/init/register-typing-indicator.js +206 -0
  104. package/lib/init/register-typing-indicator.js.map +1 -0
  105. package/lib/init.d.ts.map +1 -1
  106. package/lib/init.js +2 -0
  107. package/lib/init.js.map +1 -1
  108. package/lib/mcp-client/connection.d.ts +2 -0
  109. package/lib/mcp-client/connection.d.ts.map +1 -1
  110. package/lib/mcp-client/connection.js +7 -0
  111. package/lib/mcp-client/connection.js.map +1 -1
  112. package/lib/mcp-client/index.d.ts +2 -0
  113. package/lib/mcp-client/index.d.ts.map +1 -1
  114. package/lib/mcp-client/index.js +19 -2
  115. package/lib/mcp-client/index.js.map +1 -1
  116. package/lib/monitoring/index.d.ts +79 -0
  117. package/lib/monitoring/index.d.ts.map +1 -0
  118. package/lib/monitoring/index.js +197 -0
  119. package/lib/monitoring/index.js.map +1 -0
  120. package/lib/monitoring/metrics.d.ts +240 -0
  121. package/lib/monitoring/metrics.d.ts.map +1 -0
  122. package/lib/monitoring/metrics.js +483 -0
  123. package/lib/monitoring/metrics.js.map +1 -0
  124. package/lib/orchestrator/agent-dispatcher.d.ts +170 -0
  125. package/lib/orchestrator/agent-dispatcher.d.ts.map +1 -0
  126. package/lib/orchestrator/agent-dispatcher.js +379 -0
  127. package/lib/orchestrator/agent-dispatcher.js.map +1 -0
  128. package/lib/orchestrator/hook-registry.d.ts.map +1 -1
  129. package/lib/orchestrator/hook-registry.js +2 -0
  130. package/lib/orchestrator/hook-registry.js.map +1 -1
  131. package/lib/orchestrator/index.d.ts +2 -0
  132. package/lib/orchestrator/index.d.ts.map +1 -1
  133. package/lib/orchestrator/index.js +2 -0
  134. package/lib/orchestrator/index.js.map +1 -1
  135. package/lib/orchestrator/mcp-lifecycle.d.ts +1 -1
  136. package/lib/orchestrator/mcp-lifecycle.d.ts.map +1 -1
  137. package/lib/orchestrator/mcp-lifecycle.js +2 -2
  138. package/lib/orchestrator/mcp-lifecycle.js.map +1 -1
  139. package/lib/orchestrator/mcp-registry.d.ts +8 -1
  140. package/lib/orchestrator/mcp-registry.d.ts.map +1 -1
  141. package/lib/orchestrator/mcp-registry.js +28 -5
  142. package/lib/orchestrator/mcp-registry.js.map +1 -1
  143. package/lib/orchestrator/task-queue.d.ts +147 -0
  144. package/lib/orchestrator/task-queue.d.ts.map +1 -0
  145. package/lib/orchestrator/task-queue.js +337 -0
  146. package/lib/orchestrator/task-queue.js.map +1 -0
  147. package/lib/orchestrator/tool-selection.d.ts.map +1 -1
  148. package/lib/orchestrator/tool-selection.js +3 -0
  149. package/lib/orchestrator/tool-selection.js.map +1 -1
  150. package/lib/orchestrator/types.d.ts +8 -0
  151. package/lib/orchestrator/types.d.ts.map +1 -1
  152. package/lib/plugin-ai-hook-bus.d.ts +4 -0
  153. package/lib/plugin-ai-hook-bus.d.ts.map +1 -0
  154. package/lib/plugin-ai-hook-bus.js +24 -0
  155. package/lib/plugin-ai-hook-bus.js.map +1 -0
  156. package/lib/security/anomaly-detection.d.ts +119 -0
  157. package/lib/security/anomaly-detection.d.ts.map +1 -0
  158. package/lib/security/anomaly-detection.js +305 -0
  159. package/lib/security/anomaly-detection.js.map +1 -0
  160. package/lib/security/audit-logger.d.ts +158 -0
  161. package/lib/security/audit-logger.d.ts.map +1 -0
  162. package/lib/security/audit-logger.js +379 -0
  163. package/lib/security/audit-logger.js.map +1 -0
  164. package/lib/security/bash-tool-context.d.ts +3 -3
  165. package/lib/security/bash-tool-context.d.ts.map +1 -1
  166. package/lib/security/budget-limiter.d.ts +156 -0
  167. package/lib/security/budget-limiter.d.ts.map +1 -0
  168. package/lib/security/budget-limiter.js +363 -0
  169. package/lib/security/budget-limiter.js.map +1 -0
  170. package/lib/security/dangerous-tool-policy.d.ts +17 -0
  171. package/lib/security/dangerous-tool-policy.d.ts.map +1 -0
  172. package/lib/security/dangerous-tool-policy.js +137 -0
  173. package/lib/security/dangerous-tool-policy.js.map +1 -0
  174. package/lib/security/exec-policy.d.ts +21 -12
  175. package/lib/security/exec-policy.d.ts.map +1 -1
  176. package/lib/security/exec-policy.js +198 -25
  177. package/lib/security/exec-policy.js.map +1 -1
  178. package/lib/security/file-policy.d.ts +0 -1
  179. package/lib/security/file-policy.d.ts.map +1 -1
  180. package/lib/security/file-policy.js +112 -14
  181. package/lib/security/file-policy.js.map +1 -1
  182. package/lib/security/file-role-policy.d.ts +119 -0
  183. package/lib/security/file-role-policy.d.ts.map +1 -0
  184. package/lib/security/file-role-policy.js +268 -0
  185. package/lib/security/file-role-policy.js.map +1 -0
  186. package/lib/security/index.d.ts +59 -0
  187. package/lib/security/index.d.ts.map +1 -1
  188. package/lib/security/index.js +68 -0
  189. package/lib/security/index.js.map +1 -1
  190. package/lib/security/network-policy.d.ts +94 -0
  191. package/lib/security/network-policy.d.ts.map +1 -0
  192. package/lib/security/network-policy.js +291 -0
  193. package/lib/security/network-policy.js.map +1 -0
  194. package/lib/security/owner-approve-always-store.d.ts +2 -0
  195. package/lib/security/owner-approve-always-store.d.ts.map +1 -1
  196. package/lib/security/owner-approve-always-store.js +37 -0
  197. package/lib/security/owner-approve-always-store.js.map +1 -1
  198. package/lib/security/sandbox-enhanced.d.ts +170 -0
  199. package/lib/security/sandbox-enhanced.d.ts.map +1 -0
  200. package/lib/security/sandbox-enhanced.js +630 -0
  201. package/lib/security/sandbox-enhanced.js.map +1 -0
  202. package/lib/security/sandbox.d.ts +104 -0
  203. package/lib/security/sandbox.d.ts.map +1 -0
  204. package/lib/security/sandbox.js +373 -0
  205. package/lib/security/sandbox.js.map +1 -0
  206. package/lib/security/security-config.example.d.ts +33 -0
  207. package/lib/security/security-config.example.d.ts.map +1 -0
  208. package/lib/security/security-config.example.js +166 -0
  209. package/lib/security/security-config.example.js.map +1 -0
  210. package/lib/subagent-goal-notify.d.ts +13 -0
  211. package/lib/subagent-goal-notify.d.ts.map +1 -0
  212. package/lib/subagent-goal-notify.js +32 -0
  213. package/lib/subagent-goal-notify.js.map +1 -0
  214. package/lib/subagent.d.ts +24 -0
  215. package/lib/subagent.d.ts.map +1 -1
  216. package/lib/subagent.js +98 -16
  217. package/lib/subagent.js.map +1 -1
  218. package/lib/typing-indicator/adapter-integration.d.ts +140 -0
  219. package/lib/typing-indicator/adapter-integration.d.ts.map +1 -0
  220. package/lib/typing-indicator/adapter-integration.js +473 -0
  221. package/lib/typing-indicator/adapter-integration.js.map +1 -0
  222. package/lib/typing-indicator/index.d.ts +170 -0
  223. package/lib/typing-indicator/index.d.ts.map +1 -0
  224. package/lib/typing-indicator/index.js +311 -0
  225. package/lib/typing-indicator/index.js.map +1 -0
  226. package/lib/typing-indicator/integration.d.ts +91 -0
  227. package/lib/typing-indicator/integration.d.ts.map +1 -0
  228. package/lib/typing-indicator/integration.js +219 -0
  229. package/lib/typing-indicator/integration.js.map +1 -0
  230. package/lib/zhin-agent/config.d.ts +20 -2
  231. package/lib/zhin-agent/config.d.ts.map +1 -1
  232. package/lib/zhin-agent/config.js +28 -10
  233. package/lib/zhin-agent/config.js.map +1 -1
  234. package/lib/zhin-agent/event-emitter.d.ts +11 -0
  235. package/lib/zhin-agent/event-emitter.d.ts.map +1 -0
  236. package/lib/zhin-agent/event-emitter.js +43 -0
  237. package/lib/zhin-agent/event-emitter.js.map +1 -0
  238. package/lib/zhin-agent/index.d.ts +9 -31
  239. package/lib/zhin-agent/index.d.ts.map +1 -1
  240. package/lib/zhin-agent/index.js +70 -665
  241. package/lib/zhin-agent/index.js.map +1 -1
  242. package/lib/zhin-agent/llm-runner.d.ts +16 -0
  243. package/lib/zhin-agent/llm-runner.d.ts.map +1 -0
  244. package/lib/zhin-agent/llm-runner.js +85 -0
  245. package/lib/zhin-agent/llm-runner.js.map +1 -0
  246. package/lib/zhin-agent/model-resolver.d.ts +9 -0
  247. package/lib/zhin-agent/model-resolver.d.ts.map +1 -0
  248. package/lib/zhin-agent/model-resolver.js +25 -0
  249. package/lib/zhin-agent/model-resolver.js.map +1 -0
  250. package/lib/zhin-agent/phase-trace.d.ts +12 -0
  251. package/lib/zhin-agent/phase-trace.d.ts.map +1 -0
  252. package/lib/zhin-agent/phase-trace.js +24 -0
  253. package/lib/zhin-agent/phase-trace.js.map +1 -0
  254. package/lib/zhin-agent/prompt-assembly.d.ts +22 -0
  255. package/lib/zhin-agent/prompt-assembly.d.ts.map +1 -0
  256. package/lib/zhin-agent/prompt-assembly.js +66 -0
  257. package/lib/zhin-agent/prompt-assembly.js.map +1 -0
  258. package/lib/zhin-agent/prompt-builder.d.ts +200 -0
  259. package/lib/zhin-agent/prompt-builder.d.ts.map +1 -0
  260. package/lib/zhin-agent/prompt-builder.js +574 -0
  261. package/lib/zhin-agent/prompt-builder.js.map +1 -0
  262. package/lib/zhin-agent/prompt-templates.d.ts +160 -0
  263. package/lib/zhin-agent/prompt-templates.d.ts.map +1 -0
  264. package/lib/zhin-agent/prompt-templates.js +436 -0
  265. package/lib/zhin-agent/prompt-templates.js.map +1 -0
  266. package/lib/zhin-agent/prompt.d.ts +18 -15
  267. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  268. package/lib/zhin-agent/prompt.js +194 -111
  269. package/lib/zhin-agent/prompt.js.map +1 -1
  270. package/lib/zhin-agent/session-io.d.ts +10 -0
  271. package/lib/zhin-agent/session-io.d.ts.map +1 -0
  272. package/lib/zhin-agent/session-io.js +14 -0
  273. package/lib/zhin-agent/session-io.js.map +1 -0
  274. package/lib/zhin-agent/task-continuation.d.ts +144 -0
  275. package/lib/zhin-agent/task-continuation.d.ts.map +1 -0
  276. package/lib/zhin-agent/task-continuation.js +346 -0
  277. package/lib/zhin-agent/task-continuation.js.map +1 -0
  278. package/lib/zhin-agent/text-sanitize.d.ts +2 -5
  279. package/lib/zhin-agent/text-sanitize.d.ts.map +1 -1
  280. package/lib/zhin-agent/text-sanitize.js +2 -25
  281. package/lib/zhin-agent/text-sanitize.js.map +1 -1
  282. package/lib/zhin-agent/tool-calls-user-format.d.ts.map +1 -1
  283. package/lib/zhin-agent/tool-calls-user-format.js +12 -3
  284. package/lib/zhin-agent/tool-calls-user-format.js.map +1 -1
  285. package/lib/zhin-agent/tool-orchestration.d.ts +9 -0
  286. package/lib/zhin-agent/tool-orchestration.d.ts.map +1 -0
  287. package/lib/zhin-agent/tool-orchestration.js +68 -0
  288. package/lib/zhin-agent/tool-orchestration.js.map +1 -0
  289. package/lib/zhin-agent/tool-search-orchestrator.d.ts.map +1 -1
  290. package/lib/zhin-agent/tool-search-orchestrator.js +5 -2
  291. package/lib/zhin-agent/tool-search-orchestrator.js.map +1 -1
  292. package/lib/zhin-agent/turn-pipeline.d.ts +5 -0
  293. package/lib/zhin-agent/turn-pipeline.d.ts.map +1 -0
  294. package/lib/zhin-agent/turn-pipeline.js +541 -0
  295. package/lib/zhin-agent/turn-pipeline.js.map +1 -0
  296. package/lib/zhin-agent/turn-tracker.d.ts +17 -0
  297. package/lib/zhin-agent/turn-tracker.d.ts.map +1 -0
  298. package/lib/zhin-agent/turn-tracker.js +54 -0
  299. package/lib/zhin-agent/turn-tracker.js.map +1 -0
  300. package/lib/zhin-agent/web-search-locale-attach.d.ts +4 -0
  301. package/lib/zhin-agent/web-search-locale-attach.d.ts.map +1 -0
  302. package/lib/zhin-agent/web-search-locale-attach.js +19 -0
  303. package/lib/zhin-agent/web-search-locale-attach.js.map +1 -0
  304. package/lib/zhin-agent/zhin-agent-private.d.ts +66 -0
  305. package/lib/zhin-agent/zhin-agent-private.d.ts.map +1 -0
  306. package/lib/zhin-agent/zhin-agent-private.js +4 -0
  307. package/lib/zhin-agent/zhin-agent-private.js.map +1 -0
  308. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-ai-hook-bus.d.ts","sourceRoot":"","sources":["../src/plugin-ai-hook-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAW3D,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EACvC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAYN"}
@@ -0,0 +1,24 @@
1
+ import { getPlugin } from '@zhin.js/core';
2
+ import { createAIHookBusPayload } from './ai-event-bus.js';
3
+ function resolveRootPlugin() {
4
+ try {
5
+ return getPlugin().root;
6
+ }
7
+ catch {
8
+ return null;
9
+ }
10
+ }
11
+ export function emitAIHookBusEvent(event, source, agentId) {
12
+ const root = resolveRootPlugin();
13
+ if (!root || typeof root.dispatch !== 'function')
14
+ return;
15
+ const payload = createAIHookBusPayload(event, source, agentId);
16
+ root.dispatch('ai.hook', payload);
17
+ if (event.type === 'session' && event.action === 'new') {
18
+ root.dispatch('ai.session.new', payload);
19
+ }
20
+ if (event.type === 'session' && event.action === 'compact') {
21
+ root.dispatch('ai.session.compact', payload);
22
+ }
23
+ }
24
+ //# sourceMappingURL=plugin-ai-hook-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-ai-hook-bus.js","sourceRoot":"","sources":["../src/plugin-ai-hook-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAkB,EAClB,MAAuC,EACvC,OAAgB;IAEhB,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;QAAE,OAAO;IACzD,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAElC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * 异常检测模块
3
+ *
4
+ * 提供:
5
+ * - 行为模式分析
6
+ * - 异常检测算法
7
+ * - 实时告警
8
+ * - 自适应阈值
9
+ */
10
+ export interface BehaviorPattern {
11
+ /** 模式 ID */
12
+ id: string;
13
+ /** 模式名称 */
14
+ name: string;
15
+ /** 模式描述 */
16
+ description: string;
17
+ /** 模式特征 */
18
+ features: Record<string, number>;
19
+ /** 正常范围 */
20
+ normalRange: {
21
+ min: number;
22
+ max: number;
23
+ };
24
+ /** 权重 */
25
+ weight: number;
26
+ }
27
+ export interface AnomalyEvent {
28
+ /** 事件 ID */
29
+ id: string;
30
+ /** 时间戳 */
31
+ timestamp: number;
32
+ /** 异常类型 */
33
+ type: 'behavior' | 'threshold' | 'pattern' | 'security';
34
+ /** 严重程度 */
35
+ severity: 'low' | 'medium' | 'high' | 'critical';
36
+ /** 描述 */
37
+ description: string;
38
+ /** 相关数据 */
39
+ data: Record<string, unknown>;
40
+ /** 置信度(0-1) */
41
+ confidence: number;
42
+ /** 建议的响应 */
43
+ suggestedAction?: string;
44
+ }
45
+ export interface DetectionRule {
46
+ /** 规则 ID */
47
+ id: string;
48
+ /** 规则名称 */
49
+ name: string;
50
+ /** 规则描述 */
51
+ description: string;
52
+ /** 检测函数 */
53
+ detect: (data: Record<string, unknown>) => AnomalyEvent | null;
54
+ /** 是否启用 */
55
+ enabled: boolean;
56
+ /** 优先级 */
57
+ priority: number;
58
+ }
59
+ export declare class AnomalyDetector {
60
+ private patterns;
61
+ private rules;
62
+ private events;
63
+ private listeners;
64
+ /**
65
+ * 添加行为模式
66
+ */
67
+ addPattern(pattern: BehaviorPattern): void;
68
+ /**
69
+ * 移除行为模式
70
+ */
71
+ removePattern(id: string): void;
72
+ /**
73
+ * 添加检测规则
74
+ */
75
+ addRule(rule: DetectionRule): void;
76
+ /**
77
+ * 移除检测规则
78
+ */
79
+ removeRule(id: string): void;
80
+ /**
81
+ * 检测异常
82
+ */
83
+ detect(data: Record<string, unknown>): AnomalyEvent[];
84
+ /**
85
+ * 获取所有异常事件
86
+ */
87
+ getEvents(): AnomalyEvent[];
88
+ /**
89
+ * 获取最近的异常事件
90
+ */
91
+ getRecentEvents(count?: number): AnomalyEvent[];
92
+ /**
93
+ * 清除事件历史
94
+ */
95
+ clearEvents(): void;
96
+ /**
97
+ * 添加事件监听器
98
+ */
99
+ onAnomaly(listener: (event: AnomalyEvent) => void): () => void;
100
+ /**
101
+ * 检查行为模式
102
+ */
103
+ private checkPattern;
104
+ /**
105
+ * 通知监听器
106
+ */
107
+ private notifyListeners;
108
+ }
109
+ export declare const DEFAULT_BEHAVIOR_PATTERNS: BehaviorPattern[];
110
+ export declare const DEFAULT_DETECTION_RULES: DetectionRule[];
111
+ /**
112
+ * 获取全局异常检测器
113
+ */
114
+ export declare function getAnomalyDetector(): AnomalyDetector;
115
+ /**
116
+ * 初始化异常检测器
117
+ */
118
+ export declare function initAnomalyDetector(): AnomalyDetector;
119
+ //# sourceMappingURL=anomaly-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly-detection.d.ts","sourceRoot":"","sources":["../../src/security/anomaly-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW;IACX,WAAW,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,YAAY;IAC3B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IACxD,WAAW;IACX,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,SAAS;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,MAAM,WAAW,aAAa;IAC5B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,GAAG,IAAI,CAAC;IAC/D,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAA4C;IAE7D;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI1C;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIlC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,EAAE;IAkCrD;;OAEG;IACH,SAAS,IAAI,YAAY,EAAE;IAI3B;;OAEG;IACH,eAAe,CAAC,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAInD;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAU9D;;OAEG;IACH,OAAO,CAAC,YAAY;IAgDpB;;OAEG;IACH,OAAO,CAAC,eAAe;CASxB;AAID,eAAO,MAAM,yBAAyB,EAAE,eAAe,EAiCtD,CAAC;AAIF,eAAO,MAAM,uBAAuB,EAAE,aAAa,EAwElD,CAAC;AAMF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAepD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAcrD"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * 异常检测模块
3
+ *
4
+ * 提供:
5
+ * - 行为模式分析
6
+ * - 异常检测算法
7
+ * - 实时告警
8
+ * - 自适应阈值
9
+ */
10
+ // ── 异常检测器类 ──────────────────────────────────────────────────────
11
+ export class AnomalyDetector {
12
+ patterns = new Map();
13
+ rules = new Map();
14
+ events = [];
15
+ listeners = [];
16
+ /**
17
+ * 添加行为模式
18
+ */
19
+ addPattern(pattern) {
20
+ this.patterns.set(pattern.id, pattern);
21
+ }
22
+ /**
23
+ * 移除行为模式
24
+ */
25
+ removePattern(id) {
26
+ this.patterns.delete(id);
27
+ }
28
+ /**
29
+ * 添加检测规则
30
+ */
31
+ addRule(rule) {
32
+ this.rules.set(rule.id, rule);
33
+ }
34
+ /**
35
+ * 移除检测规则
36
+ */
37
+ removeRule(id) {
38
+ this.rules.delete(id);
39
+ }
40
+ /**
41
+ * 检测异常
42
+ */
43
+ detect(data) {
44
+ const anomalies = [];
45
+ // 运行所有检测规则
46
+ for (const [ruleId, rule] of this.rules.entries()) {
47
+ if (!rule.enabled) {
48
+ continue;
49
+ }
50
+ try {
51
+ const event = rule.detect(data);
52
+ if (event) {
53
+ anomalies.push(event);
54
+ this.events.push(event);
55
+ this.notifyListeners(event);
56
+ }
57
+ }
58
+ catch (error) {
59
+ console.error(`[AnomalyDetector] Rule ${ruleId} failed:`, error);
60
+ }
61
+ }
62
+ // 检查行为模式
63
+ for (const [patternId, pattern] of this.patterns.entries()) {
64
+ const anomaly = this.checkPattern(pattern, data);
65
+ if (anomaly) {
66
+ anomalies.push(anomaly);
67
+ this.events.push(anomaly);
68
+ this.notifyListeners(anomaly);
69
+ }
70
+ }
71
+ return anomalies;
72
+ }
73
+ /**
74
+ * 获取所有异常事件
75
+ */
76
+ getEvents() {
77
+ return [...this.events];
78
+ }
79
+ /**
80
+ * 获取最近的异常事件
81
+ */
82
+ getRecentEvents(count = 10) {
83
+ return this.events.slice(-count);
84
+ }
85
+ /**
86
+ * 清除事件历史
87
+ */
88
+ clearEvents() {
89
+ this.events = [];
90
+ }
91
+ /**
92
+ * 添加事件监听器
93
+ */
94
+ onAnomaly(listener) {
95
+ this.listeners.push(listener);
96
+ return () => {
97
+ const index = this.listeners.indexOf(listener);
98
+ if (index > -1) {
99
+ this.listeners.splice(index, 1);
100
+ }
101
+ };
102
+ }
103
+ /**
104
+ * 检查行为模式
105
+ */
106
+ checkPattern(pattern, data) {
107
+ const value = data[pattern.id];
108
+ if (typeof value !== 'number') {
109
+ return null;
110
+ }
111
+ const { min, max } = pattern.normalRange;
112
+ if (value >= min && value <= max) {
113
+ return null;
114
+ }
115
+ // 计算偏离程度
116
+ const deviation = value < min
117
+ ? (min - value) / (max - min)
118
+ : (value - max) / (max - min);
119
+ // 根据偏离程度确定严重程度
120
+ let severity;
121
+ if (deviation < 0.2) {
122
+ severity = 'low';
123
+ }
124
+ else if (deviation < 0.5) {
125
+ severity = 'medium';
126
+ }
127
+ else if (deviation < 1.0) {
128
+ severity = 'high';
129
+ }
130
+ else {
131
+ severity = 'critical';
132
+ }
133
+ return {
134
+ id: `anomaly-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
135
+ timestamp: Date.now(),
136
+ type: 'behavior',
137
+ severity,
138
+ description: `行为异常: ${pattern.name} 值 ${value} 超出正常范围 [${min}, ${max}]`,
139
+ data: {
140
+ patternId: pattern.id,
141
+ value,
142
+ normalRange: pattern.normalRange,
143
+ deviation,
144
+ },
145
+ confidence: Math.min(1, deviation),
146
+ suggestedAction: `检查 ${pattern.name} 相关的系统状态`,
147
+ };
148
+ }
149
+ /**
150
+ * 通知监听器
151
+ */
152
+ notifyListeners(event) {
153
+ for (const listener of this.listeners) {
154
+ try {
155
+ listener(event);
156
+ }
157
+ catch (error) {
158
+ console.error('[AnomalyDetector] Listener error:', error);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ // ── 预定义行为模式 ────────────────────────────────────────────────────
164
+ export const DEFAULT_BEHAVIOR_PATTERNS = [
165
+ {
166
+ id: 'tool_execution_rate',
167
+ name: '工具执行速率',
168
+ description: '每分钟工具执行次数',
169
+ features: { window: 60000 },
170
+ normalRange: { min: 0, max: 100 },
171
+ weight: 1.0,
172
+ },
173
+ {
174
+ id: 'error_rate',
175
+ name: '错误率',
176
+ description: '错误请求占比',
177
+ features: { window: 300000 },
178
+ normalRange: { min: 0, max: 0.1 },
179
+ weight: 2.0,
180
+ },
181
+ {
182
+ id: 'token_usage_rate',
183
+ name: 'Token 使用速率',
184
+ description: '每分钟 Token 使用量',
185
+ features: { window: 60000 },
186
+ normalRange: { min: 0, max: 10000 },
187
+ weight: 1.5,
188
+ },
189
+ {
190
+ id: 'security_event_rate',
191
+ name: '安全事件速率',
192
+ description: '每分钟安全事件数',
193
+ features: { window: 60000 },
194
+ normalRange: { min: 0, max: 5 },
195
+ weight: 3.0,
196
+ },
197
+ ];
198
+ // ── 预定义检测规则 ────────────────────────────────────────────────────
199
+ export const DEFAULT_DETECTION_RULES = [
200
+ {
201
+ id: 'high_error_rate',
202
+ name: '高错误率检测',
203
+ description: '检测错误率是否超过阈值',
204
+ detect: (data) => {
205
+ const errorRate = data.errorRate;
206
+ if (errorRate && errorRate > 0.5) {
207
+ return {
208
+ id: `rule-${Date.now()}`,
209
+ timestamp: Date.now(),
210
+ type: 'threshold',
211
+ severity: 'high',
212
+ description: `错误率过高: ${(errorRate * 100).toFixed(1)}%`,
213
+ data: { errorRate, threshold: 0.5 },
214
+ confidence: 0.9,
215
+ suggestedAction: '检查系统日志,找出错误原因',
216
+ };
217
+ }
218
+ return null;
219
+ },
220
+ enabled: true,
221
+ priority: 1,
222
+ },
223
+ {
224
+ id: 'suspicious_tool_usage',
225
+ name: '可疑工具使用检测',
226
+ description: '检测可疑的工具使用模式',
227
+ detect: (data) => {
228
+ const toolName = data.toolName;
229
+ const suspiciousTools = ['eval', 'exec', 'spawn', 'fork'];
230
+ if (toolName && suspiciousTools.includes(toolName)) {
231
+ return {
232
+ id: `rule-${Date.now()}`,
233
+ timestamp: Date.now(),
234
+ type: 'security',
235
+ severity: 'critical',
236
+ description: `检测到可疑工具使用: ${toolName}`,
237
+ data: { toolName, suspiciousTools },
238
+ confidence: 0.95,
239
+ suggestedAction: '立即审查该工具调用的合法性',
240
+ };
241
+ }
242
+ return null;
243
+ },
244
+ enabled: true,
245
+ priority: 0,
246
+ },
247
+ {
248
+ id: 'rapid_requests',
249
+ name: '快速请求检测',
250
+ description: '检测请求频率是否异常',
251
+ detect: (data) => {
252
+ const requestRate = data.requestRate;
253
+ if (requestRate && requestRate > 1000) {
254
+ return {
255
+ id: `rule-${Date.now()}`,
256
+ timestamp: Date.now(),
257
+ type: 'behavior',
258
+ severity: 'medium',
259
+ description: `请求频率异常: ${requestRate} 请求/分钟`,
260
+ data: { requestRate, threshold: 1000 },
261
+ confidence: 0.8,
262
+ suggestedAction: '检查是否有 DDoS 攻击或滥用行为',
263
+ };
264
+ }
265
+ return null;
266
+ },
267
+ enabled: true,
268
+ priority: 2,
269
+ },
270
+ ];
271
+ // ── 全局实例 ──────────────────────────────────────────────────────────
272
+ let globalAnomalyDetector = null;
273
+ /**
274
+ * 获取全局异常检测器
275
+ */
276
+ export function getAnomalyDetector() {
277
+ if (!globalAnomalyDetector) {
278
+ globalAnomalyDetector = new AnomalyDetector();
279
+ // 添加预定义行为模式
280
+ for (const pattern of DEFAULT_BEHAVIOR_PATTERNS) {
281
+ globalAnomalyDetector.addPattern(pattern);
282
+ }
283
+ // 添加预定义检测规则
284
+ for (const rule of DEFAULT_DETECTION_RULES) {
285
+ globalAnomalyDetector.addRule(rule);
286
+ }
287
+ }
288
+ return globalAnomalyDetector;
289
+ }
290
+ /**
291
+ * 初始化异常检测器
292
+ */
293
+ export function initAnomalyDetector() {
294
+ globalAnomalyDetector = new AnomalyDetector();
295
+ // 添加预定义行为模式
296
+ for (const pattern of DEFAULT_BEHAVIOR_PATTERNS) {
297
+ globalAnomalyDetector.addPattern(pattern);
298
+ }
299
+ // 添加预定义检测规则
300
+ for (const rule of DEFAULT_DETECTION_RULES) {
301
+ globalAnomalyDetector.addRule(rule);
302
+ }
303
+ return globalAnomalyDetector;
304
+ }
305
+ //# sourceMappingURL=anomaly-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly-detection.js","sourceRoot":"","sources":["../../src/security/anomaly-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Agent 审计日志系统
3
+ *
4
+ * 记录所有工具执行、安全事件和权限检查,
5
+ * 用于安全审计、问题排查和合规性检查。
6
+ *
7
+ */
8
+ export type AuditEventType = 'tool.execute' | 'tool.denied' | 'tool.approval' | 'exec.policy' | 'file.access' | 'security.violation' | 'owner.confirm' | 'rate.limit' | 'session.start' | 'session.end';
9
+ export type AuditEventSeverity = 'info' | 'warn' | 'error' | 'critical';
10
+ export interface AuditEvent {
11
+ /** 事件 ID */
12
+ id: string;
13
+ /** 事件类型 */
14
+ type: AuditEventType;
15
+ /** 严重程度 */
16
+ severity: AuditEventSeverity;
17
+ /** 时间戳 */
18
+ timestamp: number;
19
+ /** 会话 ID */
20
+ sessionId?: string;
21
+ /** 用户 ID */
22
+ userId?: string;
23
+ /** Bot ID */
24
+ botId?: string;
25
+ /** 平台 */
26
+ platform?: string;
27
+ /** 工具名称 */
28
+ toolName?: string;
29
+ /** 命令内容(脱敏) */
30
+ command?: string;
31
+ /** 文件路径 */
32
+ filePath?: string;
33
+ /** 事件描述 */
34
+ message: string;
35
+ /** 详细信息 */
36
+ details?: Record<string, unknown>;
37
+ /** 是否被阻止 */
38
+ blocked?: boolean;
39
+ /** 阻止原因 */
40
+ blockReason?: string;
41
+ }
42
+ export interface AuditLoggerConfig {
43
+ /** 是否启用审计日志 */
44
+ enabled: boolean;
45
+ /** 日志文件路径 */
46
+ logFile?: string;
47
+ /** 最小记录级别 */
48
+ minSeverity?: AuditEventSeverity;
49
+ /** 是否记录敏感信息(如命令内容) */
50
+ logSensitiveData?: boolean;
51
+ /** 日志保留天数 */
52
+ retentionDays?: number;
53
+ /** 最大日志文件大小(MB) */
54
+ maxFileSizeMB?: number;
55
+ }
56
+ export declare class AuditLogger {
57
+ private config;
58
+ private logStream;
59
+ private eventCount;
60
+ private sessionEvents;
61
+ constructor(config?: Partial<AuditLoggerConfig>);
62
+ private initLogFile;
63
+ /**
64
+ * 生成事件 ID
65
+ */
66
+ private generateEventId;
67
+ /**
68
+ * 检查事件是否应该记录
69
+ */
70
+ private shouldLog;
71
+ /**
72
+ * 记录审计事件
73
+ */
74
+ log(event: Omit<AuditEvent, 'id' | 'timestamp'>): void;
75
+ /**
76
+ * 写入日志文件
77
+ */
78
+ private writeToFile;
79
+ /**
80
+ * 控制台输出
81
+ */
82
+ private consoleLog;
83
+ /**
84
+ * 记录工具执行
85
+ */
86
+ logToolExecution(toolName: string, args: Record<string, unknown>, result: unknown, duration: number): void;
87
+ /**
88
+ * 记录工具被拒绝
89
+ */
90
+ logToolDenied(toolName: string, reason: string, context?: Record<string, unknown>): void;
91
+ /**
92
+ * 记录命令执行策略检查
93
+ */
94
+ logExecPolicy(command: string, allowed: boolean, reason?: string): void;
95
+ /**
96
+ * 记录文件访问检查
97
+ */
98
+ logFileAccess(filePath: string, allowed: boolean, reason?: string): void;
99
+ /**
100
+ * 记录安全违规
101
+ */
102
+ logSecurityViolation(type: string, message: string, details?: Record<string, unknown>): void;
103
+ /**
104
+ * 记录 Owner 确认
105
+ */
106
+ logOwnerConfirm(toolName: string, approved: boolean, message?: string): void;
107
+ /**
108
+ * 记录速率限制
109
+ */
110
+ logRateLimit(userId: string, limit: number, current: number): void;
111
+ /**
112
+ * 记录会话开始
113
+ */
114
+ logSessionStart(sessionId: string, userId?: string, botId?: string, platform?: string): void;
115
+ /**
116
+ * 记录会话结束
117
+ */
118
+ logSessionEnd(sessionId: string, duration: number, toolCount: number): void;
119
+ /**
120
+ * 获取当前会话的审计事件
121
+ */
122
+ getSessionEvents(): AuditEvent[];
123
+ /**
124
+ * 获取配置
125
+ */
126
+ getConfig(): AuditLoggerConfig;
127
+ /**
128
+ * 获取审计统计
129
+ */
130
+ getStats(): {
131
+ totalEvents: number;
132
+ sessionEvents: number;
133
+ blockedEvents: number;
134
+ byType: Record<AuditEventType, number>;
135
+ bySeverity: Record<AuditEventSeverity, number>;
136
+ };
137
+ /**
138
+ * 清理会话事件
139
+ */
140
+ clearSessionEvents(): void;
141
+ /**
142
+ * 关闭日志流
143
+ */
144
+ close(): void;
145
+ }
146
+ /**
147
+ * 获取全局审计日志实例
148
+ */
149
+ export declare function getAuditLogger(): AuditLogger;
150
+ /**
151
+ * 初始化审计日志
152
+ */
153
+ export declare function initAuditLogger(config: Partial<AuditLoggerConfig>): AuditLogger;
154
+ /**
155
+ * 关闭审计日志
156
+ */
157
+ export declare function closeAuditLogger(): void;
158
+ //# sourceMappingURL=audit-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.d.ts","sourceRoot":"","sources":["../../src/security/audit-logger.ts"],"names":[],"mappings":"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"}