@xynehq/jaf 0.1.2

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 (279) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +596 -0
  3. package/dist/a2a/agent-card.d.ts +28 -0
  4. package/dist/a2a/agent-card.d.ts.map +1 -0
  5. package/dist/a2a/agent-card.js +250 -0
  6. package/dist/a2a/agent-card.js.map +1 -0
  7. package/dist/a2a/agent.d.ts +38 -0
  8. package/dist/a2a/agent.d.ts.map +1 -0
  9. package/dist/a2a/agent.js +223 -0
  10. package/dist/a2a/agent.js.map +1 -0
  11. package/dist/a2a/client.d.ts +35 -0
  12. package/dist/a2a/client.d.ts.map +1 -0
  13. package/dist/a2a/client.js +337 -0
  14. package/dist/a2a/client.js.map +1 -0
  15. package/dist/a2a/examples/client-example.d.ts +104 -0
  16. package/dist/a2a/examples/client-example.d.ts.map +1 -0
  17. package/dist/a2a/examples/client-example.js +232 -0
  18. package/dist/a2a/examples/client-example.js.map +1 -0
  19. package/dist/a2a/examples/server-example.d.ts +9 -0
  20. package/dist/a2a/examples/server-example.d.ts.map +1 -0
  21. package/dist/a2a/examples/server-example.js +209 -0
  22. package/dist/a2a/examples/server-example.js.map +1 -0
  23. package/dist/a2a/examples/weather-agent.d.ts +8 -0
  24. package/dist/a2a/examples/weather-agent.d.ts.map +1 -0
  25. package/dist/a2a/examples/weather-agent.js +232 -0
  26. package/dist/a2a/examples/weather-agent.js.map +1 -0
  27. package/dist/a2a/executor.d.ts +43 -0
  28. package/dist/a2a/executor.d.ts.map +1 -0
  29. package/dist/a2a/executor.js +507 -0
  30. package/dist/a2a/executor.js.map +1 -0
  31. package/dist/a2a/index.d.ts +378 -0
  32. package/dist/a2a/index.d.ts.map +1 -0
  33. package/dist/a2a/index.js +72 -0
  34. package/dist/a2a/index.js.map +1 -0
  35. package/dist/a2a/memory/cleanup.d.ts +58 -0
  36. package/dist/a2a/memory/cleanup.d.ts.map +1 -0
  37. package/dist/a2a/memory/cleanup.js +281 -0
  38. package/dist/a2a/memory/cleanup.js.map +1 -0
  39. package/dist/a2a/memory/factory.d.ts +38 -0
  40. package/dist/a2a/memory/factory.d.ts.map +1 -0
  41. package/dist/a2a/memory/factory.js +369 -0
  42. package/dist/a2a/memory/factory.js.map +1 -0
  43. package/dist/a2a/memory/index.d.ts +13 -0
  44. package/dist/a2a/memory/index.d.ts.map +1 -0
  45. package/dist/a2a/memory/index.js +16 -0
  46. package/dist/a2a/memory/index.js.map +1 -0
  47. package/dist/a2a/memory/providers/in-memory.d.ts +10 -0
  48. package/dist/a2a/memory/providers/in-memory.d.ts.map +1 -0
  49. package/dist/a2a/memory/providers/in-memory.js +539 -0
  50. package/dist/a2a/memory/providers/in-memory.js.map +1 -0
  51. package/dist/a2a/memory/providers/postgres.d.ts +10 -0
  52. package/dist/a2a/memory/providers/postgres.d.ts.map +1 -0
  53. package/dist/a2a/memory/providers/postgres.js +404 -0
  54. package/dist/a2a/memory/providers/postgres.js.map +1 -0
  55. package/dist/a2a/memory/providers/redis.d.ts +10 -0
  56. package/dist/a2a/memory/providers/redis.d.ts.map +1 -0
  57. package/dist/a2a/memory/providers/redis.js +435 -0
  58. package/dist/a2a/memory/providers/redis.js.map +1 -0
  59. package/dist/a2a/memory/serialization.d.ts +53 -0
  60. package/dist/a2a/memory/serialization.d.ts.map +1 -0
  61. package/dist/a2a/memory/serialization.js +233 -0
  62. package/dist/a2a/memory/serialization.js.map +1 -0
  63. package/dist/a2a/memory/types.d.ts +395 -0
  64. package/dist/a2a/memory/types.d.ts.map +1 -0
  65. package/dist/a2a/memory/types.js +85 -0
  66. package/dist/a2a/memory/types.js.map +1 -0
  67. package/dist/a2a/protocol.d.ts +38 -0
  68. package/dist/a2a/protocol.d.ts.map +1 -0
  69. package/dist/a2a/protocol.js +211 -0
  70. package/dist/a2a/protocol.js.map +1 -0
  71. package/dist/a2a/server.d.ts +343 -0
  72. package/dist/a2a/server.d.ts.map +1 -0
  73. package/dist/a2a/server.js +362 -0
  74. package/dist/a2a/server.js.map +1 -0
  75. package/dist/a2a/types.d.ts +730 -0
  76. package/dist/a2a/types.d.ts.map +1 -0
  77. package/dist/a2a/types.js +73 -0
  78. package/dist/a2a/types.js.map +1 -0
  79. package/dist/adk/agents/index.d.ts +48 -0
  80. package/dist/adk/agents/index.d.ts.map +1 -0
  81. package/dist/adk/agents/index.js +277 -0
  82. package/dist/adk/agents/index.js.map +1 -0
  83. package/dist/adk/artifacts/index.d.ts +62 -0
  84. package/dist/adk/artifacts/index.d.ts.map +1 -0
  85. package/dist/adk/artifacts/index.js +394 -0
  86. package/dist/adk/artifacts/index.js.map +1 -0
  87. package/dist/adk/config/llm-config.d.ts +75 -0
  88. package/dist/adk/config/llm-config.d.ts.map +1 -0
  89. package/dist/adk/config/llm-config.js +422 -0
  90. package/dist/adk/config/llm-config.js.map +1 -0
  91. package/dist/adk/content/index.d.ts +58 -0
  92. package/dist/adk/content/index.d.ts.map +1 -0
  93. package/dist/adk/content/index.js +220 -0
  94. package/dist/adk/content/index.js.map +1 -0
  95. package/dist/adk/examples/advanced-features.d.ts +22 -0
  96. package/dist/adk/examples/advanced-features.d.ts.map +1 -0
  97. package/dist/adk/examples/advanced-features.js +380 -0
  98. package/dist/adk/examples/advanced-features.js.map +1 -0
  99. package/dist/adk/examples/basic-agent.d.ts +28 -0
  100. package/dist/adk/examples/basic-agent.d.ts.map +1 -0
  101. package/dist/adk/examples/basic-agent.js +207 -0
  102. package/dist/adk/examples/basic-agent.js.map +1 -0
  103. package/dist/adk/examples/multi-agent.d.ts +24 -0
  104. package/dist/adk/examples/multi-agent.d.ts.map +1 -0
  105. package/dist/adk/examples/multi-agent.js +321 -0
  106. package/dist/adk/examples/multi-agent.js.map +1 -0
  107. package/dist/adk/examples/streaming-example.d.ts +9 -0
  108. package/dist/adk/examples/streaming-example.d.ts.map +1 -0
  109. package/dist/adk/examples/streaming-example.js +193 -0
  110. package/dist/adk/examples/streaming-example.js.map +1 -0
  111. package/dist/adk/index.d.ts +65 -0
  112. package/dist/adk/index.d.ts.map +1 -0
  113. package/dist/adk/index.js +251 -0
  114. package/dist/adk/index.js.map +1 -0
  115. package/dist/adk/models.d.ts +338 -0
  116. package/dist/adk/models.d.ts.map +1 -0
  117. package/dist/adk/models.js +466 -0
  118. package/dist/adk/models.js.map +1 -0
  119. package/dist/adk/providers/error-handler.d.ts +100 -0
  120. package/dist/adk/providers/error-handler.d.ts.map +1 -0
  121. package/dist/adk/providers/error-handler.js +289 -0
  122. package/dist/adk/providers/error-handler.js.map +1 -0
  123. package/dist/adk/providers/llm-service.d.ts +41 -0
  124. package/dist/adk/providers/llm-service.d.ts.map +1 -0
  125. package/dist/adk/providers/llm-service.js +520 -0
  126. package/dist/adk/providers/llm-service.js.map +1 -0
  127. package/dist/adk/providers/type-converters.d.ts +34 -0
  128. package/dist/adk/providers/type-converters.d.ts.map +1 -0
  129. package/dist/adk/providers/type-converters.js +436 -0
  130. package/dist/adk/providers/type-converters.js.map +1 -0
  131. package/dist/adk/runners/index.d.ts +33 -0
  132. package/dist/adk/runners/index.d.ts.map +1 -0
  133. package/dist/adk/runners/index.js +466 -0
  134. package/dist/adk/runners/index.js.map +1 -0
  135. package/dist/adk/schemas/index.d.ts +85 -0
  136. package/dist/adk/schemas/index.d.ts.map +1 -0
  137. package/dist/adk/schemas/index.js +363 -0
  138. package/dist/adk/schemas/index.js.map +1 -0
  139. package/dist/adk/sessions/examples/session-provider-usage.d.ts +10 -0
  140. package/dist/adk/sessions/examples/session-provider-usage.d.ts.map +1 -0
  141. package/dist/adk/sessions/examples/session-provider-usage.js +145 -0
  142. package/dist/adk/sessions/examples/session-provider-usage.js.map +1 -0
  143. package/dist/adk/sessions/index.d.ts +53 -0
  144. package/dist/adk/sessions/index.d.ts.map +1 -0
  145. package/dist/adk/sessions/index.js +451 -0
  146. package/dist/adk/sessions/index.js.map +1 -0
  147. package/dist/adk/sessions/postgres-provider.d.ts +22 -0
  148. package/dist/adk/sessions/postgres-provider.d.ts.map +1 -0
  149. package/dist/adk/sessions/postgres-provider.js +293 -0
  150. package/dist/adk/sessions/postgres-provider.js.map +1 -0
  151. package/dist/adk/sessions/redis-provider.d.ts +19 -0
  152. package/dist/adk/sessions/redis-provider.d.ts.map +1 -0
  153. package/dist/adk/sessions/redis-provider.js +237 -0
  154. package/dist/adk/sessions/redis-provider.js.map +1 -0
  155. package/dist/adk/streaming/index.d.ts +76 -0
  156. package/dist/adk/streaming/index.d.ts.map +1 -0
  157. package/dist/adk/streaming/index.js +419 -0
  158. package/dist/adk/streaming/index.js.map +1 -0
  159. package/dist/adk/tools/index.d.ts +27 -0
  160. package/dist/adk/tools/index.d.ts.map +1 -0
  161. package/dist/adk/tools/index.js +506 -0
  162. package/dist/adk/tools/index.js.map +1 -0
  163. package/dist/adk/types.d.ts +351 -0
  164. package/dist/adk/types.d.ts.map +1 -0
  165. package/dist/adk/types.js +107 -0
  166. package/dist/adk/types.js.map +1 -0
  167. package/dist/core/engine.d.ts +3 -0
  168. package/dist/core/engine.d.ts.map +1 -0
  169. package/dist/core/engine.js +438 -0
  170. package/dist/core/engine.js.map +1 -0
  171. package/dist/core/errors.d.ts +8 -0
  172. package/dist/core/errors.d.ts.map +1 -0
  173. package/dist/core/errors.js +84 -0
  174. package/dist/core/errors.js.map +1 -0
  175. package/dist/core/tool-results.d.ts +57 -0
  176. package/dist/core/tool-results.d.ts.map +1 -0
  177. package/dist/core/tool-results.js +133 -0
  178. package/dist/core/tool-results.js.map +1 -0
  179. package/dist/core/tracing.d.ts +32 -0
  180. package/dist/core/tracing.d.ts.map +1 -0
  181. package/dist/core/tracing.js +132 -0
  182. package/dist/core/tracing.js.map +1 -0
  183. package/dist/core/types.d.ts +165 -0
  184. package/dist/core/types.d.ts.map +1 -0
  185. package/dist/core/types.js +3 -0
  186. package/dist/core/types.js.map +1 -0
  187. package/dist/demo/agents.d.ts +23 -0
  188. package/dist/demo/agents.d.ts.map +1 -0
  189. package/dist/demo/agents.js +69 -0
  190. package/dist/demo/agents.js.map +1 -0
  191. package/dist/demo/index.d.ts +2 -0
  192. package/dist/demo/index.d.ts.map +1 -0
  193. package/dist/demo/index.js +250 -0
  194. package/dist/demo/index.js.map +1 -0
  195. package/dist/demo/mock-provider.d.ts +22 -0
  196. package/dist/demo/mock-provider.d.ts.map +1 -0
  197. package/dist/demo/mock-provider.js +138 -0
  198. package/dist/demo/mock-provider.js.map +1 -0
  199. package/dist/demo/tools.d.ts +14 -0
  200. package/dist/demo/tools.d.ts.map +1 -0
  201. package/dist/demo/tools.js +115 -0
  202. package/dist/demo/tools.js.map +1 -0
  203. package/dist/index.d.ts +20 -0
  204. package/dist/index.d.ts.map +1 -0
  205. package/dist/index.js +30 -0
  206. package/dist/index.js.map +1 -0
  207. package/dist/memory/factory.d.ts +22 -0
  208. package/dist/memory/factory.d.ts.map +1 -0
  209. package/dist/memory/factory.js +88 -0
  210. package/dist/memory/factory.js.map +1 -0
  211. package/dist/memory/providers/in-memory.d.ts +7 -0
  212. package/dist/memory/providers/in-memory.d.ts.map +1 -0
  213. package/dist/memory/providers/in-memory.js +287 -0
  214. package/dist/memory/providers/in-memory.js.map +1 -0
  215. package/dist/memory/providers/postgres.d.ts +15 -0
  216. package/dist/memory/providers/postgres.d.ts.map +1 -0
  217. package/dist/memory/providers/postgres.js +495 -0
  218. package/dist/memory/providers/postgres.js.map +1 -0
  219. package/dist/memory/providers/redis.d.ts +18 -0
  220. package/dist/memory/providers/redis.d.ts.map +1 -0
  221. package/dist/memory/providers/redis.js +354 -0
  222. package/dist/memory/providers/redis.js.map +1 -0
  223. package/dist/memory/types.d.ts +296 -0
  224. package/dist/memory/types.d.ts.map +1 -0
  225. package/dist/memory/types.js +93 -0
  226. package/dist/memory/types.js.map +1 -0
  227. package/dist/policies/handoff.d.ts +16 -0
  228. package/dist/policies/handoff.d.ts.map +1 -0
  229. package/dist/policies/handoff.js +20 -0
  230. package/dist/policies/handoff.js.map +1 -0
  231. package/dist/policies/validation.d.ts +14 -0
  232. package/dist/policies/validation.d.ts.map +1 -0
  233. package/dist/policies/validation.js +92 -0
  234. package/dist/policies/validation.js.map +1 -0
  235. package/dist/providers/mcp.d.ts +17 -0
  236. package/dist/providers/mcp.d.ts.map +1 -0
  237. package/dist/providers/mcp.js +111 -0
  238. package/dist/providers/mcp.js.map +1 -0
  239. package/dist/providers/model.d.ts +3 -0
  240. package/dist/providers/model.d.ts.map +1 -0
  241. package/dist/providers/model.js +113 -0
  242. package/dist/providers/model.js.map +1 -0
  243. package/dist/server/index.d.ts +35 -0
  244. package/dist/server/index.d.ts.map +1 -0
  245. package/dist/server/index.js +66 -0
  246. package/dist/server/index.js.map +1 -0
  247. package/dist/server/server.d.ts +12 -0
  248. package/dist/server/server.d.ts.map +1 -0
  249. package/dist/server/server.js +394 -0
  250. package/dist/server/server.js.map +1 -0
  251. package/dist/server/types.d.ts +456 -0
  252. package/dist/server/types.d.ts.map +1 -0
  253. package/dist/server/types.js +75 -0
  254. package/dist/server/types.js.map +1 -0
  255. package/dist/test-utils/db-setup.d.ts +34 -0
  256. package/dist/test-utils/db-setup.d.ts.map +1 -0
  257. package/dist/test-utils/db-setup.js +149 -0
  258. package/dist/test-utils/db-setup.js.map +1 -0
  259. package/dist/utils/logger.d.ts +63 -0
  260. package/dist/utils/logger.d.ts.map +1 -0
  261. package/dist/utils/logger.js +199 -0
  262. package/dist/utils/logger.js.map +1 -0
  263. package/dist/utils/safe-math.d.ts +31 -0
  264. package/dist/utils/safe-math.d.ts.map +1 -0
  265. package/dist/utils/safe-math.js +86 -0
  266. package/dist/utils/safe-math.js.map +1 -0
  267. package/dist/visualization/example.d.ts +9 -0
  268. package/dist/visualization/example.d.ts.map +1 -0
  269. package/dist/visualization/example.js +236 -0
  270. package/dist/visualization/example.js.map +1 -0
  271. package/dist/visualization/graphviz.d.ts +42 -0
  272. package/dist/visualization/graphviz.d.ts.map +1 -0
  273. package/dist/visualization/graphviz.js +403 -0
  274. package/dist/visualization/graphviz.js.map +1 -0
  275. package/dist/visualization/index.d.ts +10 -0
  276. package/dist/visualization/index.d.ts.map +1 -0
  277. package/dist/visualization/index.js +12 -0
  278. package/dist/visualization/index.js.map +1 -0
  279. package/package.json +99 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Test Database Setup Utilities
3
+ */
4
+ import Redis from 'ioredis';
5
+ import { Pool } from 'pg';
6
+ /**
7
+ * Create Redis client for testing
8
+ */
9
+ export const createTestRedisClient = () => {
10
+ try {
11
+ const redis = new Redis({
12
+ host: process.env.REDIS_HOST || 'localhost',
13
+ port: parseInt(process.env.REDIS_PORT || '6379'),
14
+ db: parseInt(process.env.REDIS_DB || '0'),
15
+ retryStrategy: (times) => {
16
+ if (times > 3) {
17
+ return null; // Stop retrying
18
+ }
19
+ return Math.min(times * 100, 2000);
20
+ },
21
+ maxRetriesPerRequest: 3,
22
+ enableOfflineQueue: false
23
+ });
24
+ // Test connection
25
+ redis.ping().catch(() => {
26
+ redis.disconnect();
27
+ });
28
+ return redis;
29
+ }
30
+ catch (error) {
31
+ console.warn('Failed to create Redis client for testing:', error);
32
+ return undefined;
33
+ }
34
+ };
35
+ /**
36
+ * Create PostgreSQL client for testing
37
+ */
38
+ export const createTestPostgresClient = () => {
39
+ try {
40
+ const pool = new Pool({
41
+ host: process.env.POSTGRES_HOST || 'localhost',
42
+ port: parseInt(process.env.POSTGRES_PORT || '5432'),
43
+ user: process.env.POSTGRES_USER || 'jaf_test',
44
+ password: process.env.POSTGRES_PASSWORD || 'jaf_test_password',
45
+ database: process.env.POSTGRES_DATABASE || 'jaf_test_db',
46
+ max: 10,
47
+ idleTimeoutMillis: 30000,
48
+ connectionTimeoutMillis: 2000,
49
+ });
50
+ // Test connection
51
+ pool.query('SELECT 1').catch(() => {
52
+ pool.end();
53
+ });
54
+ return pool;
55
+ }
56
+ catch (error) {
57
+ console.warn('Failed to create PostgreSQL client for testing:', error);
58
+ return undefined;
59
+ }
60
+ };
61
+ /**
62
+ * Setup test database clients
63
+ */
64
+ export const setupTestDatabases = async () => {
65
+ const clients = {};
66
+ // Try to create Redis client
67
+ const redis = createTestRedisClient();
68
+ if (redis) {
69
+ try {
70
+ await redis.ping();
71
+ clients.redis = redis;
72
+ console.log('✓ Redis connected for testing');
73
+ }
74
+ catch (error) {
75
+ console.warn('✗ Redis not available for testing');
76
+ redis.disconnect();
77
+ }
78
+ }
79
+ // Try to create PostgreSQL client
80
+ const postgres = createTestPostgresClient();
81
+ if (postgres) {
82
+ try {
83
+ await postgres.query('SELECT 1');
84
+ clients.postgres = postgres;
85
+ console.log('✓ PostgreSQL connected for testing');
86
+ }
87
+ catch (error) {
88
+ console.warn('✗ PostgreSQL not available for testing');
89
+ await postgres.end();
90
+ }
91
+ }
92
+ return clients;
93
+ };
94
+ /**
95
+ * Cleanup test database clients
96
+ */
97
+ export const cleanupTestDatabases = async (clients) => {
98
+ if (clients.redis) {
99
+ await clients.redis.flushdb();
100
+ clients.redis.disconnect();
101
+ }
102
+ if (clients.postgres) {
103
+ // Clean up test tables
104
+ try {
105
+ await clients.postgres.query(`
106
+ DROP TABLE IF EXISTS jaf_sessions CASCADE;
107
+ DROP TABLE IF EXISTS jaf_artifacts CASCADE;
108
+ DROP TABLE IF EXISTS jaf_memory CASCADE;
109
+ `);
110
+ }
111
+ catch (error) {
112
+ // Ignore cleanup errors
113
+ }
114
+ await clients.postgres.end();
115
+ }
116
+ };
117
+ /**
118
+ * Check if Redis is available
119
+ */
120
+ export const isRedisAvailable = async () => {
121
+ const redis = createTestRedisClient();
122
+ if (!redis)
123
+ return false;
124
+ try {
125
+ await redis.ping();
126
+ redis.disconnect();
127
+ return true;
128
+ }
129
+ catch {
130
+ return false;
131
+ }
132
+ };
133
+ /**
134
+ * Check if PostgreSQL is available
135
+ */
136
+ export const isPostgresAvailable = async () => {
137
+ const postgres = createTestPostgresClient();
138
+ if (!postgres)
139
+ return false;
140
+ try {
141
+ await postgres.query('SELECT 1');
142
+ await postgres.end();
143
+ return true;
144
+ }
145
+ catch {
146
+ return false;
147
+ }
148
+ };
149
+ //# sourceMappingURL=db-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-setup.js","sourceRoot":"","sources":["../../src/test-utils/db-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * JAF Logging System
3
+ *
4
+ * Provides structured logging with different levels and output targets
5
+ */
6
+ export declare enum LogLevel {
7
+ DEBUG = 0,
8
+ INFO = 1,
9
+ WARN = 2,
10
+ ERROR = 3,
11
+ FATAL = 4,
12
+ SILENT = 5
13
+ }
14
+ export interface LogEntry {
15
+ level: LogLevel;
16
+ message: string;
17
+ timestamp: Date;
18
+ context?: string;
19
+ metadata?: Record<string, unknown>;
20
+ error?: Error;
21
+ }
22
+ export interface LoggerConfig {
23
+ level?: LogLevel;
24
+ context?: string;
25
+ output?: LogOutput;
26
+ format?: LogFormat;
27
+ }
28
+ export type LogOutput = 'console' | 'silent' | 'custom';
29
+ export type LogFormat = 'json' | 'text' | 'pretty';
30
+ export interface Logger {
31
+ debug: (message: string, metadata?: Record<string, unknown>) => void;
32
+ info: (message: string, metadata?: Record<string, unknown>) => void;
33
+ warn: (message: string, metadata?: Record<string, unknown>) => void;
34
+ error: (message: string, error?: Error | unknown, metadata?: Record<string, unknown>) => void;
35
+ fatal: (message: string, error?: Error | unknown, metadata?: Record<string, unknown>) => void;
36
+ child: (context: string) => Logger;
37
+ setLevel: (level: LogLevel) => void;
38
+ }
39
+ /**
40
+ * Create a logger instance
41
+ */
42
+ export declare const createLogger: (config?: LoggerConfig) => Logger;
43
+ /**
44
+ * Default logger instance
45
+ */
46
+ export declare const logger: Logger;
47
+ /**
48
+ * Configure global logger settings
49
+ */
50
+ export declare const configureLogger: (config: {
51
+ level?: LogLevel;
52
+ output?: LogOutput;
53
+ format?: LogFormat;
54
+ }) => void;
55
+ /**
56
+ * Create a context-specific logger
57
+ */
58
+ export declare const getLogger: (context: string) => Logger;
59
+ /**
60
+ * Utility to safely stringify errors
61
+ */
62
+ export declare const stringifyError: (error: unknown) => string;
63
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;IACT,MAAM,IAAI;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACrE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACpE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACpE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9F,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9F,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACrC;AAkGD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,YAAY,KAAG,MA+DpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,QAAiB,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ;IACtC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,KAAG,IAUH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,KAAG,MAE3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAY/C,CAAC"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * JAF Logging System
3
+ *
4
+ * Provides structured logging with different levels and output targets
5
+ */
6
+ export var LogLevel;
7
+ (function (LogLevel) {
8
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
9
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
10
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
11
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
12
+ LogLevel[LogLevel["FATAL"] = 4] = "FATAL";
13
+ LogLevel[LogLevel["SILENT"] = 5] = "SILENT";
14
+ })(LogLevel || (LogLevel = {}));
15
+ // Global configuration
16
+ let globalLogLevel = LogLevel.INFO;
17
+ let globalOutput = 'console';
18
+ let globalFormat = 'text';
19
+ // Set from environment
20
+ if (process.env.LOG_LEVEL) {
21
+ const level = process.env.LOG_LEVEL.toUpperCase();
22
+ globalLogLevel = LogLevel[level] || LogLevel.INFO;
23
+ }
24
+ if (process.env.NODE_ENV === 'test') {
25
+ globalOutput = 'silent';
26
+ }
27
+ else if (process.env.NODE_ENV === 'production') {
28
+ globalFormat = 'json';
29
+ }
30
+ /**
31
+ * Format log entry based on format type
32
+ */
33
+ const formatLogEntry = (entry, format) => {
34
+ switch (format) {
35
+ case 'json':
36
+ return JSON.stringify({
37
+ level: LogLevel[entry.level],
38
+ timestamp: entry.timestamp.toISOString(),
39
+ message: entry.message,
40
+ context: entry.context,
41
+ ...entry.metadata,
42
+ ...(entry.error && {
43
+ error: {
44
+ message: entry.error.message,
45
+ stack: entry.error.stack,
46
+ name: entry.error.name
47
+ }
48
+ })
49
+ });
50
+ case 'pretty': {
51
+ const levelColors = {
52
+ [LogLevel.DEBUG]: '\x1b[36m', // Cyan
53
+ [LogLevel.INFO]: '\x1b[32m', // Green
54
+ [LogLevel.WARN]: '\x1b[33m', // Yellow
55
+ [LogLevel.ERROR]: '\x1b[31m', // Red
56
+ [LogLevel.FATAL]: '\x1b[35m', // Magenta
57
+ [LogLevel.SILENT]: '' // No color for silent
58
+ };
59
+ const reset = '\x1b[0m';
60
+ const color = levelColors[entry.level] || '';
61
+ const levelStr = LogLevel[entry.level].padEnd(5);
62
+ const contextStr = entry.context ? `[${entry.context}] ` : '';
63
+ const metaStr = entry.metadata ? ` ${JSON.stringify(entry.metadata)}` : '';
64
+ const errorStr = entry.error ? `\n ${entry.error.stack || entry.error.message}` : '';
65
+ return `${color}${levelStr}${reset} ${contextStr}${entry.message}${metaStr}${errorStr}`;
66
+ }
67
+ case 'text':
68
+ default: {
69
+ const level = LogLevel[entry.level].padEnd(5);
70
+ const context = entry.context ? `[${entry.context}] ` : '';
71
+ const meta = entry.metadata ? ` ${JSON.stringify(entry.metadata)}` : '';
72
+ const error = entry.error ? ` Error: ${entry.error.message}` : '';
73
+ return `${level} ${context}${entry.message}${meta}${error}`;
74
+ }
75
+ }
76
+ };
77
+ /**
78
+ * Output log entry based on output type
79
+ */
80
+ const outputLogEntry = (entry, output, format) => {
81
+ if (output === 'silent') {
82
+ return;
83
+ }
84
+ const formatted = formatLogEntry(entry, format);
85
+ if (output === 'console') {
86
+ switch (entry.level) {
87
+ case LogLevel.DEBUG:
88
+ case LogLevel.INFO:
89
+ console.log(formatted);
90
+ break;
91
+ case LogLevel.WARN:
92
+ console.warn(formatted);
93
+ break;
94
+ case LogLevel.ERROR:
95
+ case LogLevel.FATAL:
96
+ console.error(formatted);
97
+ break;
98
+ }
99
+ }
100
+ };
101
+ /**
102
+ * Create a logger instance
103
+ */
104
+ export const createLogger = (config) => {
105
+ const level = config?.level ?? globalLogLevel;
106
+ const context = config?.context;
107
+ const output = config?.output ?? globalOutput;
108
+ const format = config?.format ?? globalFormat;
109
+ const log = (logLevel, message, error, metadata) => {
110
+ if (logLevel < level) {
111
+ return;
112
+ }
113
+ const entry = {
114
+ level: logLevel,
115
+ message,
116
+ timestamp: new Date(),
117
+ context,
118
+ metadata,
119
+ error: error instanceof Error ? error : undefined
120
+ };
121
+ outputLogEntry(entry, output, format);
122
+ };
123
+ return {
124
+ debug: (message, metadata) => {
125
+ log(LogLevel.DEBUG, message, undefined, metadata);
126
+ },
127
+ info: (message, metadata) => {
128
+ log(LogLevel.INFO, message, undefined, metadata);
129
+ },
130
+ warn: (message, metadata) => {
131
+ log(LogLevel.WARN, message, undefined, metadata);
132
+ },
133
+ error: (message, error, metadata) => {
134
+ log(LogLevel.ERROR, message, error, metadata);
135
+ },
136
+ fatal: (message, error, metadata) => {
137
+ log(LogLevel.FATAL, message, error, metadata);
138
+ },
139
+ child: (childContext) => {
140
+ return createLogger({
141
+ level,
142
+ context: context ? `${context}:${childContext}` : childContext,
143
+ output,
144
+ format
145
+ });
146
+ },
147
+ setLevel: (newLevel) => {
148
+ // Note: This only affects this instance, not the global level
149
+ return createLogger({
150
+ level: newLevel,
151
+ context,
152
+ output,
153
+ format
154
+ });
155
+ }
156
+ };
157
+ };
158
+ /**
159
+ * Default logger instance
160
+ */
161
+ export const logger = createLogger();
162
+ /**
163
+ * Configure global logger settings
164
+ */
165
+ export const configureLogger = (config) => {
166
+ if (config.level !== undefined) {
167
+ globalLogLevel = config.level;
168
+ }
169
+ if (config.output !== undefined) {
170
+ globalOutput = config.output;
171
+ }
172
+ if (config.format !== undefined) {
173
+ globalFormat = config.format;
174
+ }
175
+ };
176
+ /**
177
+ * Create a context-specific logger
178
+ */
179
+ export const getLogger = (context) => {
180
+ return createLogger({ context });
181
+ };
182
+ /**
183
+ * Utility to safely stringify errors
184
+ */
185
+ export const stringifyError = (error) => {
186
+ if (error instanceof Error) {
187
+ return error.message;
188
+ }
189
+ if (typeof error === 'string') {
190
+ return error;
191
+ }
192
+ try {
193
+ return JSON.stringify(error);
194
+ }
195
+ catch {
196
+ return String(error);
197
+ }
198
+ };
199
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,yCAAS,CAAA;IACT,2CAAU,CAAA;AACZ,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB;AA+BD,uBAAuB;AACvB,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC;AACnC,IAAI,YAAY,GAAc,SAAS,CAAC;AACxC,IAAI,YAAY,GAAc,MAAM,CAAC;AAErC,uBAAuB;AACvB,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAClD,cAAc,GAAG,QAAQ,CAAC,KAA8B,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;IACpC,YAAY,GAAG,QAAQ,CAAC;AAC1B,CAAC;KAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IACjD,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,MAAiB,EAAU,EAAE;IACpE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;gBACxC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,KAAK,CAAC,QAAQ;gBACjB,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI;oBACjB,KAAK,EAAE;wBACL,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;wBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;wBACxB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;qBACvB;iBACF,CAAC;aACH,CAAC,CAAC;QAEL,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GAA2B;gBAC1C,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO;gBACrC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAG,QAAQ;gBACtC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAG,SAAS;gBACvC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM;gBACpC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,EAAG,UAAU;gBACzC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,sBAAsB;aAC7C,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC;YACxB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtF,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC1F,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAElE,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,MAAiB,EAAE,MAAiB,EAAQ,EAAE;IACrF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEhD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,KAAK,QAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,QAAQ,CAAC,IAAI;gBAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvB,MAAM;YACR,KAAK,QAAQ,CAAC,IAAI;gBAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,QAAQ,CAAC,KAAK,CAAC;YACpB,KAAK,QAAQ,CAAC,KAAK;gBACjB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACzB,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAqB,EAAU,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,cAAc,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,YAAY,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,YAAY,CAAC;IAE9C,MAAM,GAAG,GAAG,CAAC,QAAkB,EAAE,OAAe,EAAE,KAAuB,EAAE,QAAkC,EAAQ,EAAE;QACrH,IAAI,QAAQ,GAAG,KAAK,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,KAAK,EAAE,QAAQ;YACf,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO;YACP,QAAQ;YACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAClD,CAAC;QAEF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,OAAe,EAAE,QAAkC,EAAE,EAAE;YAC7D,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,EAAE,CAAC,OAAe,EAAE,QAAkC,EAAE,EAAE;YAC5D,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,EAAE,CAAC,OAAe,EAAE,QAAkC,EAAE,EAAE;YAC5D,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,EAAE,CAAC,OAAe,EAAE,KAAuB,EAAE,QAAkC,EAAE,EAAE;YACtF,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QAED,KAAK,EAAE,CAAC,OAAe,EAAE,KAAuB,EAAE,QAAkC,EAAE,EAAE;YACtF,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QAED,KAAK,EAAE,CAAC,YAAoB,EAAU,EAAE;YACtC,OAAO,YAAY,CAAC;gBAClB,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY;gBAC9D,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,EAAE,CAAC,QAAkB,EAAE,EAAE;YAC/B,8DAA8D;YAC9D,OAAO,YAAY,CAAC;gBAClB,KAAK,EAAE,QAAQ;gBACf,OAAO;gBACP,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAI/B,EAAQ,EAAE;IACT,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;IAChC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAU,EAAE;IACnD,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAU,EAAE;IACvD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Safe mathematical expression evaluator using mathjs
3
+ * Replaces dangerous eval() usage throughout the codebase
4
+ */
5
+ /**
6
+ * Safely evaluates mathematical expressions
7
+ * @param expression - Mathematical expression to evaluate
8
+ * @returns The result of the calculation
9
+ * @throws Error if expression is invalid or unsafe
10
+ */
11
+ export declare const evaluateMathExpression: (expression: string) => number;
12
+ /**
13
+ * Validates if a string is a safe mathematical expression
14
+ * @param expression - Expression to validate
15
+ * @returns True if expression appears safe
16
+ */
17
+ export declare const isSafeMathExpression: (expression: string) => boolean;
18
+ /**
19
+ * Common mathematical operations as safe functions
20
+ */
21
+ export declare const safeMath: {
22
+ add: (a: number, b: number) => number;
23
+ subtract: (a: number, b: number) => number;
24
+ multiply: (a: number, b: number) => number;
25
+ divide: (a: number, b: number) => number;
26
+ power: (a: number, b: number) => number;
27
+ sqrt: (a: number) => number;
28
+ abs: (a: number) => number;
29
+ round: (a: number, decimals?: number) => number;
30
+ };
31
+ //# sourceMappingURL=safe-math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-math.d.ts","sourceRoot":"","sources":["../../src/utils/safe-math.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,YAAY,MAAM,KAAG,MA4C3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,YAAY,MAAM,KAAG,OAOzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ;aACV,MAAM,KAAK,MAAM,KAAG,MAAM;kBACrB,MAAM,KAAK,MAAM,KAAG,MAAM;kBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;gBAC5B,MAAM,KAAK,MAAM,KAAG,MAAM;eAI3B,MAAM,KAAK,MAAM,KAAG,MAAM;cAC3B,MAAM,KAAG,MAAM;aAChB,MAAM,KAAG,MAAM;eACb,MAAM,aAAY,MAAM,KAAO,MAAM;CAIjD,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Safe mathematical expression evaluator using mathjs
3
+ * Replaces dangerous eval() usage throughout the codebase
4
+ */
5
+ import { evaluate } from 'mathjs';
6
+ /**
7
+ * Safely evaluates mathematical expressions
8
+ * @param expression - Mathematical expression to evaluate
9
+ * @returns The result of the calculation
10
+ * @throws Error if expression is invalid or unsafe
11
+ */
12
+ export const evaluateMathExpression = (expression) => {
13
+ // Validate input
14
+ if (!expression || typeof expression !== 'string') {
15
+ throw new Error('Invalid expression: must be a non-empty string');
16
+ }
17
+ // Remove whitespace
18
+ const cleanExpression = expression.trim();
19
+ // Check for potentially dangerous patterns
20
+ const dangerousPatterns = [
21
+ /import\s*\(/i,
22
+ /require\s*\(/i,
23
+ /eval\s*\(/i,
24
+ /function\s*\(/i,
25
+ /=>/,
26
+ /new\s+/i,
27
+ /\.\s*constructor/i,
28
+ /__proto__/i,
29
+ /prototype/i
30
+ ];
31
+ for (const pattern of dangerousPatterns) {
32
+ if (pattern.test(cleanExpression)) {
33
+ throw new Error(`Unsafe expression detected: ${pattern}`);
34
+ }
35
+ }
36
+ try {
37
+ // Use mathjs to safely evaluate the expression
38
+ const result = evaluate(cleanExpression);
39
+ // Ensure result is a number
40
+ if (typeof result !== 'number' || !isFinite(result)) {
41
+ throw new Error(`Invalid result: ${result}`);
42
+ }
43
+ return result;
44
+ }
45
+ catch (error) {
46
+ if (error instanceof Error) {
47
+ throw new Error(`Math evaluation error: ${error.message}`);
48
+ }
49
+ throw new Error('Math evaluation failed');
50
+ }
51
+ };
52
+ /**
53
+ * Validates if a string is a safe mathematical expression
54
+ * @param expression - Expression to validate
55
+ * @returns True if expression appears safe
56
+ */
57
+ export const isSafeMathExpression = (expression) => {
58
+ try {
59
+ evaluateMathExpression(expression);
60
+ return true;
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ };
66
+ /**
67
+ * Common mathematical operations as safe functions
68
+ */
69
+ export const safeMath = {
70
+ add: (a, b) => a + b,
71
+ subtract: (a, b) => a - b,
72
+ multiply: (a, b) => a * b,
73
+ divide: (a, b) => {
74
+ if (b === 0)
75
+ throw new Error('Division by zero');
76
+ return a / b;
77
+ },
78
+ power: (a, b) => Math.pow(a, b),
79
+ sqrt: (a) => Math.sqrt(a),
80
+ abs: (a) => Math.abs(a),
81
+ round: (a, decimals = 0) => {
82
+ const factor = Math.pow(10, decimals);
83
+ return Math.round(a * factor) / factor;
84
+ }
85
+ };
86
+ //# sourceMappingURL=safe-math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-math.js","sourceRoot":"","sources":["../../src/utils/safe-math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * JAF Visualization - Example Usage
3
+ *
4
+ * Example demonstrating how to use the Graphviz visualization functionality
5
+ */
6
+ import { Agent } from '../adk/types';
7
+ export declare const runVisualizationExamples: () => Promise<void>;
8
+ export declare const quickStartVisualization: (agent: Agent, outputPath?: string) => Promise<void>;
9
+ //# sourceMappingURL=example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/visualization/example.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAsB,MAAM,cAAc,CAAC;AAiJzD,eAAO,MAAM,wBAAwB,QAAa,OAAO,CAAC,IAAI,CA2F7D,CAAC;AAIF,eAAO,MAAM,uBAAuB,GAClC,OAAO,KAAK,EACZ,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAgBd,CAAC"}