myaiforone 1.0.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/README.md +113 -0
- package/agents/_template/CLAUDE.md +18 -0
- package/agents/_template/agent.json +7 -0
- package/agents/platform/agentcreator/CLAUDE.md +300 -0
- package/agents/platform/appcreator/CLAUDE.md +158 -0
- package/agents/platform/gym/CLAUDE.md +486 -0
- package/agents/platform/gym/agent.json +40 -0
- package/agents/platform/gym/programs/agent-building/program.json +160 -0
- package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
- package/agents/platform/gym/programs/getting-started/program.json +124 -0
- package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
- package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
- package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
- package/agents/platform/gym/souls/alex.md +12 -0
- package/agents/platform/gym/souls/jordan.md +12 -0
- package/agents/platform/gym/souls/morgan.md +12 -0
- package/agents/platform/gym/souls/riley.md +12 -0
- package/agents/platform/gym/souls/sam.md +12 -0
- package/agents/platform/hub/CLAUDE.md +372 -0
- package/agents/platform/promptcreator/CLAUDE.md +130 -0
- package/agents/platform/skillcreator/CLAUDE.md +163 -0
- package/bin/cli.js +566 -0
- package/config.example.json +310 -0
- package/dist/agent-registry.d.ts +32 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +144 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/channels/discord.d.ts +17 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +114 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/imessage.d.ts +23 -0
- package/dist/channels/imessage.d.ts.map +1 -0
- package/dist/channels/imessage.js +214 -0
- package/dist/channels/imessage.js.map +1 -0
- package/dist/channels/slack.d.ts +19 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +167 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +19 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +274 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/types.d.ts +44 -0
- package/dist/channels/types.d.ts.map +1 -0
- package/dist/channels/types.js +18 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +23 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +189 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/config.d.ts +134 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +127 -0
- package/dist/config.js.map +1 -0
- package/dist/cron.d.ts +8 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +35 -0
- package/dist/cron.js.map +1 -0
- package/dist/decrypt-keys.d.ts +7 -0
- package/dist/decrypt-keys.d.ts.map +1 -0
- package/dist/decrypt-keys.js +53 -0
- package/dist/decrypt-keys.js.map +1 -0
- package/dist/encrypt-keys.d.ts +8 -0
- package/dist/encrypt-keys.d.ts.map +1 -0
- package/dist/encrypt-keys.js +62 -0
- package/dist/encrypt-keys.js.map +1 -0
- package/dist/executor.d.ts +31 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +2009 -0
- package/dist/executor.js.map +1 -0
- package/dist/gemini-executor.d.ts +27 -0
- package/dist/gemini-executor.d.ts.map +1 -0
- package/dist/gemini-executor.js +160 -0
- package/dist/gemini-executor.js.map +1 -0
- package/dist/goals.d.ts +24 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +189 -0
- package/dist/goals.js.map +1 -0
- package/dist/gym/activity-digest.d.ts +30 -0
- package/dist/gym/activity-digest.d.ts.map +1 -0
- package/dist/gym/activity-digest.js +506 -0
- package/dist/gym/activity-digest.js.map +1 -0
- package/dist/gym/dimension-scorer.d.ts +76 -0
- package/dist/gym/dimension-scorer.d.ts.map +1 -0
- package/dist/gym/dimension-scorer.js +236 -0
- package/dist/gym/dimension-scorer.js.map +1 -0
- package/dist/gym/gym-router.d.ts +7 -0
- package/dist/gym/gym-router.d.ts.map +1 -0
- package/dist/gym/gym-router.js +718 -0
- package/dist/gym/gym-router.js.map +1 -0
- package/dist/gym/index.d.ts +11 -0
- package/dist/gym/index.d.ts.map +1 -0
- package/dist/gym/index.js +11 -0
- package/dist/gym/index.js.map +1 -0
- package/dist/heartbeat.d.ts +21 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +163 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/keystore.d.ts +22 -0
- package/dist/keystore.d.ts.map +1 -0
- package/dist/keystore.js +178 -0
- package/dist/keystore.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +45 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/daily.d.ts +22 -0
- package/dist/memory/daily.d.ts.map +1 -0
- package/dist/memory/daily.js +82 -0
- package/dist/memory/daily.js.map +1 -0
- package/dist/memory/embeddings.d.ts +15 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +154 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +159 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/search.d.ts +21 -0
- package/dist/memory/search.d.ts.map +1 -0
- package/dist/memory/search.js +77 -0
- package/dist/memory/search.js.map +1 -0
- package/dist/memory/store.d.ts +23 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +144 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/ollama-executor.d.ts +17 -0
- package/dist/ollama-executor.d.ts.map +1 -0
- package/dist/ollama-executor.js +112 -0
- package/dist/ollama-executor.js.map +1 -0
- package/dist/openai-executor.d.ts +38 -0
- package/dist/openai-executor.d.ts.map +1 -0
- package/dist/openai-executor.js +197 -0
- package/dist/openai-executor.js.map +1 -0
- package/dist/router.d.ts +11 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +185 -0
- package/dist/router.js.map +1 -0
- package/dist/test-message.d.ts +2 -0
- package/dist/test-message.d.ts.map +1 -0
- package/dist/test-message.js +60 -0
- package/dist/test-message.js.map +1 -0
- package/dist/utils/imsg-db-reader.d.ts +24 -0
- package/dist/utils/imsg-db-reader.d.ts.map +1 -0
- package/dist/utils/imsg-db-reader.js +92 -0
- package/dist/utils/imsg-db-reader.js.map +1 -0
- package/dist/utils/imsg-rpc.d.ts +25 -0
- package/dist/utils/imsg-rpc.d.ts.map +1 -0
- package/dist/utils/imsg-rpc.js +149 -0
- package/dist/utils/imsg-rpc.js.map +1 -0
- package/dist/utils/message-formatter.d.ts +3 -0
- package/dist/utils/message-formatter.d.ts.map +1 -0
- package/dist/utils/message-formatter.js +69 -0
- package/dist/utils/message-formatter.js.map +1 -0
- package/dist/web-ui.d.ts +12 -0
- package/dist/web-ui.d.ts.map +1 -0
- package/dist/web-ui.js +5784 -0
- package/dist/web-ui.js.map +1 -0
- package/dist/whatsapp-chats.d.ts +2 -0
- package/dist/whatsapp-chats.d.ts.map +1 -0
- package/dist/whatsapp-chats.js +76 -0
- package/dist/whatsapp-chats.js.map +1 -0
- package/dist/whatsapp-login.d.ts +2 -0
- package/dist/whatsapp-login.d.ts.map +1 -0
- package/dist/whatsapp-login.js +90 -0
- package/dist/whatsapp-login.js.map +1 -0
- package/dist/wiki-sync.d.ts +21 -0
- package/dist/wiki-sync.d.ts.map +1 -0
- package/dist/wiki-sync.js +147 -0
- package/dist/wiki-sync.js.map +1 -0
- package/docs/AddNewAgentGuide.md +100 -0
- package/docs/AddNewMcpGuide.md +72 -0
- package/docs/Architecture.md +795 -0
- package/docs/CLAUDE-AI-SETUP.md +166 -0
- package/docs/Setup.md +297 -0
- package/docs/ai-gym-architecture.md +1040 -0
- package/docs/ai-gym-build-plan.md +343 -0
- package/docs/ai-gym-onboarding.md +122 -0
- package/docs/appcreator_plan.md +348 -0
- package/docs/platform-mcp-audit.md +320 -0
- package/docs/server-deployment-plan.md +503 -0
- package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
- package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
- package/docs/user-guide.md +2016 -0
- package/mcp-catalog.json +628 -0
- package/package.json +63 -0
- package/public/MyAIforOne-logomark-512.svg +16 -0
- package/public/MyAIforOne-logomark-transparent.svg +15 -0
- package/public/activity.html +314 -0
- package/public/admin.html +1674 -0
- package/public/agent-dashboard.html +670 -0
- package/public/api-docs.html +1106 -0
- package/public/automations.html +722 -0
- package/public/canvas.css +223 -0
- package/public/canvas.js +588 -0
- package/public/changelog.html +231 -0
- package/public/gym.html +2766 -0
- package/public/home.html +1930 -0
- package/public/index.html +2809 -0
- package/public/lab.html +1643 -0
- package/public/library.html +1442 -0
- package/public/marketplace.html +1101 -0
- package/public/mcp-docs.html +441 -0
- package/public/mini.html +390 -0
- package/public/monitor.html +584 -0
- package/public/org.html +4304 -0
- package/public/projects.html +734 -0
- package/public/settings.html +645 -0
- package/public/tasks.html +932 -0
- package/public/trainers/alex.svg +12 -0
- package/public/trainers/jordan.svg +12 -0
- package/public/trainers/morgan.svg +12 -0
- package/public/trainers/riley.svg +12 -0
- package/public/trainers/sam.svg +12 -0
- package/public/user-guide.html +218 -0
- package/registry/agents.json +3 -0
- package/registry/apps.json +20 -0
- package/registry/installed-drafts.json +3 -0
- package/registry/mcps.json +1084 -0
- package/registry/prompts/personal/mcp-test-prompt.md +6 -0
- package/registry/prompts/personal/memory-recall.md +6 -0
- package/registry/prompts/platform/brainstorm.md +15 -0
- package/registry/prompts/platform/code-review.md +16 -0
- package/registry/prompts/platform/explain.md +16 -0
- package/registry/prompts.json +58 -0
- package/registry/skills/external/brainstorming.md +5 -0
- package/registry/skills/external/code-review.md +40 -0
- package/registry/skills/external/frontend-patterns.md +642 -0
- package/registry/skills/external/frontend-slides.md +184 -0
- package/registry/skills/external/systematic-debugging.md +5 -0
- package/registry/skills/external/tdd.md +328 -0
- package/registry/skills/external/verification-before-completion.md +5 -0
- package/registry/skills/external/writing-plans.md +5 -0
- package/registry/skills/platform/ai41_app_build.md +930 -0
- package/registry/skills/platform/ai41_app_deploy.md +168 -0
- package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
- package/registry/skills/platform/ai41_app_patterns.md +359 -0
- package/registry/skills/platform/ai41_app_register.md +85 -0
- package/registry/skills/platform/ai41_app_scaffold.md +421 -0
- package/registry/skills/platform/ai41_app_verify.md +107 -0
- package/registry/skills/platform/opProjectCreate.md +239 -0
- package/registry/skills/platform/op_devbrowser.md +136 -0
- package/registry/skills/platform/sop_brandguidelines.md +103 -0
- package/registry/skills/platform/sop_docx.md +117 -0
- package/registry/skills/platform/sop_frontenddesign.md +44 -0
- package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
- package/registry/skills/platform/sop_mcpbuilder.md +133 -0
- package/registry/skills/platform/sop_pdf.md +172 -0
- package/registry/skills/platform/sop_pptx.md +133 -0
- package/registry/skills/platform/sop_skillcreator.md +104 -0
- package/registry/skills/platform/sop_themefactory.md +128 -0
- package/registry/skills/platform/sop_webapptesting.md +75 -0
- package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
- package/registry/skills/platform/sop_xlsx.md +134 -0
- package/registry/skills.json +1055 -0
- package/scripts/discover-chats.sh +11 -0
- package/scripts/install-service-windows.ps1 +87 -0
- package/scripts/install-service.sh +52 -0
- package/scripts/seed-registry.ts +195 -0
- package/scripts/test-send.sh +5 -0
- package/scripts/tray-indicator.ps1 +35 -0
- package/scripts/uninstall-service-windows.ps1 +23 -0
- package/scripts/uninstall-service.sh +15 -0
- package/scripts/xbar-myagent.5s.sh +32 -0
- package/server/mcp-server/dist/index.d.ts +11 -0
- package/server/mcp-server/dist/index.js +1332 -0
- package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
- package/server/mcp-server/dist/lib/api-client.js +241 -0
- package/server/mcp-server/index.ts +1545 -0
- package/server/mcp-server/lib/api-client.ts +366 -0
- package/server/mcp-server/tsconfig.json +14 -0
- package/src/agent-registry.ts +180 -0
- package/src/channels/discord.ts +129 -0
- package/src/channels/imessage.ts +261 -0
- package/src/channels/slack.ts +208 -0
- package/src/channels/telegram.ts +307 -0
- package/src/channels/types.ts +62 -0
- package/src/channels/whatsapp.ts +227 -0
- package/src/config.ts +281 -0
- package/src/cron.ts +43 -0
- package/src/decrypt-keys.ts +60 -0
- package/src/encrypt-keys.ts +70 -0
- package/src/executor.ts +2190 -0
- package/src/gemini-executor.ts +212 -0
- package/src/goals.ts +240 -0
- package/src/gym/activity-digest.ts +546 -0
- package/src/gym/dimension-scorer.ts +297 -0
- package/src/gym/gym-router.ts +801 -0
- package/src/gym/index.ts +19 -0
- package/src/heartbeat.ts +220 -0
- package/src/index.ts +275 -0
- package/src/keystore.ts +190 -0
- package/src/logger.ts +51 -0
- package/src/memory/daily.ts +101 -0
- package/src/memory/embeddings.ts +185 -0
- package/src/memory/index.ts +218 -0
- package/src/memory/search.ts +124 -0
- package/src/memory/store.ts +189 -0
- package/src/ollama-executor.ts +126 -0
- package/src/openai-executor.ts +259 -0
- package/src/router.ts +230 -0
- package/src/test-message.ts +72 -0
- package/src/utils/imsg-db-reader.ts +109 -0
- package/src/utils/imsg-rpc.ts +178 -0
- package/src/utils/message-formatter.ts +90 -0
- package/src/web-ui.ts +5778 -0
- package/src/whatsapp-chats.ts +91 -0
- package/src/whatsapp-login.ts +110 -0
- package/src/wiki-sync.ts +199 -0
- package/tsconfig.json +19 -0
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { LogLevel } from "./logger.js";
|
|
2
|
+
export interface RouteMatch {
|
|
3
|
+
type: "chat_id" | "chat_guid" | "chat_identifier" | "channel_id" | "jid";
|
|
4
|
+
value: string | number;
|
|
5
|
+
}
|
|
6
|
+
export interface RoutePermissions {
|
|
7
|
+
allowFrom: string[];
|
|
8
|
+
requireMention: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface RouteConfig {
|
|
11
|
+
channel: string;
|
|
12
|
+
match: RouteMatch;
|
|
13
|
+
permissions: RoutePermissions;
|
|
14
|
+
}
|
|
15
|
+
export interface McpServerStdio {
|
|
16
|
+
type: "stdio";
|
|
17
|
+
command: string;
|
|
18
|
+
args?: string[];
|
|
19
|
+
env?: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export interface McpServerHttp {
|
|
22
|
+
type: "http" | "sse";
|
|
23
|
+
url: string;
|
|
24
|
+
headers?: Record<string, string>;
|
|
25
|
+
}
|
|
26
|
+
export type McpServerConfig = McpServerStdio | McpServerHttp;
|
|
27
|
+
export interface CronJobConfig {
|
|
28
|
+
schedule: string;
|
|
29
|
+
message: string;
|
|
30
|
+
channel: string;
|
|
31
|
+
chatId: string;
|
|
32
|
+
enabled?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface GoalConfig {
|
|
35
|
+
id: string;
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
description: string;
|
|
38
|
+
successCriteria?: string;
|
|
39
|
+
instructions?: string;
|
|
40
|
+
heartbeat: string;
|
|
41
|
+
budget?: {
|
|
42
|
+
maxDailyUsd: number;
|
|
43
|
+
};
|
|
44
|
+
reportTo?: string | string[];
|
|
45
|
+
}
|
|
46
|
+
export interface AgentConfig {
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
agentHome?: string;
|
|
50
|
+
workspace: string;
|
|
51
|
+
claudeMd: string;
|
|
52
|
+
memoryDir: string;
|
|
53
|
+
skills?: string[];
|
|
54
|
+
agentSkills?: string[];
|
|
55
|
+
mcps?: string[];
|
|
56
|
+
prompts?: string[];
|
|
57
|
+
persistent?: boolean;
|
|
58
|
+
perSenderSessions?: boolean;
|
|
59
|
+
streaming?: boolean;
|
|
60
|
+
advancedMemory?: boolean;
|
|
61
|
+
org?: Array<{
|
|
62
|
+
organization: string;
|
|
63
|
+
function: string;
|
|
64
|
+
title: string;
|
|
65
|
+
reportsTo?: string;
|
|
66
|
+
}>;
|
|
67
|
+
autonomousCapable?: boolean;
|
|
68
|
+
autoCommit: boolean;
|
|
69
|
+
autoCommitBranch: string;
|
|
70
|
+
allowedTools: string[];
|
|
71
|
+
claudeAccount?: string;
|
|
72
|
+
mentionAliases?: string[];
|
|
73
|
+
routes: RouteConfig[];
|
|
74
|
+
timeout?: number;
|
|
75
|
+
cron?: CronJobConfig[];
|
|
76
|
+
goals?: GoalConfig[];
|
|
77
|
+
wiki?: boolean;
|
|
78
|
+
wikiSync?: {
|
|
79
|
+
enabled: boolean;
|
|
80
|
+
schedule: string;
|
|
81
|
+
};
|
|
82
|
+
subAgents?: string[] | "*";
|
|
83
|
+
platformAgent?: boolean;
|
|
84
|
+
agentClass?: "standard" | "platform" | "builder" | "gym";
|
|
85
|
+
executor?: string;
|
|
86
|
+
}
|
|
87
|
+
export interface ChannelConfig {
|
|
88
|
+
enabled: boolean;
|
|
89
|
+
driver: string;
|
|
90
|
+
config: Record<string, unknown>;
|
|
91
|
+
}
|
|
92
|
+
export interface WebUIConfig {
|
|
93
|
+
enabled: boolean;
|
|
94
|
+
port: number;
|
|
95
|
+
webhookSecret?: string;
|
|
96
|
+
}
|
|
97
|
+
export interface ServiceConfig {
|
|
98
|
+
logLevel: LogLevel;
|
|
99
|
+
logFile?: string;
|
|
100
|
+
pairingCode?: string;
|
|
101
|
+
personalAgentsDir?: string;
|
|
102
|
+
personalRegistryDir?: string;
|
|
103
|
+
webUI?: WebUIConfig;
|
|
104
|
+
claudeAccounts?: Record<string, string>;
|
|
105
|
+
defaultClaudeAccount?: string;
|
|
106
|
+
multiModelEnabled?: boolean;
|
|
107
|
+
platformDefaultExecutor?: string;
|
|
108
|
+
ollamaBaseUrl?: string;
|
|
109
|
+
providerKeys?: Record<string, string>;
|
|
110
|
+
gymEnabled?: boolean;
|
|
111
|
+
aibriefingEnabled?: boolean;
|
|
112
|
+
gymOnlyMode?: boolean;
|
|
113
|
+
}
|
|
114
|
+
export interface AppConfig {
|
|
115
|
+
service: ServiceConfig;
|
|
116
|
+
channels: Record<string, ChannelConfig>;
|
|
117
|
+
agents: Record<string, AgentConfig>;
|
|
118
|
+
mcps?: Record<string, McpServerConfig>;
|
|
119
|
+
defaultAgent: string | null;
|
|
120
|
+
defaultSkills?: string[];
|
|
121
|
+
defaultMcps?: string[];
|
|
122
|
+
defaultPrompts?: string[];
|
|
123
|
+
promptTrigger?: string;
|
|
124
|
+
saas?: {
|
|
125
|
+
baseUrl: string;
|
|
126
|
+
apiKey: string;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export declare function loadConfig(configPath: string): AppConfig;
|
|
130
|
+
/** Resolve the PersonalAgents directory from config, falling back to ~/Desktop/MyAIforOne Drive/PersonalAgents */
|
|
131
|
+
export declare function getPersonalAgentsDir(config?: AppConfig): string;
|
|
132
|
+
/** Resolve the PersonalRegistry directory from config, falling back to ~/Desktop/MyAIforOne Drive/PersonalRegistry */
|
|
133
|
+
export declare function getPersonalRegistryDir(config?: AppConfig): string;
|
|
134
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { resolve, join } from "node:path";
|
|
4
|
+
export function loadConfig(configPath) {
|
|
5
|
+
const fullPath = resolve(configPath);
|
|
6
|
+
const raw = readFileSync(fullPath, "utf-8");
|
|
7
|
+
const config = JSON.parse(raw);
|
|
8
|
+
// Ensure required top-level keys exist (default to empty — app can start for setup)
|
|
9
|
+
if (!config.agents)
|
|
10
|
+
config.agents = {};
|
|
11
|
+
if (!config.channels)
|
|
12
|
+
config.channels = {};
|
|
13
|
+
// Normalize each agent's paths and ensure routes is always an array
|
|
14
|
+
const agentIds = Object.keys(config.agents);
|
|
15
|
+
for (const id of agentIds) {
|
|
16
|
+
const agent = config.agents[id];
|
|
17
|
+
// Routes are optional — agents without channel routes are still reachable via web UI
|
|
18
|
+
if (!agent.routes)
|
|
19
|
+
agent.routes = [];
|
|
20
|
+
if (!agent.workspace) {
|
|
21
|
+
throw new Error(`Agent "${id}" must have a workspace path`);
|
|
22
|
+
}
|
|
23
|
+
if (!agent.claudeMd) {
|
|
24
|
+
throw new Error(`Agent "${id}" must have a claudeMd path`);
|
|
25
|
+
}
|
|
26
|
+
// Resolve ~ in paths (works on macOS and Windows)
|
|
27
|
+
const home = homedir();
|
|
28
|
+
const resolveTilde = (p) => p.startsWith("~") ? p.replace("~", home) : p;
|
|
29
|
+
agent.workspace = resolveTilde(agent.workspace);
|
|
30
|
+
if (agent.agentHome) {
|
|
31
|
+
agent.agentHome = resolveTilde(agent.agentHome);
|
|
32
|
+
// Auto-derive claudeMd and memoryDir from agentHome only if not explicitly set
|
|
33
|
+
if (!agent.claudeMd) {
|
|
34
|
+
agent.claudeMd = join(agent.agentHome, "CLAUDE.md");
|
|
35
|
+
}
|
|
36
|
+
if (!agent.memoryDir) {
|
|
37
|
+
agent.memoryDir = join(agent.agentHome, "memory");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
agent.claudeMd = resolveTilde(agent.claudeMd);
|
|
41
|
+
agent.memoryDir = resolveTilde(agent.memoryDir);
|
|
42
|
+
// Derive agentHome from memoryDir if not set
|
|
43
|
+
if (!agent.agentHome) {
|
|
44
|
+
agent.agentHome = resolve(resolveTilde(agent.memoryDir), "..");
|
|
45
|
+
}
|
|
46
|
+
// Validate MCP references
|
|
47
|
+
if (agent.mcps && agent.mcps.length > 0) {
|
|
48
|
+
if (!config.mcps || Object.keys(config.mcps).length === 0) {
|
|
49
|
+
throw new Error(`Agent "${id}" references MCPs but no "mcps" registry is defined in config`);
|
|
50
|
+
}
|
|
51
|
+
for (const mcpName of agent.mcps) {
|
|
52
|
+
if (!config.mcps[mcpName]) {
|
|
53
|
+
throw new Error(`Agent "${id}" references MCP "${mcpName}" which is not defined in config.mcps`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Set defaults
|
|
58
|
+
agent.autoCommit = agent.autoCommit ?? false;
|
|
59
|
+
agent.autoCommitBranch = agent.autoCommitBranch ?? "main";
|
|
60
|
+
agent.allowedTools = agent.allowedTools ?? ["Read", "Edit", "Write", "Glob", "Grep", "Bash"];
|
|
61
|
+
agent.timeout = agent.timeout ?? 14_400_000;
|
|
62
|
+
}
|
|
63
|
+
// Validate MCP definitions
|
|
64
|
+
if (config.mcps) {
|
|
65
|
+
for (const [mcpId, mcp] of Object.entries(config.mcps)) {
|
|
66
|
+
if (mcp.type === "stdio") {
|
|
67
|
+
if (!mcp.command)
|
|
68
|
+
throw new Error(`MCP "${mcpId}" (stdio) must have a "command" field`);
|
|
69
|
+
}
|
|
70
|
+
else if (mcp.type === "http" || mcp.type === "sse") {
|
|
71
|
+
if (!mcp.url)
|
|
72
|
+
throw new Error(`MCP "${mcpId}" (${mcp.type}) must have a "url" field`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new Error(`MCP "${mcpId}" has unknown type "${mcp.type}" — must be "stdio", "http", or "sse"`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Defaults
|
|
80
|
+
config.service = config.service ?? { logLevel: "info" };
|
|
81
|
+
config.service.logLevel = config.service.logLevel ?? "info";
|
|
82
|
+
config.defaultAgent = config.defaultAgent ?? null;
|
|
83
|
+
const home = homedir();
|
|
84
|
+
const driveRoot = resolve(home, "Desktop", "MyAIforOne Drive");
|
|
85
|
+
// Resolve personalAgentsDir (expand ~)
|
|
86
|
+
if (config.service.personalAgentsDir) {
|
|
87
|
+
config.service.personalAgentsDir = config.service.personalAgentsDir.startsWith("~")
|
|
88
|
+
? config.service.personalAgentsDir.replace("~", home)
|
|
89
|
+
: config.service.personalAgentsDir;
|
|
90
|
+
}
|
|
91
|
+
_personalAgentsDir = config.service.personalAgentsDir || resolve(driveRoot, "PersonalAgents");
|
|
92
|
+
// Resolve personalRegistryDir (expand ~)
|
|
93
|
+
if (config.service.personalRegistryDir) {
|
|
94
|
+
config.service.personalRegistryDir = config.service.personalRegistryDir.startsWith("~")
|
|
95
|
+
? config.service.personalRegistryDir.replace("~", home)
|
|
96
|
+
: config.service.personalRegistryDir;
|
|
97
|
+
}
|
|
98
|
+
_personalRegistryDir = config.service.personalRegistryDir || resolve(driveRoot, "PersonalRegistry");
|
|
99
|
+
// Inject default account hint into claudeAccounts map so executor can pick it up
|
|
100
|
+
if (config.service.defaultClaudeAccount && config.service.claudeAccounts) {
|
|
101
|
+
config.service.claudeAccounts._defaultAccount = config.service.defaultClaudeAccount;
|
|
102
|
+
}
|
|
103
|
+
return config;
|
|
104
|
+
}
|
|
105
|
+
/** Resolved PersonalAgents directory — set during config loading, used by executor and keystore */
|
|
106
|
+
let _personalAgentsDir = null;
|
|
107
|
+
/** Resolved PersonalRegistry directory — set during config loading, used by web-ui */
|
|
108
|
+
let _personalRegistryDir = null;
|
|
109
|
+
/** Resolve the PersonalAgents directory from config, falling back to ~/Desktop/MyAIforOne Drive/PersonalAgents */
|
|
110
|
+
export function getPersonalAgentsDir(config) {
|
|
111
|
+
if (_personalAgentsDir)
|
|
112
|
+
return _personalAgentsDir;
|
|
113
|
+
const driveRoot = resolve(homedir(), "Desktop", "MyAIforOne Drive");
|
|
114
|
+
if (config)
|
|
115
|
+
return config.service.personalAgentsDir || resolve(driveRoot, "PersonalAgents");
|
|
116
|
+
return resolve(driveRoot, "PersonalAgents");
|
|
117
|
+
}
|
|
118
|
+
/** Resolve the PersonalRegistry directory from config, falling back to ~/Desktop/MyAIforOne Drive/PersonalRegistry */
|
|
119
|
+
export function getPersonalRegistryDir(config) {
|
|
120
|
+
if (_personalRegistryDir)
|
|
121
|
+
return _personalRegistryDir;
|
|
122
|
+
const driveRoot = resolve(homedir(), "Desktop", "MyAIforOne Drive");
|
|
123
|
+
if (config)
|
|
124
|
+
return config.service.personalRegistryDir || resolve(driveRoot, "PersonalRegistry");
|
|
125
|
+
return resolve(driveRoot, "PersonalRegistry");
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cron.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AppConfig } from "./config.js";
|
|
2
|
+
interface CronHandler {
|
|
3
|
+
(agentId: string, message: string, channel: string, chatId: string): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare function startCronJobs(config: AppConfig, handler: CronHandler): void;
|
|
6
|
+
export declare function stopCronJobs(): void;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=cron.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,aAAa,CAAC;AAG5D,UAAU,WAAW;IACnB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpF;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAyB3E;AAED,wBAAgB,YAAY,IAAI,IAAI,CAKnC"}
|
package/dist/cron.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import cron from "node-cron";
|
|
2
|
+
import { log } from "./logger.js";
|
|
3
|
+
const activeTasks = [];
|
|
4
|
+
export function startCronJobs(config, handler) {
|
|
5
|
+
for (const [agentId, agent] of Object.entries(config.agents)) {
|
|
6
|
+
if (!agent.cron?.length)
|
|
7
|
+
continue;
|
|
8
|
+
for (const job of agent.cron) {
|
|
9
|
+
if (job.enabled === false)
|
|
10
|
+
continue;
|
|
11
|
+
if (!cron.validate(job.schedule)) {
|
|
12
|
+
log.error(`Invalid cron schedule for ${agentId}: "${job.schedule}"`);
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
const task = cron.schedule(job.schedule, async () => {
|
|
16
|
+
log.info(`Cron fired for ${agentId}: "${job.message.slice(0, 60)}"`);
|
|
17
|
+
try {
|
|
18
|
+
await handler(agentId, job.message, job.channel, job.chatId);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
log.error(`Cron job failed for ${agentId}: ${err}`);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
activeTasks.push(task);
|
|
25
|
+
log.info(`Cron scheduled for ${agentId}: "${job.schedule}" → "${job.message.slice(0, 60)}"`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function stopCronJobs() {
|
|
30
|
+
for (const task of activeTasks) {
|
|
31
|
+
task.stop();
|
|
32
|
+
}
|
|
33
|
+
activeTasks.length = 0;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=cron.js.map
|
package/dist/cron.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAMlC,MAAM,WAAW,GAAyB,EAAE,CAAC;AAE7C,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,OAAoB;IACnE,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM;YAAE,SAAS;QAElC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK;gBAAE,SAAS;YAEpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,KAAK,CAAC,6BAA6B,OAAO,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrE,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAClD,GAAG,CAAC,IAAI,CAAC,kBAAkB,OAAO,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACrE,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/D,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,CAAC,uBAAuB,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,MAAM,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decrypt-keys.d.ts","sourceRoot":"","sources":["../src/decrypt-keys.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Decrypt all MCP key .env.enc files back to .env.
|
|
4
|
+
* Usage: npm run decrypt-keys
|
|
5
|
+
*/
|
|
6
|
+
import { resolve, dirname, join } from "node:path";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
|
+
import { readdirSync, existsSync } from "node:fs";
|
|
9
|
+
import { createInterface } from "node:readline";
|
|
10
|
+
import { decryptDir } from "./keystore.js";
|
|
11
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const baseDir = resolve(__dirname, "..");
|
|
13
|
+
async function main() {
|
|
14
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
15
|
+
const ask = (q) => new Promise(r => rl.question(q, r));
|
|
16
|
+
const password = await ask("Master password: ");
|
|
17
|
+
if (!password) {
|
|
18
|
+
console.log("No password provided. Aborting.");
|
|
19
|
+
rl.close();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let total = 0;
|
|
23
|
+
// Decrypt shared keys
|
|
24
|
+
const sharedDir = join(baseDir, "data", "mcp-keys");
|
|
25
|
+
if (existsSync(sharedDir)) {
|
|
26
|
+
const count = decryptDir(sharedDir, password);
|
|
27
|
+
total += count;
|
|
28
|
+
console.log(`Shared keys: ${count} files decrypted`);
|
|
29
|
+
}
|
|
30
|
+
// Decrypt agent-level keys
|
|
31
|
+
const personalBase = join(process.env.HOME || process.env.USERPROFILE || "", "Desktop", "MyAIforOne Drive", "PersonalAgents");
|
|
32
|
+
if (existsSync(personalBase)) {
|
|
33
|
+
const walkDirs = (dir) => {
|
|
34
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
35
|
+
if (entry.isDirectory()) {
|
|
36
|
+
const mcpKeysDir = join(dir, entry.name, "mcp-keys");
|
|
37
|
+
if (existsSync(mcpKeysDir)) {
|
|
38
|
+
const count = decryptDir(mcpKeysDir, password);
|
|
39
|
+
total += count;
|
|
40
|
+
if (count > 0)
|
|
41
|
+
console.log(`${entry.name}: ${count} files decrypted`);
|
|
42
|
+
}
|
|
43
|
+
walkDirs(join(dir, entry.name));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
walkDirs(personalBase);
|
|
48
|
+
}
|
|
49
|
+
console.log(`\nDone. ${total} key files decrypted.`);
|
|
50
|
+
rl.close();
|
|
51
|
+
}
|
|
52
|
+
main().catch(console.error);
|
|
53
|
+
//# sourceMappingURL=decrypt-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decrypt-keys.js","sourceRoot":"","sources":["../src/decrypt-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypt-keys.d.ts","sourceRoot":"","sources":["../src/encrypt-keys.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Encrypt all MCP key .env files.
|
|
4
|
+
* Usage: npm run encrypt-keys
|
|
5
|
+
* Prompts for master password, encrypts all .env → .env.enc
|
|
6
|
+
*/
|
|
7
|
+
import { resolve, dirname, join } from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { readdirSync, existsSync } from "node:fs";
|
|
10
|
+
import { createInterface } from "node:readline";
|
|
11
|
+
import { encryptDir } from "./keystore.js";
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const baseDir = resolve(__dirname, "..");
|
|
14
|
+
async function main() {
|
|
15
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
16
|
+
const ask = (q) => new Promise(r => rl.question(q, r));
|
|
17
|
+
const password = await ask("Master password: ");
|
|
18
|
+
if (!password) {
|
|
19
|
+
console.log("No password provided. Aborting.");
|
|
20
|
+
rl.close();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const confirm = await ask("Confirm password: ");
|
|
24
|
+
if (password !== confirm) {
|
|
25
|
+
console.log("Passwords don't match. Aborting.");
|
|
26
|
+
rl.close();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let total = 0;
|
|
30
|
+
// Encrypt shared keys
|
|
31
|
+
const sharedDir = join(baseDir, "data", "mcp-keys");
|
|
32
|
+
if (existsSync(sharedDir)) {
|
|
33
|
+
const count = encryptDir(sharedDir, password);
|
|
34
|
+
total += count;
|
|
35
|
+
console.log(`Shared keys: ${count} files encrypted`);
|
|
36
|
+
}
|
|
37
|
+
// Encrypt agent-level keys
|
|
38
|
+
const personalBase = join(process.env.HOME || process.env.USERPROFILE || "", "Desktop", "MyAIforOne Drive", "PersonalAgents");
|
|
39
|
+
if (existsSync(personalBase)) {
|
|
40
|
+
const walkDirs = (dir) => {
|
|
41
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
42
|
+
if (entry.isDirectory()) {
|
|
43
|
+
const mcpKeysDir = join(dir, entry.name, "mcp-keys");
|
|
44
|
+
if (existsSync(mcpKeysDir)) {
|
|
45
|
+
const count = encryptDir(mcpKeysDir, password);
|
|
46
|
+
total += count;
|
|
47
|
+
if (count > 0)
|
|
48
|
+
console.log(`${entry.name}: ${count} files encrypted`);
|
|
49
|
+
}
|
|
50
|
+
// Recurse into org folders
|
|
51
|
+
walkDirs(join(dir, entry.name));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
walkDirs(personalBase);
|
|
56
|
+
}
|
|
57
|
+
console.log(`\nDone. ${total} key files encrypted.`);
|
|
58
|
+
console.log("Original .env files replaced with stubs. Encrypted data in .env.enc files.");
|
|
59
|
+
rl.close();
|
|
60
|
+
}
|
|
61
|
+
main().catch(console.error);
|
|
62
|
+
//# sourceMappingURL=encrypt-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypt-keys.js","sourceRoot":"","sources":["../src/encrypt-keys.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEzC,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,CAAC,CAAS,EAAmB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAChD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,sBAAsB;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC9C,KAAK,IAAI,KAAK,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,kBAAkB,CAAC,CAAC;IACvD,CAAC;IAED,2BAA2B;IAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IAC9H,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE;YAC/B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9D,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACrD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;wBAC/C,KAAK,IAAI,KAAK,CAAC;wBACf,IAAI,KAAK,GAAG,CAAC;4BAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,kBAAkB,CAAC,CAAC;oBACxE,CAAC;oBACD,2BAA2B;oBAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,uBAAuB,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC1F,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { McpServerConfig } from "./config.js";
|
|
2
|
+
import type { InboundMessage } from "./channels/types.js";
|
|
3
|
+
import type { ResolvedRoute } from "./router.js";
|
|
4
|
+
import type { AppConfig } from "./config.js";
|
|
5
|
+
export declare function setAppConfig(config: AppConfig): void;
|
|
6
|
+
export declare function handleRelogin(accountName: string, configDir?: string): string;
|
|
7
|
+
export declare function executeAgent(route: ResolvedRoute, msg: InboundMessage, baseDir: string, mcpRegistry?: Record<string, McpServerConfig>, claudeAccounts?: Record<string, string>, globalDefaults?: {
|
|
8
|
+
skills?: string[];
|
|
9
|
+
mcps?: string[];
|
|
10
|
+
prompts?: string[];
|
|
11
|
+
promptTrigger?: string;
|
|
12
|
+
}): Promise<string>;
|
|
13
|
+
export interface StreamEvent {
|
|
14
|
+
type: "status" | "text" | "done" | "error" | "tool";
|
|
15
|
+
data: string;
|
|
16
|
+
tool?: {
|
|
17
|
+
name: string;
|
|
18
|
+
input?: any;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Execute agent with streaming — yields events as Claude processes.
|
|
23
|
+
* Used by Web UI (SSE) and phone channels (status messages).
|
|
24
|
+
*/
|
|
25
|
+
export declare function executeAgentStreaming(route: ResolvedRoute, msg: InboundMessage, baseDir: string, mcpRegistry?: Record<string, McpServerConfig>, claudeAccounts?: Record<string, string>, onRawLine?: (line: string) => void, globalDefaults?: {
|
|
26
|
+
skills?: string[];
|
|
27
|
+
mcps?: string[];
|
|
28
|
+
prompts?: string[];
|
|
29
|
+
promptTrigger?: string;
|
|
30
|
+
}, signal?: AbortSignal): AsyncGenerator<StreamEvent>;
|
|
31
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAyB;AAwV9E,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAwC7E;AA4aD,wBAAsB,YAAY,CAChC,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,cAAc,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAClG,OAAO,CAAC,MAAM,CAAC,CAqkBjB;AAkED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAuB,qBAAqB,CAC1C,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAClC,cAAc,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACnG,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,WAAW,CAAC,CA0nB7B"}
|