@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.
- package/LICENSE +21 -0
- package/README.md +596 -0
- package/dist/a2a/agent-card.d.ts +28 -0
- package/dist/a2a/agent-card.d.ts.map +1 -0
- package/dist/a2a/agent-card.js +250 -0
- package/dist/a2a/agent-card.js.map +1 -0
- package/dist/a2a/agent.d.ts +38 -0
- package/dist/a2a/agent.d.ts.map +1 -0
- package/dist/a2a/agent.js +223 -0
- package/dist/a2a/agent.js.map +1 -0
- package/dist/a2a/client.d.ts +35 -0
- package/dist/a2a/client.d.ts.map +1 -0
- package/dist/a2a/client.js +337 -0
- package/dist/a2a/client.js.map +1 -0
- package/dist/a2a/examples/client-example.d.ts +104 -0
- package/dist/a2a/examples/client-example.d.ts.map +1 -0
- package/dist/a2a/examples/client-example.js +232 -0
- package/dist/a2a/examples/client-example.js.map +1 -0
- package/dist/a2a/examples/server-example.d.ts +9 -0
- package/dist/a2a/examples/server-example.d.ts.map +1 -0
- package/dist/a2a/examples/server-example.js +209 -0
- package/dist/a2a/examples/server-example.js.map +1 -0
- package/dist/a2a/examples/weather-agent.d.ts +8 -0
- package/dist/a2a/examples/weather-agent.d.ts.map +1 -0
- package/dist/a2a/examples/weather-agent.js +232 -0
- package/dist/a2a/examples/weather-agent.js.map +1 -0
- package/dist/a2a/executor.d.ts +43 -0
- package/dist/a2a/executor.d.ts.map +1 -0
- package/dist/a2a/executor.js +507 -0
- package/dist/a2a/executor.js.map +1 -0
- package/dist/a2a/index.d.ts +378 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +72 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/memory/cleanup.d.ts +58 -0
- package/dist/a2a/memory/cleanup.d.ts.map +1 -0
- package/dist/a2a/memory/cleanup.js +281 -0
- package/dist/a2a/memory/cleanup.js.map +1 -0
- package/dist/a2a/memory/factory.d.ts +38 -0
- package/dist/a2a/memory/factory.d.ts.map +1 -0
- package/dist/a2a/memory/factory.js +369 -0
- package/dist/a2a/memory/factory.js.map +1 -0
- package/dist/a2a/memory/index.d.ts +13 -0
- package/dist/a2a/memory/index.d.ts.map +1 -0
- package/dist/a2a/memory/index.js +16 -0
- package/dist/a2a/memory/index.js.map +1 -0
- package/dist/a2a/memory/providers/in-memory.d.ts +10 -0
- package/dist/a2a/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/a2a/memory/providers/in-memory.js +539 -0
- package/dist/a2a/memory/providers/in-memory.js.map +1 -0
- package/dist/a2a/memory/providers/postgres.d.ts +10 -0
- package/dist/a2a/memory/providers/postgres.d.ts.map +1 -0
- package/dist/a2a/memory/providers/postgres.js +404 -0
- package/dist/a2a/memory/providers/postgres.js.map +1 -0
- package/dist/a2a/memory/providers/redis.d.ts +10 -0
- package/dist/a2a/memory/providers/redis.d.ts.map +1 -0
- package/dist/a2a/memory/providers/redis.js +435 -0
- package/dist/a2a/memory/providers/redis.js.map +1 -0
- package/dist/a2a/memory/serialization.d.ts +53 -0
- package/dist/a2a/memory/serialization.d.ts.map +1 -0
- package/dist/a2a/memory/serialization.js +233 -0
- package/dist/a2a/memory/serialization.js.map +1 -0
- package/dist/a2a/memory/types.d.ts +395 -0
- package/dist/a2a/memory/types.d.ts.map +1 -0
- package/dist/a2a/memory/types.js +85 -0
- package/dist/a2a/memory/types.js.map +1 -0
- package/dist/a2a/protocol.d.ts +38 -0
- package/dist/a2a/protocol.d.ts.map +1 -0
- package/dist/a2a/protocol.js +211 -0
- package/dist/a2a/protocol.js.map +1 -0
- package/dist/a2a/server.d.ts +343 -0
- package/dist/a2a/server.d.ts.map +1 -0
- package/dist/a2a/server.js +362 -0
- package/dist/a2a/server.js.map +1 -0
- package/dist/a2a/types.d.ts +730 -0
- package/dist/a2a/types.d.ts.map +1 -0
- package/dist/a2a/types.js +73 -0
- package/dist/a2a/types.js.map +1 -0
- package/dist/adk/agents/index.d.ts +48 -0
- package/dist/adk/agents/index.d.ts.map +1 -0
- package/dist/adk/agents/index.js +277 -0
- package/dist/adk/agents/index.js.map +1 -0
- package/dist/adk/artifacts/index.d.ts +62 -0
- package/dist/adk/artifacts/index.d.ts.map +1 -0
- package/dist/adk/artifacts/index.js +394 -0
- package/dist/adk/artifacts/index.js.map +1 -0
- package/dist/adk/config/llm-config.d.ts +75 -0
- package/dist/adk/config/llm-config.d.ts.map +1 -0
- package/dist/adk/config/llm-config.js +422 -0
- package/dist/adk/config/llm-config.js.map +1 -0
- package/dist/adk/content/index.d.ts +58 -0
- package/dist/adk/content/index.d.ts.map +1 -0
- package/dist/adk/content/index.js +220 -0
- package/dist/adk/content/index.js.map +1 -0
- package/dist/adk/examples/advanced-features.d.ts +22 -0
- package/dist/adk/examples/advanced-features.d.ts.map +1 -0
- package/dist/adk/examples/advanced-features.js +380 -0
- package/dist/adk/examples/advanced-features.js.map +1 -0
- package/dist/adk/examples/basic-agent.d.ts +28 -0
- package/dist/adk/examples/basic-agent.d.ts.map +1 -0
- package/dist/adk/examples/basic-agent.js +207 -0
- package/dist/adk/examples/basic-agent.js.map +1 -0
- package/dist/adk/examples/multi-agent.d.ts +24 -0
- package/dist/adk/examples/multi-agent.d.ts.map +1 -0
- package/dist/adk/examples/multi-agent.js +321 -0
- package/dist/adk/examples/multi-agent.js.map +1 -0
- package/dist/adk/examples/streaming-example.d.ts +9 -0
- package/dist/adk/examples/streaming-example.d.ts.map +1 -0
- package/dist/adk/examples/streaming-example.js +193 -0
- package/dist/adk/examples/streaming-example.js.map +1 -0
- package/dist/adk/index.d.ts +65 -0
- package/dist/adk/index.d.ts.map +1 -0
- package/dist/adk/index.js +251 -0
- package/dist/adk/index.js.map +1 -0
- package/dist/adk/models.d.ts +338 -0
- package/dist/adk/models.d.ts.map +1 -0
- package/dist/adk/models.js +466 -0
- package/dist/adk/models.js.map +1 -0
- package/dist/adk/providers/error-handler.d.ts +100 -0
- package/dist/adk/providers/error-handler.d.ts.map +1 -0
- package/dist/adk/providers/error-handler.js +289 -0
- package/dist/adk/providers/error-handler.js.map +1 -0
- package/dist/adk/providers/llm-service.d.ts +41 -0
- package/dist/adk/providers/llm-service.d.ts.map +1 -0
- package/dist/adk/providers/llm-service.js +520 -0
- package/dist/adk/providers/llm-service.js.map +1 -0
- package/dist/adk/providers/type-converters.d.ts +34 -0
- package/dist/adk/providers/type-converters.d.ts.map +1 -0
- package/dist/adk/providers/type-converters.js +436 -0
- package/dist/adk/providers/type-converters.js.map +1 -0
- package/dist/adk/runners/index.d.ts +33 -0
- package/dist/adk/runners/index.d.ts.map +1 -0
- package/dist/adk/runners/index.js +466 -0
- package/dist/adk/runners/index.js.map +1 -0
- package/dist/adk/schemas/index.d.ts +85 -0
- package/dist/adk/schemas/index.d.ts.map +1 -0
- package/dist/adk/schemas/index.js +363 -0
- package/dist/adk/schemas/index.js.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts +10 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.js +145 -0
- package/dist/adk/sessions/examples/session-provider-usage.js.map +1 -0
- package/dist/adk/sessions/index.d.ts +53 -0
- package/dist/adk/sessions/index.d.ts.map +1 -0
- package/dist/adk/sessions/index.js +451 -0
- package/dist/adk/sessions/index.js.map +1 -0
- package/dist/adk/sessions/postgres-provider.d.ts +22 -0
- package/dist/adk/sessions/postgres-provider.d.ts.map +1 -0
- package/dist/adk/sessions/postgres-provider.js +293 -0
- package/dist/adk/sessions/postgres-provider.js.map +1 -0
- package/dist/adk/sessions/redis-provider.d.ts +19 -0
- package/dist/adk/sessions/redis-provider.d.ts.map +1 -0
- package/dist/adk/sessions/redis-provider.js +237 -0
- package/dist/adk/sessions/redis-provider.js.map +1 -0
- package/dist/adk/streaming/index.d.ts +76 -0
- package/dist/adk/streaming/index.d.ts.map +1 -0
- package/dist/adk/streaming/index.js +419 -0
- package/dist/adk/streaming/index.js.map +1 -0
- package/dist/adk/tools/index.d.ts +27 -0
- package/dist/adk/tools/index.d.ts.map +1 -0
- package/dist/adk/tools/index.js +506 -0
- package/dist/adk/tools/index.js.map +1 -0
- package/dist/adk/types.d.ts +351 -0
- package/dist/adk/types.d.ts.map +1 -0
- package/dist/adk/types.js +107 -0
- package/dist/adk/types.js.map +1 -0
- package/dist/core/engine.d.ts +3 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +438 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/errors.d.ts +8 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +84 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/tool-results.d.ts +57 -0
- package/dist/core/tool-results.d.ts.map +1 -0
- package/dist/core/tool-results.js +133 -0
- package/dist/core/tool-results.js.map +1 -0
- package/dist/core/tracing.d.ts +32 -0
- package/dist/core/tracing.d.ts.map +1 -0
- package/dist/core/tracing.js +132 -0
- package/dist/core/tracing.js.map +1 -0
- package/dist/core/types.d.ts +165 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/demo/agents.d.ts +23 -0
- package/dist/demo/agents.d.ts.map +1 -0
- package/dist/demo/agents.js +69 -0
- package/dist/demo/agents.js.map +1 -0
- package/dist/demo/index.d.ts +2 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +250 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/mock-provider.d.ts +22 -0
- package/dist/demo/mock-provider.d.ts.map +1 -0
- package/dist/demo/mock-provider.js +138 -0
- package/dist/demo/mock-provider.js.map +1 -0
- package/dist/demo/tools.d.ts +14 -0
- package/dist/demo/tools.d.ts.map +1 -0
- package/dist/demo/tools.js +115 -0
- package/dist/demo/tools.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/factory.d.ts +22 -0
- package/dist/memory/factory.d.ts.map +1 -0
- package/dist/memory/factory.js +88 -0
- package/dist/memory/factory.js.map +1 -0
- package/dist/memory/providers/in-memory.d.ts +7 -0
- package/dist/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/memory/providers/in-memory.js +287 -0
- package/dist/memory/providers/in-memory.js.map +1 -0
- package/dist/memory/providers/postgres.d.ts +15 -0
- package/dist/memory/providers/postgres.d.ts.map +1 -0
- package/dist/memory/providers/postgres.js +495 -0
- package/dist/memory/providers/postgres.js.map +1 -0
- package/dist/memory/providers/redis.d.ts +18 -0
- package/dist/memory/providers/redis.d.ts.map +1 -0
- package/dist/memory/providers/redis.js +354 -0
- package/dist/memory/providers/redis.js.map +1 -0
- package/dist/memory/types.d.ts +296 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +93 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/policies/handoff.d.ts +16 -0
- package/dist/policies/handoff.d.ts.map +1 -0
- package/dist/policies/handoff.js +20 -0
- package/dist/policies/handoff.js.map +1 -0
- package/dist/policies/validation.d.ts +14 -0
- package/dist/policies/validation.d.ts.map +1 -0
- package/dist/policies/validation.js +92 -0
- package/dist/policies/validation.js.map +1 -0
- package/dist/providers/mcp.d.ts +17 -0
- package/dist/providers/mcp.d.ts.map +1 -0
- package/dist/providers/mcp.js +111 -0
- package/dist/providers/mcp.js.map +1 -0
- package/dist/providers/model.d.ts +3 -0
- package/dist/providers/model.d.ts.map +1 -0
- package/dist/providers/model.js +113 -0
- package/dist/providers/model.js.map +1 -0
- package/dist/server/index.d.ts +35 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +66 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/server.d.ts +12 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +394 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +456 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +75 -0
- package/dist/server/types.js.map +1 -0
- package/dist/test-utils/db-setup.d.ts +34 -0
- package/dist/test-utils/db-setup.d.ts.map +1 -0
- package/dist/test-utils/db-setup.js +149 -0
- package/dist/test-utils/db-setup.js.map +1 -0
- package/dist/utils/logger.d.ts +63 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +199 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/safe-math.d.ts +31 -0
- package/dist/utils/safe-math.d.ts.map +1 -0
- package/dist/utils/safe-math.js +86 -0
- package/dist/utils/safe-math.js.map +1 -0
- package/dist/visualization/example.d.ts +9 -0
- package/dist/visualization/example.d.ts.map +1 -0
- package/dist/visualization/example.js +236 -0
- package/dist/visualization/example.js.map +1 -0
- package/dist/visualization/graphviz.d.ts +42 -0
- package/dist/visualization/graphviz.d.ts.map +1 -0
- package/dist/visualization/graphviz.js +403 -0
- package/dist/visualization/graphviz.js.map +1 -0
- package/dist/visualization/index.d.ts +10 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +12 -0
- package/dist/visualization/index.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|