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.
Files changed (315) hide show
  1. package/README.md +113 -0
  2. package/agents/_template/CLAUDE.md +18 -0
  3. package/agents/_template/agent.json +7 -0
  4. package/agents/platform/agentcreator/CLAUDE.md +300 -0
  5. package/agents/platform/appcreator/CLAUDE.md +158 -0
  6. package/agents/platform/gym/CLAUDE.md +486 -0
  7. package/agents/platform/gym/agent.json +40 -0
  8. package/agents/platform/gym/programs/agent-building/program.json +160 -0
  9. package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
  10. package/agents/platform/gym/programs/getting-started/program.json +124 -0
  11. package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
  12. package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
  13. package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
  14. package/agents/platform/gym/souls/alex.md +12 -0
  15. package/agents/platform/gym/souls/jordan.md +12 -0
  16. package/agents/platform/gym/souls/morgan.md +12 -0
  17. package/agents/platform/gym/souls/riley.md +12 -0
  18. package/agents/platform/gym/souls/sam.md +12 -0
  19. package/agents/platform/hub/CLAUDE.md +372 -0
  20. package/agents/platform/promptcreator/CLAUDE.md +130 -0
  21. package/agents/platform/skillcreator/CLAUDE.md +163 -0
  22. package/bin/cli.js +566 -0
  23. package/config.example.json +310 -0
  24. package/dist/agent-registry.d.ts +32 -0
  25. package/dist/agent-registry.d.ts.map +1 -0
  26. package/dist/agent-registry.js +144 -0
  27. package/dist/agent-registry.js.map +1 -0
  28. package/dist/channels/discord.d.ts +17 -0
  29. package/dist/channels/discord.d.ts.map +1 -0
  30. package/dist/channels/discord.js +114 -0
  31. package/dist/channels/discord.js.map +1 -0
  32. package/dist/channels/imessage.d.ts +23 -0
  33. package/dist/channels/imessage.d.ts.map +1 -0
  34. package/dist/channels/imessage.js +214 -0
  35. package/dist/channels/imessage.js.map +1 -0
  36. package/dist/channels/slack.d.ts +19 -0
  37. package/dist/channels/slack.d.ts.map +1 -0
  38. package/dist/channels/slack.js +167 -0
  39. package/dist/channels/slack.js.map +1 -0
  40. package/dist/channels/telegram.d.ts +19 -0
  41. package/dist/channels/telegram.d.ts.map +1 -0
  42. package/dist/channels/telegram.js +274 -0
  43. package/dist/channels/telegram.js.map +1 -0
  44. package/dist/channels/types.d.ts +44 -0
  45. package/dist/channels/types.d.ts.map +1 -0
  46. package/dist/channels/types.js +18 -0
  47. package/dist/channels/types.js.map +1 -0
  48. package/dist/channels/whatsapp.d.ts +23 -0
  49. package/dist/channels/whatsapp.d.ts.map +1 -0
  50. package/dist/channels/whatsapp.js +189 -0
  51. package/dist/channels/whatsapp.js.map +1 -0
  52. package/dist/config.d.ts +134 -0
  53. package/dist/config.d.ts.map +1 -0
  54. package/dist/config.js +127 -0
  55. package/dist/config.js.map +1 -0
  56. package/dist/cron.d.ts +8 -0
  57. package/dist/cron.d.ts.map +1 -0
  58. package/dist/cron.js +35 -0
  59. package/dist/cron.js.map +1 -0
  60. package/dist/decrypt-keys.d.ts +7 -0
  61. package/dist/decrypt-keys.d.ts.map +1 -0
  62. package/dist/decrypt-keys.js +53 -0
  63. package/dist/decrypt-keys.js.map +1 -0
  64. package/dist/encrypt-keys.d.ts +8 -0
  65. package/dist/encrypt-keys.d.ts.map +1 -0
  66. package/dist/encrypt-keys.js +62 -0
  67. package/dist/encrypt-keys.js.map +1 -0
  68. package/dist/executor.d.ts +31 -0
  69. package/dist/executor.d.ts.map +1 -0
  70. package/dist/executor.js +2009 -0
  71. package/dist/executor.js.map +1 -0
  72. package/dist/gemini-executor.d.ts +27 -0
  73. package/dist/gemini-executor.d.ts.map +1 -0
  74. package/dist/gemini-executor.js +160 -0
  75. package/dist/gemini-executor.js.map +1 -0
  76. package/dist/goals.d.ts +24 -0
  77. package/dist/goals.d.ts.map +1 -0
  78. package/dist/goals.js +189 -0
  79. package/dist/goals.js.map +1 -0
  80. package/dist/gym/activity-digest.d.ts +30 -0
  81. package/dist/gym/activity-digest.d.ts.map +1 -0
  82. package/dist/gym/activity-digest.js +506 -0
  83. package/dist/gym/activity-digest.js.map +1 -0
  84. package/dist/gym/dimension-scorer.d.ts +76 -0
  85. package/dist/gym/dimension-scorer.d.ts.map +1 -0
  86. package/dist/gym/dimension-scorer.js +236 -0
  87. package/dist/gym/dimension-scorer.js.map +1 -0
  88. package/dist/gym/gym-router.d.ts +7 -0
  89. package/dist/gym/gym-router.d.ts.map +1 -0
  90. package/dist/gym/gym-router.js +718 -0
  91. package/dist/gym/gym-router.js.map +1 -0
  92. package/dist/gym/index.d.ts +11 -0
  93. package/dist/gym/index.d.ts.map +1 -0
  94. package/dist/gym/index.js +11 -0
  95. package/dist/gym/index.js.map +1 -0
  96. package/dist/heartbeat.d.ts +21 -0
  97. package/dist/heartbeat.d.ts.map +1 -0
  98. package/dist/heartbeat.js +163 -0
  99. package/dist/heartbeat.js.map +1 -0
  100. package/dist/index.d.ts +2 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +254 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/keystore.d.ts +22 -0
  105. package/dist/keystore.d.ts.map +1 -0
  106. package/dist/keystore.js +178 -0
  107. package/dist/keystore.js.map +1 -0
  108. package/dist/logger.d.ts +9 -0
  109. package/dist/logger.d.ts.map +1 -0
  110. package/dist/logger.js +45 -0
  111. package/dist/logger.js.map +1 -0
  112. package/dist/memory/daily.d.ts +22 -0
  113. package/dist/memory/daily.d.ts.map +1 -0
  114. package/dist/memory/daily.js +82 -0
  115. package/dist/memory/daily.js.map +1 -0
  116. package/dist/memory/embeddings.d.ts +15 -0
  117. package/dist/memory/embeddings.d.ts.map +1 -0
  118. package/dist/memory/embeddings.js +154 -0
  119. package/dist/memory/embeddings.js.map +1 -0
  120. package/dist/memory/index.d.ts +32 -0
  121. package/dist/memory/index.d.ts.map +1 -0
  122. package/dist/memory/index.js +159 -0
  123. package/dist/memory/index.js.map +1 -0
  124. package/dist/memory/search.d.ts +21 -0
  125. package/dist/memory/search.d.ts.map +1 -0
  126. package/dist/memory/search.js +77 -0
  127. package/dist/memory/search.js.map +1 -0
  128. package/dist/memory/store.d.ts +23 -0
  129. package/dist/memory/store.d.ts.map +1 -0
  130. package/dist/memory/store.js +144 -0
  131. package/dist/memory/store.js.map +1 -0
  132. package/dist/ollama-executor.d.ts +17 -0
  133. package/dist/ollama-executor.d.ts.map +1 -0
  134. package/dist/ollama-executor.js +112 -0
  135. package/dist/ollama-executor.js.map +1 -0
  136. package/dist/openai-executor.d.ts +38 -0
  137. package/dist/openai-executor.d.ts.map +1 -0
  138. package/dist/openai-executor.js +197 -0
  139. package/dist/openai-executor.js.map +1 -0
  140. package/dist/router.d.ts +11 -0
  141. package/dist/router.d.ts.map +1 -0
  142. package/dist/router.js +185 -0
  143. package/dist/router.js.map +1 -0
  144. package/dist/test-message.d.ts +2 -0
  145. package/dist/test-message.d.ts.map +1 -0
  146. package/dist/test-message.js +60 -0
  147. package/dist/test-message.js.map +1 -0
  148. package/dist/utils/imsg-db-reader.d.ts +24 -0
  149. package/dist/utils/imsg-db-reader.d.ts.map +1 -0
  150. package/dist/utils/imsg-db-reader.js +92 -0
  151. package/dist/utils/imsg-db-reader.js.map +1 -0
  152. package/dist/utils/imsg-rpc.d.ts +25 -0
  153. package/dist/utils/imsg-rpc.d.ts.map +1 -0
  154. package/dist/utils/imsg-rpc.js +149 -0
  155. package/dist/utils/imsg-rpc.js.map +1 -0
  156. package/dist/utils/message-formatter.d.ts +3 -0
  157. package/dist/utils/message-formatter.d.ts.map +1 -0
  158. package/dist/utils/message-formatter.js +69 -0
  159. package/dist/utils/message-formatter.js.map +1 -0
  160. package/dist/web-ui.d.ts +12 -0
  161. package/dist/web-ui.d.ts.map +1 -0
  162. package/dist/web-ui.js +5784 -0
  163. package/dist/web-ui.js.map +1 -0
  164. package/dist/whatsapp-chats.d.ts +2 -0
  165. package/dist/whatsapp-chats.d.ts.map +1 -0
  166. package/dist/whatsapp-chats.js +76 -0
  167. package/dist/whatsapp-chats.js.map +1 -0
  168. package/dist/whatsapp-login.d.ts +2 -0
  169. package/dist/whatsapp-login.d.ts.map +1 -0
  170. package/dist/whatsapp-login.js +90 -0
  171. package/dist/whatsapp-login.js.map +1 -0
  172. package/dist/wiki-sync.d.ts +21 -0
  173. package/dist/wiki-sync.d.ts.map +1 -0
  174. package/dist/wiki-sync.js +147 -0
  175. package/dist/wiki-sync.js.map +1 -0
  176. package/docs/AddNewAgentGuide.md +100 -0
  177. package/docs/AddNewMcpGuide.md +72 -0
  178. package/docs/Architecture.md +795 -0
  179. package/docs/CLAUDE-AI-SETUP.md +166 -0
  180. package/docs/Setup.md +297 -0
  181. package/docs/ai-gym-architecture.md +1040 -0
  182. package/docs/ai-gym-build-plan.md +343 -0
  183. package/docs/ai-gym-onboarding.md +122 -0
  184. package/docs/appcreator_plan.md +348 -0
  185. package/docs/platform-mcp-audit.md +320 -0
  186. package/docs/server-deployment-plan.md +503 -0
  187. package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
  188. package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
  189. package/docs/user-guide.md +2016 -0
  190. package/mcp-catalog.json +628 -0
  191. package/package.json +63 -0
  192. package/public/MyAIforOne-logomark-512.svg +16 -0
  193. package/public/MyAIforOne-logomark-transparent.svg +15 -0
  194. package/public/activity.html +314 -0
  195. package/public/admin.html +1674 -0
  196. package/public/agent-dashboard.html +670 -0
  197. package/public/api-docs.html +1106 -0
  198. package/public/automations.html +722 -0
  199. package/public/canvas.css +223 -0
  200. package/public/canvas.js +588 -0
  201. package/public/changelog.html +231 -0
  202. package/public/gym.html +2766 -0
  203. package/public/home.html +1930 -0
  204. package/public/index.html +2809 -0
  205. package/public/lab.html +1643 -0
  206. package/public/library.html +1442 -0
  207. package/public/marketplace.html +1101 -0
  208. package/public/mcp-docs.html +441 -0
  209. package/public/mini.html +390 -0
  210. package/public/monitor.html +584 -0
  211. package/public/org.html +4304 -0
  212. package/public/projects.html +734 -0
  213. package/public/settings.html +645 -0
  214. package/public/tasks.html +932 -0
  215. package/public/trainers/alex.svg +12 -0
  216. package/public/trainers/jordan.svg +12 -0
  217. package/public/trainers/morgan.svg +12 -0
  218. package/public/trainers/riley.svg +12 -0
  219. package/public/trainers/sam.svg +12 -0
  220. package/public/user-guide.html +218 -0
  221. package/registry/agents.json +3 -0
  222. package/registry/apps.json +20 -0
  223. package/registry/installed-drafts.json +3 -0
  224. package/registry/mcps.json +1084 -0
  225. package/registry/prompts/personal/mcp-test-prompt.md +6 -0
  226. package/registry/prompts/personal/memory-recall.md +6 -0
  227. package/registry/prompts/platform/brainstorm.md +15 -0
  228. package/registry/prompts/platform/code-review.md +16 -0
  229. package/registry/prompts/platform/explain.md +16 -0
  230. package/registry/prompts.json +58 -0
  231. package/registry/skills/external/brainstorming.md +5 -0
  232. package/registry/skills/external/code-review.md +40 -0
  233. package/registry/skills/external/frontend-patterns.md +642 -0
  234. package/registry/skills/external/frontend-slides.md +184 -0
  235. package/registry/skills/external/systematic-debugging.md +5 -0
  236. package/registry/skills/external/tdd.md +328 -0
  237. package/registry/skills/external/verification-before-completion.md +5 -0
  238. package/registry/skills/external/writing-plans.md +5 -0
  239. package/registry/skills/platform/ai41_app_build.md +930 -0
  240. package/registry/skills/platform/ai41_app_deploy.md +168 -0
  241. package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
  242. package/registry/skills/platform/ai41_app_patterns.md +359 -0
  243. package/registry/skills/platform/ai41_app_register.md +85 -0
  244. package/registry/skills/platform/ai41_app_scaffold.md +421 -0
  245. package/registry/skills/platform/ai41_app_verify.md +107 -0
  246. package/registry/skills/platform/opProjectCreate.md +239 -0
  247. package/registry/skills/platform/op_devbrowser.md +136 -0
  248. package/registry/skills/platform/sop_brandguidelines.md +103 -0
  249. package/registry/skills/platform/sop_docx.md +117 -0
  250. package/registry/skills/platform/sop_frontenddesign.md +44 -0
  251. package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
  252. package/registry/skills/platform/sop_mcpbuilder.md +133 -0
  253. package/registry/skills/platform/sop_pdf.md +172 -0
  254. package/registry/skills/platform/sop_pptx.md +133 -0
  255. package/registry/skills/platform/sop_skillcreator.md +104 -0
  256. package/registry/skills/platform/sop_themefactory.md +128 -0
  257. package/registry/skills/platform/sop_webapptesting.md +75 -0
  258. package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
  259. package/registry/skills/platform/sop_xlsx.md +134 -0
  260. package/registry/skills.json +1055 -0
  261. package/scripts/discover-chats.sh +11 -0
  262. package/scripts/install-service-windows.ps1 +87 -0
  263. package/scripts/install-service.sh +52 -0
  264. package/scripts/seed-registry.ts +195 -0
  265. package/scripts/test-send.sh +5 -0
  266. package/scripts/tray-indicator.ps1 +35 -0
  267. package/scripts/uninstall-service-windows.ps1 +23 -0
  268. package/scripts/uninstall-service.sh +15 -0
  269. package/scripts/xbar-myagent.5s.sh +32 -0
  270. package/server/mcp-server/dist/index.d.ts +11 -0
  271. package/server/mcp-server/dist/index.js +1332 -0
  272. package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
  273. package/server/mcp-server/dist/lib/api-client.js +241 -0
  274. package/server/mcp-server/index.ts +1545 -0
  275. package/server/mcp-server/lib/api-client.ts +366 -0
  276. package/server/mcp-server/tsconfig.json +14 -0
  277. package/src/agent-registry.ts +180 -0
  278. package/src/channels/discord.ts +129 -0
  279. package/src/channels/imessage.ts +261 -0
  280. package/src/channels/slack.ts +208 -0
  281. package/src/channels/telegram.ts +307 -0
  282. package/src/channels/types.ts +62 -0
  283. package/src/channels/whatsapp.ts +227 -0
  284. package/src/config.ts +281 -0
  285. package/src/cron.ts +43 -0
  286. package/src/decrypt-keys.ts +60 -0
  287. package/src/encrypt-keys.ts +70 -0
  288. package/src/executor.ts +2190 -0
  289. package/src/gemini-executor.ts +212 -0
  290. package/src/goals.ts +240 -0
  291. package/src/gym/activity-digest.ts +546 -0
  292. package/src/gym/dimension-scorer.ts +297 -0
  293. package/src/gym/gym-router.ts +801 -0
  294. package/src/gym/index.ts +19 -0
  295. package/src/heartbeat.ts +220 -0
  296. package/src/index.ts +275 -0
  297. package/src/keystore.ts +190 -0
  298. package/src/logger.ts +51 -0
  299. package/src/memory/daily.ts +101 -0
  300. package/src/memory/embeddings.ts +185 -0
  301. package/src/memory/index.ts +218 -0
  302. package/src/memory/search.ts +124 -0
  303. package/src/memory/store.ts +189 -0
  304. package/src/ollama-executor.ts +126 -0
  305. package/src/openai-executor.ts +259 -0
  306. package/src/router.ts +230 -0
  307. package/src/test-message.ts +72 -0
  308. package/src/utils/imsg-db-reader.ts +109 -0
  309. package/src/utils/imsg-rpc.ts +178 -0
  310. package/src/utils/message-formatter.ts +90 -0
  311. package/src/web-ui.ts +5778 -0
  312. package/src/whatsapp-chats.ts +91 -0
  313. package/src/whatsapp-login.ts +110 -0
  314. package/src/wiki-sync.ts +199 -0
  315. package/tsconfig.json +19 -0
@@ -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
@@ -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,7 @@
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
+ export {};
7
+ //# sourceMappingURL=decrypt-keys.d.ts.map
@@ -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,8 @@
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
+ export {};
8
+ //# sourceMappingURL=encrypt-keys.d.ts.map
@@ -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":"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"}
@@ -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"}