@dcyfr/ai 1.0.4 → 2.1.1

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 (411) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +381 -9
  3. package/dist/ai/agents/agent-loader.d.ts +12 -0
  4. package/dist/ai/agents/agent-loader.d.ts.map +1 -1
  5. package/dist/ai/agents/agent-loader.js +74 -65
  6. package/dist/ai/agents/agent-loader.js.map +1 -1
  7. package/dist/ai/agents/agent-registry.d.ts +2 -0
  8. package/dist/ai/agents/agent-registry.d.ts.map +1 -1
  9. package/dist/ai/agents/agent-registry.js +15 -14
  10. package/dist/ai/agents/agent-registry.js.map +1 -1
  11. package/dist/ai/agents/agent-router.d.ts +20 -5
  12. package/dist/ai/agents/agent-router.d.ts.map +1 -1
  13. package/dist/ai/agents/agent-router.js +89 -43
  14. package/dist/ai/agents/agent-router.js.map +1 -1
  15. package/dist/ai/agents/index.d.ts +6 -1
  16. package/dist/ai/agents/index.d.ts.map +1 -1
  17. package/dist/ai/agents/index.js +9 -3
  18. package/dist/ai/agents/index.js.map +1 -1
  19. package/dist/ai/agents/instruction-template.d.ts +45 -0
  20. package/dist/ai/agents/instruction-template.d.ts.map +1 -0
  21. package/dist/ai/agents/instruction-template.js +197 -0
  22. package/dist/ai/agents/instruction-template.js.map +1 -0
  23. package/dist/ai/agents/persona-resolver.d.ts +90 -0
  24. package/dist/ai/agents/persona-resolver.d.ts.map +1 -0
  25. package/dist/ai/agents/persona-resolver.js +121 -0
  26. package/dist/ai/agents/persona-resolver.js.map +1 -0
  27. package/dist/ai/agents/schema.d.ts +166 -0
  28. package/dist/ai/agents/schema.d.ts.map +1 -0
  29. package/dist/ai/agents/schema.js +94 -0
  30. package/dist/ai/agents/schema.js.map +1 -0
  31. package/dist/ai/agents/types.d.ts +102 -0
  32. package/dist/ai/agents/types.d.ts.map +1 -1
  33. package/dist/ai/agents-builtin/architecture/index.js +3 -3
  34. package/dist/ai/agents-builtin/content/index.js +1 -1
  35. package/dist/ai/agents-builtin/data/index.js +1 -1
  36. package/dist/ai/agents-builtin/development/index.js +4 -4
  37. package/dist/ai/agents-builtin/devops/index.js +1 -1
  38. package/dist/ai/agents-builtin/index.js +33 -33
  39. package/dist/ai/agents-builtin/performance/index.js +1 -1
  40. package/dist/ai/agents-builtin/research/index.js +1 -1
  41. package/dist/ai/agents-builtin/security/index.js +1 -1
  42. package/dist/ai/agents-builtin/testing/index.js +2 -2
  43. package/dist/ai/config/loader.d.ts.map +1 -1
  44. package/dist/ai/config/loader.js +6 -3
  45. package/dist/ai/config/loader.js.map +1 -1
  46. package/dist/ai/config/schema.d.ts +242 -1156
  47. package/dist/ai/config/schema.d.ts.map +1 -1
  48. package/dist/ai/config/schema.js +69 -20
  49. package/dist/ai/config/schema.js.map +1 -1
  50. package/dist/ai/core/provider-registry.d.ts +32 -0
  51. package/dist/ai/core/provider-registry.d.ts.map +1 -1
  52. package/dist/ai/core/provider-registry.js +189 -14
  53. package/dist/ai/core/provider-registry.js.map +1 -1
  54. package/dist/ai/core/telemetry-engine.d.ts +26 -0
  55. package/dist/ai/core/telemetry-engine.d.ts.map +1 -1
  56. package/dist/ai/core/telemetry-engine.js +81 -1
  57. package/dist/ai/core/telemetry-engine.js.map +1 -1
  58. package/dist/ai/delegation/agent-registry.d.ts +143 -0
  59. package/dist/ai/delegation/agent-registry.d.ts.map +1 -0
  60. package/dist/ai/delegation/agent-registry.js +231 -0
  61. package/dist/ai/delegation/agent-registry.js.map +1 -0
  62. package/dist/ai/delegation/blast-radius-tracker.d.ts +65 -0
  63. package/dist/ai/delegation/blast-radius-tracker.d.ts.map +1 -0
  64. package/dist/ai/delegation/blast-radius-tracker.js +81 -0
  65. package/dist/ai/delegation/blast-radius-tracker.js.map +1 -0
  66. package/dist/ai/delegation/capability-bootstrap.d.ts +40 -0
  67. package/dist/ai/delegation/capability-bootstrap.d.ts.map +1 -0
  68. package/dist/ai/delegation/capability-bootstrap.js +431 -0
  69. package/dist/ai/delegation/capability-bootstrap.js.map +1 -0
  70. package/dist/ai/delegation/capability-registry.d.ts +81 -0
  71. package/dist/ai/delegation/capability-registry.d.ts.map +1 -0
  72. package/dist/ai/delegation/capability-registry.js +339 -0
  73. package/dist/ai/delegation/capability-registry.js.map +1 -0
  74. package/dist/ai/delegation/chain-tracker.d.ts +152 -0
  75. package/dist/ai/delegation/chain-tracker.d.ts.map +1 -0
  76. package/dist/ai/delegation/chain-tracker.js +336 -0
  77. package/dist/ai/delegation/chain-tracker.js.map +1 -0
  78. package/dist/ai/delegation/circuit-breaker.d.ts +59 -0
  79. package/dist/ai/delegation/circuit-breaker.d.ts.map +1 -0
  80. package/dist/ai/delegation/circuit-breaker.js +153 -0
  81. package/dist/ai/delegation/circuit-breaker.js.map +1 -0
  82. package/dist/ai/delegation/contract-manager.d.ts +415 -0
  83. package/dist/ai/delegation/contract-manager.d.ts.map +1 -0
  84. package/dist/ai/delegation/contract-manager.js +1258 -0
  85. package/dist/ai/delegation/contract-manager.js.map +1 -0
  86. package/dist/ai/delegation/delegation-manager.d.ts +505 -0
  87. package/dist/ai/delegation/delegation-manager.d.ts.map +1 -0
  88. package/dist/ai/delegation/delegation-manager.js +773 -0
  89. package/dist/ai/delegation/delegation-manager.js.map +1 -0
  90. package/dist/ai/delegation/event-schemas.d.ts +101 -0
  91. package/dist/ai/delegation/event-schemas.d.ts.map +1 -0
  92. package/dist/ai/delegation/event-schemas.js +59 -0
  93. package/dist/ai/delegation/event-schemas.js.map +1 -0
  94. package/dist/ai/delegation/execution-mode-dashboard.d.ts +109 -0
  95. package/dist/ai/delegation/execution-mode-dashboard.d.ts.map +1 -0
  96. package/dist/ai/delegation/execution-mode-dashboard.js +167 -0
  97. package/dist/ai/delegation/execution-mode-dashboard.js.map +1 -0
  98. package/dist/ai/delegation/feature-flags.d.ts +191 -0
  99. package/dist/ai/delegation/feature-flags.d.ts.map +1 -0
  100. package/dist/ai/delegation/feature-flags.js +332 -0
  101. package/dist/ai/delegation/feature-flags.js.map +1 -0
  102. package/dist/ai/delegation/index.d.ts +51 -0
  103. package/dist/ai/delegation/index.d.ts.map +1 -0
  104. package/dist/ai/delegation/index.js +39 -0
  105. package/dist/ai/delegation/index.js.map +1 -0
  106. package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts +39 -0
  107. package/dist/ai/delegation/middleware/chain-depth-middleware.d.ts.map +1 -0
  108. package/dist/ai/delegation/middleware/chain-depth-middleware.js +77 -0
  109. package/dist/ai/delegation/middleware/chain-depth-middleware.js.map +1 -0
  110. package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts +46 -0
  111. package/dist/ai/delegation/middleware/chain-tracker-middleware.d.ts.map +1 -0
  112. package/dist/ai/delegation/middleware/chain-tracker-middleware.js +89 -0
  113. package/dist/ai/delegation/middleware/chain-tracker-middleware.js.map +1 -0
  114. package/dist/ai/delegation/middleware/content-policy-middleware.d.ts +31 -0
  115. package/dist/ai/delegation/middleware/content-policy-middleware.d.ts.map +1 -0
  116. package/dist/ai/delegation/middleware/content-policy-middleware.js +82 -0
  117. package/dist/ai/delegation/middleware/content-policy-middleware.js.map +1 -0
  118. package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts +46 -0
  119. package/dist/ai/delegation/middleware/feature-flag-middleware.d.ts.map +1 -0
  120. package/dist/ai/delegation/middleware/feature-flag-middleware.js +59 -0
  121. package/dist/ai/delegation/middleware/feature-flag-middleware.js.map +1 -0
  122. package/dist/ai/delegation/middleware/identity-middleware.d.ts +23 -0
  123. package/dist/ai/delegation/middleware/identity-middleware.d.ts.map +1 -0
  124. package/dist/ai/delegation/middleware/identity-middleware.js +64 -0
  125. package/dist/ai/delegation/middleware/identity-middleware.js.map +1 -0
  126. package/dist/ai/delegation/middleware/permissions-middleware.d.ts +48 -0
  127. package/dist/ai/delegation/middleware/permissions-middleware.d.ts.map +1 -0
  128. package/dist/ai/delegation/middleware/permissions-middleware.js +107 -0
  129. package/dist/ai/delegation/middleware/permissions-middleware.js.map +1 -0
  130. package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts +38 -0
  131. package/dist/ai/delegation/middleware/rate-limiter-middleware.d.ts.map +1 -0
  132. package/dist/ai/delegation/middleware/rate-limiter-middleware.js +65 -0
  133. package/dist/ai/delegation/middleware/rate-limiter-middleware.js.map +1 -0
  134. package/dist/ai/delegation/middleware/reputation-middleware.d.ts +39 -0
  135. package/dist/ai/delegation/middleware/reputation-middleware.d.ts.map +1 -0
  136. package/dist/ai/delegation/middleware/reputation-middleware.js +75 -0
  137. package/dist/ai/delegation/middleware/reputation-middleware.js.map +1 -0
  138. package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts +52 -0
  139. package/dist/ai/delegation/middleware/resource-limiter-middleware.d.ts.map +1 -0
  140. package/dist/ai/delegation/middleware/resource-limiter-middleware.js +112 -0
  141. package/dist/ai/delegation/middleware/resource-limiter-middleware.js.map +1 -0
  142. package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts +23 -0
  143. package/dist/ai/delegation/middleware/threat-validator-middleware.d.ts.map +1 -0
  144. package/dist/ai/delegation/middleware/threat-validator-middleware.js +83 -0
  145. package/dist/ai/delegation/middleware/threat-validator-middleware.js.map +1 -0
  146. package/dist/ai/delegation/middleware/tlp-middleware.d.ts +23 -0
  147. package/dist/ai/delegation/middleware/tlp-middleware.d.ts.map +1 -0
  148. package/dist/ai/delegation/middleware/tlp-middleware.js +59 -0
  149. package/dist/ai/delegation/middleware/tlp-middleware.js.map +1 -0
  150. package/dist/ai/delegation/monitoring.d.ts +298 -0
  151. package/dist/ai/delegation/monitoring.d.ts.map +1 -0
  152. package/dist/ai/delegation/monitoring.js +584 -0
  153. package/dist/ai/delegation/monitoring.js.map +1 -0
  154. package/dist/ai/delegation/security-middleware-chain.d.ts +71 -0
  155. package/dist/ai/delegation/security-middleware-chain.d.ts.map +1 -0
  156. package/dist/ai/delegation/security-middleware-chain.js +163 -0
  157. package/dist/ai/delegation/security-middleware-chain.js.map +1 -0
  158. package/dist/ai/delegation/session-checkpoint.d.ts +77 -0
  159. package/dist/ai/delegation/session-checkpoint.d.ts.map +1 -0
  160. package/dist/ai/delegation/session-checkpoint.js +131 -0
  161. package/dist/ai/delegation/session-checkpoint.js.map +1 -0
  162. package/dist/ai/delegation/session-manager.d.ts +131 -0
  163. package/dist/ai/delegation/session-manager.d.ts.map +1 -0
  164. package/dist/ai/delegation/session-manager.js +243 -0
  165. package/dist/ai/delegation/session-manager.js.map +1 -0
  166. package/dist/ai/delegation/session-queue.d.ts +95 -0
  167. package/dist/ai/delegation/session-queue.d.ts.map +1 -0
  168. package/dist/ai/delegation/session-queue.js +136 -0
  169. package/dist/ai/delegation/session-queue.js.map +1 -0
  170. package/dist/ai/delegation/timeout-watchdog.d.ts +60 -0
  171. package/dist/ai/delegation/timeout-watchdog.d.ts.map +1 -0
  172. package/dist/ai/delegation/timeout-watchdog.js +100 -0
  173. package/dist/ai/delegation/timeout-watchdog.js.map +1 -0
  174. package/dist/ai/examples/integration-demo.d.ts +27 -0
  175. package/dist/ai/examples/integration-demo.d.ts.map +1 -0
  176. package/dist/ai/examples/integration-demo.js +536 -0
  177. package/dist/ai/examples/integration-demo.js.map +1 -0
  178. package/dist/ai/index.d.ts +25 -0
  179. package/dist/ai/index.d.ts.map +1 -1
  180. package/dist/ai/index.js +34 -11
  181. package/dist/ai/index.js.map +1 -1
  182. package/dist/ai/mcp/servers/analytics/index.js +67 -11
  183. package/dist/ai/mcp/servers/analytics/index.js.map +1 -1
  184. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -1
  185. package/dist/ai/mcp/servers/content-manager/index.js +50 -4
  186. package/dist/ai/mcp/servers/content-manager/index.js.map +1 -1
  187. package/dist/ai/mcp/servers/delegation-monitor/index.d.ts +36 -0
  188. package/dist/ai/mcp/servers/delegation-monitor/index.d.ts.map +1 -0
  189. package/dist/ai/mcp/servers/delegation-monitor/index.js +757 -0
  190. package/dist/ai/mcp/servers/delegation-monitor/index.js.map +1 -0
  191. package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -1
  192. package/dist/ai/mcp/servers/design-tokens/index.js +62 -39
  193. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -1
  194. package/dist/ai/mcp/servers/promptintel/index.js +15 -3
  195. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -1
  196. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -1
  197. package/dist/ai/mcp/servers/shared/rate-limiter.js +3 -1
  198. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -1
  199. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -1
  200. package/dist/ai/mcp/servers/shared/redis-client.js +54 -47
  201. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -1
  202. package/dist/ai/mcp/servers/shared/types.d.ts +9 -0
  203. package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -1
  204. package/dist/ai/mcp/servers/shared/utils.d.ts +9 -1
  205. package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -1
  206. package/dist/ai/mcp/servers/shared/utils.js +52 -2
  207. package/dist/ai/mcp/servers/shared/utils.js.map +1 -1
  208. package/dist/ai/memory/config.d.ts +18 -3
  209. package/dist/ai/memory/config.d.ts.map +1 -1
  210. package/dist/ai/memory/config.js +61 -15
  211. package/dist/ai/memory/config.js.map +1 -1
  212. package/dist/ai/memory/dcyfr-memory.d.ts +4 -0
  213. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -1
  214. package/dist/ai/memory/dcyfr-memory.js +44 -6
  215. package/dist/ai/memory/dcyfr-memory.js.map +1 -1
  216. package/dist/ai/memory/mem0-client.d.ts.map +1 -1
  217. package/dist/ai/memory/mem0-client.js +53 -14
  218. package/dist/ai/memory/mem0-client.js.map +1 -1
  219. package/dist/ai/permissions/attenuation-engine.d.ts +159 -0
  220. package/dist/ai/permissions/attenuation-engine.d.ts.map +1 -0
  221. package/dist/ai/permissions/attenuation-engine.js +511 -0
  222. package/dist/ai/permissions/attenuation-engine.js.map +1 -0
  223. package/dist/ai/plugins/plugin-loader.d.ts +4 -0
  224. package/dist/ai/plugins/plugin-loader.d.ts.map +1 -1
  225. package/dist/ai/plugins/plugin-loader.js +28 -28
  226. package/dist/ai/plugins/plugin-loader.js.map +1 -1
  227. package/dist/ai/reputation/execution-mode-reputation.d.ts +104 -0
  228. package/dist/ai/reputation/execution-mode-reputation.d.ts.map +1 -0
  229. package/dist/ai/reputation/execution-mode-reputation.js +142 -0
  230. package/dist/ai/reputation/execution-mode-reputation.js.map +1 -0
  231. package/dist/ai/reputation/reputation-engine.d.ts +204 -0
  232. package/dist/ai/reputation/reputation-engine.d.ts.map +1 -0
  233. package/dist/ai/reputation/reputation-engine.js +426 -0
  234. package/dist/ai/reputation/reputation-engine.js.map +1 -0
  235. package/dist/ai/runtime/agent-runtime.d.ts +193 -0
  236. package/dist/ai/runtime/agent-runtime.d.ts.map +1 -0
  237. package/dist/ai/runtime/agent-runtime.js +1009 -0
  238. package/dist/ai/runtime/agent-runtime.js.map +1 -0
  239. package/dist/ai/runtime/index.d.ts +11 -0
  240. package/dist/ai/runtime/index.d.ts.map +1 -0
  241. package/dist/ai/runtime/index.js +9 -0
  242. package/dist/ai/runtime/index.js.map +1 -0
  243. package/dist/ai/runtime/telemetry-schema.d.ts +192 -0
  244. package/dist/ai/runtime/telemetry-schema.d.ts.map +1 -0
  245. package/dist/ai/runtime/telemetry-schema.js +200 -0
  246. package/dist/ai/runtime/telemetry-schema.js.map +1 -0
  247. package/dist/ai/runtime/types.d.ts +236 -0
  248. package/dist/ai/runtime/types.d.ts.map +1 -0
  249. package/dist/ai/runtime/types.js +10 -0
  250. package/dist/ai/runtime/types.js.map +1 -0
  251. package/dist/ai/src/batch-processor.d.ts +298 -0
  252. package/dist/ai/src/batch-processor.d.ts.map +1 -0
  253. package/dist/ai/src/batch-processor.js +520 -0
  254. package/dist/ai/src/batch-processor.js.map +1 -0
  255. package/dist/ai/src/capability-bootstrap.d.ts +222 -0
  256. package/dist/ai/src/capability-bootstrap.d.ts.map +1 -0
  257. package/dist/ai/src/capability-bootstrap.js +421 -0
  258. package/dist/ai/src/capability-bootstrap.js.map +1 -0
  259. package/dist/ai/src/capability-manifest-generator.d.ts +61 -0
  260. package/dist/ai/src/capability-manifest-generator.d.ts.map +1 -0
  261. package/dist/ai/src/capability-manifest-generator.js +700 -0
  262. package/dist/ai/src/capability-manifest-generator.js.map +1 -0
  263. package/dist/ai/src/capability-registry.d.ts +157 -0
  264. package/dist/ai/src/capability-registry.d.ts.map +1 -0
  265. package/dist/ai/src/capability-registry.js +577 -0
  266. package/dist/ai/src/capability-registry.js.map +1 -0
  267. package/dist/ai/src/cli/telemetry-dashboard.d.ts +132 -0
  268. package/dist/ai/src/cli/telemetry-dashboard.d.ts.map +1 -0
  269. package/dist/ai/src/cli/telemetry-dashboard.js +565 -0
  270. package/dist/ai/src/cli/telemetry-dashboard.js.map +1 -0
  271. package/dist/ai/src/delegation/feature-flags.d.ts +213 -0
  272. package/dist/ai/src/delegation/feature-flags.d.ts.map +1 -0
  273. package/dist/ai/src/delegation/feature-flags.js +395 -0
  274. package/dist/ai/src/delegation/feature-flags.js.map +1 -0
  275. package/dist/ai/src/delegation/liability-firebreak.d.ts +303 -0
  276. package/dist/ai/src/delegation/liability-firebreak.d.ts.map +1 -0
  277. package/dist/ai/src/delegation/liability-firebreak.js +643 -0
  278. package/dist/ai/src/delegation/liability-firebreak.js.map +1 -0
  279. package/dist/ai/src/delegation/security-threat-model.d.ts +171 -0
  280. package/dist/ai/src/delegation/security-threat-model.d.ts.map +1 -0
  281. package/dist/ai/src/delegation/security-threat-model.js +723 -0
  282. package/dist/ai/src/delegation/security-threat-model.js.map +1 -0
  283. package/dist/ai/src/delegation/tlp-enforcement.d.ts +146 -0
  284. package/dist/ai/src/delegation/tlp-enforcement.d.ts.map +1 -0
  285. package/dist/ai/src/delegation/tlp-enforcement.js +382 -0
  286. package/dist/ai/src/delegation/tlp-enforcement.js.map +1 -0
  287. package/dist/ai/src/delegation-capability-integration.d.ts +154 -0
  288. package/dist/ai/src/delegation-capability-integration.d.ts.map +1 -0
  289. package/dist/ai/src/delegation-capability-integration.js +351 -0
  290. package/dist/ai/src/delegation-capability-integration.js.map +1 -0
  291. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts +325 -0
  292. package/dist/ai/src/end-to-end-workflow-orchestrator.d.ts.map +1 -0
  293. package/dist/ai/src/end-to-end-workflow-orchestrator.js +801 -0
  294. package/dist/ai/src/end-to-end-workflow-orchestrator.js.map +1 -0
  295. package/dist/ai/src/enhanced-capability-detection.d.ts +237 -0
  296. package/dist/ai/src/enhanced-capability-detection.d.ts.map +1 -0
  297. package/dist/ai/src/enhanced-capability-detection.js +448 -0
  298. package/dist/ai/src/enhanced-capability-detection.js.map +1 -0
  299. package/dist/ai/src/intelligent-cache-manager.d.ts +327 -0
  300. package/dist/ai/src/intelligent-cache-manager.d.ts.map +1 -0
  301. package/dist/ai/src/intelligent-cache-manager.js +634 -0
  302. package/dist/ai/src/intelligent-cache-manager.js.map +1 -0
  303. package/dist/ai/src/mcp-auto-configuration.d.ts +232 -0
  304. package/dist/ai/src/mcp-auto-configuration.d.ts.map +1 -0
  305. package/dist/ai/src/mcp-auto-configuration.js +445 -0
  306. package/dist/ai/src/mcp-auto-configuration.js.map +1 -0
  307. package/dist/ai/src/performance-profiler.d.ts +351 -0
  308. package/dist/ai/src/performance-profiler.d.ts.map +1 -0
  309. package/dist/ai/src/performance-profiler.js +475 -0
  310. package/dist/ai/src/performance-profiler.js.map +1 -0
  311. package/dist/ai/src/personas/hooks/before-llm-call.d.ts +96 -0
  312. package/dist/ai/src/personas/hooks/before-llm-call.d.ts.map +1 -0
  313. package/dist/ai/src/personas/hooks/before-llm-call.js +83 -0
  314. package/dist/ai/src/personas/hooks/before-llm-call.js.map +1 -0
  315. package/dist/ai/src/personas/index.d.ts +10 -0
  316. package/dist/ai/src/personas/index.d.ts.map +1 -0
  317. package/dist/ai/src/personas/index.js +10 -0
  318. package/dist/ai/src/personas/index.js.map +1 -0
  319. package/dist/ai/src/personas/persona-loader.d.ts +42 -0
  320. package/dist/ai/src/personas/persona-loader.d.ts.map +1 -0
  321. package/dist/ai/src/personas/persona-loader.js +162 -0
  322. package/dist/ai/src/personas/persona-loader.js.map +1 -0
  323. package/dist/ai/src/personas/types.d.ts +199 -0
  324. package/dist/ai/src/personas/types.d.ts.map +1 -0
  325. package/dist/ai/src/personas/types.js +7 -0
  326. package/dist/ai/src/personas/types.js.map +1 -0
  327. package/dist/ai/src/personas/voice-resolver.d.ts +40 -0
  328. package/dist/ai/src/personas/voice-resolver.d.ts.map +1 -0
  329. package/dist/ai/src/personas/voice-resolver.js +201 -0
  330. package/dist/ai/src/personas/voice-resolver.js.map +1 -0
  331. package/dist/ai/src/resource-monitor.d.ts +311 -0
  332. package/dist/ai/src/resource-monitor.d.ts.map +1 -0
  333. package/dist/ai/src/resource-monitor.js +475 -0
  334. package/dist/ai/src/resource-monitor.js.map +1 -0
  335. package/dist/ai/src/runtime/agent-runtime.d.ts +340 -0
  336. package/dist/ai/src/runtime/agent-runtime.d.ts.map +1 -0
  337. package/dist/ai/src/runtime/agent-runtime.js +1084 -0
  338. package/dist/ai/src/runtime/agent-runtime.js.map +1 -0
  339. package/dist/ai/src/telemetry/delegation-telemetry.d.ts +287 -0
  340. package/dist/ai/src/telemetry/delegation-telemetry.d.ts.map +1 -0
  341. package/dist/ai/src/telemetry/delegation-telemetry.js +389 -0
  342. package/dist/ai/src/telemetry/delegation-telemetry.js.map +1 -0
  343. package/dist/ai/src/telemetry/index.d.ts +48 -0
  344. package/dist/ai/src/telemetry/index.d.ts.map +1 -0
  345. package/dist/ai/src/telemetry/index.js +48 -0
  346. package/dist/ai/src/telemetry/index.js.map +1 -0
  347. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts +67 -0
  348. package/dist/ai/src/telemetry/runtime-telemetry-integration.d.ts.map +1 -0
  349. package/dist/ai/src/telemetry/runtime-telemetry-integration.js +415 -0
  350. package/dist/ai/src/telemetry/runtime-telemetry-integration.js.map +1 -0
  351. package/dist/ai/src/telemetry/telemetry-utils.d.ts +119 -0
  352. package/dist/ai/src/telemetry/telemetry-utils.d.ts.map +1 -0
  353. package/dist/ai/src/telemetry/telemetry-utils.js +250 -0
  354. package/dist/ai/src/telemetry/telemetry-utils.js.map +1 -0
  355. package/dist/ai/src/types/agent-capabilities.d.ts +227 -0
  356. package/dist/ai/src/types/agent-capabilities.d.ts.map +1 -0
  357. package/dist/ai/src/types/agent-capabilities.js +11 -0
  358. package/dist/ai/src/types/agent-capabilities.js.map +1 -0
  359. package/dist/ai/src/types/context-verification.d.ts +158 -0
  360. package/dist/ai/src/types/context-verification.d.ts.map +1 -0
  361. package/dist/ai/src/types/context-verification.js +73 -0
  362. package/dist/ai/src/types/context-verification.js.map +1 -0
  363. package/dist/ai/src/types/delegation-contracts.d.ts +296 -0
  364. package/dist/ai/src/types/delegation-contracts.d.ts.map +1 -0
  365. package/dist/ai/src/types/delegation-contracts.js +17 -0
  366. package/dist/ai/src/types/delegation-contracts.js.map +1 -0
  367. package/dist/ai/src/validation-pipeline-integration.d.ts +266 -0
  368. package/dist/ai/src/validation-pipeline-integration.d.ts.map +1 -0
  369. package/dist/ai/src/validation-pipeline-integration.js +695 -0
  370. package/dist/ai/src/validation-pipeline-integration.js.map +1 -0
  371. package/dist/ai/src/verification/multi-modal-formatters.d.ts +57 -0
  372. package/dist/ai/src/verification/multi-modal-formatters.d.ts.map +1 -0
  373. package/dist/ai/src/verification/multi-modal-formatters.js +655 -0
  374. package/dist/ai/src/verification/multi-modal-formatters.js.map +1 -0
  375. package/dist/ai/src/verification/output-formatter.d.ts +186 -0
  376. package/dist/ai/src/verification/output-formatter.d.ts.map +1 -0
  377. package/dist/ai/src/verification/output-formatter.js +296 -0
  378. package/dist/ai/src/verification/output-formatter.js.map +1 -0
  379. package/dist/ai/src/verification/parser-integration.d.ts +137 -0
  380. package/dist/ai/src/verification/parser-integration.d.ts.map +1 -0
  381. package/dist/ai/src/verification/parser-integration.js +273 -0
  382. package/dist/ai/src/verification/parser-integration.js.map +1 -0
  383. package/dist/ai/types/agent-capabilities.d.ts +387 -0
  384. package/dist/ai/types/agent-capabilities.d.ts.map +1 -0
  385. package/dist/ai/types/agent-capabilities.js +32 -0
  386. package/dist/ai/types/agent-capabilities.js.map +1 -0
  387. package/dist/ai/types/delegation-contracts.d.ts +291 -0
  388. package/dist/ai/types/delegation-contracts.d.ts.map +1 -0
  389. package/dist/ai/types/delegation-contracts.js +14 -0
  390. package/dist/ai/types/delegation-contracts.js.map +1 -0
  391. package/dist/ai/types/index.d.ts +4 -1
  392. package/dist/ai/types/index.d.ts.map +1 -1
  393. package/dist/ai/types/index.js +4 -1
  394. package/dist/ai/types/index.js.map +1 -1
  395. package/dist/ai/types/permission-tokens.d.ts +365 -0
  396. package/dist/ai/types/permission-tokens.d.ts.map +1 -0
  397. package/dist/ai/types/permission-tokens.js +13 -0
  398. package/dist/ai/types/permission-tokens.js.map +1 -0
  399. package/dist/ai/types/security-middleware.d.ts +130 -0
  400. package/dist/ai/types/security-middleware.d.ts.map +1 -0
  401. package/dist/ai/types/security-middleware.js +13 -0
  402. package/dist/ai/types/security-middleware.js.map +1 -0
  403. package/dist/ai/utils/storage.d.ts.map +1 -1
  404. package/dist/ai/utils/storage.js +6 -3
  405. package/dist/ai/utils/storage.js.map +1 -1
  406. package/dist/ai/validation/validation-framework.js +1 -1
  407. package/dist/ai/verification/policy-framework.d.ts +161 -0
  408. package/dist/ai/verification/policy-framework.d.ts.map +1 -0
  409. package/dist/ai/verification/policy-framework.js +436 -0
  410. package/dist/ai/verification/policy-framework.js.map +1 -0
  411. package/package.json +36 -8
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * DCYFR Telemetry Dashboard CLI
4
+ *
5
+ * Provides command-line interface for viewing telemetry data,
6
+ * cost summaries, and model usage breakdowns.
7
+ *
8
+ * Usage:
9
+ * npx dcyfr telemetry --agent <name> --period today
10
+ * npx dcyfr telemetry --breakdown models
11
+ * npx dcyfr telemetry --export data.csv
12
+ */
13
+ interface TelemetryRecord {
14
+ sessionId: string;
15
+ agentType: string;
16
+ taskType: string;
17
+ description: string;
18
+ startTime: string;
19
+ endTime: string;
20
+ status: 'success' | 'failed' | 'timeout';
21
+ modelUsed?: string;
22
+ inputTokens: number;
23
+ outputTokens: number;
24
+ totalCost: number;
25
+ duration: number;
26
+ }
27
+ interface CostSummary {
28
+ taskCount: number;
29
+ totalCost: number;
30
+ avgLatency: number;
31
+ successRate: number;
32
+ }
33
+ interface ModelBreakdown {
34
+ model: string;
35
+ totalTokens: number;
36
+ totalCost: number;
37
+ callCount: number;
38
+ }
39
+ /**
40
+ * Runtime validation tool
41
+ */
42
+ export declare class RuntimeValidator {
43
+ private displayProviderStatus;
44
+ private displayProviderErrors;
45
+ private validateProviders;
46
+ private validateMemoryProviders;
47
+ private validateTelemetryDatabase;
48
+ private displayValidationSummary;
49
+ /**
50
+ * Validate the complete runtime environment
51
+ */
52
+ validateRuntime(): Promise<{
53
+ valid: boolean;
54
+ providers: {
55
+ configured: number;
56
+ available: number;
57
+ total: number;
58
+ };
59
+ memory: {
60
+ configured: boolean;
61
+ };
62
+ telemetry: {
63
+ configured: boolean;
64
+ };
65
+ issues: string[];
66
+ }>;
67
+ /**
68
+ * Display provider setup help
69
+ */
70
+ displayProviderSetup(): void;
71
+ }
72
+ /**
73
+ * Telemetry Dashboard CLI
74
+ */
75
+ export declare class TelemetryDashboard {
76
+ private dbPath;
77
+ constructor();
78
+ /**
79
+ * Load sqlite3.Database constructor lazily so sqlite3 remains optional
80
+ */
81
+ private loadDatabaseConstructor;
82
+ /**
83
+ * Set custom database path
84
+ */
85
+ setDatabasePath(path: string): void;
86
+ /**
87
+ * Connect to SQLite telemetry database
88
+ */
89
+ private connectDatabase;
90
+ /**
91
+ * Close database connection
92
+ */
93
+ private closeDatabase;
94
+ /**
95
+ * Convert period string to SQL date filter
96
+ */
97
+ private getDateFilter;
98
+ /**
99
+ * Get telemetry records for specific agent and period
100
+ */
101
+ getAgentTelemetry(agentName?: string, period?: string): Promise<TelemetryRecord[]>;
102
+ /**
103
+ * Calculate cost summary from telemetry records
104
+ */
105
+ calculateCostSummary(records: TelemetryRecord[]): CostSummary;
106
+ /**
107
+ * Get model usage breakdown
108
+ */
109
+ getModelBreakdown(): Promise<ModelBreakdown[]>;
110
+ /**
111
+ * Display cost summary table
112
+ */
113
+ displayCostSummary(summary: CostSummary): void;
114
+ /**
115
+ * Display model breakdown table
116
+ */
117
+ displayModelBreakdown(breakdowns: ModelBreakdown[]): void;
118
+ /**
119
+ * Export telemetry data to CSV file
120
+ */
121
+ exportToCsv(filename: string, agentName?: string, period?: string): Promise<void>;
122
+ /**
123
+ * Escape CSV field (handle commas, quotes, newlines)
124
+ */
125
+ private escapeCsvField;
126
+ /**
127
+ * Display agent telemetry data
128
+ */
129
+ displayAgentTelemetry(agentName?: string, period?: string): Promise<void>;
130
+ }
131
+ export {};
132
+ //# sourceMappingURL=telemetry-dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-dashboard.d.ts","sourceRoot":"","sources":["../../../../packages/ai/src/cli/telemetry-dashboard.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAoBH,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,qBAAqB;YASf,iBAAiB;IAoC/B,OAAO,CAAC,uBAAuB;YA4BjB,yBAAyB;IAevC,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACU,eAAe,IAAI,OAAO,CAAC;QACtC,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QACpE,MAAM,EAAE;YAAE,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC;QAChC,SAAS,EAAE;YAAE,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IA2BF;;OAEG;IACI,oBAAoB,IAAI,IAAI;CAoBpC;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;;IAOvB;;OAEG;YACW,uBAAuB;IAkBrC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;YACW,eAAe;IAc7B;;OAEG;YACW,aAAa;IAY3B;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACG,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoDxF;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,WAAW;IAuB7D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA8BpD;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAU9C;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI;IAiBzD;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDvF;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACG,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsChF"}
@@ -0,0 +1,565 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * DCYFR Telemetry Dashboard CLI
4
+ *
5
+ * Provides command-line interface for viewing telemetry data,
6
+ * cost summaries, and model usage breakdowns.
7
+ *
8
+ * Usage:
9
+ * npx dcyfr telemetry --agent <name> --period today
10
+ * npx dcyfr telemetry --breakdown models
11
+ * npx dcyfr telemetry --export data.csv
12
+ */
13
+ import { Command } from 'commander';
14
+ import { promises as fs } from 'fs';
15
+ import { join } from 'path';
16
+ import { homedir } from 'os';
17
+ import { ProviderRegistry } from '../../core/provider-registry.js';
18
+ /**
19
+ * Runtime validation tool
20
+ */
21
+ export class RuntimeValidator {
22
+ displayProviderStatus(envVars, providerValidation) {
23
+ console.log('\nšŸ“Š Provider Status:');
24
+ const setupInstructions = ProviderRegistry.getProviderSetupInstructions();
25
+ for (const provider of Object.keys(envVars)) {
26
+ const available = providerValidation.available.includes(provider);
27
+ const configured = providerValidation.configured.includes(provider);
28
+ const status = available ? '🟢' : configured ? '🟔' : 'šŸ”“';
29
+ const statusText = available ? 'Available' : configured ? 'Configured' : 'Not configured';
30
+ console.log(` ${status} ${provider}: ${statusText}`);
31
+ if (!configured && setupInstructions[provider]) {
32
+ console.log(` Missing: ${setupInstructions[provider].environmentVariables.join(', ')}`);
33
+ }
34
+ }
35
+ }
36
+ displayProviderErrors(errors) {
37
+ if (errors.length === 0)
38
+ return;
39
+ console.log('\nāš ļø Provider Errors:');
40
+ for (const error of errors) {
41
+ console.log(` • ${error.provider}: ${error.error}`);
42
+ }
43
+ }
44
+ async validateProviders(issues) {
45
+ console.log('šŸ“” Checking Provider Configuration...');
46
+ const providerRegistry = new ProviderRegistry({
47
+ primaryProvider: 'openai',
48
+ fallbackChain: ['anthropic', 'ollama'],
49
+ autoReturn: false,
50
+ healthCheckInterval: 60000
51
+ });
52
+ const providerValidation = await providerRegistry.validate();
53
+ const envVars = ProviderRegistry.discoverEnvironmentVariables();
54
+ console.log(` āœ“ Found ${providerValidation.configured.length} configured providers`);
55
+ console.log(` āœ“ ${providerValidation.available.length} providers available`);
56
+ if (providerValidation.configured.length === 0) {
57
+ issues.push('No providers configured - set API keys for OpenAI, Anthropic, or setup Ollama');
58
+ }
59
+ if (providerValidation.available.length === 0) {
60
+ issues.push('No providers available - check API keys and network connectivity');
61
+ }
62
+ this.displayProviderStatus(envVars, providerValidation);
63
+ this.displayProviderErrors(providerValidation.errors);
64
+ return {
65
+ configured: providerValidation.configured.length,
66
+ available: providerValidation.available.length,
67
+ total: Object.keys(envVars).length,
68
+ };
69
+ }
70
+ validateMemoryProviders(issues) {
71
+ console.log('\n🧠 Checking Memory Configuration...');
72
+ let memoryConfigured = false;
73
+ try {
74
+ const hasUpstash = process.env.UPSTASH_REDIS_REST_URL && process.env.UPSTASH_REDIS_REST_TOKEN;
75
+ const hasMem0 = process.env.MEM0_API_KEY;
76
+ if (hasUpstash) {
77
+ console.log(' āœ“ Upstash Redis configured');
78
+ memoryConfigured = true;
79
+ }
80
+ else {
81
+ console.log(' šŸ”“ Upstash Redis not configured');
82
+ }
83
+ if (hasMem0) {
84
+ console.log(' āœ“ Mem0 AI configured');
85
+ memoryConfigured = true;
86
+ }
87
+ else {
88
+ console.log(' šŸ”“ Mem0 AI not configured');
89
+ }
90
+ if (!memoryConfigured) {
91
+ issues.push('Memory system not configured - set up Upstash Redis or Mem0 AI');
92
+ console.log(' āš ļø No memory providers configured');
93
+ }
94
+ }
95
+ catch (error) {
96
+ issues.push(`Memory validation failed: ${error instanceof Error ? error.message : error}`);
97
+ }
98
+ return memoryConfigured;
99
+ }
100
+ async validateTelemetryDatabase() {
101
+ console.log('\nšŸ“ˆ Checking Telemetry Configuration...');
102
+ const telemetryPath = join(homedir(), '.dcyfr', 'telemetry.db');
103
+ try {
104
+ await fs.access(telemetryPath);
105
+ console.log(` āœ“ Telemetry database found: ${telemetryPath}`);
106
+ return true;
107
+ }
108
+ catch {
109
+ console.log(` 🟔 Telemetry database not found: ${telemetryPath}`);
110
+ console.log(` ā„¹ļø Database will be created on first use`);
111
+ return false;
112
+ }
113
+ }
114
+ displayValidationSummary(valid, issues) {
115
+ console.log('\nšŸ“‹ Validation Summary:');
116
+ if (valid) {
117
+ console.log(' šŸŽ‰ Runtime environment is properly configured!');
118
+ }
119
+ else {
120
+ console.log(' āš ļø Issues found:');
121
+ for (const issue of issues) {
122
+ console.log(` • ${issue}`);
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Validate the complete runtime environment
128
+ */
129
+ async validateRuntime() {
130
+ const issues = [];
131
+ console.log('šŸ” Validating DCYFR Runtime Environment...\n');
132
+ // 1. Validate Provider Configuration
133
+ const providerSummary = await this.validateProviders(issues);
134
+ // 2. Validate Memory Configuration
135
+ const memoryConfigured = this.validateMemoryProviders(issues);
136
+ // 3. Validate Telemetry Configuration
137
+ const telemetryConfigured = await this.validateTelemetryDatabase();
138
+ // 4. Display Summary
139
+ const valid = issues.length === 0;
140
+ this.displayValidationSummary(valid, issues);
141
+ return {
142
+ valid,
143
+ providers: providerSummary,
144
+ memory: { configured: memoryConfigured },
145
+ telemetry: { configured: telemetryConfigured },
146
+ issues
147
+ };
148
+ }
149
+ /**
150
+ * Display provider setup help
151
+ */
152
+ displayProviderSetup() {
153
+ console.log('šŸ”§ Provider Setup Instructions\n');
154
+ const instructions = ProviderRegistry.getProviderSetupInstructions();
155
+ for (const [provider, info] of Object.entries(instructions)) {
156
+ console.log(`šŸ“” ${provider.toUpperCase()}`);
157
+ console.log(` ${info.description}`);
158
+ if (info.environmentVariables.length > 0) {
159
+ console.log(` Environment Variables: ${info.environmentVariables.join(', ')}`);
160
+ }
161
+ console.log(' Setup Steps:');
162
+ for (const step of info.instructions) {
163
+ console.log(` ${step}`);
164
+ }
165
+ console.log('');
166
+ }
167
+ }
168
+ }
169
+ /**
170
+ * Telemetry Dashboard CLI
171
+ */
172
+ export class TelemetryDashboard {
173
+ dbPath;
174
+ constructor() {
175
+ // Default telemetry database location
176
+ this.dbPath = join(homedir(), '.dcyfr', 'telemetry.db');
177
+ }
178
+ /**
179
+ * Load sqlite3.Database constructor lazily so sqlite3 remains optional
180
+ */
181
+ async loadDatabaseConstructor() {
182
+ try {
183
+ const sqlite3Module = await import('sqlite3');
184
+ const sqlite3 = sqlite3Module.default ?? sqlite3Module;
185
+ if (!sqlite3?.Database) {
186
+ throw new Error('sqlite3 module does not export Database');
187
+ }
188
+ return sqlite3.Database;
189
+ }
190
+ catch (error) {
191
+ throw new Error('sqlite3 package not installed. Run: npm install sqlite3\n' +
192
+ `Original error: ${error instanceof Error ? error.message : String(error)}`);
193
+ }
194
+ }
195
+ /**
196
+ * Set custom database path
197
+ */
198
+ setDatabasePath(path) {
199
+ this.dbPath = path;
200
+ }
201
+ /**
202
+ * Connect to SQLite telemetry database
203
+ */
204
+ async connectDatabase() {
205
+ const Database = await this.loadDatabaseConstructor();
206
+ return new Promise((resolve, reject) => {
207
+ const db = new Database(this.dbPath, (err) => {
208
+ if (err) {
209
+ reject(new Error(`Failed to connect to telemetry database at ${this.dbPath}: ${err.message}`));
210
+ }
211
+ else {
212
+ resolve(db);
213
+ }
214
+ });
215
+ });
216
+ }
217
+ /**
218
+ * Close database connection
219
+ */
220
+ async closeDatabase(db) {
221
+ return new Promise((resolve, reject) => {
222
+ db.close((err) => {
223
+ if (err) {
224
+ reject(err);
225
+ }
226
+ else {
227
+ resolve();
228
+ }
229
+ });
230
+ });
231
+ }
232
+ /**
233
+ * Convert period string to SQL date filter
234
+ */
235
+ getDateFilter(period) {
236
+ const now = new Date();
237
+ switch (period.toLowerCase()) {
238
+ case 'today':
239
+ const today = now.toISOString().split('T')[0];
240
+ return `DATE(start_time) = '${today}'`;
241
+ case 'yesterday':
242
+ const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000);
243
+ const yesterdayStr = yesterday.toISOString().split('T')[0];
244
+ return `DATE(start_time) = '${yesterdayStr}'`;
245
+ case 'week':
246
+ const weekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
247
+ return `start_time >= '${weekAgo.toISOString()}'`;
248
+ case 'month':
249
+ const monthAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
250
+ return `start_time >= '${monthAgo.toISOString()}'`;
251
+ default:
252
+ throw new Error(`Unsupported period: ${period}. Use: today, yesterday, week, month`);
253
+ }
254
+ }
255
+ /**
256
+ * Get telemetry records for specific agent and period
257
+ */
258
+ async getAgentTelemetry(agentName, period) {
259
+ const db = await this.connectDatabase();
260
+ try {
261
+ let whereClause = '';
262
+ const conditions = [];
263
+ if (agentName) {
264
+ conditions.push(`agent_type = '${agentName}'`);
265
+ }
266
+ if (period) {
267
+ conditions.push(this.getDateFilter(period));
268
+ }
269
+ if (conditions.length > 0) {
270
+ whereClause = `WHERE ${conditions.join(' AND ')}`;
271
+ }
272
+ const query = `
273
+ SELECT
274
+ session_id as sessionId,
275
+ agent_type as agentType,
276
+ task_type as taskType,
277
+ description,
278
+ start_time as startTime,
279
+ end_time as endTime,
280
+ status,
281
+ model_used as modelUsed,
282
+ input_tokens as inputTokens,
283
+ output_tokens as outputTokens,
284
+ total_cost as totalCost,
285
+ duration
286
+ FROM telemetry_sessions
287
+ ${whereClause}
288
+ ORDER BY start_time DESC
289
+ `;
290
+ return new Promise((resolve, reject) => {
291
+ db.all(query, (err, rows) => {
292
+ if (err) {
293
+ reject(err);
294
+ }
295
+ else {
296
+ resolve(rows);
297
+ }
298
+ });
299
+ });
300
+ }
301
+ finally {
302
+ await this.closeDatabase(db);
303
+ }
304
+ }
305
+ /**
306
+ * Calculate cost summary from telemetry records
307
+ */
308
+ calculateCostSummary(records) {
309
+ if (records.length === 0) {
310
+ return {
311
+ taskCount: 0,
312
+ totalCost: 0,
313
+ avgLatency: 0,
314
+ successRate: 0
315
+ };
316
+ }
317
+ const totalCost = records.reduce((sum, record) => sum + record.totalCost, 0);
318
+ const avgLatency = records.reduce((sum, record) => sum + record.duration, 0) / records.length;
319
+ const successCount = records.filter(record => record.status === 'success').length;
320
+ const successRate = (successCount / records.length) * 100;
321
+ return {
322
+ taskCount: records.length,
323
+ totalCost,
324
+ avgLatency,
325
+ successRate
326
+ };
327
+ }
328
+ /**
329
+ * Get model usage breakdown
330
+ */
331
+ async getModelBreakdown() {
332
+ const db = await this.connectDatabase();
333
+ try {
334
+ const query = `
335
+ SELECT
336
+ model_used as model,
337
+ SUM(input_tokens + output_tokens) as totalTokens,
338
+ SUM(total_cost) as totalCost,
339
+ COUNT(*) as callCount
340
+ FROM telemetry_sessions
341
+ WHERE model_used IS NOT NULL
342
+ GROUP BY model_used
343
+ ORDER BY totalCost DESC
344
+ `;
345
+ return new Promise((resolve, reject) => {
346
+ db.all(query, (err, rows) => {
347
+ if (err) {
348
+ reject(err);
349
+ }
350
+ else {
351
+ resolve(rows);
352
+ }
353
+ });
354
+ });
355
+ }
356
+ finally {
357
+ await this.closeDatabase(db);
358
+ }
359
+ }
360
+ /**
361
+ * Display cost summary table
362
+ */
363
+ displayCostSummary(summary) {
364
+ console.log('\nšŸ“Š Cost Summary');
365
+ console.log('='.repeat(60));
366
+ console.log(`Tasks: ${summary.taskCount.toLocaleString()}`);
367
+ console.log(`Total Cost: $${summary.totalCost.toFixed(4)}`);
368
+ console.log(`Avg Latency: ${summary.avgLatency.toFixed(0)}ms`);
369
+ console.log(`Success Rate: ${summary.successRate.toFixed(1)}%`);
370
+ console.log('='.repeat(60));
371
+ }
372
+ /**
373
+ * Display model breakdown table
374
+ */
375
+ displayModelBreakdown(breakdowns) {
376
+ console.log('\nšŸ¤– Model Usage Breakdown');
377
+ console.log('='.repeat(80));
378
+ console.log('Model'.padEnd(20) + 'Total Tokens'.padEnd(15) + 'Total Cost'.padEnd(12) + 'Call Count');
379
+ console.log('-'.repeat(80));
380
+ for (const breakdown of breakdowns) {
381
+ const model = breakdown.model.padEnd(20);
382
+ const tokens = breakdown.totalTokens.toLocaleString().padEnd(15);
383
+ const cost = `$${breakdown.totalCost.toFixed(4)}`.padEnd(12);
384
+ const calls = breakdown.callCount.toLocaleString();
385
+ console.log(`${model}${tokens}${cost}${calls}`);
386
+ }
387
+ console.log('='.repeat(80));
388
+ }
389
+ /**
390
+ * Export telemetry data to CSV file
391
+ */
392
+ async exportToCsv(filename, agentName, period) {
393
+ const records = await this.getAgentTelemetry(agentName, period);
394
+ if (records.length === 0) {
395
+ console.log('No telemetry data found to export.');
396
+ return;
397
+ }
398
+ // CSV headers
399
+ const headers = [
400
+ 'Session ID',
401
+ 'Agent Type',
402
+ 'Task Type',
403
+ 'Description',
404
+ 'Start Time',
405
+ 'End Time',
406
+ 'Status',
407
+ 'Model Used',
408
+ 'Input Tokens',
409
+ 'Output Tokens',
410
+ 'Total Cost',
411
+ 'Duration (ms)'
412
+ ];
413
+ // CSV rows
414
+ const rows = records.map(record => [
415
+ this.escapeCsvField(record.sessionId),
416
+ this.escapeCsvField(record.agentType),
417
+ this.escapeCsvField(record.taskType),
418
+ this.escapeCsvField(record.description),
419
+ this.escapeCsvField(record.startTime),
420
+ this.escapeCsvField(record.endTime),
421
+ this.escapeCsvField(record.status),
422
+ this.escapeCsvField(record.modelUsed || ''),
423
+ record.inputTokens.toString(),
424
+ record.outputTokens.toString(),
425
+ record.totalCost.toString(),
426
+ record.duration.toString()
427
+ ]);
428
+ // Combine headers and rows
429
+ const csvContent = [
430
+ headers.join(','),
431
+ ...rows.map(row => row.join(','))
432
+ ].join('\n');
433
+ // Write to file
434
+ await fs.writeFile(filename, csvContent, 'utf-8');
435
+ console.log(`āœ… Exported ${records.length} records to ${filename}`);
436
+ }
437
+ /**
438
+ * Escape CSV field (handle commas, quotes, newlines)
439
+ */
440
+ escapeCsvField(field) {
441
+ if (!field) {
442
+ return '';
443
+ }
444
+ if (field.includes(',') || field.includes('"') || field.includes('\n')) {
445
+ return `"${field.replace(/"/g, '""')}"`;
446
+ }
447
+ return field;
448
+ }
449
+ /**
450
+ * Display agent telemetry data
451
+ */
452
+ async displayAgentTelemetry(agentName, period) {
453
+ try {
454
+ const records = await this.getAgentTelemetry(agentName, period);
455
+ if (records.length === 0) {
456
+ console.log('No telemetry data found for the specified criteria.');
457
+ return;
458
+ }
459
+ // Display summary
460
+ const summary = this.calculateCostSummary(records);
461
+ this.displayCostSummary(summary);
462
+ // Display recent records (limit to 10)
463
+ console.log('\nšŸ“‹ Recent Activity');
464
+ console.log('='.repeat(100));
465
+ const recentRecords = records.slice(0, 10);
466
+ for (const record of recentRecords) {
467
+ const time = new Date(record.startTime).toLocaleString();
468
+ const cost = `$${record.totalCost.toFixed(4)}`;
469
+ const status = record.status === 'success' ? 'āœ…' : 'āŒ';
470
+ const duration = `${record.duration}ms`;
471
+ console.log(`${status} ${time} | ${record.agentType} | ${cost} | ${duration}`);
472
+ console.log(` ${record.description.substring(0, 80)}${record.description.length > 80 ? '...' : ''}`);
473
+ console.log('');
474
+ }
475
+ if (records.length > 10) {
476
+ console.log(`... and ${records.length - 10} more records`);
477
+ }
478
+ console.log('='.repeat(100));
479
+ }
480
+ catch (error) {
481
+ console.error(`āŒ Error retrieving telemetry data: ${error instanceof Error ? error.message : error}`);
482
+ process.exit(1);
483
+ }
484
+ }
485
+ }
486
+ /**
487
+ * Main CLI program
488
+ */
489
+ async function main() {
490
+ const program = new Command();
491
+ const dashboard = new TelemetryDashboard();
492
+ const validator = new RuntimeValidator();
493
+ program
494
+ .name('dcyfr')
495
+ .description('DCYFR Telemetry Dashboard - View agent performance metrics')
496
+ .version('1.0.0');
497
+ // Telemetry command
498
+ program
499
+ .command('telemetry')
500
+ .description('Display telemetry data and cost analysis')
501
+ .option('--agent <name>', 'Filter by agent name')
502
+ .option('--period <period>', 'Time period (today, yesterday, week, month)', 'week')
503
+ .option('--breakdown <type>', 'Show breakdown by type (models)')
504
+ .option('--export <file>', 'Export data to CSV file')
505
+ .option('--db <path>', 'Custom database path')
506
+ .action(async (options) => {
507
+ // Set custom database path if provided
508
+ if (options.db) {
509
+ dashboard.setDatabasePath(options.db);
510
+ }
511
+ try {
512
+ if (options.breakdown) {
513
+ if (options.breakdown === 'models') {
514
+ const breakdown = await dashboard.getModelBreakdown();
515
+ dashboard.displayModelBreakdown(breakdown);
516
+ }
517
+ else {
518
+ console.error(`āŒ Unsupported breakdown type: ${options.breakdown}`);
519
+ process.exit(1);
520
+ }
521
+ }
522
+ else if (options.export) {
523
+ await dashboard.exportToCsv(options.export, options.agent, options.period);
524
+ }
525
+ else {
526
+ await dashboard.displayAgentTelemetry(options.agent, options.period);
527
+ }
528
+ }
529
+ catch (error) {
530
+ console.error(`āŒ Command failed: ${error instanceof Error ? error.message : error}`);
531
+ process.exit(1);
532
+ }
533
+ });
534
+ // Validate runtime command
535
+ program
536
+ .command('validate-runtime')
537
+ .description('Validate DCYFR runtime environment and provider configuration')
538
+ .option('--setup-help', 'Show provider setup instructions')
539
+ .action(async (options) => {
540
+ try {
541
+ if (options.setupHelp) {
542
+ validator.displayProviderSetup();
543
+ }
544
+ else {
545
+ const result = await validator.validateRuntime();
546
+ if (!result.valid) {
547
+ process.exit(1);
548
+ }
549
+ }
550
+ }
551
+ catch (error) {
552
+ console.error(`āŒ Validation failed: ${error instanceof Error ? error.message : error}`);
553
+ process.exit(1);
554
+ }
555
+ });
556
+ // Parse command line arguments
557
+ program.parse();
558
+ }
559
+ if (import.meta.url === `file://${process.argv[1]}` || import.meta.url.endsWith(process.argv[1])) {
560
+ main().catch((error) => {
561
+ console.error('āŒ Unexpected error:', error);
562
+ process.exit(1);
563
+ });
564
+ }
565
+ //# sourceMappingURL=telemetry-dashboard.js.map