@sudosandwich/limps 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +135 -127
  2. package/dist/cli/config-cmd.d.ts +4 -17
  3. package/dist/cli/config-cmd.d.ts.map +1 -1
  4. package/dist/cli/config-cmd.js +20 -156
  5. package/dist/cli/config-cmd.js.map +1 -1
  6. package/dist/cli/init-project.d.ts.map +1 -1
  7. package/dist/cli/init-project.js +15 -33
  8. package/dist/cli/init-project.js.map +1 -1
  9. package/dist/cli/mcp-client-adapter.d.ts +17 -48
  10. package/dist/cli/mcp-client-adapter.d.ts.map +1 -1
  11. package/dist/cli/mcp-client-adapter.js +29 -194
  12. package/dist/cli/mcp-client-adapter.js.map +1 -1
  13. package/dist/cli/mcp-clients.d.ts +2 -40
  14. package/dist/cli/mcp-clients.d.ts.map +1 -1
  15. package/dist/cli/mcp-clients.js +31 -91
  16. package/dist/cli/mcp-clients.js.map +1 -1
  17. package/dist/commands/config/index.js +1 -1
  18. package/dist/commands/config/index.js.map +1 -1
  19. package/dist/commands/config/{sync-mcp.d.ts → print.d.ts} +2 -6
  20. package/dist/commands/config/print.d.ts.map +1 -0
  21. package/dist/commands/config/print.js +51 -0
  22. package/dist/commands/config/print.js.map +1 -0
  23. package/dist/commands/index.d.ts.map +1 -1
  24. package/dist/commands/index.js +1 -1
  25. package/dist/commands/index.js.map +1 -1
  26. package/dist/commands/start.d.ts.map +1 -1
  27. package/dist/commands/start.js +25 -22
  28. package/dist/commands/start.js.map +1 -1
  29. package/dist/commands/status-server.d.ts.map +1 -1
  30. package/dist/commands/status-server.js +36 -40
  31. package/dist/commands/status-server.js.map +1 -1
  32. package/dist/utils/http-client.d.ts +72 -0
  33. package/dist/utils/http-client.d.ts.map +1 -0
  34. package/dist/utils/http-client.js +160 -0
  35. package/dist/utils/http-client.js.map +1 -0
  36. package/package.json +1 -1
  37. package/dist/commands/config/sync-mcp.d.ts.map +0 -1
  38. package/dist/commands/config/sync-mcp.js +0 -232
  39. package/dist/commands/config/sync-mcp.js.map +0 -1
@@ -14,7 +14,7 @@ export default function DefaultCommand() {
14
14
  setShowWhatsNew(true);
15
15
  }
16
16
  }, [version]);
17
- const defaultContent = (_jsxs(Text, { children: [_jsx(Text, { color: "cyan", bold: true, children: "limps" }), ' ', _jsxs(Text, { color: "yellow", children: ["v", version] }), " - Local Intelligent MCP Planning Server", '\n', '\n', _jsx(Text, { color: "yellow", children: "Usage:" }), " limps ", '<command>', " [options]", '\n', '\n', _jsx(Text, { color: "cyan", children: "Commands:" }), '\n', ' ', "serve", ' ', "Start the MCP server", '\n', ' ', "init ", '<name> ', "Initialize a new project", '\n', ' ', "list-plans", ' ', "List all plans with status", '\n', ' ', "list-agents", ' ', "List agents in a plan", '\n', ' ', "next-task", ' ', "Get the next best task", '\n', ' ', "score-task", ' ', "Show scoring for a task", '\n', ' ', "score-all", ' ', "Compare scores across tasks", '\n', ' ', "reindex", ' ', "Rebuild the document index", '\n', ' ', "repair-plans", ' ', "Repair plan frontmatter", '\n', ' ', "health", ' ', "Run plan health checks", '\n', ' ', "proposals", ' ', "List and apply update proposals", '\n', ' ', "status", ' ', "Show plan progress", '\n', ' ', "version", ' ', "Show version information", '\n', ' ', "config", ' ', "Manage project configuration", '\n', ' ', "graph", ' ', "Knowledge graph commands", '\n', '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>'] }), " without args for usage help.", '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>', " --help"] }), " for full documentation."] }));
17
+ const defaultContent = (_jsxs(Text, { children: [_jsx(Text, { color: "cyan", bold: true, children: "limps" }), ' ', _jsxs(Text, { color: "yellow", children: ["v", version] }), " - Local Intelligent MCP Planning Server", '\n', '\n', _jsx(Text, { color: "yellow", children: "Usage:" }), " limps ", '<command>', " [options]", '\n', '\n', _jsx(Text, { color: "cyan", children: "HTTP Server:" }), '\n', ' ', "start", ' ', "Start the HTTP MCP server", '\n', ' ', "stop", ' ', "Stop the HTTP server", '\n', ' ', "status-server", ' ', "Show server status", '\n', '\n', _jsx(Text, { color: "cyan", children: "Plan Management:" }), '\n', ' ', "init ", '<name> ', "Initialize a new project", '\n', ' ', "list-plans", ' ', "List all plans with status", '\n', ' ', "list-agents", ' ', "List agents in a plan", '\n', ' ', "next-task", ' ', "Get the next best task", '\n', ' ', "score-task", ' ', "Show scoring for a task", '\n', ' ', "score-all", ' ', "Compare scores across tasks", '\n', ' ', "status", ' ', "Show plan progress", '\n', ' ', "repair-plans", ' ', "Repair plan frontmatter", '\n', ' ', "health", ' ', "Run plan health checks", '\n', ' ', "proposals", ' ', "List and apply update proposals", '\n', '\n', _jsx(Text, { color: "cyan", children: "System:" }), '\n', ' ', "reindex", ' ', "Rebuild the document index", '\n', ' ', "config", ' ', "Manage project configuration", '\n', ' ', "graph", ' ', "Knowledge graph commands", '\n', ' ', "version", ' ', "Show version information", '\n', '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>'] }), " without args for usage help.", '\n', "Run ", _jsxs(Text, { color: "green", children: ["limps ", '<command>', " --help"] }), " for full documentation."] }));
18
18
  if (showWhatsNew) {
19
19
  return (_jsxs(Box, { flexDirection: "column", children: [_jsx(WhatsNew, { version: version, onDismiss: () => setShowWhatsNew(false) }), defaultContent] }));
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,cAAc;IACpC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,8CAA8C;QAC9C,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,CACrB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4BAEhB,EAAC,GAAG,EACX,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kBAAG,OAAO,IAAQ,8CAAyC,IAAI,EAClF,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAc,aAAQ,WAAW,gBAAY,IAAI,EACpE,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,EAClC,IAAI,EACJ,IAAI,WAAO,WAAW,0BAAsB,IAAI,EAChD,IAAI,WAAO,WAAW,8BAA0B,IAAI,EACpD,IAAI,gBAAY,MAAM,gCAA4B,IAAI,EACtD,IAAI,iBAAa,KAAK,2BAAuB,IAAI,EACjD,IAAI,eAAW,OAAO,4BAAwB,IAAI,EAClD,IAAI,gBAAY,MAAM,6BAAyB,IAAI,EACnD,IAAI,eAAW,OAAO,iCAA6B,IAAI,EACvD,IAAI,aAAS,SAAS,gCAA4B,IAAI,EACtD,IAAI,kBAAc,IAAI,6BAAyB,IAAI,EACnD,IAAI,YAAQ,UAAU,4BAAwB,IAAI,EAClD,IAAI,eAAW,OAAO,qCAAiC,IAAI,EAC3D,IAAI,YAAQ,UAAU,wBAAoB,IAAI,EAC9C,IAAI,aAAS,UAAU,8BAA0B,IAAI,EACrD,IAAI,YAAQ,UAAU,kCAA8B,IAAI,EACxD,IAAI,WAAO,WAAW,8BAA0B,IAAI,EACpD,IAAI,UACD,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,IAAQ,mCAA8B,IAAI,UAChF,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,eAAe,gCACpD,CACR,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,GAAI,EACtE,cAAc,IACX,CACP,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAEnE,MAAM,CAAC,OAAO,UAAU,cAAc;IACpC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,8CAA8C;QAC9C,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,CACrB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4BAEhB,EAAC,GAAG,EACX,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kBAAG,OAAO,IAAQ,8CAAyC,IAAI,EAClF,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAc,aAAQ,WAAW,gBAAY,IAAI,EACpE,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,6BAAoB,EACrC,IAAI,EACJ,IAAI,WAAO,YAAY,+BAA2B,IAAI,EACtD,IAAI,UAAM,aAAa,0BAAsB,IAAI,EACjD,IAAI,mBAAe,IAAI,wBAAoB,IAAI,EAC/C,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,iCAAwB,EACzC,IAAI,EACJ,IAAI,WAAO,WAAW,8BAA0B,IAAI,EACpD,IAAI,gBAAY,MAAM,gCAA4B,IAAI,EACtD,IAAI,iBAAa,KAAK,2BAAuB,IAAI,EACjD,IAAI,eAAW,OAAO,4BAAwB,IAAI,EAClD,IAAI,gBAAY,MAAM,6BAAyB,IAAI,EACnD,IAAI,eAAW,OAAO,iCAA6B,IAAI,EACvD,IAAI,YAAQ,UAAU,wBAAoB,IAAI,EAC9C,IAAI,kBAAc,IAAI,6BAAyB,IAAI,EACnD,IAAI,YAAQ,UAAU,4BAAwB,IAAI,EAClD,IAAI,eAAW,OAAO,qCAAiC,IAAI,EAC3D,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAe,EAChC,IAAI,EACJ,IAAI,aAAS,SAAS,gCAA4B,IAAI,EACtD,IAAI,YAAQ,UAAU,kCAA8B,IAAI,EACxD,IAAI,WAAO,WAAW,8BAA0B,IAAI,EACpD,IAAI,aAAS,SAAS,8BAA0B,IAAI,EACpD,IAAI,UACD,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,IAAQ,mCAA8B,IAAI,UAChF,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAQ,WAAW,eAAe,gCACpD,CACR,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,GAAI,EACtE,cAAc,IACX,CACP,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,eAAO,MAAM,WAAW,gCAAgC,CAAC;AAEzD,eAAO,MAAM,OAAO;;;;;iBAKlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAyG9E"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,WAAW,gCAAgC,CAAC;AAEzD,eAAO,MAAM,OAAO;;;;;iBAKlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAgI9E"}
@@ -5,27 +5,11 @@ import { z } from 'zod';
5
5
  import { spawn } from 'child_process';
6
6
  import { resolve, dirname } from 'path';
7
7
  import { fileURLToPath } from 'url';
8
- import { get } from 'http';
9
8
  import { loadConfig, getHttpServerConfig } from '../config.js';
10
9
  import { resolveConfigPath } from '../utils/config-resolver.js';
11
10
  import { getPidFilePath, getRunningDaemon } from '../pidfile.js';
12
11
  import { startHttpServer, stopHttpServer } from '../server-http.js';
13
- /**
14
- * Check if the daemon is responding to health requests.
15
- */
16
- async function checkDaemonHealth(host, port, timeoutMs = 1000) {
17
- return new Promise((resolve) => {
18
- const req = get(`http://${host}:${port}/health`, { timeout: timeoutMs }, (res) => {
19
- resolve(res.statusCode === 200);
20
- });
21
- req.on('error', () => resolve(false));
22
- req.on('timeout', () => {
23
- req.destroy();
24
- resolve(false);
25
- });
26
- req.setTimeout(timeoutMs);
27
- });
28
- }
12
+ import { checkDaemonHealth, isDaemonHealthy, } from '../utils/http-client.js';
29
13
  export const description = 'Start the limps HTTP server';
30
14
  export const options = z.object({
31
15
  config: z.string().optional().describe('Path to config file'),
@@ -79,6 +63,14 @@ export default function StartCommand({ options: opts }) {
79
63
  stdio: 'ignore',
80
64
  });
81
65
  child.unref();
66
+ // HTTP options for health checks
67
+ const httpOptions = {
68
+ timeout: 500,
69
+ retries: 0,
70
+ logger: process.env.DEBUG
71
+ ? (msg) => console.error(`[limps:http] ${msg}`)
72
+ : undefined,
73
+ };
82
74
  // Poll for daemon startup with timeout (max 5s)
83
75
  const startTime = Date.now();
84
76
  const timeout = 5000;
@@ -88,20 +80,31 @@ export default function StartCommand({ options: opts }) {
88
80
  daemon = getRunningDaemon(pidFilePath);
89
81
  if (daemon) {
90
82
  // Verify the daemon is actually responding to requests
91
- const isHealthy = await checkDaemonHealth(daemon.host, daemon.port, 500);
83
+ const isHealthy = await isDaemonHealthy(daemon.host, daemon.port, httpOptions);
92
84
  if (isHealthy)
93
85
  break;
94
86
  }
95
87
  await new Promise((resolve) => setTimeout(resolve, pollInterval));
96
88
  }
97
89
  if (daemon) {
98
- // Final verification that the daemon is healthy
99
- const isHealthy = await checkDaemonHealth(daemon.host, daemon.port, 1000);
100
- if (isHealthy) {
90
+ // Final verification with detailed error handling
91
+ const healthResult = await checkDaemonHealth(daemon.host, daemon.port, {
92
+ ...httpOptions,
93
+ timeout: 1000,
94
+ });
95
+ if (healthResult.ok && healthResult.data.status === 'ok') {
101
96
  setStatus(`limps daemon started (PID ${daemon.pid}) on http://${daemon.host}:${daemon.port}/mcp`);
102
97
  }
103
98
  else {
104
- setError('Daemon started but is not responding to health checks. Check logs or try: limps start --foreground');
99
+ const errorMsg = healthResult.ok
100
+ ? `Health check returned status: ${healthResult.data.status}`
101
+ : `${healthResult.error.message} (${healthResult.error.code})`;
102
+ const suggestion = !healthResult.ok && healthResult.error.code === 'TIMEOUT'
103
+ ? 'Daemon may be slow to start. Try increasing timeout or check system resources.'
104
+ : !healthResult.ok && healthResult.error.code === 'NETWORK_ERROR'
105
+ ? 'Cannot connect to daemon. Check if port is blocked or already in use.'
106
+ : 'Try running: limps start --foreground';
107
+ setError(`${errorMsg}\n${suggestion}\n\nRun with DEBUG=1 for more details.`);
105
108
  }
106
109
  }
107
110
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status-server.d.ts","sourceRoot":"","sources":["../../src/commands/status-server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,WAAW,kCAAkC,CAAC;AAE3D,eAAO,MAAM,OAAO;;;iBAGlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AA8ED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CA6BrF"}
1
+ {"version":3,"file":"status-server.d.ts","sourceRoot":"","sources":["../../src/commands/status-server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,WAAW,kCAAkC,CAAC;AAE3D,eAAO,MAAM,OAAO;;;iBAGlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAgED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CA6BrF"}
@@ -2,43 +2,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { Box, Text } from 'ink';
4
4
  import { z } from 'zod';
5
- import { request as httpRequest } from 'http';
6
5
  import { loadConfig } from '../config.js';
7
6
  import { resolveConfigPath } from '../utils/config-resolver.js';
8
7
  import { getPidFilePath, getRunningDaemon } from '../pidfile.js';
9
8
  import { handleJsonOutput, isJsonMode, outputJson, wrapError } from '../cli/json-output.js';
9
+ import { checkDaemonHealth } from '../utils/http-client.js';
10
10
  export const description = 'Show limps HTTP server status';
11
11
  export const options = z.object({
12
12
  config: z.string().optional().describe('Path to config file'),
13
13
  json: z.boolean().optional().describe('Output as JSON'),
14
14
  });
15
- /**
16
- * Fetch health info from the daemon's /health endpoint.
17
- */
18
- function fetchHealth(host, port) {
19
- return new Promise((resolve) => {
20
- const req = httpRequest({ hostname: host, port, method: 'GET', path: '/health', timeout: 3000 }, (res) => {
21
- let body = '';
22
- res.on('data', (chunk) => {
23
- body += chunk.toString();
24
- });
25
- res.on('end', () => {
26
- try {
27
- resolve(JSON.parse(body));
28
- }
29
- catch {
30
- resolve(null);
31
- }
32
- });
33
- });
34
- req.on('error', () => resolve(null));
35
- req.on('timeout', () => {
36
- req.destroy();
37
- resolve(null);
38
- });
39
- req.end();
40
- });
41
- }
42
15
  /**
43
16
  * Resolve config and gather daemon + health status.
44
17
  */
@@ -50,17 +23,40 @@ function getServerStatus(opts) {
50
23
  if (!daemon) {
51
24
  return Promise.resolve({ running: false });
52
25
  }
53
- return fetchHealth(daemon.host, daemon.port).then((health) => ({
54
- running: true,
55
- pid: daemon.pid,
56
- host: daemon.host,
57
- port: daemon.port,
58
- startedAt: daemon.startedAt,
59
- uptime: health?.uptime,
60
- sessions: health?.sessions,
61
- sessionTimeoutMs: health?.sessionTimeoutMs,
62
- healthy: health?.status === 'ok',
63
- }));
26
+ const httpOptions = {
27
+ timeout: 3000,
28
+ retries: 1,
29
+ retryDelay: 500,
30
+ logger: process.env.DEBUG
31
+ ? (msg) => console.error(`[limps:http] ${msg}`)
32
+ : undefined,
33
+ };
34
+ return checkDaemonHealth(daemon.host, daemon.port, httpOptions).then((result) => {
35
+ if (result.ok) {
36
+ return {
37
+ running: true,
38
+ pid: daemon.pid,
39
+ host: daemon.host,
40
+ port: daemon.port,
41
+ startedAt: daemon.startedAt,
42
+ uptime: result.data.uptime,
43
+ sessions: result.data.sessions,
44
+ sessionTimeoutMs: result.data.sessionTimeoutMs,
45
+ healthy: result.data.status === 'ok',
46
+ };
47
+ }
48
+ else {
49
+ return {
50
+ running: true,
51
+ pid: daemon.pid,
52
+ host: daemon.host,
53
+ port: daemon.port,
54
+ startedAt: daemon.startedAt,
55
+ healthy: false,
56
+ healthError: `${result.error.message} (${result.error.code})`,
57
+ };
58
+ }
59
+ });
64
60
  }
65
61
  export default function StatusServerCommand({ options: opts }) {
66
62
  const jsonMode = isJsonMode(opts);
@@ -104,7 +100,7 @@ function StatusDisplay({ opts }) {
104
100
  return _jsx(Text, { color: "yellow", children: "limps server is not running." });
105
101
  }
106
102
  const uptimeStr = result.uptime !== undefined ? formatUptime(result.uptime) : 'unknown';
107
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", children: "limps server is running" }), _jsxs(Text, { children: ["PID: ", result.pid, " | ", result.host, ":", result.port] }), _jsxs(Text, { children: ["Uptime: ", uptimeStr] }), _jsxs(Text, { children: ["Sessions: ", result.sessions ?? 'unknown'] }), result.healthy === false && _jsx(Text, { color: "red", children: "Health check failed" })] }));
103
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", children: "limps server is running" }), _jsxs(Text, { children: ["PID: ", result.pid, " | ", result.host, ":", result.port] }), _jsxs(Text, { children: ["Uptime: ", uptimeStr] }), _jsxs(Text, { children: ["Sessions: ", result.sessions ?? 'unknown'] }), result.healthy === false && (_jsxs(Text, { color: "red", children: ["Health check failed", result.healthError ? `: ${result.healthError}` : ''] }))] }));
108
104
  }
109
105
  function formatUptime(seconds) {
110
106
  if (seconds < 60)
@@ -1 +1 @@
1
- {"version":3,"file":"status-server.js","sourceRoot":"","sources":["../../src/commands/status-server.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-server.js","sourceRoot":"","sources":["../../src/commands/status-server.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Shared HTTP client utilities for daemon health checks.
3
+ * Provides typed error handling, retry logic, and debug logging.
4
+ */
5
+ /**
6
+ * Error codes for HTTP operations.
7
+ */
8
+ export type HttpErrorCode = 'NETWORK_ERROR' | 'TIMEOUT' | 'NON_200_STATUS' | 'INVALID_RESPONSE';
9
+ /**
10
+ * HTTP error details.
11
+ */
12
+ export interface HttpError {
13
+ code: HttpErrorCode;
14
+ message: string;
15
+ details?: unknown;
16
+ statusCode?: number;
17
+ }
18
+ /**
19
+ * Result type for HTTP operations (discriminated union).
20
+ */
21
+ export type HttpResult<T> = {
22
+ ok: true;
23
+ data: T;
24
+ statusCode: number;
25
+ } | {
26
+ ok: false;
27
+ error: HttpError;
28
+ };
29
+ /**
30
+ * Health check response schema.
31
+ */
32
+ export interface HealthCheckResponse {
33
+ status: string;
34
+ sessions: number;
35
+ uptime: number;
36
+ pid: number;
37
+ sessionTimeoutMs?: number;
38
+ }
39
+ /**
40
+ * HTTP client configuration options.
41
+ */
42
+ export interface HttpClientOptions {
43
+ /** Request timeout in milliseconds (default: 3000) */
44
+ timeout?: number;
45
+ /** Number of retry attempts (default: 0) */
46
+ retries?: number;
47
+ /** Delay between retries in milliseconds (default: 500) */
48
+ retryDelay?: number;
49
+ /** Error codes that trigger retries (default: ['NETWORK_ERROR', 'TIMEOUT']) */
50
+ retryOn?: HttpErrorCode[];
51
+ /** Optional logger function for debugging */
52
+ logger?: (msg: string) => void;
53
+ }
54
+ /**
55
+ * Check daemon health with retry logic and typed error handling.
56
+ *
57
+ * @param host - Daemon host address
58
+ * @param port - Daemon port number
59
+ * @param options - HTTP client options
60
+ * @returns Promise resolving to HttpResult with health data or error details
61
+ */
62
+ export declare function checkDaemonHealth(host: string, port: number, options?: HttpClientOptions): Promise<HttpResult<HealthCheckResponse>>;
63
+ /**
64
+ * Simple boolean wrapper for daemon health check (backwards compatible).
65
+ *
66
+ * @param host - Daemon host address
67
+ * @param port - Daemon port number
68
+ * @param options - HTTP client options
69
+ * @returns Promise resolving to true if daemon is healthy, false otherwise
70
+ */
71
+ export declare function isDaemonHealthy(host: string, port: number, options?: HttpClientOptions): Promise<boolean>;
72
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,SAAS,GACT,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAmID;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAwC1C;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAGlB"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Shared HTTP client utilities for daemon health checks.
3
+ * Provides typed error handling, retry logic, and debug logging.
4
+ */
5
+ import { request as httpRequest } from 'http';
6
+ /**
7
+ * Validate that a parsed JSON object matches the HealthCheckResponse schema.
8
+ */
9
+ function validateHealthResponse(data) {
10
+ if (typeof data !== 'object' || data === null) {
11
+ return false;
12
+ }
13
+ const obj = data;
14
+ return (typeof obj.status === 'string' &&
15
+ typeof obj.sessions === 'number' &&
16
+ typeof obj.uptime === 'number' &&
17
+ typeof obj.pid === 'number' &&
18
+ (obj.sessionTimeoutMs === undefined || typeof obj.sessionTimeoutMs === 'number'));
19
+ }
20
+ /**
21
+ * Make a single HTTP GET request to the health endpoint.
22
+ */
23
+ function makeHealthRequest(host, port, timeoutMs, logger) {
24
+ return new Promise((resolve) => {
25
+ const url = `http://${host}:${port}/health`;
26
+ const startTime = Date.now();
27
+ logger?.(`HTTP GET ${url}`);
28
+ const req = httpRequest({
29
+ hostname: host,
30
+ port,
31
+ method: 'GET',
32
+ path: '/health',
33
+ timeout: timeoutMs,
34
+ }, (res) => {
35
+ const statusCode = res.statusCode ?? 0;
36
+ let body = '';
37
+ res.on('data', (chunk) => {
38
+ body += chunk.toString();
39
+ });
40
+ res.on('end', () => {
41
+ const duration = Date.now() - startTime;
42
+ logger?.(`HTTP ${statusCode} in ${duration}ms`);
43
+ if (statusCode !== 200) {
44
+ resolve({
45
+ ok: false,
46
+ error: {
47
+ code: 'NON_200_STATUS',
48
+ message: `Health endpoint returned status ${statusCode}`,
49
+ statusCode,
50
+ details: body,
51
+ },
52
+ });
53
+ return;
54
+ }
55
+ try {
56
+ const data = JSON.parse(body);
57
+ if (!validateHealthResponse(data)) {
58
+ resolve({
59
+ ok: false,
60
+ error: {
61
+ code: 'INVALID_RESPONSE',
62
+ message: 'Health response missing required fields or has invalid types',
63
+ details: data,
64
+ },
65
+ });
66
+ return;
67
+ }
68
+ resolve({
69
+ ok: true,
70
+ data,
71
+ statusCode,
72
+ });
73
+ }
74
+ catch (err) {
75
+ resolve({
76
+ ok: false,
77
+ error: {
78
+ code: 'INVALID_RESPONSE',
79
+ message: 'Failed to parse JSON response',
80
+ details: err instanceof Error ? err.message : String(err),
81
+ },
82
+ });
83
+ }
84
+ });
85
+ });
86
+ req.on('error', (err) => {
87
+ const duration = Date.now() - startTime;
88
+ logger?.(`HTTP error after ${duration}ms: ${err.message}`);
89
+ resolve({
90
+ ok: false,
91
+ error: {
92
+ code: 'NETWORK_ERROR',
93
+ message: err.message,
94
+ details: err,
95
+ },
96
+ });
97
+ });
98
+ req.on('timeout', () => {
99
+ const duration = Date.now() - startTime;
100
+ logger?.(`HTTP timeout after ${duration}ms`);
101
+ req.destroy();
102
+ resolve({
103
+ ok: false,
104
+ error: {
105
+ code: 'TIMEOUT',
106
+ message: `Request timed out after ${timeoutMs}ms`,
107
+ },
108
+ });
109
+ });
110
+ req.end();
111
+ });
112
+ }
113
+ /**
114
+ * Check daemon health with retry logic and typed error handling.
115
+ *
116
+ * @param host - Daemon host address
117
+ * @param port - Daemon port number
118
+ * @param options - HTTP client options
119
+ * @returns Promise resolving to HttpResult with health data or error details
120
+ */
121
+ export async function checkDaemonHealth(host, port, options = {}) {
122
+ const { timeout = 3000, retries = 0, retryDelay = 500, retryOn = ['NETWORK_ERROR', 'TIMEOUT'], logger, } = options;
123
+ let lastResult = null;
124
+ for (let attempt = 0; attempt <= retries; attempt++) {
125
+ if (attempt > 0) {
126
+ logger?.(`Retry attempt ${attempt}/${retries} after ${retryDelay}ms delay`);
127
+ await new Promise((resolve) => setTimeout(resolve, retryDelay));
128
+ }
129
+ const result = await makeHealthRequest(host, port, timeout, logger);
130
+ if (result.ok) {
131
+ return result;
132
+ }
133
+ lastResult = result;
134
+ // Don't retry if error code is not in retryOn list
135
+ if (!retryOn.includes(result.error.code)) {
136
+ logger?.(`Not retrying error code: ${result.error.code}`);
137
+ break;
138
+ }
139
+ // Don't retry on last attempt
140
+ if (attempt === retries) {
141
+ break;
142
+ }
143
+ }
144
+ // TypeScript knows lastResult is non-null here because we always enter the loop at least once (attempt = 0)
145
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
146
+ return lastResult;
147
+ }
148
+ /**
149
+ * Simple boolean wrapper for daemon health check (backwards compatible).
150
+ *
151
+ * @param host - Daemon host address
152
+ * @param port - Daemon port number
153
+ * @param options - HTTP client options
154
+ * @returns Promise resolving to true if daemon is healthy, false otherwise
155
+ */
156
+ export async function isDaemonHealthy(host, port, options = {}) {
157
+ const result = await checkDaemonHealth(host, port, options);
158
+ return result.ok && result.data.status === 'ok';
159
+ }
160
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudosandwich/limps",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "Local Intelligent MCP Planning Server - AI agent plan management",
5
5
  "mcpName": "io.github.paulbreuler/limps",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-mcp.d.ts","sourceRoot":"","sources":["../../../src/commands/config/sync-mcp.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,WAAW,8EACqD,CAAC;AAE9E,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;iBAsBlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CA4OhF"}