@chaaskit/server 0.1.0
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/dist/api/admin.js +438 -0
- package/dist/api/admin.js.map +1 -0
- package/dist/api/agents.js +21 -0
- package/dist/api/agents.js.map +1 -0
- package/dist/api/api-keys.js +122 -0
- package/dist/api/api-keys.js.map +1 -0
- package/dist/api/auth.js +399 -0
- package/dist/api/auth.js.map +1 -0
- package/dist/api/chat.js +900 -0
- package/dist/api/chat.js.map +1 -0
- package/dist/api/config.js +91 -0
- package/dist/api/config.js.map +1 -0
- package/dist/api/documents.js +237 -0
- package/dist/api/documents.js.map +1 -0
- package/dist/api/export.js +107 -0
- package/dist/api/export.js.map +1 -0
- package/dist/api/health.js +25 -0
- package/dist/api/health.js.map +1 -0
- package/dist/api/mcp-server.js +84 -0
- package/dist/api/mcp-server.js.map +1 -0
- package/dist/api/mcp.js +400 -0
- package/dist/api/mcp.js.map +1 -0
- package/dist/api/mentions.js +94 -0
- package/dist/api/mentions.js.map +1 -0
- package/dist/api/oauth.js +366 -0
- package/dist/api/oauth.js.map +1 -0
- package/dist/api/payments.js +473 -0
- package/dist/api/payments.js.map +1 -0
- package/dist/api/projects.js +301 -0
- package/dist/api/projects.js.map +1 -0
- package/dist/api/scheduled-prompts.js +617 -0
- package/dist/api/scheduled-prompts.js.map +1 -0
- package/dist/api/search.js +85 -0
- package/dist/api/search.js.map +1 -0
- package/dist/api/share.js +188 -0
- package/dist/api/share.js.map +1 -0
- package/dist/api/slack.js +468 -0
- package/dist/api/slack.js.map +1 -0
- package/dist/api/teams.js +693 -0
- package/dist/api/teams.js.map +1 -0
- package/dist/api/templates.js +134 -0
- package/dist/api/templates.js.map +1 -0
- package/dist/api/threads.js +323 -0
- package/dist/api/threads.js.map +1 -0
- package/dist/api/upload.js +57 -0
- package/dist/api/upload.js.map +1 -0
- package/dist/api/user.js +111 -0
- package/dist/api/user.js.map +1 -0
- package/dist/api/v1/openai.js +245 -0
- package/dist/api/v1/openai.js.map +1 -0
- package/dist/app.js +168 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/cli.js +57 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/commands/db-sync.js +108 -0
- package/dist/commands/db-sync.js.map +1 -0
- package/dist/config/loader.js +374 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/documents/extractors.js +136 -0
- package/dist/documents/extractors.js.map +1 -0
- package/dist/extensions/glob.js +53 -0
- package/dist/extensions/glob.js.map +1 -0
- package/dist/extensions/loader.js +72 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/loaders/index.js +75 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/mcp/client.js +551 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/server.js +335 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/middleware/apiKeyAuth.js +136 -0
- package/dist/middleware/apiKeyAuth.js.map +1 -0
- package/dist/middleware/auth.js +192 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/errorHandler.js +41 -0
- package/dist/middleware/errorHandler.js.map +1 -0
- package/dist/middleware/mcpServerAuth.js +164 -0
- package/dist/middleware/mcpServerAuth.js.map +1 -0
- package/dist/middleware/requestLogger.js +9 -0
- package/dist/middleware/requestLogger.js.map +1 -0
- package/dist/middleware/team.js +132 -0
- package/dist/middleware/team.js.map +1 -0
- package/dist/oauth/server.js +410 -0
- package/dist/oauth/server.js.map +1 -0
- package/dist/queue/cli.js +93 -0
- package/dist/queue/cli.js.map +1 -0
- package/dist/queue/handlers/index.js +91 -0
- package/dist/queue/handlers/index.js.map +1 -0
- package/dist/queue/handlers/scheduled-prompt.js +270 -0
- package/dist/queue/handlers/scheduled-prompt.js.map +1 -0
- package/dist/queue/index.js +91 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/providers/memory.js +296 -0
- package/dist/queue/providers/memory.js.map +1 -0
- package/dist/queue/providers/sqs.js +275 -0
- package/dist/queue/providers/sqs.js.map +1 -0
- package/dist/queue/scheduler.js +355 -0
- package/dist/queue/scheduler.js.map +1 -0
- package/dist/queue/types.js +5 -0
- package/dist/queue/types.js.map +1 -0
- package/dist/queue/worker.js +230 -0
- package/dist/queue/worker.js.map +1 -0
- package/dist/registry/index.js +40 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/server.js +207 -0
- package/dist/server.js.map +1 -0
- package/dist/services/agent.js +530 -0
- package/dist/services/agent.js.map +1 -0
- package/dist/services/agents.js +194 -0
- package/dist/services/agents.js.map +1 -0
- package/dist/services/documents.js +507 -0
- package/dist/services/documents.js.map +1 -0
- package/dist/services/email/index.js +91 -0
- package/dist/services/email/index.js.map +1 -0
- package/dist/services/email/providers/ses.js +97 -0
- package/dist/services/email/providers/ses.js.map +1 -0
- package/dist/services/email/templates.js +194 -0
- package/dist/services/email/templates.js.map +1 -0
- package/dist/services/email/types.js +5 -0
- package/dist/services/email/types.js.map +1 -0
- package/dist/services/encryption.js +69 -0
- package/dist/services/encryption.js.map +1 -0
- package/dist/services/oauth-discovery.js +226 -0
- package/dist/services/oauth-discovery.js.map +1 -0
- package/dist/services/pendingConfirmation.js +105 -0
- package/dist/services/pendingConfirmation.js.map +1 -0
- package/dist/services/scheduledPrompts.js +70 -0
- package/dist/services/scheduledPrompts.js.map +1 -0
- package/dist/services/slack/client.js +174 -0
- package/dist/services/slack/client.js.map +1 -0
- package/dist/services/slack/events.js +189 -0
- package/dist/services/slack/events.js.map +1 -0
- package/dist/services/slack/index.js +6 -0
- package/dist/services/slack/index.js.map +1 -0
- package/dist/services/slack/notifications.js +124 -0
- package/dist/services/slack/notifications.js.map +1 -0
- package/dist/services/slack/signature.js +74 -0
- package/dist/services/slack/signature.js.map +1 -0
- package/dist/services/slack/thread-context.js +191 -0
- package/dist/services/slack/thread-context.js.map +1 -0
- package/dist/services/toolConfirmation.js +55 -0
- package/dist/services/toolConfirmation.js.map +1 -0
- package/dist/services/usage.js +241 -0
- package/dist/services/usage.js.map +1 -0
- package/dist/ssr/build.js +90 -0
- package/dist/ssr/build.js.map +1 -0
- package/dist/ssr/components/SSRMessageList.js +120 -0
- package/dist/ssr/components/SSRMessageList.js.map +1 -0
- package/dist/ssr/entry.client.js +8 -0
- package/dist/ssr/entry.client.js.map +1 -0
- package/dist/ssr/entry.server.js +71 -0
- package/dist/ssr/entry.server.js.map +1 -0
- package/dist/ssr/handler.js +51 -0
- package/dist/ssr/handler.js.map +1 -0
- package/dist/ssr/root.js +184 -0
- package/dist/ssr/root.js.map +1 -0
- package/dist/ssr/routes/login.js +140 -0
- package/dist/ssr/routes/login.js.map +1 -0
- package/dist/ssr/routes/pricing.js +195 -0
- package/dist/ssr/routes/pricing.js.map +1 -0
- package/dist/ssr/routes/privacy.js +39 -0
- package/dist/ssr/routes/privacy.js.map +1 -0
- package/dist/ssr/routes/register.js +148 -0
- package/dist/ssr/routes/register.js.map +1 -0
- package/dist/ssr/routes/shared.$shareId.js +153 -0
- package/dist/ssr/routes/shared.$shareId.js.map +1 -0
- package/dist/ssr/routes/terms.js +39 -0
- package/dist/ssr/routes/terms.js.map +1 -0
- package/dist/storage/index.js +43 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/providers/database.js +38 -0
- package/dist/storage/providers/database.js.map +1 -0
- package/dist/storage/providers/filesystem.js +51 -0
- package/dist/storage/providers/filesystem.js.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/tools/documents.js +336 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/get-plan-usage.js +82 -0
- package/dist/tools/get-plan-usage.js.map +1 -0
- package/dist/tools/index.js +106 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/web-scrape.js +145 -0
- package/dist/tools/web-scrape.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { getConfig } from '../config/loader.js';
|
|
2
|
+
import { getNativeToolsForAgent } from '../tools/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Check if config is multi-agent (has 'agents' array)
|
|
5
|
+
*/
|
|
6
|
+
function isMultiAgentConfig(config) {
|
|
7
|
+
return 'agents' in config && Array.isArray(config.agents);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Check if agent definition is external type
|
|
11
|
+
*/
|
|
12
|
+
export function isExternalAgent(agent) {
|
|
13
|
+
return 'type' in agent && agent.type === 'external';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Check if agent definition is built-in type
|
|
17
|
+
*/
|
|
18
|
+
export function isBuiltInAgent(agent) {
|
|
19
|
+
return !('type' in agent) || agent.type !== 'external';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Normalize configuration to always return array of AgentDefinitions.
|
|
23
|
+
* Handles both legacy single-agent config and new multi-agent config.
|
|
24
|
+
*/
|
|
25
|
+
export function getAgentDefinitions() {
|
|
26
|
+
const config = getConfig().agent;
|
|
27
|
+
// Multi-agent config
|
|
28
|
+
if (isMultiAgentConfig(config)) {
|
|
29
|
+
return config.agents;
|
|
30
|
+
}
|
|
31
|
+
// Legacy single-agent: built-in
|
|
32
|
+
if (config.type === 'built-in') {
|
|
33
|
+
return [
|
|
34
|
+
{
|
|
35
|
+
id: 'default',
|
|
36
|
+
name: 'AI Assistant',
|
|
37
|
+
provider: config.provider,
|
|
38
|
+
model: config.model,
|
|
39
|
+
systemPrompt: config.systemPrompt,
|
|
40
|
+
maxTokens: config.maxTokens,
|
|
41
|
+
isDefault: true,
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
// Legacy single-agent: external
|
|
46
|
+
if (config.type === 'external') {
|
|
47
|
+
return [
|
|
48
|
+
{
|
|
49
|
+
id: 'default',
|
|
50
|
+
name: 'AI Assistant',
|
|
51
|
+
type: 'external',
|
|
52
|
+
endpoint: config.endpoint,
|
|
53
|
+
headers: config.headers,
|
|
54
|
+
isDefault: true,
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
// Fallback - should not happen with proper TypeScript types
|
|
59
|
+
throw new Error('Invalid agent configuration');
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get a specific agent by ID.
|
|
63
|
+
* Returns default agent if ID is null/undefined.
|
|
64
|
+
*/
|
|
65
|
+
export function getAgentById(agentId) {
|
|
66
|
+
const agents = getAgentDefinitions();
|
|
67
|
+
if (!agentId) {
|
|
68
|
+
// Return the default agent
|
|
69
|
+
const defaultAgent = agents.find((a) => a.isDefault);
|
|
70
|
+
return defaultAgent || agents[0];
|
|
71
|
+
}
|
|
72
|
+
return agents.find((a) => a.id === agentId);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the default agent.
|
|
76
|
+
*/
|
|
77
|
+
export function getDefaultAgent() {
|
|
78
|
+
const agents = getAgentDefinitions();
|
|
79
|
+
const defaultAgent = agents.find((a) => a.isDefault);
|
|
80
|
+
return defaultAgent || agents[0];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get agents available for a user's plan.
|
|
84
|
+
* If agent has no plans restriction, it's available to all.
|
|
85
|
+
*/
|
|
86
|
+
export function getAgentsForPlan(userPlan) {
|
|
87
|
+
const agents = getAgentDefinitions();
|
|
88
|
+
const plan = userPlan || 'free';
|
|
89
|
+
return agents.filter((agent) => {
|
|
90
|
+
// No plans restriction = available to all
|
|
91
|
+
if (!agent.plans || agent.plans.length === 0) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
// Check if user's plan is in allowed plans
|
|
95
|
+
return agent.plans.includes(plan);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if a user can access a specific agent based on their plan.
|
|
100
|
+
*/
|
|
101
|
+
export function canAccessAgent(agentId, userPlan) {
|
|
102
|
+
const agent = getAgentById(agentId);
|
|
103
|
+
if (!agent)
|
|
104
|
+
return false;
|
|
105
|
+
// No plans restriction = available to all
|
|
106
|
+
if (!agent.plans || agent.plans.length === 0) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
const plan = userPlan || 'free';
|
|
110
|
+
return agent.plans.includes(plan);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if a tool matches an allowed pattern.
|
|
114
|
+
*
|
|
115
|
+
* Pattern syntax:
|
|
116
|
+
* - 'server:*' - All tools from a server (including 'native:*')
|
|
117
|
+
* - 'server:tool-name' - Specific tool (e.g., 'native:web-scrape')
|
|
118
|
+
*/
|
|
119
|
+
function toolMatchesPattern(tool, pattern) {
|
|
120
|
+
const toolId = `${tool.serverId}:${tool.name}`;
|
|
121
|
+
// Wildcard pattern: 'server:*'
|
|
122
|
+
if (pattern.endsWith(':*')) {
|
|
123
|
+
const serverId = pattern.slice(0, -2);
|
|
124
|
+
return tool.serverId === serverId;
|
|
125
|
+
}
|
|
126
|
+
// Exact match: 'server:tool-name'
|
|
127
|
+
return pattern === toolId;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Filter tools (MCP or native) based on agent's allowedTools configuration.
|
|
131
|
+
*
|
|
132
|
+
* Tool pattern syntax:
|
|
133
|
+
* - 'server:*' - All tools from a server (e.g., 'native:*' for all native tools)
|
|
134
|
+
* - 'server:tool-name' - Specific tool (e.g., 'native:web-scrape')
|
|
135
|
+
* - No allowedTools = no tools available (opt-in model)
|
|
136
|
+
*/
|
|
137
|
+
export function filterToolsForAgent(agentId, tools) {
|
|
138
|
+
const agent = getAgentById(agentId);
|
|
139
|
+
// No agent found or no tool restrictions - return empty (opt-in model)
|
|
140
|
+
if (!agent?.allowedTools || agent.allowedTools.length === 0) {
|
|
141
|
+
// For backward compatibility: if no allowedTools specified, allow all MCP tools but no native tools
|
|
142
|
+
return tools.filter((tool) => tool.serverId !== 'native');
|
|
143
|
+
}
|
|
144
|
+
return tools.filter((tool) => {
|
|
145
|
+
return agent.allowedTools.some((pattern) => toolMatchesPattern(tool, pattern));
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get native tools available for an agent based on allowedTools config.
|
|
150
|
+
* Native tools are opt-in: only available if explicitly listed.
|
|
151
|
+
*/
|
|
152
|
+
export function getNativeToolsForAgentFiltered(agentId) {
|
|
153
|
+
const agent = getAgentById(agentId);
|
|
154
|
+
const allNativeTools = getNativeToolsForAgent();
|
|
155
|
+
// No allowedTools = no native tools (opt-in model)
|
|
156
|
+
if (!agent?.allowedTools || agent.allowedTools.length === 0) {
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
return allNativeTools.filter((tool) => {
|
|
160
|
+
return agent.allowedTools.some((pattern) => toolMatchesPattern(tool, pattern));
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Convert an AgentDefinition to the legacy AgentConfig format
|
|
165
|
+
* for use with createAgentService.
|
|
166
|
+
*/
|
|
167
|
+
export function toAgentConfig(agent) {
|
|
168
|
+
if (isExternalAgent(agent)) {
|
|
169
|
+
return {
|
|
170
|
+
type: 'external',
|
|
171
|
+
endpoint: agent.endpoint,
|
|
172
|
+
headers: agent.headers,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
// Built-in agent
|
|
176
|
+
return {
|
|
177
|
+
type: 'built-in',
|
|
178
|
+
provider: agent.provider,
|
|
179
|
+
model: agent.model,
|
|
180
|
+
systemPrompt: agent.systemPrompt,
|
|
181
|
+
maxTokens: agent.maxTokens,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get agent info suitable for client response (excludes sensitive data).
|
|
186
|
+
*/
|
|
187
|
+
export function getAgentClientInfo(agent) {
|
|
188
|
+
return {
|
|
189
|
+
id: agent.id,
|
|
190
|
+
name: agent.name,
|
|
191
|
+
isDefault: agent.isDefault,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/services/agents.ts"],"names":[],"mappings":"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"}
|