@telora/mcp-products 0.22.3 → 0.22.6

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.
@@ -2,145 +2,10 @@
2
2
  // Daemon connector tool handler: telora_connector_start
3
3
  // ---------------------------------------------------------------------------
4
4
  import { join, basename } from "node:path";
5
- import { existsSync, writeFileSync, mkdirSync, readFileSync, openSync } from "node:fs";
6
- import { spawn, execFileSync } from "node:child_process";
7
- import { homedir } from "node:os";
5
+ import { existsSync, writeFileSync, mkdirSync, readFileSync } from "node:fs";
8
6
  import { z } from "zod";
9
7
  import { callProductApi, successResult, wrapHandler, } from "../shared.js";
10
- // Keys that always come from the fresh config (identity/auth -- may change between restarts).
11
- // Note: productId is NOT here -- it's been replaced by the products array.
12
- const IDENTITY_KEYS = ["teloraUrl", "trackerId", "organizationId"];
13
- /**
14
- * Merge a fresh daemon config into an existing one.
15
- *
16
- * - Identity keys are always overwritten.
17
- * - Products array: if the fresh product is already in the array, update its
18
- * repoPath if different; if missing, append the new entry.
19
- * - Legacy flat `productId` + `repoPath` are migrated into the products array.
20
- * - Engine sections are only added if missing.
21
- * - Everything else the user has customized is preserved.
22
- *
23
- * Returns { config, action } where action indicates what happened:
24
- * 'created' -- first-time config (no existing file)
25
- * 'added' -- new product appended to existing config
26
- * 'updated' -- existing product's repoPath changed
27
- * 'no_change' -- product already registered with same repoPath
28
- */
29
- function mergeConfig(existing, freshProduct, fresh) {
30
- const merged = { ...existing };
31
- // Always overwrite identity keys
32
- for (const key of IDENTITY_KEYS) {
33
- if (key in fresh) {
34
- merged[key] = fresh[key];
35
- }
36
- }
37
- // Migrate legacy flat productId + repoPath into products array
38
- let products = Array.isArray(merged.products)
39
- ? merged.products
40
- : [];
41
- if (products.length === 0 && typeof merged.productId === "string" && merged.productId) {
42
- // Legacy single-product config -- migrate to products array
43
- const legacyRepoPath = typeof merged.repoPath === "string" ? merged.repoPath : process.cwd();
44
- products = [{ id: merged.productId, repoPath: legacyRepoPath }];
45
- }
46
- // Remove legacy flat keys (superseded by products array)
47
- delete merged.productId;
48
- delete merged.repoPath;
49
- // Upsert the fresh product into the array
50
- let action;
51
- const idx = products.findIndex((p) => p.id === freshProduct.id);
52
- if (idx >= 0) {
53
- if (products[idx].repoPath !== freshProduct.repoPath) {
54
- products[idx] = { ...products[idx], repoPath: freshProduct.repoPath };
55
- action = "updated";
56
- }
57
- else {
58
- action = "no_change";
59
- }
60
- }
61
- else {
62
- products.push(freshProduct);
63
- action = "added";
64
- }
65
- merged.products = products;
66
- // Engines: add missing sections, never overwrite existing ones
67
- const freshEngines = fresh.engines;
68
- if (freshEngines) {
69
- if (!merged.engines) {
70
- merged.engines = freshEngines;
71
- }
72
- else {
73
- const existingEngines = merged.engines;
74
- for (const engineKey of Object.keys(freshEngines)) {
75
- if (!(engineKey in existingEngines)) {
76
- existingEngines[engineKey] = freshEngines[engineKey];
77
- }
78
- }
79
- }
80
- }
81
- return { config: merged, action };
82
- }
83
- /** Read the daemon PID from .telora/daemon.pid. Returns null if missing or invalid. */
84
- function readPidFile(teloraDir) {
85
- const pidPath = join(teloraDir, "daemon.pid");
86
- try {
87
- const raw = readFileSync(pidPath, "utf-8").trim();
88
- const pid = parseInt(raw, 10);
89
- return Number.isFinite(pid) && pid > 0 ? pid : null;
90
- }
91
- catch {
92
- return null;
93
- }
94
- }
95
- /** Check if a process is alive (signal 0 existence check). */
96
- function isProcessAlive(pid) {
97
- try {
98
- process.kill(pid, 0);
99
- return true;
100
- }
101
- catch {
102
- return false;
103
- }
104
- }
105
- /** Stop the daemon gracefully: SIGTERM, poll for exit, SIGKILL fallback. */
106
- async function stopDaemon(teloraDir) {
107
- const pid = readPidFile(teloraDir);
108
- if (pid === null) {
109
- return { stopped: false, message: "No PID file found" };
110
- }
111
- if (!isProcessAlive(pid)) {
112
- return { stopped: false, pid, message: "Process not running" };
113
- }
114
- // Send SIGTERM
115
- try {
116
- process.kill(pid, "SIGTERM");
117
- }
118
- catch {
119
- return { stopped: false, pid, message: "Failed to send SIGTERM" };
120
- }
121
- // Poll every 300ms for up to 10s
122
- const deadline = Date.now() + 10_000;
123
- while (Date.now() < deadline) {
124
- await new Promise((resolve) => setTimeout(resolve, 300));
125
- if (!isProcessAlive(pid)) {
126
- return { stopped: true, pid, message: "Stopped with SIGTERM" };
127
- }
128
- }
129
- // SIGKILL fallback
130
- try {
131
- process.kill(pid, "SIGKILL");
132
- }
133
- catch {
134
- // Process may have exited between last check and kill
135
- if (!isProcessAlive(pid)) {
136
- return { stopped: true, pid, message: "Stopped with SIGTERM (late exit)" };
137
- }
138
- return { stopped: false, pid, message: "Failed to send SIGKILL" };
139
- }
140
- // Brief wait after SIGKILL
141
- await new Promise((resolve) => setTimeout(resolve, 500));
142
- return { stopped: true, pid, message: "Stopped with SIGKILL" };
143
- }
8
+ import { mergeConfig, readPidFile, isProcessAlive, stopDaemon, startDaemon, resolveDaemonPaths, } from "./daemonConfig.js";
144
9
  export function registerConnectorTools(server, getCreds, profile = 'full') {
145
10
  // -- telora_connector_start -------------------------------------------------
146
11
  server.tool("telora_connector_start", "Daemon automation: generate configuration and launch the Telora daemon for autonomous agent execution. " +
@@ -214,13 +79,8 @@ export function registerConnectorTools(server, getCreds, profile = 'full') {
214
79
  // - Prefer global ~/.telora/daemon.json when it already exists
215
80
  // (multi-product: one daemon config for all repos)
216
81
  // - Fall back to repo-local .telora/daemon.json for first-time setup
217
- const globalTeloraDir = join(homedir(), ".telora");
218
- const globalConfigPath = join(globalTeloraDir, "daemon.json");
219
- const localTeloraDir = join(repoPath, ".telora");
220
- const localConfigPath = join(localTeloraDir, "daemon.json");
221
- const useGlobal = existsSync(globalConfigPath);
222
- const configPath = useGlobal ? globalConfigPath : localConfigPath;
223
- const teloraDir = useGlobal ? globalTeloraDir : localTeloraDir;
82
+ const paths = resolveDaemonPaths(repoPath);
83
+ const { configPath, teloraDir, globalDir: globalTeloraDir, localDir: localTeloraDir } = paths;
224
84
  mkdirSync(teloraDir, { recursive: true });
225
85
  // 2. Merge with existing config to preserve user customizations
226
86
  let finalConfig;
@@ -294,87 +154,23 @@ export function registerConnectorTools(server, getCreds, profile = 'full') {
294
154
  }
295
155
  const previousPid = stopResult.stopped ? stopResult.pid : undefined;
296
156
  // 6. Start the daemon as a detached background process.
297
- // Resolution order: local dev build > project node_modules > npx.
298
- // No global install probing -- local-first discovery only.
299
- const logPath = join(teloraDir, "daemon.log");
300
- const logFd = openSync(logPath, "a");
301
- let daemonCommand;
302
- let daemonArgs;
303
- let daemonSource;
304
- // Pass --config when using global config so the daemon finds it
305
- const configArgs = useGlobal ? ["--config", configPath] : [];
306
- // Option 1: Local dev build (monorepo development)
307
- const localDevPath = join(process.cwd(), "packages/daemon/dist/index.js");
308
- // Option 2: Project node_modules (npm install --save-dev @telora/daemon)
309
- const nodeModulesPath = join(process.cwd(), "node_modules/.bin/telora-daemon");
310
- if (existsSync(localDevPath)) {
311
- daemonCommand = process.execPath;
312
- daemonArgs = [localDevPath, "run", "--no-auto-update", ...configArgs];
313
- daemonSource = "local";
314
- }
315
- else if (existsSync(nodeModulesPath)) {
316
- daemonCommand = nodeModulesPath;
317
- daemonArgs = ["run", "--no-auto-update", ...configArgs];
318
- daemonSource = "node_modules";
319
- }
320
- else {
321
- // Option 3: npx resolution -- resolve the cached binary path then spawn directly.
322
- // npx as a detached background process doesn't work reliably, but we can
323
- // use npx to resolve the cached binary path and run it with node.
324
- let resolvedDaemonPath = null;
325
- try {
326
- resolvedDaemonPath = execFileSync("npx", ["-y", "-p", "@telora/daemon@latest", "which", "telora-daemon"], { encoding: "utf-8", timeout: 30_000 }).trim() || null;
327
- }
328
- catch {
329
- // npx not available or package can't be resolved
330
- }
331
- if (!resolvedDaemonPath) {
332
- return {
333
- content: [{
334
- type: "text",
335
- text: "Could not locate telora-daemon. Install it as a dev dependency:\n" +
336
- " npm install --save-dev @telora/daemon\n" +
337
- "Then try again.",
338
- }],
339
- };
340
- }
341
- daemonCommand = resolvedDaemonPath;
342
- daemonArgs = ["run", "--no-auto-update", ...configArgs];
343
- daemonSource = "npx";
344
- }
345
- const daemonProcess = spawn(daemonCommand, daemonArgs, {
346
- detached: true,
347
- stdio: ["ignore", logFd, logFd],
348
- env: { ...process.env, TELORA_TRACKER_ID: whoami.trackerId },
349
- cwd: process.cwd(),
157
+ const startResult = await startDaemon(paths, {
158
+ extraEnv: { TELORA_TRACKER_ID: whoami.trackerId },
350
159
  });
351
- const pid = daemonProcess.pid;
352
- daemonProcess.unref();
353
- // 6. Wait briefly and verify the daemon is still running.
354
- // If it exits immediately (config error, binary not found, etc.),
355
- // read the log tail and return an actionable error instead of false success.
356
- await new Promise((resolve) => setTimeout(resolve, 3000));
357
- let alive = false;
358
- try {
359
- process.kill(pid, 0); // signal 0 = existence check only
360
- alive = true;
361
- }
362
- catch {
363
- // ESRCH = no such process
160
+ if (startResult.status === "binary_not_found") {
161
+ return {
162
+ content: [{
163
+ type: "text",
164
+ text: startResult.errorMessage ?? "telora-daemon not found",
165
+ }],
166
+ };
364
167
  }
365
- if (!alive) {
366
- let logTail = "";
367
- try {
368
- const logContent = readFileSync(logPath, "utf-8");
369
- const lines = logContent.trim().split("\n");
370
- logTail = lines.slice(-30).join("\n");
371
- }
372
- catch { /* ignore */ }
168
+ if (startResult.status === "exit_failed") {
373
169
  return {
374
170
  content: [{
375
171
  type: "text",
376
- text: `Daemon process (PID ${pid}) exited immediately after start.\n\n` +
377
- `Last log output:\n${logTail || "(no log output — check " + logPath + ")"}`,
172
+ text: `Daemon process (PID ${startResult.pid}) exited immediately after start.\n\n` +
173
+ `Last log output:\n${startResult.logTail || "(no log output — check " + startResult.logPath + ")"}`,
378
174
  }],
379
175
  };
380
176
  }
@@ -383,13 +179,13 @@ export function registerConnectorTools(server, getCreds, profile = 'full') {
383
179
  configAction: mergeAction,
384
180
  productCount,
385
181
  configPath,
386
- logPath,
387
- pid,
182
+ logPath: startResult.logPath,
183
+ pid: startResult.pid,
388
184
  previousPid,
389
185
  gitignoreUpdated,
390
186
  organizationId: whoami.organizationId,
391
187
  productId,
392
- daemonSource,
188
+ daemonSource: startResult.daemonSource,
393
189
  autoCreatedProduct,
394
190
  });
395
191
  }));
@@ -397,11 +193,10 @@ export function registerConnectorTools(server, getCreds, profile = 'full') {
397
193
  if (profile !== 'human') {
398
194
  server.tool("telora_connector_stop", "Daemon lifecycle: stop the running Telora daemon gracefully (SIGTERM with SIGKILL fallback).", {}, wrapHandler(async () => {
399
195
  // Try global config location first, fall back to repo-local
400
- const globalTeloraDir = join(homedir(), ".telora");
401
- let result = await stopDaemon(globalTeloraDir);
196
+ const paths = resolveDaemonPaths(process.cwd());
197
+ let result = await stopDaemon(paths.globalDir);
402
198
  if (!result.stopped) {
403
- const localTeloraDir = join(process.cwd(), ".telora");
404
- result = await stopDaemon(localTeloraDir);
199
+ result = await stopDaemon(paths.localDir);
405
200
  }
406
201
  if (result.stopped) {
407
202
  return successResult({
@@ -1 +1 @@
1
- {"version":3,"file":"connectorHandlers.js","sourceRoot":"","sources":["../../src/handlers/connectorHandlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connectorHandlers.js","sourceRoot":"","sources":["../../src/handlers/connectorHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ export interface ProductEntry {
2
+ id: string;
3
+ repoPath: string;
4
+ }
5
+ export interface DaemonPaths {
6
+ globalDir: string;
7
+ globalPath: string;
8
+ localDir: string;
9
+ localPath: string;
10
+ /** True when ~/.telora/daemon.json exists; daemon prefers global when both are present. */
11
+ useGlobal: boolean;
12
+ /** Resolved config path (global if it exists, else local). */
13
+ configPath: string;
14
+ /** Resolved .telora/ dir matching configPath. */
15
+ teloraDir: string;
16
+ }
17
+ export declare function resolveDaemonPaths(repoPath: string): DaemonPaths;
18
+ /**
19
+ * Merge a fresh daemon config into an existing one.
20
+ *
21
+ * - Identity keys are always overwritten.
22
+ * - Products array: if the fresh product is already in the array, update its
23
+ * repoPath if different; if missing, append the new entry.
24
+ * - Legacy flat `productId` + `repoPath` are migrated into the products array.
25
+ * - Engine sections are only added if missing.
26
+ * - Everything else the user has customized is preserved.
27
+ */
28
+ export declare function mergeConfig(existing: Record<string, unknown>, freshProduct: ProductEntry, fresh: Record<string, unknown>): {
29
+ config: Record<string, unknown>;
30
+ action: "added" | "updated" | "no_change";
31
+ };
32
+ /** Read the daemon PID from .telora/daemon.pid. Returns null if missing or invalid. */
33
+ export declare function readPidFile(teloraDir: string): number | null;
34
+ /** Check if a process is alive (signal 0 existence check). */
35
+ export declare function isProcessAlive(pid: number): boolean;
36
+ /** Stop the daemon gracefully: SIGTERM, poll for exit, SIGKILL fallback. */
37
+ export declare function stopDaemon(teloraDir: string): Promise<{
38
+ stopped: boolean;
39
+ pid?: number;
40
+ message?: string;
41
+ }>;
42
+ export interface StartDaemonResult {
43
+ status: "started" | "exit_failed" | "binary_not_found";
44
+ pid?: number;
45
+ logPath: string;
46
+ daemonSource?: "local" | "node_modules" | "npx";
47
+ errorMessage?: string;
48
+ logTail?: string;
49
+ }
50
+ /**
51
+ * Spawn the telora-daemon as a detached background process.
52
+ * Resolution order: local dev build > project node_modules > npx.
53
+ */
54
+ export declare function startDaemon(paths: DaemonPaths, options?: {
55
+ extraEnv?: Record<string, string>;
56
+ }): Promise<StartDaemonResult>;
57
+ export interface AddProductResult {
58
+ written: boolean;
59
+ configAction?: "added" | "updated" | "no_change";
60
+ configPath?: string;
61
+ /** Reason daemon config was not written (skipped). */
62
+ skippedReason?: "no_config" | "repo_path_in_use";
63
+ /** True if the daemon was alive and got restarted. */
64
+ restarted: boolean;
65
+ newPid?: number;
66
+ previousPid?: number;
67
+ daemonSource?: "local" | "node_modules" | "npx";
68
+ startError?: string;
69
+ }
70
+ /**
71
+ * Register a newly created product in the daemon config and restart the daemon
72
+ * if it is running. Used by telora_product create.
73
+ *
74
+ * Behavior:
75
+ * - If no daemon config exists, skip (caller is expected to call telora_connector_start).
76
+ * - If repoPath is already used by another product entry, skip (one repo cannot
77
+ * back two products in the same daemon).
78
+ * - Otherwise upsert the product entry, write the config, and if the daemon is
79
+ * running, stop+start it so the new product is picked up immediately.
80
+ */
81
+ export declare function addProductToDaemonConfig(productId: string, repoPath: string): Promise<AddProductResult>;