@multiplayer-app/ai-agent-node 0.0.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.
- package/.env.example +45 -0
- package/README.md +611 -0
- package/config.example.json +73 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +44 -0
- package/dist/config.js.map +1 -0
- package/dist/helpers/AIHelper.d.ts +23 -0
- package/dist/helpers/AIHelper.d.ts.map +1 -0
- package/dist/helpers/AIHelper.js +326 -0
- package/dist/helpers/AIHelper.js.map +1 -0
- package/dist/helpers/AIHelper.test.d.ts +2 -0
- package/dist/helpers/AIHelper.test.d.ts.map +1 -0
- package/dist/helpers/AIHelper.test.js +332 -0
- package/dist/helpers/AIHelper.test.js.map +1 -0
- package/dist/helpers/ConfigHelper.d.ts +20 -0
- package/dist/helpers/ConfigHelper.d.ts.map +1 -0
- package/dist/helpers/ConfigHelper.js +118 -0
- package/dist/helpers/ConfigHelper.js.map +1 -0
- package/dist/helpers/ContextLimiter.d.ts +82 -0
- package/dist/helpers/ContextLimiter.d.ts.map +1 -0
- package/dist/helpers/ContextLimiter.js +165 -0
- package/dist/helpers/ContextLimiter.js.map +1 -0
- package/dist/helpers/FileHelper.d.ts +31 -0
- package/dist/helpers/FileHelper.d.ts.map +1 -0
- package/dist/helpers/FileHelper.js +175 -0
- package/dist/helpers/FileHelper.js.map +1 -0
- package/dist/helpers/SetupHelper.d.ts +5 -0
- package/dist/helpers/SetupHelper.d.ts.map +1 -0
- package/dist/helpers/SetupHelper.js +32 -0
- package/dist/helpers/SetupHelper.js.map +1 -0
- package/dist/helpers/index.d.ts +6 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +6 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/libs/index.d.ts +4 -0
- package/dist/libs/index.d.ts.map +1 -0
- package/dist/libs/index.js +4 -0
- package/dist/libs/index.js.map +1 -0
- package/dist/libs/kafka/config.d.ts +5 -0
- package/dist/libs/kafka/config.d.ts.map +1 -0
- package/dist/libs/kafka/config.js +5 -0
- package/dist/libs/kafka/config.js.map +1 -0
- package/dist/libs/kafka/consumer.d.ts +16 -0
- package/dist/libs/kafka/consumer.d.ts.map +1 -0
- package/dist/libs/kafka/consumer.js +126 -0
- package/dist/libs/kafka/consumer.js.map +1 -0
- package/dist/libs/kafka/index.d.ts +3 -0
- package/dist/libs/kafka/index.d.ts.map +1 -0
- package/dist/libs/kafka/index.js +3 -0
- package/dist/libs/kafka/index.js.map +1 -0
- package/dist/libs/kafka/kafka.d.ts +3 -0
- package/dist/libs/kafka/kafka.d.ts.map +1 -0
- package/dist/libs/kafka/kafka.js +24 -0
- package/dist/libs/kafka/kafka.js.map +1 -0
- package/dist/libs/kafka/producer.d.ts +11 -0
- package/dist/libs/kafka/producer.d.ts.map +1 -0
- package/dist/libs/kafka/producer.js +44 -0
- package/dist/libs/kafka/producer.js.map +1 -0
- package/dist/libs/logger/config.d.ts +5 -0
- package/dist/libs/logger/config.d.ts.map +1 -0
- package/dist/libs/logger/config.js +6 -0
- package/dist/libs/logger/config.js.map +1 -0
- package/dist/libs/logger/index.d.ts +10 -0
- package/dist/libs/logger/index.d.ts.map +1 -0
- package/dist/libs/logger/index.js +20 -0
- package/dist/libs/logger/index.js.map +1 -0
- package/dist/libs/logger/kafkajs-logger-creator.d.ts +12 -0
- package/dist/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
- package/dist/libs/logger/kafkajs-logger-creator.js +29 -0
- package/dist/libs/logger/kafkajs-logger-creator.js.map +1 -0
- package/dist/libs/logger/logger.d.ts +42 -0
- package/dist/libs/logger/logger.d.ts.map +1 -0
- package/dist/libs/logger/logger.js +44 -0
- package/dist/libs/logger/logger.js.map +1 -0
- package/dist/libs/s3/config.d.ts +7 -0
- package/dist/libs/s3/config.d.ts.map +1 -0
- package/dist/libs/s3/config.js +7 -0
- package/dist/libs/s3/config.js.map +1 -0
- package/dist/libs/s3/index.d.ts +4 -0
- package/dist/libs/s3/index.d.ts.map +1 -0
- package/dist/libs/s3/index.js +4 -0
- package/dist/libs/s3/index.js.map +1 -0
- package/dist/libs/s3/s3.lib.d.ts +25 -0
- package/dist/libs/s3/s3.lib.d.ts.map +1 -0
- package/dist/libs/s3/s3.lib.js +202 -0
- package/dist/libs/s3/s3.lib.js.map +1 -0
- package/dist/processors/ChatProcessor.d.ts +66 -0
- package/dist/processors/ChatProcessor.d.ts.map +1 -0
- package/dist/processors/ChatProcessor.js +610 -0
- package/dist/processors/ChatProcessor.js.map +1 -0
- package/dist/processors/ModelsProcessor.d.ts +11 -0
- package/dist/processors/ModelsProcessor.d.ts.map +1 -0
- package/dist/processors/ModelsProcessor.js +30 -0
- package/dist/processors/ModelsProcessor.js.map +1 -0
- package/dist/processors/index.d.ts +3 -0
- package/dist/processors/index.d.ts.map +1 -0
- package/dist/processors/index.js +3 -0
- package/dist/processors/index.js.map +1 -0
- package/dist/services/AIService.d.ts +48 -0
- package/dist/services/AIService.d.ts.map +1 -0
- package/dist/services/AIService.js +196 -0
- package/dist/services/AIService.js.map +1 -0
- package/dist/services/InternalEventsHandler.d.ts +21 -0
- package/dist/services/InternalEventsHandler.d.ts.map +1 -0
- package/dist/services/InternalEventsHandler.js +56 -0
- package/dist/services/InternalEventsHandler.js.map +1 -0
- package/dist/services/KafkaService.d.ts +35 -0
- package/dist/services/KafkaService.d.ts.map +1 -0
- package/dist/services/KafkaService.js +120 -0
- package/dist/services/KafkaService.js.map +1 -0
- package/dist/services/ModelFetcher.d.ts +54 -0
- package/dist/services/ModelFetcher.d.ts.map +1 -0
- package/dist/services/ModelFetcher.js +247 -0
- package/dist/services/ModelFetcher.js.map +1 -0
- package/dist/services/RedisService.d.ts +90 -0
- package/dist/services/RedisService.d.ts.map +1 -0
- package/dist/services/RedisService.js +236 -0
- package/dist/services/RedisService.js.map +1 -0
- package/dist/services/SocketService.d.ts +39 -0
- package/dist/services/SocketService.d.ts.map +1 -0
- package/dist/services/SocketService.js +128 -0
- package/dist/services/SocketService.js.map +1 -0
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -0
- package/dist/store/AgentStore.d.ts +48 -0
- package/dist/store/AgentStore.d.ts.map +1 -0
- package/dist/store/AgentStore.js +98 -0
- package/dist/store/AgentStore.js.map +1 -0
- package/dist/store/ArtifactStore.d.ts +13 -0
- package/dist/store/ArtifactStore.d.ts.map +1 -0
- package/dist/store/ArtifactStore.js +27 -0
- package/dist/store/ArtifactStore.js.map +1 -0
- package/dist/store/ConfigStore.d.ts +89 -0
- package/dist/store/ConfigStore.d.ts.map +1 -0
- package/dist/store/ConfigStore.js +214 -0
- package/dist/store/ConfigStore.js.map +1 -0
- package/dist/store/ConfigStore.test.d.ts +2 -0
- package/dist/store/ConfigStore.test.d.ts.map +1 -0
- package/dist/store/ConfigStore.test.js +259 -0
- package/dist/store/ConfigStore.test.js.map +1 -0
- package/dist/store/ModelStore.d.ts +44 -0
- package/dist/store/ModelStore.d.ts.map +1 -0
- package/dist/store/ModelStore.js +81 -0
- package/dist/store/ModelStore.js.map +1 -0
- package/dist/store/ModelStore.test.d.ts +2 -0
- package/dist/store/ModelStore.test.d.ts.map +1 -0
- package/dist/store/ModelStore.test.js +390 -0
- package/dist/store/ModelStore.test.js.map +1 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -0
- package/dist/store/index.js.map +1 -0
- package/dist/tools/generateChartTool.d.ts +24 -0
- package/dist/tools/generateChartTool.d.ts.map +1 -0
- package/dist/tools/generateChartTool.js +124 -0
- package/dist/tools/generateChartTool.js.map +1 -0
- package/dist/tools/proposeFormValuesTool.d.ts +35 -0
- package/dist/tools/proposeFormValuesTool.d.ts.map +1 -0
- package/dist/tools/proposeFormValuesTool.js +56 -0
- package/dist/tools/proposeFormValuesTool.js.map +1 -0
- package/package.json +71 -0
- package/src/config.ts +46 -0
- package/src/helpers/AIHelper.test.ts +375 -0
- package/src/helpers/AIHelper.ts +353 -0
- package/src/helpers/ConfigHelper.ts +130 -0
- package/src/helpers/ContextLimiter.ts +228 -0
- package/src/helpers/FileHelper.ts +197 -0
- package/src/helpers/SetupHelper.ts +35 -0
- package/src/helpers/index.ts +5 -0
- package/src/index.ts +18 -0
- package/src/libs/index.ts +3 -0
- package/src/libs/kafka/config.ts +4 -0
- package/src/libs/kafka/consumer.ts +161 -0
- package/src/libs/kafka/index.ts +2 -0
- package/src/libs/kafka/kafka.ts +27 -0
- package/src/libs/kafka/producer.ts +48 -0
- package/src/libs/logger/config.ts +4 -0
- package/src/libs/logger/index.ts +21 -0
- package/src/libs/logger/kafkajs-logger-creator.ts +28 -0
- package/src/libs/logger/logger.ts +60 -0
- package/src/libs/s3/config.ts +7 -0
- package/src/libs/s3/index.ts +3 -0
- package/src/libs/s3/s3.lib.ts +284 -0
- package/src/processors/ChatProcessor.ts +713 -0
- package/src/processors/ModelsProcessor.ts +34 -0
- package/src/processors/index.ts +2 -0
- package/src/services/AIService.ts +241 -0
- package/src/services/InternalEventsHandler.ts +61 -0
- package/src/services/KafkaService.ts +142 -0
- package/src/services/ModelFetcher.ts +286 -0
- package/src/services/RedisService.ts +285 -0
- package/src/services/SocketService.ts +153 -0
- package/src/services/index.ts +6 -0
- package/src/store/AgentStore.ts +138 -0
- package/src/store/ArtifactStore.ts +29 -0
- package/src/store/ConfigStore.test.ts +314 -0
- package/src/store/ConfigStore.ts +239 -0
- package/src/store/ModelStore.test.ts +473 -0
- package/src/store/ModelStore.ts +93 -0
- package/src/store/index.ts +4 -0
- package/src/tools/generateChartTool.ts +131 -0
- package/src/tools/proposeFormValuesTool.ts +67 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { tool } from 'ai'
|
|
2
|
+
import { z } from 'zod'
|
|
3
|
+
|
|
4
|
+
export const generateChartToolName = 'generate-chart'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Tool for generating chart visualizations from various data sources.
|
|
8
|
+
* The tool returns structured data that the frontend renderer can visualize.
|
|
9
|
+
*/
|
|
10
|
+
export const createGenerateChartTool = () =>
|
|
11
|
+
tool({
|
|
12
|
+
title: generateChartToolName,
|
|
13
|
+
description:
|
|
14
|
+
'Create visualizations from data sources. Supports stock prices, exchange rates, weather data, and custom datasets. Returns structured chart data for rendering.',
|
|
15
|
+
inputSchema: z.object({
|
|
16
|
+
chartType: z.enum(['line', 'bar', 'area', 'pie']).describe('Type of chart to generate'),
|
|
17
|
+
dataSource: z.enum(['stock', 'exchange', 'weather', 'custom']).describe('Source of data for the chart'),
|
|
18
|
+
symbol: z.string().optional().describe('Stock ticker, currency pair, or location identifier'),
|
|
19
|
+
timeframe: z.enum(['1d', '1w', '1m', '3m', '1y']).optional().describe('Time period for data')
|
|
20
|
+
}),
|
|
21
|
+
outputSchema: z.object({
|
|
22
|
+
chartType: z.enum(['line', 'bar', 'area', 'pie']),
|
|
23
|
+
dataSource: z.string(),
|
|
24
|
+
symbol: z.string().optional(),
|
|
25
|
+
timeframe: z.string().optional(),
|
|
26
|
+
title: z.string(),
|
|
27
|
+
yAxisLabel: z.string(),
|
|
28
|
+
data: z.array(
|
|
29
|
+
z.object({
|
|
30
|
+
date: z.string(),
|
|
31
|
+
value: z.number(),
|
|
32
|
+
label: z.string().optional()
|
|
33
|
+
})
|
|
34
|
+
)
|
|
35
|
+
}),
|
|
36
|
+
execute: async (input) => {
|
|
37
|
+
// Generate mock data based on data source
|
|
38
|
+
let data: Array<{ date: string; value: number; label?: string }> = []
|
|
39
|
+
let title = ''
|
|
40
|
+
let yAxisLabel = ''
|
|
41
|
+
|
|
42
|
+
if (input.dataSource === 'stock') {
|
|
43
|
+
title = `${input.symbol || 'AAPL'} Stock Price (${input.timeframe || '1m'})`
|
|
44
|
+
yAxisLabel = 'Price ($)'
|
|
45
|
+
const basePrice = input.symbol === 'AAPL' ? 175 : input.symbol === 'GOOGL' ? 140 : input.symbol === 'MSFT' ? 380 : 100
|
|
46
|
+
const days = input.timeframe === '1d' ? 24 : input.timeframe === '1w' ? 7 : input.timeframe === '1m' ? 30 : input.timeframe === '3m' ? 90 : 365
|
|
47
|
+
const interval = input.timeframe === '1d' ? 'hour' : 'day'
|
|
48
|
+
|
|
49
|
+
for (let i = days; i >= 0; i--) {
|
|
50
|
+
const date = new Date()
|
|
51
|
+
if (interval === 'hour') {
|
|
52
|
+
date.setHours(date.getHours() - i)
|
|
53
|
+
} else {
|
|
54
|
+
date.setDate(date.getDate() - i)
|
|
55
|
+
}
|
|
56
|
+
const variation = (Math.random() - 0.5) * 0.1
|
|
57
|
+
const trend = (days - i) / days * 0.15
|
|
58
|
+
const value = basePrice * (1 + trend + variation)
|
|
59
|
+
data.push({
|
|
60
|
+
date:
|
|
61
|
+
interval === 'hour'
|
|
62
|
+
? date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' })
|
|
63
|
+
: date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }),
|
|
64
|
+
value: Math.round(value * 100) / 100
|
|
65
|
+
})
|
|
66
|
+
}
|
|
67
|
+
} else if (input.dataSource === 'exchange') {
|
|
68
|
+
title = `${input.symbol || 'EUR/USD'} Exchange Rate (${input.timeframe || '1m'})`
|
|
69
|
+
yAxisLabel = 'Rate'
|
|
70
|
+
const baseRate = input.symbol === 'EUR/USD' ? 1.08 : input.symbol === 'GBP/USD' ? 1.27 : input.symbol === 'JPY/USD' ? 0.0067 : 1.0
|
|
71
|
+
const days = input.timeframe === '1d' ? 24 : input.timeframe === '1w' ? 7 : input.timeframe === '1m' ? 30 : 90
|
|
72
|
+
|
|
73
|
+
for (let i = days; i >= 0; i--) {
|
|
74
|
+
const date = new Date()
|
|
75
|
+
date.setDate(date.getDate() - i)
|
|
76
|
+
const variation = (Math.random() - 0.5) * 0.02
|
|
77
|
+
const value = baseRate * (1 + variation)
|
|
78
|
+
data.push({
|
|
79
|
+
date: date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }),
|
|
80
|
+
value: Math.round(value * 10000) / 10000
|
|
81
|
+
})
|
|
82
|
+
}
|
|
83
|
+
} else if (input.dataSource === 'weather') {
|
|
84
|
+
title = `Weather in ${input.symbol || 'NYC'} (${input.timeframe || '1d'})`
|
|
85
|
+
yAxisLabel = 'Temperature (°F)'
|
|
86
|
+
const days = input.timeframe === '1d' ? 24 : input.timeframe === '1w' ? 7 : 30
|
|
87
|
+
const baseTemp = 65
|
|
88
|
+
|
|
89
|
+
for (let i = days; i >= 0; i--) {
|
|
90
|
+
const date = new Date()
|
|
91
|
+
if (input.timeframe === '1d') {
|
|
92
|
+
date.setHours(date.getHours() - i)
|
|
93
|
+
} else {
|
|
94
|
+
date.setDate(date.getDate() - i)
|
|
95
|
+
}
|
|
96
|
+
const hourOfDay = date.getHours()
|
|
97
|
+
const dailyVariation = Math.sin((hourOfDay / 24) * Math.PI * 2) * 15
|
|
98
|
+
const randomVariation = (Math.random() - 0.5) * 5
|
|
99
|
+
const value = baseTemp + dailyVariation + randomVariation
|
|
100
|
+
data.push({
|
|
101
|
+
date:
|
|
102
|
+
input.timeframe === '1d'
|
|
103
|
+
? date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' })
|
|
104
|
+
: date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }),
|
|
105
|
+
value: Math.round(value)
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
// Custom data
|
|
110
|
+
title = 'Custom Dataset'
|
|
111
|
+
yAxisLabel = 'Value'
|
|
112
|
+
for (let i = 0; i < 10; i++) {
|
|
113
|
+
data.push({
|
|
114
|
+
date: `Item ${i + 1}`,
|
|
115
|
+
value: Math.round(Math.random() * 100),
|
|
116
|
+
label: `Category ${i + 1}`
|
|
117
|
+
})
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
chartType: input.chartType,
|
|
123
|
+
dataSource: input.dataSource,
|
|
124
|
+
symbol: input.symbol,
|
|
125
|
+
timeframe: input.timeframe,
|
|
126
|
+
title,
|
|
127
|
+
yAxisLabel,
|
|
128
|
+
data
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
})
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { tool } from 'ai'
|
|
2
|
+
import { z } from 'zod'
|
|
3
|
+
|
|
4
|
+
export const proposeFormValuesToolName = 'propose_form_values'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A no-side-effect tool: it exists to force the model to emit structured form fill proposals.
|
|
8
|
+
* The UI will render these proposals and the host app will decide what to apply.
|
|
9
|
+
*/
|
|
10
|
+
export const createProposeFormValuesTool = () =>
|
|
11
|
+
tool({
|
|
12
|
+
title: proposeFormValuesToolName,
|
|
13
|
+
description:
|
|
14
|
+
'Propose values to fill in a form. Use only allowed select options. Do not apply changes; just propose.',
|
|
15
|
+
inputSchema: z.object({
|
|
16
|
+
formId: z.string().min(1),
|
|
17
|
+
formName: z.string().min(1).optional(),
|
|
18
|
+
fields: z
|
|
19
|
+
.array(
|
|
20
|
+
z.object({
|
|
21
|
+
name: z.string().min(1),
|
|
22
|
+
label: z.string().min(1),
|
|
23
|
+
value: z.string(),
|
|
24
|
+
inputType: z
|
|
25
|
+
.enum(['text', 'textarea', 'number', 'select', 'radio', 'checkbox', 'date', 'email', 'tel'])
|
|
26
|
+
.optional(),
|
|
27
|
+
options: z
|
|
28
|
+
.array(
|
|
29
|
+
z.object({
|
|
30
|
+
value: z.string(),
|
|
31
|
+
label: z.string()
|
|
32
|
+
})
|
|
33
|
+
)
|
|
34
|
+
.optional()
|
|
35
|
+
})
|
|
36
|
+
)
|
|
37
|
+
.min(1),
|
|
38
|
+
notes: z.string().optional()
|
|
39
|
+
}),
|
|
40
|
+
outputSchema: z.object({
|
|
41
|
+
formId: z.string(),
|
|
42
|
+
formName: z.string().optional(),
|
|
43
|
+
fields: z.array(
|
|
44
|
+
z.object({
|
|
45
|
+
name: z.string(),
|
|
46
|
+
label: z.string(),
|
|
47
|
+
value: z.string(),
|
|
48
|
+
inputType: z
|
|
49
|
+
.enum(['text', 'textarea', 'number', 'select', 'radio', 'checkbox', 'date', 'email', 'tel'])
|
|
50
|
+
.optional(),
|
|
51
|
+
options: z
|
|
52
|
+
.array(
|
|
53
|
+
z.object({
|
|
54
|
+
value: z.string(),
|
|
55
|
+
label: z.string()
|
|
56
|
+
})
|
|
57
|
+
)
|
|
58
|
+
.optional()
|
|
59
|
+
})
|
|
60
|
+
),
|
|
61
|
+
notes: z.string().optional()
|
|
62
|
+
}),
|
|
63
|
+
execute: async (input) => {
|
|
64
|
+
// Preserve structured output. No I/O, no mutations.
|
|
65
|
+
return input
|
|
66
|
+
}
|
|
67
|
+
})
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"composite": true,
|
|
5
|
+
"rootDir": "src",
|
|
6
|
+
"outDir": "dist",
|
|
7
|
+
"module": "ES2022",
|
|
8
|
+
"target": "ES2018",
|
|
9
|
+
"moduleResolution": "node",
|
|
10
|
+
"noImplicitAny": false
|
|
11
|
+
},
|
|
12
|
+
"include": ["src"],
|
|
13
|
+
"references": [
|
|
14
|
+
{
|
|
15
|
+
"path": "../ai-agent-types/tsconfig.json"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "../ai-agent-db-mongo/tsconfig.json"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "../ai-agent-db-lib/tsconfig.json"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|