@elvatis_com/elvatis-mcp 0.9.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.env.example CHANGED
@@ -59,3 +59,13 @@ OPENCLAW_GATEWAY_URL=http://localhost:18789
59
59
  # Useful when SSH fails with exit 255 and no output.
60
60
  # -------------------------
61
61
  # SSH_DEBUG=1
62
+
63
+ # -------------------------
64
+ # Rate limiting (optional)
65
+ # Directory for persistent usage data. Default: ~/.elvatis-mcp
66
+ # -------------------------
67
+ # ELVATIS_DATA_DIR=~/.elvatis-mcp
68
+
69
+ # Per-agent rate limit overrides (JSON string).
70
+ # Default limits: claude_run 5/min 30/hr 200/day, codex_run 5/min 30/hr 200/day, gemini_run 10/min 60/hr 500/day
71
+ # Example: RATE_LIMITS={"claude_run":{"perMinute":3,"perDay":100}}
package/dist/config.d.ts CHANGED
@@ -34,6 +34,15 @@ export interface Config {
34
34
  localLlmEndpoint?: string;
35
35
  /** Default model identifier for the local LLM (as shown in LM Studio / Ollama) */
36
36
  localLlmModel?: string;
37
+ /** Directory for persistent data (usage.json). Default: ~/.elvatis-mcp */
38
+ dataDir?: string;
39
+ /** Per-agent rate limit overrides. Keys: claude_run, codex_run, gemini_run */
40
+ rateLimits?: Record<string, {
41
+ perMinute?: number;
42
+ perHour?: number;
43
+ perDay?: number;
44
+ costPerCall?: number;
45
+ }>;
37
46
  }
38
47
  export declare function loadConfig(): Config;
39
48
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,MAAM,WAAW,MAAM;IACrB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,UAAU,IAAI,MAAM,CA0BnC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,MAAM,WAAW,MAAM;IACrB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9G;AAED,wBAAgB,UAAU,IAAI,MAAM,CA6BnC"}
package/dist/config.js CHANGED
@@ -40,6 +40,21 @@ function loadConfig() {
40
40
  // Local LLM (LM Studio default port: 1234, Ollama: 11434, llama.cpp: 8080)
41
41
  localLlmEndpoint: optional('LOCAL_LLM_ENDPOINT'),
42
42
  localLlmModel: optional('LOCAL_LLM_MODEL'),
43
+ // Rate limiting
44
+ dataDir: optional('ELVATIS_DATA_DIR'),
45
+ rateLimits: parseRateLimits(optional('RATE_LIMITS')),
43
46
  };
44
47
  }
48
+ /** Parse RATE_LIMITS env var (JSON string) into per-agent config. */
49
+ function parseRateLimits(raw) {
50
+ if (!raw)
51
+ return undefined;
52
+ try {
53
+ return JSON.parse(raw);
54
+ }
55
+ catch {
56
+ process.stderr.write(`[elvatis-mcp] Warning: RATE_LIMITS env var is not valid JSON, ignoring\n`);
57
+ return undefined;
58
+ }
59
+ }
45
60
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAiDH,gCA0BC;AAzED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,8BAA8B,CAAC,CAAC;IAC1F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,QAAiB;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;AACtC,CAAC;AAuCD,SAAgB,UAAU;IACxB,OAAO;QACL,4BAA4B;QAC5B,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC7B,kEAAkE;QAClE,UAAU,EAAE,QAAQ,CAAC,sBAAsB,EAAE,wBAAwB,CAAE;QACvE,YAAY,EAAE,QAAQ,CAAC,wBAAwB,CAAC;QAChD,YAAY;QACZ,SAAS,EAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAsB,IAAI,OAAO;QACxE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC;QAC9D,kDAAkD;QAClD,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAE;QAC5C,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAE;QAC/D,4FAA4F;QAC5F,oBAAoB,EAAE,QAAQ,CAAC,wBAAwB,CAAC;QACxD,aAAa;QACb,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC;QACrC,YAAY;QACZ,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC;QACnC,2EAA2E;QAC3E,gBAAgB,EAAE,QAAQ,CAAC,oBAAoB,CAAC;QAChD,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAsDH,gCA6BC;AAjFD,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,8BAA8B,CAAC,CAAC;IAC1F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,QAAiB;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;AACtC,CAAC;AA4CD,SAAgB,UAAU;IACxB,OAAO;QACL,4BAA4B;QAC5B,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC7B,kEAAkE;QAClE,UAAU,EAAE,QAAQ,CAAC,sBAAsB,EAAE,wBAAwB,CAAE;QACvE,YAAY,EAAE,QAAQ,CAAC,wBAAwB,CAAC;QAChD,YAAY;QACZ,SAAS,EAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAsB,IAAI,OAAO;QACxE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC;QAC9D,kDAAkD;QAClD,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAE;QAC5C,UAAU,EAAE,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAE;QAC/D,4FAA4F;QAC5F,oBAAoB,EAAE,QAAQ,CAAC,wBAAwB,CAAC;QACxD,aAAa;QACb,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC;QACrC,YAAY;QACZ,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC;QACnC,2EAA2E;QAC3E,gBAAgB,EAAE,QAAQ,CAAC,oBAAoB,CAAC;QAChD,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC;QAC1C,gBAAgB;QAChB,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC;QACrC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,SAAS,eAAe,CACtB,GAAY;IAEZ,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QACjG,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AA+GH,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC5C,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAuHH,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC5C,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzG,CAAC"}
package/dist/index.js CHANGED
@@ -79,6 +79,8 @@ const dashboard_js_1 = require("./dashboard.js");
79
79
  const llama_server_js_1 = require("./tools/llama-server.js");
80
80
  const local_llm_js_1 = require("./tools/local-llm.js");
81
81
  const splitter_js_1 = require("./tools/splitter.js");
82
+ const split_execute_js_1 = require("./tools/split-execute.js");
83
+ const rate_limiter_js_1 = require("./rate-limiter.js");
82
84
  function toText(result) {
83
85
  return JSON.stringify(result, null, 2);
84
86
  }
@@ -87,6 +89,14 @@ function registerTool(server, name, description, schema, handler) {
87
89
  }
88
90
  async function main() {
89
91
  const config = (0, config_js_1.loadConfig)();
92
+ // Initialize rate limiter with persistent storage
93
+ (0, rate_limiter_js_1.initRateLimiter)({
94
+ dataDir: config.dataDir,
95
+ limits: config.rateLimits,
96
+ });
97
+ // Flush usage data on shutdown
98
+ process.on('SIGINT', () => { (0, rate_limiter_js_1.flushNow)(); process.exit(0); });
99
+ process.on('SIGTERM', () => { (0, rate_limiter_js_1.flushNow)(); process.exit(0); });
90
100
  const server = new mcp_js_1.McpServer({
91
101
  name: 'elvatis-mcp',
92
102
  version: '0.1.0',
@@ -111,11 +121,32 @@ async function main() {
111
121
  registerTool(server, 'openclaw_status', 'Check if the OpenClaw daemon is running on the server and get version info', openclaw_js_1.openclawStatusSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, openclaw_js_1.handleOpenclawStatus)(args, config)) }] }));
112
122
  registerTool(server, 'openclaw_plugins', 'List all plugins installed on the OpenClaw server', openclaw_js_1.openclawPluginsSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, openclaw_js_1.handleOpenclawPlugins)(args, config)) }] }));
113
123
  // --- Gemini sub-agent (local spawn) ---
114
- registerTool(server, 'gemini_run', 'Send a prompt to Google Gemini via the local gemini CLI. Fast, direct LLM call with no OpenClaw overhead. Uses cached Google auth — no API key required.', gemini_js_1.geminiRunSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, gemini_js_1.handleGeminiRun)(args, config)) }] }));
124
+ registerTool(server, 'gemini_run', 'Send a prompt to Google Gemini via the local gemini CLI. Fast, direct LLM call with no OpenClaw overhead. Uses cached Google auth — no API key required.', gemini_js_1.geminiRunSchema.shape, async (args) => {
125
+ const quota = (0, rate_limiter_js_1.checkRateLimit)('gemini_run');
126
+ if (!quota.allowed)
127
+ return { content: [{ type: 'text', text: toText({ success: false, error: quota.reason, quota }) }] };
128
+ const result = await (0, gemini_js_1.handleGeminiRun)(args, config);
129
+ (0, rate_limiter_js_1.recordUsage)('gemini_run');
130
+ return { content: [{ type: 'text', text: toText(result) }] };
131
+ });
115
132
  // --- Codex sub-agent (local spawn) ---
116
- registerTool(server, 'codex_run', 'Send a task to OpenAI Codex via the local codex CLI. Specializes in coding tasks, file operations, and technical analysis. Uses cached OpenAI auth — no API key required.', codex_js_1.codexRunSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, codex_js_1.handleCodexRun)(args, config)) }] }));
133
+ registerTool(server, 'codex_run', 'Send a task to OpenAI Codex via the local codex CLI. Specializes in coding tasks, file operations, and technical analysis. Uses cached OpenAI auth — no API key required.', codex_js_1.codexRunSchema.shape, async (args) => {
134
+ const quota = (0, rate_limiter_js_1.checkRateLimit)('codex_run');
135
+ if (!quota.allowed)
136
+ return { content: [{ type: 'text', text: toText({ success: false, error: quota.reason, quota }) }] };
137
+ const result = await (0, codex_js_1.handleCodexRun)(args, config);
138
+ (0, rate_limiter_js_1.recordUsage)('codex_run');
139
+ return { content: [{ type: 'text', text: toText(result) }] };
140
+ });
117
141
  // --- Claude sub-agent (for non-Claude MCP clients like Cursor, Windsurf) ---
118
- registerTool(server, 'claude_run', 'Send a prompt to Claude via the local Claude Code CLI. Use this when the MCP client is NOT Claude (e.g. Cursor, Windsurf, Zed) or for cross-checking results from other AI backends. Uses cached Anthropic auth.', claude_js_1.claudeRunSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, claude_js_1.handleClaudeRun)(args)) }] }));
142
+ registerTool(server, 'claude_run', 'Send a prompt to Claude via the local Claude Code CLI. Use this when the MCP client is NOT Claude (e.g. Cursor, Windsurf, Zed) or for cross-checking results from other AI backends. Uses cached Anthropic auth.', claude_js_1.claudeRunSchema.shape, async (args) => {
143
+ const quota = (0, rate_limiter_js_1.checkRateLimit)('claude_run');
144
+ if (!quota.allowed)
145
+ return { content: [{ type: 'text', text: toText({ success: false, error: quota.reason, quota }) }] };
146
+ const result = await (0, claude_js_1.handleClaudeRun)(args);
147
+ (0, rate_limiter_js_1.recordUsage)('claude_run');
148
+ return { content: [{ type: 'text', text: toText(result) }] };
149
+ });
119
150
  // --- Local LLM sub-agent ---
120
151
  registerTool(server, 'local_llm_run', 'Send a prompt to a local LLM (LM Studio, Ollama, llama.cpp, or any OpenAI-compatible server). Free, private, no API key needed. Best for simple tasks: classify, format, extract, rewrite, proofread. Set stream=true for token-by-token progress.', local_llm_js_1.localLlmRunSchema.shape, async (args, extra) => ({ content: [{ type: 'text', text: toText(await (0, local_llm_js_1.handleLocalLlmRun)(args, config, extra)) }] }));
121
152
  // --- Routing and orchestration ---
@@ -126,6 +157,10 @@ async function main() {
126
157
  + 'Each subtask includes a suggested model that the user can override before execution. '
127
158
  + 'IMPORTANT: Always present the plan to the user for review before executing. '
128
159
  + 'Strategy: "auto" (default), "gemini", "local", or "heuristic".', splitter_js_1.promptSplitSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, splitter_js_1.handlePromptSplit)(args, config)) }] }));
160
+ registerTool(server, 'prompt_split_execute', 'Execute a prompt_split plan: runs subtasks in dependency order, dispatches to the correct sub-agent, '
161
+ + 'passes results between dependent tasks, and enforces rate limits on cloud agents. '
162
+ + 'Provide a "plan" from prompt_split, or just a "prompt" to generate and execute in one step. '
163
+ + 'Use "overrides" to change agent/model/prompt per task or skip tasks. Set dry_run=true to preview.', split_execute_js_1.splitExecuteSchema.shape, async (args, extra) => ({ content: [{ type: 'text', text: toText(await (0, split_execute_js_1.handleSplitExecute)(args, config, extra)) }] }));
129
164
  // --- System management ---
130
165
  registerTool(server, 'system_status', 'Check health of all connected services at once: Home Assistant, OpenClaw (SSH), local LLM, Gemini CLI, Codex CLI. Returns a unified status overview with latency for each service.', system_status_js_1.systemStatusSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, system_status_js_1.handleSystemStatus)(args, config)) }] }));
131
166
  registerTool(server, 'local_llm_models', 'List, load, or unload models on the local LLM server. "list" shows available models. "load"/"unload" switches models in LM Studio without opening the GUI (LM Studio only).', local_llm_models_js_1.localLlmModelsSchema.shape, async (args) => ({ content: [{ type: 'text', text: toText(await (0, local_llm_models_js_1.handleLocalLlmModels)(args, config)) }] }));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Rate limiter and cost tracker for cloud sub-agents.
3
+ *
4
+ * Tracks usage per agent (claude_run, codex_run, gemini_run) with configurable
5
+ * rate limits per minute/hour/day. Persists usage data to JSON so limits
6
+ * survive server restarts.
7
+ *
8
+ * Local agents (local_llm_run, home_*, openclaw_*) are not rate-limited.
9
+ */
10
+ export interface RateLimitConfig {
11
+ /** Max calls per minute (0 = unlimited) */
12
+ perMinute: number;
13
+ /** Max calls per hour (0 = unlimited) */
14
+ perHour: number;
15
+ /** Max calls per day (0 = unlimited) */
16
+ perDay: number;
17
+ /** Estimated cost per call in USD (for tracking, not enforcement) */
18
+ costPerCall: number;
19
+ }
20
+ export interface UsageRecord {
21
+ agent: string;
22
+ timestamp: number;
23
+ /** Estimated cost of this call in USD */
24
+ cost: number;
25
+ }
26
+ export interface UsageState {
27
+ /** Usage records (pruned to last 24h on load) */
28
+ records: UsageRecord[];
29
+ /** Running cost totals per agent */
30
+ dailyCosts: Record<string, number>;
31
+ /** Date string (YYYY-MM-DD) for dailyCosts reset */
32
+ costDate: string;
33
+ }
34
+ export interface QuotaInfo {
35
+ agent: string;
36
+ allowed: boolean;
37
+ /** Reason if not allowed */
38
+ reason?: string;
39
+ usage: {
40
+ lastMinute: number;
41
+ lastHour: number;
42
+ lastDay: number;
43
+ };
44
+ limits: {
45
+ perMinute: number;
46
+ perHour: number;
47
+ perDay: number;
48
+ };
49
+ estimatedCostToday: number;
50
+ }
51
+ /**
52
+ * Initialize the rate limiter. Call once at startup.
53
+ */
54
+ export declare function initRateLimiter(opts?: {
55
+ dataDir?: string;
56
+ limits?: Record<string, Partial<RateLimitConfig>>;
57
+ }): void;
58
+ /**
59
+ * Check if an agent call is allowed under current rate limits.
60
+ * Does NOT record usage (call recordUsage after the call succeeds).
61
+ */
62
+ export declare function checkRateLimit(agent: string): QuotaInfo;
63
+ /**
64
+ * Record a successful agent call. Updates usage state and schedules a flush.
65
+ */
66
+ export declare function recordUsage(agent: string): void;
67
+ /**
68
+ * Get quota info for all rate-limited agents.
69
+ */
70
+ export declare function getAllQuotas(): QuotaInfo[];
71
+ /**
72
+ * Get a summary of today's estimated costs.
73
+ */
74
+ export declare function getCostSummary(): {
75
+ date: string;
76
+ agents: Record<string, number>;
77
+ total: number;
78
+ };
79
+ /**
80
+ * Force an immediate flush (call on server shutdown).
81
+ */
82
+ export declare function flushNow(): void;
83
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAwBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;CACnD,GAAG,IAAI,CAIP;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CA+CvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAwB/C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,EAAE,CAM1C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOhG;AAoED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAM/B"}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ /**
3
+ * Rate limiter and cost tracker for cloud sub-agents.
4
+ *
5
+ * Tracks usage per agent (claude_run, codex_run, gemini_run) with configurable
6
+ * rate limits per minute/hour/day. Persists usage data to JSON so limits
7
+ * survive server restarts.
8
+ *
9
+ * Local agents (local_llm_run, home_*, openclaw_*) are not rate-limited.
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.initRateLimiter = initRateLimiter;
46
+ exports.checkRateLimit = checkRateLimit;
47
+ exports.recordUsage = recordUsage;
48
+ exports.getAllQuotas = getAllQuotas;
49
+ exports.getCostSummary = getCostSummary;
50
+ exports.flushNow = flushNow;
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ const os = __importStar(require("os"));
54
+ // --- Default limits ---
55
+ const DEFAULT_LIMITS = {
56
+ claude_run: { perMinute: 5, perHour: 30, perDay: 200, costPerCall: 0.03 },
57
+ codex_run: { perMinute: 5, perHour: 30, perDay: 200, costPerCall: 0.02 },
58
+ gemini_run: { perMinute: 10, perHour: 60, perDay: 500, costPerCall: 0.01 },
59
+ };
60
+ // --- State ---
61
+ let state = {
62
+ records: [],
63
+ dailyCosts: {},
64
+ costDate: todayString(),
65
+ };
66
+ let dataDir = path.join(os.homedir(), '.elvatis-mcp');
67
+ let customLimits = {};
68
+ let flushTimer = null;
69
+ // --- Public API ---
70
+ /**
71
+ * Initialize the rate limiter. Call once at startup.
72
+ */
73
+ function initRateLimiter(opts) {
74
+ if (opts?.dataDir)
75
+ dataDir = opts.dataDir;
76
+ if (opts?.limits)
77
+ customLimits = opts.limits;
78
+ loadUsageState();
79
+ }
80
+ /**
81
+ * Check if an agent call is allowed under current rate limits.
82
+ * Does NOT record usage (call recordUsage after the call succeeds).
83
+ */
84
+ function checkRateLimit(agent) {
85
+ const limits = getLimits(agent);
86
+ if (!limits) {
87
+ // No limits configured for this agent (local/home tools)
88
+ return {
89
+ agent,
90
+ allowed: true,
91
+ usage: { lastMinute: 0, lastHour: 0, lastDay: 0 },
92
+ limits: { perMinute: 0, perHour: 0, perDay: 0 },
93
+ estimatedCostToday: 0,
94
+ };
95
+ }
96
+ const now = Date.now();
97
+ const oneMinAgo = now - 60000;
98
+ const oneHourAgo = now - 3600000;
99
+ const oneDayAgo = now - 86400000;
100
+ const agentRecords = state.records.filter(r => r.agent === agent);
101
+ const lastMinute = agentRecords.filter(r => r.timestamp > oneMinAgo).length;
102
+ const lastHour = agentRecords.filter(r => r.timestamp > oneHourAgo).length;
103
+ const lastDay = agentRecords.filter(r => r.timestamp > oneDayAgo).length;
104
+ const usage = { lastMinute, lastHour, lastDay };
105
+ const limitsInfo = {
106
+ perMinute: limits.perMinute,
107
+ perHour: limits.perHour,
108
+ perDay: limits.perDay,
109
+ };
110
+ let allowed = true;
111
+ let reason;
112
+ if (limits.perMinute > 0 && lastMinute >= limits.perMinute) {
113
+ allowed = false;
114
+ reason = `Rate limit exceeded: ${lastMinute}/${limits.perMinute} calls in the last minute`;
115
+ }
116
+ else if (limits.perHour > 0 && lastHour >= limits.perHour) {
117
+ allowed = false;
118
+ reason = `Rate limit exceeded: ${lastHour}/${limits.perHour} calls in the last hour`;
119
+ }
120
+ else if (limits.perDay > 0 && lastDay >= limits.perDay) {
121
+ allowed = false;
122
+ reason = `Rate limit exceeded: ${lastDay}/${limits.perDay} calls in the last day`;
123
+ }
124
+ const estimatedCostToday = state.dailyCosts[agent] ?? 0;
125
+ return { agent, allowed, reason, usage, limits: limitsInfo, estimatedCostToday };
126
+ }
127
+ /**
128
+ * Record a successful agent call. Updates usage state and schedules a flush.
129
+ */
130
+ function recordUsage(agent) {
131
+ const limits = getLimits(agent);
132
+ const cost = limits?.costPerCall ?? 0;
133
+ // Reset daily costs if date changed
134
+ const today = todayString();
135
+ if (state.costDate !== today) {
136
+ state.dailyCosts = {};
137
+ state.costDate = today;
138
+ }
139
+ state.records.push({
140
+ agent,
141
+ timestamp: Date.now(),
142
+ cost,
143
+ });
144
+ state.dailyCosts[agent] = (state.dailyCosts[agent] ?? 0) + cost;
145
+ // Prune old records (keep last 24h only)
146
+ const cutoff = Date.now() - 86400000;
147
+ state.records = state.records.filter(r => r.timestamp > cutoff);
148
+ scheduleFlush();
149
+ }
150
+ /**
151
+ * Get quota info for all rate-limited agents.
152
+ */
153
+ function getAllQuotas() {
154
+ const agents = new Set([
155
+ ...Object.keys(DEFAULT_LIMITS),
156
+ ...Object.keys(customLimits),
157
+ ]);
158
+ return Array.from(agents).map(agent => checkRateLimit(agent));
159
+ }
160
+ /**
161
+ * Get a summary of today's estimated costs.
162
+ */
163
+ function getCostSummary() {
164
+ const today = todayString();
165
+ if (state.costDate !== today) {
166
+ return { date: today, agents: {}, total: 0 };
167
+ }
168
+ const total = Object.values(state.dailyCosts).reduce((sum, c) => sum + c, 0);
169
+ return { date: today, agents: { ...state.dailyCosts }, total };
170
+ }
171
+ // --- Internal helpers ---
172
+ function getLimits(agent) {
173
+ const defaults = DEFAULT_LIMITS[agent];
174
+ if (!defaults)
175
+ return null;
176
+ const overrides = customLimits[agent];
177
+ if (!overrides)
178
+ return defaults;
179
+ return {
180
+ perMinute: overrides.perMinute ?? defaults.perMinute,
181
+ perHour: overrides.perHour ?? defaults.perHour,
182
+ perDay: overrides.perDay ?? defaults.perDay,
183
+ costPerCall: overrides.costPerCall ?? defaults.costPerCall,
184
+ };
185
+ }
186
+ function todayString() {
187
+ return new Date().toISOString().slice(0, 10);
188
+ }
189
+ function usageFilePath() {
190
+ return path.join(dataDir, 'usage.json');
191
+ }
192
+ function loadUsageState() {
193
+ try {
194
+ const raw = fs.readFileSync(usageFilePath(), 'utf-8');
195
+ const loaded = JSON.parse(raw);
196
+ // Prune records older than 24h
197
+ const cutoff = Date.now() - 86400000;
198
+ loaded.records = (loaded.records ?? []).filter(r => r.timestamp > cutoff);
199
+ // Reset daily costs if date changed
200
+ const today = todayString();
201
+ if (loaded.costDate !== today) {
202
+ loaded.dailyCosts = {};
203
+ loaded.costDate = today;
204
+ }
205
+ state = loaded;
206
+ }
207
+ catch {
208
+ // File doesn't exist or is corrupt, start fresh
209
+ state = { records: [], dailyCosts: {}, costDate: todayString() };
210
+ }
211
+ }
212
+ function scheduleFlush() {
213
+ if (flushTimer)
214
+ return;
215
+ // Debounce: flush at most once per 5 seconds
216
+ flushTimer = setTimeout(() => {
217
+ flushTimer = null;
218
+ flushUsageState();
219
+ }, 5000);
220
+ }
221
+ function flushUsageState() {
222
+ try {
223
+ fs.mkdirSync(dataDir, { recursive: true });
224
+ fs.writeFileSync(usageFilePath(), JSON.stringify(state, null, 2), 'utf-8');
225
+ }
226
+ catch (err) {
227
+ process.stderr.write(`[elvatis-mcp] Failed to persist usage data: ${err}\n`);
228
+ }
229
+ }
230
+ /**
231
+ * Force an immediate flush (call on server shutdown).
232
+ */
233
+ function flushNow() {
234
+ if (flushTimer) {
235
+ clearTimeout(flushTimer);
236
+ flushTimer = null;
237
+ }
238
+ flushUsageState();
239
+ }
240
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"routing-rules.d.ts","sourceRoot":"","sources":["../../src/tools/routing-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,aAAa,EAAE,WAAW,EAuHtC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB/F;AAED,qEAAqE;AACrE,eAAO,MAAM,YAAY,aAOvB,CAAC;AAEH,eAAO,MAAM,aAAa,QAwDlB,CAAC"}
1
+ {"version":3,"file":"routing-rules.d.ts","sourceRoot":"","sources":["../../src/tools/routing-rules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,aAAa,EAAE,WAAW,EAuHtC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB/F;AAED,qEAAqE;AACrE,eAAO,MAAM,YAAY,aAOvB,CAAC;AAEH,eAAO,MAAM,aAAa,QAyFlB,CAAC"}
@@ -169,7 +169,7 @@ exports.KNOWN_AGENTS = new Set([
169
169
  'openclaw_notify', 'openclaw_logs', 'system_status', 'local_llm_models', 'file_transfer',
170
170
  ]);
171
171
  exports.ROUTING_GUIDE = `
172
- # elvatis-mcp: Sub-Agent Routing Guide
172
+ # elvatis-mcp: Sub-Agent Routing Guide (34 tools)
173
173
 
174
174
  ## Sub-Agents (spawn a separate AI to handle a task)
175
175
 
@@ -181,7 +181,7 @@ exports.ROUTING_GUIDE = `
181
181
  | \`codex_run\` | OpenAI Codex | OpenAI login (cached) | Coding, debugging, refactoring, file editing, shell scripting |
182
182
  | \`local_llm_run\` | Local LLM (Ollama/LM Studio/llama.cpp) | None | Free, private, fast for simple tasks (classify, format, extract, rewrite) |
183
183
 
184
- ## Home Automation Tools (direct Home Assistant calls)
184
+ ## Home Automation (direct Home Assistant calls)
185
185
 
186
186
  | Tool | What it does |
187
187
  |------|-------------|
@@ -191,8 +191,9 @@ exports.ROUTING_GUIDE = `
191
191
  | \`home_vacuum\` | Start, stop, or dock the robot vacuum |
192
192
  | \`home_sensors\` | Read all temp/humidity/CO2 sensors |
193
193
  | \`home_get_state\` | Read any Home Assistant entity |
194
+ | \`home_automation\` | List, trigger, enable, or disable HA automations |
194
195
 
195
- ## Memory Tools (OpenClaw server)
196
+ ## Memory (OpenClaw server via SSH)
196
197
 
197
198
  | Tool | What it does |
198
199
  |------|-------------|
@@ -200,19 +201,48 @@ exports.ROUTING_GUIDE = `
200
201
  | \`openclaw_memory_read_today\` | Read today's memory log |
201
202
  | \`openclaw_memory_search\` | Search memory across past N days |
202
203
 
203
- ## Cron Tools (OpenClaw server)
204
+ ## Cron (OpenClaw server via SSH)
204
205
 
205
206
  | Tool | What it does |
206
207
  |------|-------------|
207
208
  | \`openclaw_cron_list\` | List all scheduled cron jobs |
208
209
  | \`openclaw_cron_run\` | Trigger a job immediately |
209
210
  | \`openclaw_cron_status\` | Get scheduler status and recent runs |
211
+ | \`openclaw_cron_create\` | Create a new cron job (cron expr, interval, or one-shot) |
212
+ | \`openclaw_cron_edit\` | Edit an existing cron job |
213
+ | \`openclaw_cron_delete\` | Delete a cron job by ID |
214
+ | \`openclaw_cron_history\` | View execution history for cron jobs |
210
215
 
211
- ## Prompt Splitting
216
+ ## OpenClaw Server
212
217
 
213
218
  | Tool | What it does |
214
219
  |------|-------------|
215
- | \`prompt_split\` | Analyze a complex prompt and split into sub-tasks with agent assignments |
220
+ | \`openclaw_status\` | Check if the OpenClaw daemon is running |
221
+ | \`openclaw_plugins\` | List installed OpenClaw plugins |
222
+ | \`openclaw_notify\` | Send notifications via WhatsApp or Telegram |
223
+ | \`openclaw_logs\` | Tail OpenClaw server logs with optional filtering |
224
+ | \`file_transfer\` | Upload/download files to/from OpenClaw server via SCP |
225
+
226
+ ## Local LLM Management
227
+
228
+ | Tool | What it does |
229
+ |------|-------------|
230
+ | \`local_llm_models\` | List, load, or unload models on the local LLM server |
231
+ | \`llama_server\` | Start/stop a llama.cpp inference server |
232
+
233
+ ## Orchestration and Routing
234
+
235
+ | Tool | What it does |
236
+ |------|-------------|
237
+ | \`mcp_help\` | This guide. Optionally provide a task for routing recommendations |
238
+ | \`prompt_split\` | Analyze a complex prompt, split into sub-tasks with agent assignments |
239
+ | \`prompt_split_execute\` | Execute a split plan: dispatches to agents in dependency order with rate limiting |
240
+
241
+ ## System
242
+
243
+ | Tool | What it does |
244
+ |------|-------------|
245
+ | \`system_status\` | Check health of all services (HA, SSH, LLM, Gemini, Codex) with latency |
216
246
 
217
247
  ## Decision Guide
218
248
 
@@ -222,7 +252,10 @@ exports.ROUTING_GUIDE = `
222
252
  - **Simple formatting, extraction, classification** -> \`local_llm_run\`
223
253
  - **Smart home control** -> appropriate \`home_*\` tool (no sub-agent needed)
224
254
  - **Cross-check / second opinion** -> run both \`gemini_run\` and compare
225
- - **Complex multi-step task** -> \`prompt_split\` first, then execute the plan
255
+ - **Complex multi-step task** -> \`prompt_split\` first, review, then \`prompt_split_execute\`
226
256
  - **Coding task that also needs context** -> \`codex_run\` first, then \`gemini_run\` to review
257
+ - **Send results to user** -> \`openclaw_notify\` (WhatsApp/Telegram)
258
+ - **Schedule a recurring task** -> \`openclaw_cron_create\`
259
+ - **Check system health** -> \`system_status\`
227
260
  `.trim();
228
261
  //# sourceMappingURL=routing-rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routing-rules.js","sourceRoot":"","sources":["../../src/tools/routing-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing-rules.js","sourceRoot":"","sources":["../../src/tools/routing-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * prompt_split_execute — execute a SplitPlan produced by prompt_split.
3
+ *
4
+ * Takes a plan (or runs prompt_split inline), executes subtasks in dependency
5
+ * order using parallelizable_groups, passes results between dependent tasks,
6
+ * and enforces rate limits on cloud agents.
7
+ */
8
+ import { z } from 'zod';
9
+ import { Config } from '../config.js';
10
+ import type { ToolExtra } from '../index.js';
11
+ import type { SplitPlan } from './splitter.js';
12
+ export declare const splitExecuteSchema: z.ZodObject<{
13
+ plan: z.ZodOptional<z.ZodAny>;
14
+ prompt: z.ZodOptional<z.ZodString>;
15
+ overrides: z.ZodOptional<z.ZodArray<z.ZodObject<{
16
+ id: z.ZodString;
17
+ agent: z.ZodOptional<z.ZodString>;
18
+ model: z.ZodOptional<z.ZodString>;
19
+ prompt: z.ZodOptional<z.ZodString>;
20
+ skip: z.ZodOptional<z.ZodBoolean>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ id: string;
23
+ model?: string | undefined;
24
+ prompt?: string | undefined;
25
+ agent?: string | undefined;
26
+ skip?: boolean | undefined;
27
+ }, {
28
+ id: string;
29
+ model?: string | undefined;
30
+ prompt?: string | undefined;
31
+ agent?: string | undefined;
32
+ skip?: boolean | undefined;
33
+ }>, "many">>;
34
+ dry_run: z.ZodDefault<z.ZodBoolean>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ dry_run: boolean;
37
+ prompt?: string | undefined;
38
+ plan?: any;
39
+ overrides?: {
40
+ id: string;
41
+ model?: string | undefined;
42
+ prompt?: string | undefined;
43
+ agent?: string | undefined;
44
+ skip?: boolean | undefined;
45
+ }[] | undefined;
46
+ }, {
47
+ prompt?: string | undefined;
48
+ plan?: any;
49
+ overrides?: {
50
+ id: string;
51
+ model?: string | undefined;
52
+ prompt?: string | undefined;
53
+ agent?: string | undefined;
54
+ skip?: boolean | undefined;
55
+ }[] | undefined;
56
+ dry_run?: boolean | undefined;
57
+ }>;
58
+ interface TaskResult {
59
+ id: string;
60
+ agent: string;
61
+ status: 'success' | 'error' | 'skipped' | 'rate_limited';
62
+ result?: unknown;
63
+ error?: string;
64
+ duration_ms?: number;
65
+ }
66
+ interface ExecutionResult {
67
+ plan: SplitPlan;
68
+ results: TaskResult[];
69
+ total_duration_ms: number;
70
+ summary: string;
71
+ }
72
+ export declare function handleSplitExecute(args: {
73
+ plan?: unknown;
74
+ prompt?: string;
75
+ overrides?: Array<{
76
+ id: string;
77
+ agent?: string;
78
+ model?: string;
79
+ prompt?: string;
80
+ skip?: boolean;
81
+ }>;
82
+ dry_run: boolean;
83
+ }, config: Config, extra?: ToolExtra): Promise<ExecutionResult>;
84
+ export {};
85
+ //# sourceMappingURL=split-execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-execute.d.ts","sourceRoot":"","sources":["../../src/tools/split-execute.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,eAAe,CAAC;AAqBxD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa7B,CAAC;AAIH,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAAC;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnG,OAAO,EAAE,OAAO,CAAC;CAClB,EACD,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,eAAe,CAAC,CAiJ1B"}
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ /**
3
+ * prompt_split_execute — execute a SplitPlan produced by prompt_split.
4
+ *
5
+ * Takes a plan (or runs prompt_split inline), executes subtasks in dependency
6
+ * order using parallelizable_groups, passes results between dependent tasks,
7
+ * and enforces rate limits on cloud agents.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.splitExecuteSchema = void 0;
44
+ exports.handleSplitExecute = handleSplitExecute;
45
+ const zod_1 = require("zod");
46
+ const rate_limiter_js_1 = require("../rate-limiter.js");
47
+ // Lazy imports to avoid circular dependency at module load time.
48
+ // Each handler is imported on first use and cached.
49
+ let _handleGeminiRun = null;
50
+ let _handleCodexRun = null;
51
+ let _handleClaudeRun = null;
52
+ let _handleLocalLlmRun = null;
53
+ let _handleOpenclawRun = null;
54
+ let _handlePromptSplit = null;
55
+ // --- Schema ---
56
+ const subtaskOverrideSchema = zod_1.z.object({
57
+ id: zod_1.z.string(),
58
+ agent: zod_1.z.string().optional(),
59
+ model: zod_1.z.string().optional(),
60
+ prompt: zod_1.z.string().optional(),
61
+ skip: zod_1.z.boolean().optional(),
62
+ }).describe('Override fields for a specific subtask');
63
+ exports.splitExecuteSchema = zod_1.z.object({
64
+ plan: zod_1.z.any().optional().describe('A SplitPlan object (from prompt_split). If omitted, provide "prompt" to generate one.'),
65
+ prompt: zod_1.z.string().optional().describe('If no plan is provided, run prompt_split with this prompt first (heuristic strategy).'),
66
+ overrides: zod_1.z.array(subtaskOverrideSchema).optional().describe('Optional per-task overrides: change agent, model, prompt, or skip a task.'),
67
+ dry_run: zod_1.z.boolean().default(false).describe('If true, return the plan with rate limit checks but do not execute.'),
68
+ });
69
+ // --- Handler ---
70
+ async function handleSplitExecute(args, config, extra) {
71
+ // Step 1: Get or generate plan
72
+ let plan;
73
+ if (args.plan && typeof args.plan === 'object') {
74
+ plan = args.plan;
75
+ }
76
+ else if (args.prompt) {
77
+ if (!_handlePromptSplit)
78
+ _handlePromptSplit = (await Promise.resolve().then(() => __importStar(require('./splitter.js')))).handlePromptSplit;
79
+ plan = await _handlePromptSplit({ prompt: args.prompt, strategy: 'heuristic' }, config);
80
+ }
81
+ else {
82
+ return {
83
+ plan: { original_prompt: '', subtasks: [], parallelizable_groups: [], estimated_total_seconds: 0, strategy_used: 'none', note: '' },
84
+ results: [],
85
+ total_duration_ms: 0,
86
+ summary: 'Error: provide either "plan" or "prompt".',
87
+ };
88
+ }
89
+ // Step 2: Apply overrides
90
+ if (args.overrides) {
91
+ const overrideMap = new Map(args.overrides.map(o => [o.id, o]));
92
+ for (const task of plan.subtasks) {
93
+ const override = overrideMap.get(task.id);
94
+ if (!override)
95
+ continue;
96
+ if (override.agent)
97
+ task.agent = override.agent;
98
+ if (override.model)
99
+ task.model = override.model;
100
+ if (override.prompt)
101
+ task.prompt = override.prompt;
102
+ }
103
+ // Mark skipped tasks
104
+ var skippedIds = new Set(args.overrides.filter(o => o.skip).map(o => o.id));
105
+ }
106
+ else {
107
+ var skippedIds = new Set();
108
+ }
109
+ // Step 3: Rate limit pre-check (dry run or pre-flight)
110
+ const rateLimitIssues = [];
111
+ for (const task of plan.subtasks) {
112
+ if (skippedIds.has(task.id))
113
+ continue;
114
+ const quota = (0, rate_limiter_js_1.checkRateLimit)(task.agent);
115
+ if (!quota.allowed) {
116
+ rateLimitIssues.push(`${task.id} (${task.agent}): ${quota.reason}`);
117
+ }
118
+ }
119
+ if (args.dry_run) {
120
+ return {
121
+ plan,
122
+ results: plan.subtasks.map(t => ({
123
+ id: t.id,
124
+ agent: t.agent,
125
+ status: skippedIds.has(t.id) ? 'skipped' : 'success',
126
+ })),
127
+ total_duration_ms: 0,
128
+ summary: rateLimitIssues.length > 0
129
+ ? `Dry run complete. Rate limit issues: ${rateLimitIssues.join('; ')}`
130
+ : `Dry run complete. ${plan.subtasks.length} tasks ready to execute.`,
131
+ };
132
+ }
133
+ // Step 4: Execute groups in order
134
+ const results = [];
135
+ const resultMap = new Map();
136
+ const startTime = Date.now();
137
+ // Send progress if available
138
+ const progressToken = extra?._meta?.progressToken;
139
+ const sendProgress = progressToken && extra?.sendNotification
140
+ ? async (msg) => {
141
+ await extra.sendNotification({
142
+ method: 'notifications/progress',
143
+ params: { progressToken, progress: results.length, total: plan.subtasks.length, message: msg },
144
+ });
145
+ }
146
+ : async (_msg) => { };
147
+ for (const group of plan.parallelizable_groups) {
148
+ const groupTasks = group
149
+ .map(id => plan.subtasks.find(t => t.id === id))
150
+ .filter((t) => t != null);
151
+ // Execute tasks in this group concurrently
152
+ const groupPromises = groupTasks.map(async (task) => {
153
+ // Skip?
154
+ if (skippedIds.has(task.id)) {
155
+ return { id: task.id, agent: task.agent, status: 'skipped' };
156
+ }
157
+ // Rate limit check (re-check at execution time)
158
+ const quota = (0, rate_limiter_js_1.checkRateLimit)(task.agent);
159
+ if (!quota.allowed) {
160
+ return {
161
+ id: task.id,
162
+ agent: task.agent,
163
+ status: 'rate_limited',
164
+ error: quota.reason,
165
+ };
166
+ }
167
+ // Inject prior results into prompt if task has dependencies
168
+ let prompt = task.prompt;
169
+ if (task.depends_on.length > 0) {
170
+ const priorResults = task.depends_on
171
+ .map(depId => {
172
+ const r = resultMap.get(depId);
173
+ return r ? `[Result from ${depId}]: ${typeof r === 'string' ? r : JSON.stringify(r)}` : null;
174
+ })
175
+ .filter(Boolean);
176
+ if (priorResults.length > 0) {
177
+ prompt = `${prompt}\n\nContext from prior tasks:\n${priorResults.join('\n')}`;
178
+ }
179
+ }
180
+ await sendProgress(`Running ${task.id}: ${task.summary}`);
181
+ const taskStart = Date.now();
182
+ try {
183
+ const result = await dispatchTask(task, prompt, config, extra);
184
+ const duration = Date.now() - taskStart;
185
+ (0, rate_limiter_js_1.recordUsage)(task.agent);
186
+ resultMap.set(task.id, result);
187
+ return { id: task.id, agent: task.agent, status: 'success', result, duration_ms: duration };
188
+ }
189
+ catch (err) {
190
+ const duration = Date.now() - taskStart;
191
+ return { id: task.id, agent: task.agent, status: 'error', error: String(err), duration_ms: duration };
192
+ }
193
+ });
194
+ const groupResults = await Promise.all(groupPromises);
195
+ results.push(...groupResults);
196
+ }
197
+ const totalDuration = Date.now() - startTime;
198
+ const succeeded = results.filter(r => r.status === 'success').length;
199
+ const failed = results.filter(r => r.status === 'error').length;
200
+ const skipped = results.filter(r => r.status === 'skipped').length;
201
+ const rateLimited = results.filter(r => r.status === 'rate_limited').length;
202
+ let summary = `Executed ${succeeded}/${plan.subtasks.length} tasks in ${(totalDuration / 1000).toFixed(1)}s.`;
203
+ if (failed > 0)
204
+ summary += ` ${failed} failed.`;
205
+ if (skipped > 0)
206
+ summary += ` ${skipped} skipped.`;
207
+ if (rateLimited > 0)
208
+ summary += ` ${rateLimited} rate-limited.`;
209
+ await sendProgress(summary);
210
+ return { plan, results, total_duration_ms: totalDuration, summary };
211
+ }
212
+ // --- Dispatch ---
213
+ async function dispatchTask(task, prompt, config, extra) {
214
+ switch (task.agent) {
215
+ case 'gemini_run': {
216
+ if (!_handleGeminiRun)
217
+ _handleGeminiRun = (await Promise.resolve().then(() => __importStar(require('./gemini.js')))).handleGeminiRun;
218
+ return _handleGeminiRun({ prompt, model: task.model !== 'gemini-2.5-flash' ? task.model : undefined, timeout_seconds: 60 }, config);
219
+ }
220
+ case 'codex_run': {
221
+ if (!_handleCodexRun)
222
+ _handleCodexRun = (await Promise.resolve().then(() => __importStar(require('./codex.js')))).handleCodexRun;
223
+ return _handleCodexRun({ prompt, model: task.model !== 'gpt-5-codex' ? task.model : undefined, sandbox: 'full-auto', timeout_seconds: 120 }, config);
224
+ }
225
+ case 'claude_run': {
226
+ if (!_handleClaudeRun)
227
+ _handleClaudeRun = (await Promise.resolve().then(() => __importStar(require('./claude.js')))).handleClaudeRun;
228
+ return _handleClaudeRun({ prompt, model: task.model !== 'claude-sonnet-4-6' ? task.model : undefined, timeout_seconds: 60 });
229
+ }
230
+ case 'local_llm_run': {
231
+ if (!_handleLocalLlmRun)
232
+ _handleLocalLlmRun = (await Promise.resolve().then(() => __importStar(require('./local-llm.js')))).handleLocalLlmRun;
233
+ return _handleLocalLlmRun({ prompt, timeout_seconds: 60, stream: false }, config, extra);
234
+ }
235
+ case 'openclaw_run': {
236
+ if (!_handleOpenclawRun)
237
+ _handleOpenclawRun = (await Promise.resolve().then(() => __importStar(require('./openclaw.js')))).handleOpenclawRun;
238
+ return _handleOpenclawRun({ message: prompt, timeout_seconds: 120 }, config);
239
+ }
240
+ default:
241
+ // For non-dispatchable agents (home_*, memory_*, cron_*), return guidance
242
+ return {
243
+ note: `Agent "${task.agent}" cannot be auto-dispatched. Call the tool directly with the prompt.`,
244
+ prompt,
245
+ agent: task.agent,
246
+ };
247
+ }
248
+ }
249
+ //# sourceMappingURL=split-execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-execute.js","sourceRoot":"","sources":["../../src/tools/split-execute.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elvatis_com/elvatis-mcp",
3
- "version": "0.9.0",
3
+ "version": "1.0.1",
4
4
  "description": "MCP server for OpenClaw — expose smart home, memory, cron, and more to Claude Desktop, Cursor, Windsurf, and any MCP client",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",