tailscale-mcp 2026.3.17 → 2026.3.18
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/CHANGELOG.md +18 -0
- package/CLAUDE.md +3 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +1 -1
- package/dist/tools/diagnostics.d.ts +98 -0
- package/dist/tools/diagnostics.d.ts.map +1 -1
- package/dist/tools/diagnostics.js +121 -5
- package/dist/tools/diagnostics.js.map +1 -1
- package/dist/tools/tailnet.d.ts.map +1 -1
- package/dist/tools/tailnet.js +16 -2
- package/dist/tools/tailnet.js.map +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,24 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
This project uses [Calendar Versioning](https://calver.org/) (`YYYY.MM.DD.TS`).
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
## v2026.03.17.1
|
|
8
|
+
|
|
9
|
+
- **Fix DERP map, log streaming, and tailnet lock 404 handling** (#42)
|
|
10
|
+
- Fix `tailscale_derp_map` to read from ACL policy's `derpMap` field instead of non-existent standalone endpoint
|
|
11
|
+
- Add `tailscale_derp_map_set` tool — sets custom DERP regions (IDs 900-999) by patching the ACL policy
|
|
12
|
+
- Handle 404 gracefully for `tailscale_log_stream_get` — returns "not configured" instead of error
|
|
13
|
+
- Handle 404 gracefully for `tailscale_tailnet_lock_status` — returns "not initialized" with CLI setup instructions
|
|
14
|
+
- Tool count: 48 → 49
|
|
15
|
+
- Tests: 199 → 205
|
|
16
|
+
|
|
17
|
+
## v2026.03.16.4
|
|
18
|
+
|
|
19
|
+
- **Add pre-publish security scan** (#39)
|
|
20
|
+
- Add `scripts/prepublish-check.js` — blocks `npm publish` if forbidden files (`.mcpregistry_*`, `.env`, `.pem`, `.key`, `credentials`) are in the tarball
|
|
21
|
+
- Add `prepublishOnly` npm hook: build + test + security scan before every publish
|
|
22
|
+
- Update `.npmignore` with comprehensive security exclusions
|
|
23
|
+
- Implements ADR-0026
|
|
24
|
+
|
|
7
25
|
## v2026.03.16.3
|
|
8
26
|
|
|
9
27
|
- **Plugin API: extract `createServer()` factory for enterprise extensibility** (#37)
|
package/CLAUDE.md
CHANGED
|
@@ -86,7 +86,8 @@ docs/
|
|
|
86
86
|
- **Error handling**: No credential leaks in error messages (Bearer token never appears in logs or errors)
|
|
87
87
|
- **Credentials**: Never hardcoded, never logged, never in git
|
|
88
88
|
- **Secret Redaction — MANDATORY**: When using `grep`, `cat`, `sed`, `awk`, shell scripts, or any tool that reads/displays file contents containing secrets (`.env`, credentials, API keys, tokens, passwords), **ALWAYS redact the secret values** in output. Never display raw secret values in terminal output, logs, conversation context, or commit messages.
|
|
89
|
-
- **MCP Registry Tokens**: `.mcpregistry_*` files are gitignored (ADR-0024). Never commit registry auth tokens.
|
|
89
|
+
- **MCP Registry Tokens**: `.mcpregistry_*` files are gitignored (ADR-0024) AND npmignored. Never commit or publish registry auth tokens.
|
|
90
|
+
- **Pre-Publish Security Scan — MANDATORY** (ADR-0026): `prepublishOnly` hook runs `scripts/prepublish-check.js` before every `npm publish`. Blocks publish if forbidden files (`.mcpregistry_*`, `.env`, `.pem`, `.key`, `credentials`) are in the tarball. Never bypass with `--ignore-scripts`.
|
|
90
91
|
- **Public Repo Documentation Policy — MANDATORY**: This is a **public repository**. All documentation, code examples, test data, and commit messages MUST use only generic placeholders:
|
|
91
92
|
- Tailnet names: `your-tailnet-name`, `example.com`
|
|
92
93
|
- Device IDs: `123456789`
|
|
@@ -132,6 +133,7 @@ docs/
|
|
|
132
133
|
- Ensure `npm run build` succeeds before publishing
|
|
133
134
|
- Verify with `npm view tailscale-mcp version` after publishing
|
|
134
135
|
- Auth: granular access token set via `npm config set //registry.npmjs.org/:_authToken TOKEN`
|
|
136
|
+
- **`.npmignore` MUST exclude** `.mcpregistry_*` files (ADR-0024) — verify before every publish that tokens are not in tarball
|
|
135
137
|
|
|
136
138
|
## Git Workflow
|
|
137
139
|
|
package/dist/server.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface CreateServerOptions {
|
|
|
15
15
|
middleware?: ToolMiddleware;
|
|
16
16
|
/** Server name (default: "mcp-tailscale") */
|
|
17
17
|
name?: string;
|
|
18
|
-
/** Server version (default: "2026.3.
|
|
18
|
+
/** Server version (default: "2026.3.18") */
|
|
19
19
|
version?: string;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
@@ -26,7 +26,7 @@ export interface CreateServerResult {
|
|
|
26
26
|
server: Server;
|
|
27
27
|
/** The Tailscale API client */
|
|
28
28
|
client: ITailscaleClient;
|
|
29
|
-
/** All
|
|
29
|
+
/** All 49 tool definitions */
|
|
30
30
|
allToolDefinitions: Tool[];
|
|
31
31
|
/** Map of tool name → handler function */
|
|
32
32
|
toolHandlers: Map<string, ToolHandler>;
|
package/dist/server.js
CHANGED
|
@@ -32,7 +32,7 @@ import { postureToolDefinitions, handlePostureTool, } from "./tools/posture.js";
|
|
|
32
32
|
* });
|
|
33
33
|
*/
|
|
34
34
|
export function createServer(options) {
|
|
35
|
-
const { middleware, name = "mcp-tailscale", version = "2026.3.
|
|
35
|
+
const { middleware, name = "mcp-tailscale", version = "2026.3.18", } = options ?? {};
|
|
36
36
|
// Assemble all tool definitions
|
|
37
37
|
const allToolDefinitions = [
|
|
38
38
|
...deviceToolDefinitions,
|
|
@@ -9,6 +9,8 @@ export declare const diagnosticsToolDefinitions: ({
|
|
|
9
9
|
destinationType?: undefined;
|
|
10
10
|
url?: undefined;
|
|
11
11
|
confirm?: undefined;
|
|
12
|
+
regions?: undefined;
|
|
13
|
+
omitDefaultRegions?: undefined;
|
|
12
14
|
};
|
|
13
15
|
required?: undefined;
|
|
14
16
|
};
|
|
@@ -26,6 +28,8 @@ export declare const diagnosticsToolDefinitions: ({
|
|
|
26
28
|
destinationType?: undefined;
|
|
27
29
|
url?: undefined;
|
|
28
30
|
confirm?: undefined;
|
|
31
|
+
regions?: undefined;
|
|
32
|
+
omitDefaultRegions?: undefined;
|
|
29
33
|
};
|
|
30
34
|
required: string[];
|
|
31
35
|
};
|
|
@@ -52,6 +56,100 @@ export declare const diagnosticsToolDefinitions: ({
|
|
|
52
56
|
type: string;
|
|
53
57
|
description: string;
|
|
54
58
|
};
|
|
59
|
+
regions?: undefined;
|
|
60
|
+
omitDefaultRegions?: undefined;
|
|
61
|
+
};
|
|
62
|
+
required: string[];
|
|
63
|
+
};
|
|
64
|
+
} | {
|
|
65
|
+
name: string;
|
|
66
|
+
description: string;
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: "object";
|
|
69
|
+
properties: {
|
|
70
|
+
regions: {
|
|
71
|
+
type: string;
|
|
72
|
+
description: string;
|
|
73
|
+
additionalProperties: {
|
|
74
|
+
type: string;
|
|
75
|
+
properties: {
|
|
76
|
+
regionId: {
|
|
77
|
+
type: string;
|
|
78
|
+
description: string;
|
|
79
|
+
};
|
|
80
|
+
regionCode: {
|
|
81
|
+
type: string;
|
|
82
|
+
description: string;
|
|
83
|
+
};
|
|
84
|
+
regionName: {
|
|
85
|
+
type: string;
|
|
86
|
+
description: string;
|
|
87
|
+
};
|
|
88
|
+
avoid: {
|
|
89
|
+
type: string;
|
|
90
|
+
description: string;
|
|
91
|
+
};
|
|
92
|
+
nodes: {
|
|
93
|
+
type: string;
|
|
94
|
+
description: string;
|
|
95
|
+
items: {
|
|
96
|
+
type: string;
|
|
97
|
+
properties: {
|
|
98
|
+
name: {
|
|
99
|
+
type: string;
|
|
100
|
+
description: string;
|
|
101
|
+
};
|
|
102
|
+
regionId: {
|
|
103
|
+
type: string;
|
|
104
|
+
description: string;
|
|
105
|
+
};
|
|
106
|
+
hostName: {
|
|
107
|
+
type: string;
|
|
108
|
+
description: string;
|
|
109
|
+
};
|
|
110
|
+
certName: {
|
|
111
|
+
type: string;
|
|
112
|
+
description: string;
|
|
113
|
+
};
|
|
114
|
+
ipv4: {
|
|
115
|
+
type: string;
|
|
116
|
+
description: string;
|
|
117
|
+
};
|
|
118
|
+
ipv6: {
|
|
119
|
+
type: string;
|
|
120
|
+
description: string;
|
|
121
|
+
};
|
|
122
|
+
stunPort: {
|
|
123
|
+
type: string;
|
|
124
|
+
description: string;
|
|
125
|
+
};
|
|
126
|
+
stunOnly: {
|
|
127
|
+
type: string;
|
|
128
|
+
description: string;
|
|
129
|
+
};
|
|
130
|
+
derpPort: {
|
|
131
|
+
type: string;
|
|
132
|
+
description: string;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
required: string[];
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
required: string[];
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
omitDefaultRegions: {
|
|
143
|
+
type: string;
|
|
144
|
+
description: string;
|
|
145
|
+
};
|
|
146
|
+
confirm: {
|
|
147
|
+
type: string;
|
|
148
|
+
description: string;
|
|
149
|
+
};
|
|
150
|
+
logType?: undefined;
|
|
151
|
+
destinationType?: undefined;
|
|
152
|
+
url?: undefined;
|
|
55
153
|
};
|
|
56
154
|
required: string[];
|
|
57
155
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgE3D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4HtC,CAAC;AAMF,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAoJ7D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { TailscaleApiError } from "../utils/errors.js";
|
|
2
3
|
// ---------------------------------------------------------------------------
|
|
3
4
|
// Zod schemas for input validation
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
@@ -20,6 +21,29 @@ const LogStreamSetSchema = z.object({
|
|
|
20
21
|
}),
|
|
21
22
|
});
|
|
22
23
|
const DerpMapSchema = z.object({});
|
|
24
|
+
const DerpMapSetSchema = z.object({
|
|
25
|
+
regions: z.record(z.string(), z.object({
|
|
26
|
+
regionId: z.number().int().positive(),
|
|
27
|
+
regionCode: z.string().min(1),
|
|
28
|
+
regionName: z.string().min(1),
|
|
29
|
+
avoid: z.boolean().optional(),
|
|
30
|
+
nodes: z.array(z.object({
|
|
31
|
+
name: z.string().min(1),
|
|
32
|
+
regionId: z.number().int().positive(),
|
|
33
|
+
hostName: z.string().min(1),
|
|
34
|
+
certName: z.string().optional(),
|
|
35
|
+
ipv4: z.string().optional(),
|
|
36
|
+
ipv6: z.string().optional(),
|
|
37
|
+
stunPort: z.number().int().optional(),
|
|
38
|
+
stunOnly: z.boolean().optional(),
|
|
39
|
+
derpPort: z.number().int().optional(),
|
|
40
|
+
})),
|
|
41
|
+
})),
|
|
42
|
+
omitDefaultRegions: z.boolean().optional(),
|
|
43
|
+
confirm: z.literal(true, {
|
|
44
|
+
errorMap: () => ({ message: "confirm must be true to update the DERP map" }),
|
|
45
|
+
}),
|
|
46
|
+
});
|
|
23
47
|
// ---------------------------------------------------------------------------
|
|
24
48
|
// Tool definitions (for ListTools)
|
|
25
49
|
// ---------------------------------------------------------------------------
|
|
@@ -84,12 +108,63 @@ export const diagnosticsToolDefinitions = [
|
|
|
84
108
|
},
|
|
85
109
|
{
|
|
86
110
|
name: "tailscale_derp_map",
|
|
87
|
-
description: "Get the DERP relay map
|
|
111
|
+
description: "Get the custom DERP relay map from the tailnet's ACL policy. Returns the derpMap field from the ACL, or a 'not configured' message if no custom DERP map exists.",
|
|
88
112
|
inputSchema: {
|
|
89
113
|
type: "object",
|
|
90
114
|
properties: {},
|
|
91
115
|
},
|
|
92
116
|
},
|
|
117
|
+
{
|
|
118
|
+
name: "tailscale_derp_map_set",
|
|
119
|
+
description: "Set or update the custom DERP relay map in the tailnet's ACL policy. Requires confirm: true. Custom DERP regions use IDs 900-999. Set omitDefaultRegions: true to replace Tailscale's default relays entirely.",
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: "object",
|
|
122
|
+
properties: {
|
|
123
|
+
regions: {
|
|
124
|
+
type: "object",
|
|
125
|
+
description: "Map of region ID (string) to region config. Custom regions should use IDs 900-999.",
|
|
126
|
+
additionalProperties: {
|
|
127
|
+
type: "object",
|
|
128
|
+
properties: {
|
|
129
|
+
regionId: { type: "number", description: "Region ID (900-999 for custom)" },
|
|
130
|
+
regionCode: { type: "string", description: "Short region code (e.g., 'mydc')" },
|
|
131
|
+
regionName: { type: "string", description: "Human-readable region name" },
|
|
132
|
+
avoid: { type: "boolean", description: "If true, avoid using this region" },
|
|
133
|
+
nodes: {
|
|
134
|
+
type: "array",
|
|
135
|
+
description: "DERP nodes in this region",
|
|
136
|
+
items: {
|
|
137
|
+
type: "object",
|
|
138
|
+
properties: {
|
|
139
|
+
name: { type: "string", description: "Node name" },
|
|
140
|
+
regionId: { type: "number", description: "Must match parent region" },
|
|
141
|
+
hostName: { type: "string", description: "DERP server hostname" },
|
|
142
|
+
certName: { type: "string", description: "TLS cert name if different from hostName" },
|
|
143
|
+
ipv4: { type: "string", description: "IPv4 address" },
|
|
144
|
+
ipv6: { type: "string", description: "IPv6 address" },
|
|
145
|
+
stunPort: { type: "number", description: "STUN port (default 3478)" },
|
|
146
|
+
stunOnly: { type: "boolean", description: "If true, only use for STUN" },
|
|
147
|
+
derpPort: { type: "number", description: "DERP port (default 443)" },
|
|
148
|
+
},
|
|
149
|
+
required: ["name", "regionId", "hostName"],
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
required: ["regionId", "regionCode", "regionName", "nodes"],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
omitDefaultRegions: {
|
|
157
|
+
type: "boolean",
|
|
158
|
+
description: "If true, omit Tailscale's default DERP regions and use only custom ones",
|
|
159
|
+
},
|
|
160
|
+
confirm: {
|
|
161
|
+
type: "boolean",
|
|
162
|
+
description: "Must be true to confirm the DERP map update",
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
required: ["regions", "confirm"],
|
|
166
|
+
},
|
|
167
|
+
},
|
|
93
168
|
];
|
|
94
169
|
// ---------------------------------------------------------------------------
|
|
95
170
|
// Tool handler
|
|
@@ -146,8 +221,21 @@ export async function handleDiagnosticsTool(name, args, client) {
|
|
|
146
221
|
}
|
|
147
222
|
case "tailscale_log_stream_get": {
|
|
148
223
|
const parsed = LogStreamGetSchema.parse(args);
|
|
149
|
-
|
|
150
|
-
|
|
224
|
+
try {
|
|
225
|
+
const result = await client.get(`/tailnet/${client.tailnet}/logging/${parsed.logType}/stream`);
|
|
226
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
if (err instanceof TailscaleApiError && err.status === 404 ||
|
|
230
|
+
err instanceof Error && err.message.includes("404")) {
|
|
231
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
232
|
+
configured: false,
|
|
233
|
+
logType: parsed.logType,
|
|
234
|
+
message: `No log streaming configured for '${parsed.logType}' logs. Configure via the Tailscale admin console (https://login.tailscale.com/admin/logs) or use tailscale_log_stream_set to set a streaming destination.`,
|
|
235
|
+
}, null, 2) }] };
|
|
236
|
+
}
|
|
237
|
+
throw err;
|
|
238
|
+
}
|
|
151
239
|
}
|
|
152
240
|
case "tailscale_log_stream_set": {
|
|
153
241
|
const parsed = LogStreamSetSchema.parse(args);
|
|
@@ -159,8 +247,36 @@ export async function handleDiagnosticsTool(name, args, client) {
|
|
|
159
247
|
}
|
|
160
248
|
case "tailscale_derp_map": {
|
|
161
249
|
DerpMapSchema.parse(args);
|
|
162
|
-
|
|
163
|
-
|
|
250
|
+
// DERP map is managed through the ACL policy's derpMap field
|
|
251
|
+
const acl = await client.get(`/tailnet/${client.tailnet}/acl`);
|
|
252
|
+
if (acl.derpMap) {
|
|
253
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
254
|
+
source: "acl-policy",
|
|
255
|
+
derpMap: acl.derpMap,
|
|
256
|
+
}, null, 2) }] };
|
|
257
|
+
}
|
|
258
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
259
|
+
configured: false,
|
|
260
|
+
message: "No custom DERP map configured in ACL policy. The tailnet uses Tailscale's default DERP relay regions. To add custom DERP servers, use tailscale_derp_map_set with regions using IDs 900-999.",
|
|
261
|
+
}, null, 2) }] };
|
|
262
|
+
}
|
|
263
|
+
case "tailscale_derp_map_set": {
|
|
264
|
+
const parsed = DerpMapSetSchema.parse(args);
|
|
265
|
+
// Read current ACL, patch derpMap, write back
|
|
266
|
+
const currentAcl = await client.get(`/tailnet/${client.tailnet}/acl`);
|
|
267
|
+
const derpMap = {
|
|
268
|
+
Regions: parsed.regions,
|
|
269
|
+
};
|
|
270
|
+
if (parsed.omitDefaultRegions !== undefined) {
|
|
271
|
+
derpMap["OmitDefaultRegions"] = parsed.omitDefaultRegions;
|
|
272
|
+
}
|
|
273
|
+
const updatedAcl = { ...currentAcl, derpMap };
|
|
274
|
+
const result = await client.post(`/tailnet/${client.tailnet}/acl`, updatedAcl);
|
|
275
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
276
|
+
message: "DERP map updated in ACL policy",
|
|
277
|
+
derpMap,
|
|
278
|
+
aclUpdated: true,
|
|
279
|
+
}, null, 2) }] };
|
|
164
280
|
}
|
|
165
281
|
default:
|
|
166
282
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAErC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE;QAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;KAC9E,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE;QAC5C,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;KAC9E,CAAC;IACF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;IACjE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;QACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,wDAAwD,EAAE,CAAC;KACxF,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEnC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CACf,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC7B,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACrC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC,CACH;KACF,CAAC,CACH;IACD,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;QACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;KAC7E,CAAC;CACH,CAAC,CAAC;AAEH,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,oHAAoH;QACtH,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,kGAAkG;QACpG,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,uGAAuG;QACzG,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;oBAClC,WAAW,EAAE,mDAAmD;iBACjE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,4GAA4G;QAC9G,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;oBAClC,WAAW,EAAE,wBAAwB;iBACtC;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;iBACpE;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,yDAAyD;iBACvE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC;SAC3D;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,kKAAkK;QACpK,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,gNAAgN;QAClN,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oFAAoF;oBACjG,oBAAoB,EAAE;wBACpB,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;4BAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;4BAC/E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;4BACzE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE;4BAC3E,KAAK,EAAE;gCACL,IAAI,EAAE,OAAO;gCACb,WAAW,EAAE,2BAA2B;gCACxC,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE;wCACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;wCAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;wCACrE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;wCACjE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;wCACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;wCACrD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;wCACrD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;wCACrE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;wCACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;qCACrE;oCACD,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC;iCAC3C;6BACF;yBACF;wBACD,QAAQ,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC;qBAC5D;iBACF;gBACD,kBAAkB,EAAE;oBAClB,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,yEAAyE;iBACvF;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6CAA6C;iBAC3D;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;SACjC;KACF;CACF,CAAC;AAEF,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,IAA6B,EAC7B,MAAwB;IAExB,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,MAAM,CAAC,OAAO,UAAU,CACrC,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;gBAErD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;oBACzC,IAAI,CAAC,CAAC,CAAC,QAAQ;wBAAE,OAAO,KAAK,CAAC;oBAC9B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;oBAClD,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,iBAAiB,CAAC;gBACxD,CAAC,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG;oBACb,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,WAAW,EAAE,OAAO,CAAC,MAAM;oBAC3B,aAAa,EAAE,aAAa,CAAC,MAAM;oBACnC,cAAc,EAAE,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;oBACrD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,EAAE,EAAE,CAAC,CAAC,EAAE;wBACR,SAAS,EAAE,CAAC,CAAC,SAAS;wBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;qBACzB,CAAC,CAAC;iBACJ,CAAC;gBAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAChF,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,MAAM,CAAC,OAAO,UAAU,EACpC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAChB,CAAC;gBACF,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;gCACE,SAAS,EAAE,IAAI;gCACf,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,WAAW;gCACX,OAAO,EAAE,gDAAgD;6BAC1D,EACD,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,OAAO,SAAS,CAC9D,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChF,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;wBACtD,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACxD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wCACtD,UAAU,EAAE,KAAK;wCACjB,OAAO,EAAE,MAAM,CAAC,OAAO;wCACvB,OAAO,EAAE,oCAAoC,MAAM,CAAC,OAAO,4JAA4J;qCACxN,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnB,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,OAAO,SAAS,EAC7D;oBACE,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,GAAG,EAAE,MAAM,CAAC,GAAG;iBAChB,CACF,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAChF,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1B,6DAA6D;gBAC7D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAC1B,YAAY,MAAM,CAAC,OAAO,MAAM,CACjC,CAAC;gBACF,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oCACtD,MAAM,EAAE,YAAY;oCACpB,OAAO,EAAE,GAAG,CAAC,OAAO;iCACrB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACtD,UAAU,EAAE,KAAK;gCACjB,OAAO,EAAE,8LAA8L;6BACxM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,CAAC;YAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,8CAA8C;gBAC9C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CACjC,YAAY,MAAM,CAAC,OAAO,MAAM,CACjC,CAAC;gBACF,MAAM,OAAO,GAA4B;oBACvC,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;gBACF,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;oBAC5C,OAAO,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBAC5D,CAAC;gBACD,MAAM,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,YAAY,MAAM,CAAC,OAAO,MAAM,EAChC,UAAU,CACX,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACtD,OAAO,EAAE,gCAAgC;gCACzC,OAAO;gCACP,UAAU,EAAE,IAAI;6BACjB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,CAAC;YAED;gBACE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,IAAI,EAAE,EAAE,CAAC;iBACvE,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAI,KAAK,OAAO,EAAE,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailnet.d.ts","sourceRoot":"","sources":["../../src/tools/tailnet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tailnet.d.ts","sourceRoot":"","sources":["../../src/tools/tailnet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAyD3D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkHlC,CAAC;AAMF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAiF7D"}
|
package/dist/tools/tailnet.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { TailscaleApiError } from "../utils/errors.js";
|
|
2
3
|
// ---------------------------------------------------------------------------
|
|
3
4
|
// Zod schemas for input validation
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
@@ -181,8 +182,21 @@ export async function handleTailnetTool(name, args, client) {
|
|
|
181
182
|
}
|
|
182
183
|
case "tailscale_tailnet_lock_status": {
|
|
183
184
|
TailnetLockStatusSchema.parse(args);
|
|
184
|
-
|
|
185
|
-
|
|
185
|
+
try {
|
|
186
|
+
const result = await client.get(`/tailnet/${client.tailnet}/lock/status`);
|
|
187
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
if (err instanceof TailscaleApiError && err.status === 404 ||
|
|
191
|
+
err instanceof Error && err.message.includes("404")) {
|
|
192
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
193
|
+
enabled: false,
|
|
194
|
+
initialized: false,
|
|
195
|
+
message: "Tailnet Lock is not initialized. Tailnet Lock requires CLI setup — it cannot be enabled via API. Steps: (1) Run 'tailscale lock init' on a trusted device, (2) Sign existing nodes with 'tailscale lock sign', (3) Status will then be available via this tool. See https://tailscale.com/kb/1226/tailnet-lock for details.",
|
|
196
|
+
}, null, 2) }] };
|
|
197
|
+
}
|
|
198
|
+
throw err;
|
|
199
|
+
}
|
|
186
200
|
}
|
|
187
201
|
case "tailscale_tailnet_settings_update": {
|
|
188
202
|
const parsed = TailnetSettingsUpdateSchema.parse(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailnet.js","sourceRoot":"","sources":["../../src/tools/tailnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tailnet.js","sourceRoot":"","sources":["../../src/tools/tailnet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tailscale-mcp",
|
|
3
3
|
"mcpName": "io.github.itunified-io/tailscale",
|
|
4
|
-
"version": "2026.3.
|
|
5
|
-
"description": "Secure MCP access for private infrastructure over Tailscale —
|
|
4
|
+
"version": "2026.3.18",
|
|
5
|
+
"description": "Secure MCP access for private infrastructure over Tailscale — 49 tools for devices, DNS, ACL, keys, users, webhooks, posture, and tailnet management via Tailscale API v2",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"exports": {
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"test": "vitest run",
|
|
22
22
|
"dev": "tsc --watch",
|
|
23
23
|
"start": "node dist/index.js",
|
|
24
|
-
"typecheck": "tsc --noEmit"
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"prepublishOnly": "npm run build && npm test && node scripts/prepublish-check.js"
|
|
25
26
|
},
|
|
26
27
|
"repository": {
|
|
27
28
|
"type": "git",
|