@sudosandwich/limps 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import Pastel from 'pastel';
3
- import updateNotifier from 'update-notifier';
4
- import { getPackageVersion, getPackageName } from './utils/version.js';
3
+ import { getPackageVersion } from './utils/version.js';
5
4
  import { startMcpServer } from './server-main.js';
6
5
  // Check if running serve command - needs clean stdio, bypass Pastel/Ink
7
6
  const args = process.argv.slice(2);
@@ -19,16 +18,6 @@ if (isServeCommand && !wantsHelp) {
19
18
  });
20
19
  }
21
20
  else {
22
- // Initialize update notifier for automatic update checks
23
- // This runs asynchronously in the background and won't block CLI startup
24
- const pkg = {
25
- name: getPackageName(),
26
- version: getPackageVersion(),
27
- };
28
- updateNotifier({
29
- pkg,
30
- updateCheckInterval: 1000 * 60 * 60 * 24 * 7, // Check once per week
31
- }).notify();
32
21
  const app = new Pastel({
33
22
  importMeta: import.meta,
34
23
  name: 'limps',
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,wEAAwE;AACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAC3C,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9F,IAAI,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,wBAAwB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,wDAAwD;IACxD,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QAC9C,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,yDAAyD;IACzD,yEAAyE;IACzE,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,cAAc,EAAE;QACtB,OAAO,EAAE,iBAAiB,EAAE;KAC7B,CAAC;IAEF,cAAc,CAAC;QACb,GAAG;QACH,mBAAmB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,sBAAsB;KACrE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEZ,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,iBAAiB,EAAE;QAC5B,WAAW,EAAE,uCAAuC;KACrD,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,wEAAwE;AACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAC3C,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9F,IAAI,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,wBAAwB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,wDAAwD;IACxD,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QAC9C,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,iBAAiB,EAAE;QAC5B,WAAW,EAAE,uCAAuC;KACrD,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  export declare const description = "Show version information";
3
3
  export declare const options: z.ZodObject<{
4
4
  check: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
5
+ json: z.ZodOptional<z.ZodBoolean>;
5
6
  }, z.core.$strip>;
6
7
  interface Props {
7
8
  options: z.infer<typeof options>;
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAEtD,eAAO,MAAM,OAAO;;iBAElB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAgG1E"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAEtD,eAAO,MAAM,OAAO;;;iBAGlB,CAAC;AAEH,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAwI1E"}
@@ -3,15 +3,59 @@ import { Text } from 'ink';
3
3
  import { z } from 'zod';
4
4
  import { useEffect, useState } from 'react';
5
5
  import { getPackageVersion, getPackageName } from '../utils/version.js';
6
+ import { renderUpdateBox } from '../utils/update-box.js';
7
+ import { isJsonMode, outputJson, wrapError, wrapSuccess } from '../cli/json-output.js';
6
8
  export const description = 'Show version information';
7
9
  export const options = z.object({
8
10
  check: z.boolean().optional().default(false).describe('Check for updates from npm registry'),
11
+ json: z.boolean().optional().describe('Output as JSON'),
9
12
  });
10
13
  export default function VersionCommand({ options }) {
11
14
  const currentVersion = getPackageVersion();
12
15
  const packageName = getPackageName();
16
+ const jsonMode = isJsonMode(options);
13
17
  const [updateInfo, setUpdateInfo] = useState(null);
14
18
  const [isChecking, setIsChecking] = useState(false);
19
+ useEffect(() => {
20
+ if (!jsonMode) {
21
+ return;
22
+ }
23
+ const timer = setTimeout(() => {
24
+ const run = async () => {
25
+ try {
26
+ if (!options.check) {
27
+ outputJson(wrapSuccess({
28
+ packageName,
29
+ currentVersion,
30
+ }));
31
+ return;
32
+ }
33
+ const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`);
34
+ if (!response.ok) {
35
+ throw new Error(`HTTP ${response.status}`);
36
+ }
37
+ const data = (await response.json());
38
+ const latestVersion = data.version;
39
+ outputJson(wrapSuccess({
40
+ packageName,
41
+ currentVersion,
42
+ latestVersion,
43
+ updateAvailable: Boolean(latestVersion && latestVersion !== currentVersion),
44
+ }));
45
+ }
46
+ catch (error) {
47
+ outputJson(wrapError(error instanceof Error ? error.message : 'Unknown error', {
48
+ code: 'VERSION_CHECK_ERROR',
49
+ }), 1);
50
+ }
51
+ };
52
+ void run();
53
+ }, 0);
54
+ return () => clearTimeout(timer);
55
+ }, [currentVersion, jsonMode, options.check, packageName]);
56
+ if (jsonMode) {
57
+ return null;
58
+ }
15
59
  useEffect(() => {
16
60
  if (options.check) {
17
61
  setIsChecking(true);
@@ -56,7 +100,8 @@ export default function VersionCommand({ options }) {
56
100
  return (_jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: "Version:" }), " ", updateInfo.current, '\n', _jsx(Text, { color: "red", children: "Error checking for updates:" }), " ", updateInfo.error] }));
57
101
  }
58
102
  if (updateInfo?.latest && updateInfo.latest !== updateInfo.current) {
59
- return (_jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: "Current version:" }), " ", updateInfo.current, '\n', _jsx(Text, { color: "green", children: "Latest version:" }), " ", updateInfo.latest, '\n\n', _jsx(Text, { color: "cyan", children: "Update available!" }), '\n', "Run: ", _jsxs(Text, { color: "green", children: ["npm update -g ", packageName] })] }));
103
+ const updateBox = renderUpdateBox(updateInfo.current, updateInfo.latest, packageName);
104
+ return _jsx(Text, { children: updateBox });
60
105
  }
61
106
  return (_jsxs(Text, { children: [_jsx(Text, { color: "yellow", children: "Version:" }), " ", updateInfo?.current || currentVersion, '\n', _jsx(Text, { color: "green", children: "You are up to date!" })] }));
62
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Render a colored update notice box for the terminal.
3
+ */
4
+ export declare function renderUpdateBox(current: string, latest: string, packageName: string): string;
5
+ //# sourceMappingURL=update-box.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-box.d.ts","sourceRoot":"","sources":["../../src/utils/update-box.ts"],"names":[],"mappings":"AAgCA;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAmB5F"}
@@ -0,0 +1,54 @@
1
+ const ANSI = {
2
+ reset: '\u001b[0m',
3
+ green: '\u001b[32m',
4
+ gray: '\u001b[90m',
5
+ cyan: '\u001b[36m',
6
+ border: '\u001b[38;5;208m',
7
+ };
8
+ /**
9
+ * Remove ANSI color sequences from a string.
10
+ */
11
+ function stripAnsi(value) {
12
+ let output = '';
13
+ let i = 0;
14
+ while (i < value.length) {
15
+ const char = value[i];
16
+ if (char === '\u001b' && value[i + 1] === '[') {
17
+ i += 2;
18
+ while (i < value.length && value[i] !== 'm') {
19
+ i += 1;
20
+ }
21
+ if (i < value.length && value[i] === 'm') {
22
+ i += 1;
23
+ }
24
+ continue;
25
+ }
26
+ output += char;
27
+ i += 1;
28
+ }
29
+ return output;
30
+ }
31
+ /**
32
+ * Render a colored update notice box for the terminal.
33
+ */
34
+ export function renderUpdateBox(current, latest, packageName) {
35
+ const lines = [
36
+ '',
37
+ `Update available ${ANSI.gray}${current}${ANSI.reset} → ${ANSI.green}${latest}${ANSI.reset}`,
38
+ `Run ${ANSI.cyan}npm i -g ${packageName}${ANSI.reset} to update`,
39
+ '',
40
+ ];
41
+ const maxLineLength = Math.max(...lines.map((line) => stripAnsi(line).length));
42
+ const padding = 2;
43
+ const innerWidth = maxLineLength + padding * 2;
44
+ const horizontal = '─'.repeat(innerWidth);
45
+ const top = `${ANSI.border}╭${horizontal}╮${ANSI.reset}`;
46
+ const bottom = `${ANSI.border}╰${horizontal}╯${ANSI.reset}`;
47
+ const boxedLines = lines.map((line) => {
48
+ const lineLength = stripAnsi(line).length;
49
+ const rightPadding = Math.max(0, innerWidth - padding - lineLength);
50
+ return `${ANSI.border}│${ANSI.reset}${' '.repeat(padding)}${line}${' '.repeat(rightPadding)}${ANSI.border}│${ANSI.reset}`;
51
+ });
52
+ return [top, ...boxedLines, bottom].join('\n');
53
+ }
54
+ //# sourceMappingURL=update-box.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-box.js","sourceRoot":"","sources":["../../src/utils/update-box.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AAEF;;GAEG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9C,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC5C,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YACD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzC,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;QACf,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,MAAc,EAAE,WAAmB;IAClF,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,oBAAoB,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;QAC5F,OAAO,IAAI,CAAC,IAAI,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,YAAY;QAChE,EAAE;KACH,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC;QACpE,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5H,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudosandwich/limps",
3
- "version": "2.10.0",
3
+ "version": "2.11.0",
4
4
  "description": "Local Intelligent MCP Planning Server - AI agent plan management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -69,7 +69,6 @@
69
69
  "quickjs-emscripten": "^0.31.0",
70
70
  "react": "^19.2.3",
71
71
  "remove-markdown": "^0.6.3",
72
- "update-notifier": "^7.3.1",
73
72
  "which": "^6.0.0",
74
73
  "yaml": "^2.7.0",
75
74
  "zod": "^4.3.6"
@@ -92,7 +91,6 @@
92
91
  "@types/micromatch": "^4.0.10",
93
92
  "@types/node": "^25.0.10",
94
93
  "@types/react": "^19.2.9",
95
- "@types/update-notifier": "^6.0.8",
96
94
  "@types/which": "^3.0.4",
97
95
  "@vitest/coverage-v8": "^4.0.18",
98
96
  "eslint": "^9.39.2",