@tempad-dev/mcp 0.3.12 → 0.4.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.
@@ -6,7 +6,7 @@ import pino from "pino";
6
6
  //#region package.json
7
7
  var package_default = {
8
8
  name: "@tempad-dev/mcp",
9
- version: "0.3.12",
9
+ version: "0.4.0",
10
10
  description: "MCP server for TemPad Dev.",
11
11
  bin: "dist/cli.mjs",
12
12
  files: ["README.md", "dist/**/*"],
@@ -15,6 +15,9 @@ var package_default = {
15
15
  scripts: {
16
16
  "build": "tsdown",
17
17
  "typecheck": "tsc -p tsconfig.json --noEmit",
18
+ "test": "vitest --config vitest.config.ts",
19
+ "test:run": "vitest run --config vitest.config.ts",
20
+ "test:coverage": "vitest run --config vitest.config.ts --coverage",
18
21
  "lint": "eslint . --ext .ts,.mts,.cts,.js,.mjs,.cjs",
19
22
  "lint:fix": "eslint . --ext .ts,.mts,.cts,.js,.mjs,.cjs --fix",
20
23
  "format": "oxfmt --ignore-path ../../.gitignore",
@@ -23,45 +26,57 @@ var package_default = {
23
26
  },
24
27
  dependencies: {
25
28
  "@modelcontextprotocol/sdk": "^1.24.0",
29
+ "@tempad-dev/shared": "workspace:^0.1.0",
26
30
  "nanoid": "^5.1.6",
27
31
  "pino": "^10.0.0",
28
32
  "pino-pretty": "^13.0.0",
29
33
  "proper-lockfile": "^4.1.2",
30
- "ws": "^8.18.3"
34
+ "ws": "^8.18.3",
35
+ "zod": "^4.1.12"
31
36
  },
32
37
  devDependencies: {
33
- "@tempad-dev/mcp-shared": "workspace:^0.1.0",
34
38
  "@types/node": "^24.0.0",
35
39
  "@types/proper-lockfile": "^4.1.4",
36
40
  "@types/ws": "^8.5.12",
37
- "tsdown": "^0.18.0",
41
+ "tsdown": "^0.20.0",
38
42
  "typescript": "^5.9.3",
39
- "unplugin-raw": "^0.6.3",
40
- "zod": "^4.1.12"
43
+ "unplugin-raw": "^0.6.3"
41
44
  }
42
45
  };
43
46
 
44
47
  //#endregion
45
48
  //#region src/shared.ts
49
+ function normalizePackageVersion(version) {
50
+ return typeof version === "string" ? version : "0.0.0";
51
+ }
46
52
  function ensureDir(dirPath) {
47
53
  mkdirSync(dirPath, {
48
54
  recursive: true,
49
55
  mode: 448
50
56
  });
51
57
  }
52
- const pkg = package_default;
53
- const PACKAGE_VERSION = typeof pkg.version === "string" ? pkg.version : "0.0.0";
54
- function resolveRuntimeDir() {
55
- if (process.env.TEMPAD_MCP_RUNTIME_DIR) return process.env.TEMPAD_MCP_RUNTIME_DIR;
56
- return join(tmpdir(), "tempad-dev", "run");
58
+ function getRecordProperty(record, key) {
59
+ if (!record || typeof record !== "object") return;
60
+ return Reflect.get(record, key);
61
+ }
62
+ const PACKAGE_VERSION = normalizePackageVersion(getRecordProperty(package_default, "version"));
63
+ function resolveRuntimeDir(env = process.env, systemTmpDir = tmpdir()) {
64
+ if (env.TEMPAD_MCP_RUNTIME_DIR) return env.TEMPAD_MCP_RUNTIME_DIR;
65
+ return join(systemTmpDir, "tempad-dev", "run");
66
+ }
67
+ function resolveLogDir(env = process.env, systemTmpDir = tmpdir()) {
68
+ if (env.TEMPAD_MCP_LOG_DIR) return env.TEMPAD_MCP_LOG_DIR;
69
+ return join(systemTmpDir, "tempad-dev", "log");
70
+ }
71
+ function resolveAssetDir(env = process.env, systemTmpDir = tmpdir()) {
72
+ if (env.TEMPAD_MCP_ASSET_DIR) return env.TEMPAD_MCP_ASSET_DIR;
73
+ return join(systemTmpDir, "tempad-dev", "assets");
57
74
  }
58
- function resolveLogDir() {
59
- if (process.env.TEMPAD_MCP_LOG_DIR) return process.env.TEMPAD_MCP_LOG_DIR;
60
- return join(tmpdir(), "tempad-dev", "log");
75
+ function resolveLogLevel(debugValue = process.env.DEBUG) {
76
+ return debugValue ? "debug" : "info";
61
77
  }
62
- function resolveAssetDir() {
63
- if (process.env.TEMPAD_MCP_ASSET_DIR) return process.env.TEMPAD_MCP_ASSET_DIR;
64
- return join(tmpdir(), "tempad-dev", "assets");
78
+ function resolveSockPath(platform = process.platform, runtimeDir = RUNTIME_DIR) {
79
+ return platform === "win32" ? "\\\\.\\pipe\\tempad-mcp" : join(runtimeDir, "mcp.sock");
65
80
  }
66
81
  const RUNTIME_DIR = resolveRuntimeDir();
67
82
  const LOG_DIR = resolveLogDir();
@@ -85,11 +100,11 @@ const prettyTransport = pino.transport({
85
100
  }
86
101
  });
87
102
  const log = pino({
88
- level: process.env.DEBUG ? "debug" : "info",
103
+ level: resolveLogLevel(),
89
104
  msgPrefix: "[tempad-dev/mcp] "
90
105
  }, prettyTransport);
91
- const SOCK_PATH = process.platform === "win32" ? "\\\\.\\pipe\\tempad-mcp" : join(RUNTIME_DIR, "mcp.sock");
106
+ const SOCK_PATH = resolveSockPath();
92
107
 
93
108
  //#endregion
94
109
  export { SOCK_PATH as a, log as c, RUNTIME_DIR as i, LOCK_PATH as n, ensureDir as o, PACKAGE_VERSION as r, ensureFile as s, ASSET_DIR as t };
95
- //# sourceMappingURL=shared-cWtEAcwU.mjs.map
110
+ //# sourceMappingURL=shared-C8rMJ76Z.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-C8rMJ76Z.mjs","names":["packageJson"],"sources":["../package.json","../src/shared.ts"],"sourcesContent":["","import { closeSync, mkdirSync, openSync } from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\nimport pino from 'pino'\n\nimport packageJson from '../package.json' assert { type: 'json' }\n\nexport function normalizePackageVersion(version: unknown): string {\n return typeof version === 'string' ? version : '0.0.0'\n}\n\nexport function ensureDir(dirPath: string): void {\n mkdirSync(dirPath, { recursive: true, mode: 0o700 })\n}\n\nfunction getRecordProperty(record: unknown, key: string): unknown {\n if (!record || typeof record !== 'object') {\n return undefined\n }\n return Reflect.get(record, key)\n}\n\nexport const PACKAGE_VERSION = normalizePackageVersion(getRecordProperty(packageJson, 'version'))\n\nexport function resolveRuntimeDir(\n env: NodeJS.ProcessEnv = process.env,\n systemTmpDir: string = tmpdir()\n): string {\n if (env.TEMPAD_MCP_RUNTIME_DIR) return env.TEMPAD_MCP_RUNTIME_DIR\n return join(systemTmpDir, 'tempad-dev', 'run')\n}\n\nexport function resolveLogDir(\n env: NodeJS.ProcessEnv = process.env,\n systemTmpDir: string = tmpdir()\n): string {\n if (env.TEMPAD_MCP_LOG_DIR) return env.TEMPAD_MCP_LOG_DIR\n return join(systemTmpDir, 'tempad-dev', 'log')\n}\n\nexport function resolveAssetDir(\n env: NodeJS.ProcessEnv = process.env,\n systemTmpDir: string = tmpdir()\n): string {\n if (env.TEMPAD_MCP_ASSET_DIR) return env.TEMPAD_MCP_ASSET_DIR\n return join(systemTmpDir, 'tempad-dev', 'assets')\n}\n\nexport function resolveLogLevel(\n debugValue: string | undefined = process.env.DEBUG\n): 'debug' | 'info' {\n return debugValue ? 'debug' : 'info'\n}\n\nexport function resolveSockPath(\n platform: NodeJS.Platform = process.platform,\n runtimeDir: string = RUNTIME_DIR\n): string {\n return platform === 'win32' ? '\\\\\\\\.\\\\pipe\\\\tempad-mcp' : join(runtimeDir, 'mcp.sock')\n}\n\nexport const RUNTIME_DIR = resolveRuntimeDir()\nexport const LOG_DIR = resolveLogDir()\nexport const ASSET_DIR = resolveAssetDir()\n\nensureDir(RUNTIME_DIR)\nensureDir(LOG_DIR)\nensureDir(ASSET_DIR)\n\nexport function ensureFile(filePath: string): void {\n const fd = openSync(filePath, 'a')\n closeSync(fd)\n}\n\nexport const LOCK_PATH = join(RUNTIME_DIR, 'mcp.lock')\nensureFile(LOCK_PATH)\n\nconst timestamp = new Date().toISOString().replaceAll(':', '-').replaceAll('.', '-')\nconst pid = process.pid\nconst LOG_FILE = join(LOG_DIR, `mcp-${timestamp}-${pid}.log`)\n\nconst prettyTransport = pino.transport({\n target: 'pino-pretty',\n options: {\n translateTime: 'SYS:HH:MM:ss',\n destination: LOG_FILE\n }\n})\n\nexport const log = pino(\n {\n level: resolveLogLevel(),\n msgPrefix: '[tempad-dev/mcp] '\n },\n prettyTransport\n)\n\nexport const SOCK_PATH = resolveSockPath()\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOA,SAAgB,wBAAwB,SAA0B;AAChE,QAAO,OAAO,YAAY,WAAW,UAAU;;AAGjD,SAAgB,UAAU,SAAuB;AAC/C,WAAU,SAAS;EAAE,WAAW;EAAM,MAAM;EAAO,CAAC;;AAGtD,SAAS,kBAAkB,QAAiB,KAAsB;AAChE,KAAI,CAAC,UAAU,OAAO,WAAW,SAC/B;AAEF,QAAO,QAAQ,IAAI,QAAQ,IAAI;;AAGjC,MAAa,kBAAkB,wBAAwB,kBAAkBA,iBAAa,UAAU,CAAC;AAEjG,SAAgB,kBACd,MAAyB,QAAQ,KACjC,eAAuB,QAAQ,EACvB;AACR,KAAI,IAAI,uBAAwB,QAAO,IAAI;AAC3C,QAAO,KAAK,cAAc,cAAc,MAAM;;AAGhD,SAAgB,cACd,MAAyB,QAAQ,KACjC,eAAuB,QAAQ,EACvB;AACR,KAAI,IAAI,mBAAoB,QAAO,IAAI;AACvC,QAAO,KAAK,cAAc,cAAc,MAAM;;AAGhD,SAAgB,gBACd,MAAyB,QAAQ,KACjC,eAAuB,QAAQ,EACvB;AACR,KAAI,IAAI,qBAAsB,QAAO,IAAI;AACzC,QAAO,KAAK,cAAc,cAAc,SAAS;;AAGnD,SAAgB,gBACd,aAAiC,QAAQ,IAAI,OAC3B;AAClB,QAAO,aAAa,UAAU;;AAGhC,SAAgB,gBACd,WAA4B,QAAQ,UACpC,aAAqB,aACb;AACR,QAAO,aAAa,UAAU,4BAA4B,KAAK,YAAY,WAAW;;AAGxF,MAAa,cAAc,mBAAmB;AAC9C,MAAa,UAAU,eAAe;AACtC,MAAa,YAAY,iBAAiB;AAE1C,UAAU,YAAY;AACtB,UAAU,QAAQ;AAClB,UAAU,UAAU;AAEpB,SAAgB,WAAW,UAAwB;AAEjD,WADW,SAAS,UAAU,IAAI,CACrB;;AAGf,MAAa,YAAY,KAAK,aAAa,WAAW;AACtD,WAAW,UAAU;AAErB,MAAM,6BAAY,IAAI,MAAM,EAAC,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,KAAK,IAAI;AACpF,MAAM,MAAM,QAAQ;AACpB,MAAM,WAAW,KAAK,SAAS,OAAO,UAAU,GAAG,IAAI,MAAM;AAE7D,MAAM,kBAAkB,KAAK,UAAU;CACrC,QAAQ;CACR,SAAS;EACP,eAAe;EACf,aAAa;EACd;CACF,CAAC;AAEF,MAAa,MAAM,KACjB;CACE,OAAO,iBAAiB;CACxB,WAAW;CACZ,EACD,gBACD;AAED,MAAa,YAAY,iBAAiB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tempad-dev/mcp",
3
- "version": "0.3.12",
3
+ "version": "0.4.0",
4
4
  "description": "MCP server for TemPad Dev.",
5
5
  "bin": "dist/cli.mjs",
6
6
  "files": [
@@ -11,25 +11,28 @@
11
11
  "main": "dist/cli.mjs",
12
12
  "dependencies": {
13
13
  "@modelcontextprotocol/sdk": "^1.24.0",
14
+ "@tempad-dev/shared": "^0.1.0",
14
15
  "nanoid": "^5.1.6",
15
16
  "pino": "^10.0.0",
16
17
  "pino-pretty": "^13.0.0",
17
18
  "proper-lockfile": "^4.1.2",
18
- "ws": "^8.18.3"
19
+ "ws": "^8.18.3",
20
+ "zod": "^4.1.12"
19
21
  },
20
22
  "devDependencies": {
21
- "@tempad-dev/mcp-shared": "^0.1.0",
22
23
  "@types/node": "^24.0.0",
23
24
  "@types/proper-lockfile": "^4.1.4",
24
25
  "@types/ws": "^8.5.12",
25
- "tsdown": "^0.18.0",
26
+ "tsdown": "^0.20.0",
26
27
  "typescript": "^5.9.3",
27
- "unplugin-raw": "^0.6.3",
28
- "zod": "^4.1.12"
28
+ "unplugin-raw": "^0.6.3"
29
29
  },
30
30
  "scripts": {
31
31
  "build": "tsdown",
32
32
  "typecheck": "tsc -p tsconfig.json --noEmit",
33
+ "test": "vitest --config vitest.config.ts",
34
+ "test:run": "vitest run --config vitest.config.ts",
35
+ "test:coverage": "vitest run --config vitest.config.ts --coverage",
33
36
  "lint": "eslint . --ext .ts,.mts,.cts,.js,.mjs,.cjs",
34
37
  "lint:fix": "eslint . --ext .ts,.mts,.cts,.js,.mjs,.cjs --fix",
35
38
  "format": "oxfmt --ignore-path ../../.gitignore",
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared-cWtEAcwU.mjs","names":["packageJson"],"sources":["../package.json","../src/shared.ts"],"sourcesContent":["","import { closeSync, mkdirSync, openSync } from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\nimport pino from 'pino'\n\nimport packageJson from '../package.json' assert { type: 'json' }\n\nexport function ensureDir(dirPath: string): void {\n mkdirSync(dirPath, { recursive: true, mode: 0o700 })\n}\n\nconst pkg = packageJson as { version?: unknown }\nexport const PACKAGE_VERSION = typeof pkg.version === 'string' ? pkg.version : '0.0.0'\n\nfunction resolveRuntimeDir(): string {\n if (process.env.TEMPAD_MCP_RUNTIME_DIR) return process.env.TEMPAD_MCP_RUNTIME_DIR\n return join(tmpdir(), 'tempad-dev', 'run')\n}\n\nfunction resolveLogDir(): string {\n if (process.env.TEMPAD_MCP_LOG_DIR) return process.env.TEMPAD_MCP_LOG_DIR\n return join(tmpdir(), 'tempad-dev', 'log')\n}\n\nfunction resolveAssetDir(): string {\n if (process.env.TEMPAD_MCP_ASSET_DIR) return process.env.TEMPAD_MCP_ASSET_DIR\n return join(tmpdir(), 'tempad-dev', 'assets')\n}\n\nexport const RUNTIME_DIR = resolveRuntimeDir()\nexport const LOG_DIR = resolveLogDir()\nexport const ASSET_DIR = resolveAssetDir()\n\nensureDir(RUNTIME_DIR)\nensureDir(LOG_DIR)\nensureDir(ASSET_DIR)\n\nexport function ensureFile(filePath: string): void {\n const fd = openSync(filePath, 'a')\n closeSync(fd)\n}\n\nexport const LOCK_PATH = join(RUNTIME_DIR, 'mcp.lock')\nensureFile(LOCK_PATH)\n\nconst timestamp = new Date().toISOString().replaceAll(':', '-').replaceAll('.', '-')\nconst pid = process.pid\nconst LOG_FILE = join(LOG_DIR, `mcp-${timestamp}-${pid}.log`)\n\nconst prettyTransport = pino.transport({\n target: 'pino-pretty',\n options: {\n translateTime: 'SYS:HH:MM:ss',\n destination: LOG_FILE\n }\n})\n\nexport const log = pino(\n {\n level: process.env.DEBUG ? 'debug' : 'info',\n msgPrefix: '[tempad-dev/mcp] '\n },\n prettyTransport\n)\n\nexport const SOCK_PATH =\n process.platform === 'win32' ? '\\\\\\\\.\\\\pipe\\\\tempad-mcp' : join(RUNTIME_DIR, 'mcp.sock')\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOA,SAAgB,UAAU,SAAuB;AAC/C,WAAU,SAAS;EAAE,WAAW;EAAM,MAAM;EAAO,CAAC;;AAGtD,MAAM,MAAMA;AACZ,MAAa,kBAAkB,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;AAE/E,SAAS,oBAA4B;AACnC,KAAI,QAAQ,IAAI,uBAAwB,QAAO,QAAQ,IAAI;AAC3D,QAAO,KAAK,QAAQ,EAAE,cAAc,MAAM;;AAG5C,SAAS,gBAAwB;AAC/B,KAAI,QAAQ,IAAI,mBAAoB,QAAO,QAAQ,IAAI;AACvD,QAAO,KAAK,QAAQ,EAAE,cAAc,MAAM;;AAG5C,SAAS,kBAA0B;AACjC,KAAI,QAAQ,IAAI,qBAAsB,QAAO,QAAQ,IAAI;AACzD,QAAO,KAAK,QAAQ,EAAE,cAAc,SAAS;;AAG/C,MAAa,cAAc,mBAAmB;AAC9C,MAAa,UAAU,eAAe;AACtC,MAAa,YAAY,iBAAiB;AAE1C,UAAU,YAAY;AACtB,UAAU,QAAQ;AAClB,UAAU,UAAU;AAEpB,SAAgB,WAAW,UAAwB;AAEjD,WADW,SAAS,UAAU,IAAI,CACrB;;AAGf,MAAa,YAAY,KAAK,aAAa,WAAW;AACtD,WAAW,UAAU;AAErB,MAAM,6BAAY,IAAI,MAAM,EAAC,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,KAAK,IAAI;AACpF,MAAM,MAAM,QAAQ;AACpB,MAAM,WAAW,KAAK,SAAS,OAAO,UAAU,GAAG,IAAI,MAAM;AAE7D,MAAM,kBAAkB,KAAK,UAAU;CACrC,QAAQ;CACR,SAAS;EACP,eAAe;EACf,aAAa;EACd;CACF,CAAC;AAEF,MAAa,MAAM,KACjB;CACE,OAAO,QAAQ,IAAI,QAAQ,UAAU;CACrC,WAAW;CACZ,EACD,gBACD;AAED,MAAa,YACX,QAAQ,aAAa,UAAU,4BAA4B,KAAK,aAAa,WAAW"}