@tlog/mcp 0.1.3
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/README.md +281 -0
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -0
- package/dist/constants.js.map +1 -0
- package/dist/core-tools.d.ts +146 -0
- package/dist/core-tools.d.ts.map +1 -0
- package/dist/core-tools.js +884 -0
- package/dist/core-tools.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/normalization.d.ts +5 -0
- package/dist/normalization.d.ts.map +1 -0
- package/dist/normalization.js +186 -0
- package/dist/normalization.js.map +1 -0
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +19 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema-contract.d.ts +15 -0
- package/dist/schema-contract.d.ts.map +1 -0
- package/dist/schema-contract.js +439 -0
- package/dist/schema-contract.js.map +1 -0
- package/dist/schemas.d.ts +172 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +154 -0
- package/dist/schemas.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +594 -0
- package/dist/server.js.map +1 -0
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +14 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +146 -0
- package/dist/utils.js.map +1 -0
- package/package.json +39 -0
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LogLevel, PromptExtraction, ToolResult } from "./types.js";
|
|
2
|
+
export declare function logEvent(level: LogLevel, event: string, detail: Record<string, unknown>): void;
|
|
3
|
+
export declare function toToolResult(payload: Record<string, unknown>): ToolResult;
|
|
4
|
+
export declare function toToolError(message: string, code: string, details?: Record<string, unknown>): ToolResult;
|
|
5
|
+
export declare function asObject(input: unknown): Record<string, unknown>;
|
|
6
|
+
export declare function extractPromptMetadata(instruction: string, prefix: "suite" | "case"): PromptExtraction;
|
|
7
|
+
export declare function resolvePathInsideWorkspace(workspaceRoot: string, targetPath: string): string;
|
|
8
|
+
export declare function toRelativePath(workspaceRoot: string, absolutePath: string): string;
|
|
9
|
+
export declare function assertNoOverwrite(path: string): void;
|
|
10
|
+
export declare function listYamlFiles(rootDir: string): Promise<string[]>;
|
|
11
|
+
export declare function summarizeDiff(before: unknown, after: unknown): string[];
|
|
12
|
+
export declare function selectAppliedMode(mode: "replace" | "append" | "auto", instruction: string): "replace" | "append";
|
|
13
|
+
export declare function findAvailablePath(basePath: string): string;
|
|
14
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE9F;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAKzE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,UAAU,CAwB5G;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMhE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAyBrG;AAED,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAU5F;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIpD;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBtE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAevE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAWhH;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY1D"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { readdir } from "node:fs/promises";
|
|
3
|
+
import { basename, dirname, join, relative, resolve, sep } from "node:path";
|
|
4
|
+
import { stderr } from "node:process";
|
|
5
|
+
import { ensureUniqueSlug, slugifyTitle } from "@tlog/shared";
|
|
6
|
+
import { DEFAULT_DATE } from "./constants.js";
|
|
7
|
+
export function logEvent(level, event, detail) {
|
|
8
|
+
stderr.write(`${JSON.stringify({ level, event, at: new Date().toISOString(), ...detail })}\n`);
|
|
9
|
+
}
|
|
10
|
+
export function toToolResult(payload) {
|
|
11
|
+
return {
|
|
12
|
+
content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
|
|
13
|
+
structuredContent: payload
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export function toToolError(message, code, details = {}) {
|
|
17
|
+
const causeText = typeof details.cause === "string" ? details.cause : "";
|
|
18
|
+
let resolvedCode = code;
|
|
19
|
+
if (causeText.includes("validation:")) {
|
|
20
|
+
resolvedCode = "validation";
|
|
21
|
+
}
|
|
22
|
+
else if (causeText.includes("security:")) {
|
|
23
|
+
resolvedCode = "security";
|
|
24
|
+
}
|
|
25
|
+
else if (causeText.includes("conflict:")) {
|
|
26
|
+
resolvedCode = "conflict";
|
|
27
|
+
}
|
|
28
|
+
else if (code === "missing_required_context") {
|
|
29
|
+
resolvedCode = "missing_required_context";
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: "text", text: message }],
|
|
33
|
+
structuredContent: {
|
|
34
|
+
error: {
|
|
35
|
+
code: resolvedCode,
|
|
36
|
+
message,
|
|
37
|
+
details
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
isError: true
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function asObject(input) {
|
|
44
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
return input;
|
|
48
|
+
}
|
|
49
|
+
export function extractPromptMetadata(instruction, prefix) {
|
|
50
|
+
const warnings = [];
|
|
51
|
+
const idMatch = instruction.match(/\bid\s*[:=]\s*([a-zA-Z0-9._-]+)/i);
|
|
52
|
+
const titleMatch = instruction.match(/\btitle\s*[:=]\s*([^\n;]+)/i);
|
|
53
|
+
let id = idMatch?.[1]?.trim() ?? "";
|
|
54
|
+
let title = titleMatch?.[1]?.trim() ?? "";
|
|
55
|
+
if (!id) {
|
|
56
|
+
id = `${prefix}-${slugifyTitle(title)}`;
|
|
57
|
+
warnings.push("id was inferred from title");
|
|
58
|
+
}
|
|
59
|
+
if (!title) {
|
|
60
|
+
if (id) {
|
|
61
|
+
title = id;
|
|
62
|
+
warnings.push("title was inferred from id");
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const firstSentence = instruction.split(/[\n。.!?]/)[0]?.trim() ?? "";
|
|
66
|
+
title = firstSentence.length > 0 ? firstSentence.slice(0, 64) : `${prefix} generated ${DEFAULT_DATE}`;
|
|
67
|
+
warnings.push("title was inferred from instruction");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return { id, title, warnings };
|
|
71
|
+
}
|
|
72
|
+
export function resolvePathInsideWorkspace(workspaceRoot, targetPath) {
|
|
73
|
+
const root = resolve(workspaceRoot);
|
|
74
|
+
const resolvedPath = resolve(root, targetPath);
|
|
75
|
+
const rel = relative(root, resolvedPath);
|
|
76
|
+
if (rel.startsWith("..") || rel.includes(`..${sep}`)) {
|
|
77
|
+
throw new Error(`security: path outside workspace is not allowed (${targetPath})`);
|
|
78
|
+
}
|
|
79
|
+
return resolvedPath;
|
|
80
|
+
}
|
|
81
|
+
export function toRelativePath(workspaceRoot, absolutePath) {
|
|
82
|
+
return relative(resolve(workspaceRoot), absolutePath).split(sep).join("/");
|
|
83
|
+
}
|
|
84
|
+
export function assertNoOverwrite(path) {
|
|
85
|
+
if (existsSync(path)) {
|
|
86
|
+
throw new Error(`conflict: target file already exists (${path})`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export async function listYamlFiles(rootDir) {
|
|
90
|
+
const queue = [rootDir];
|
|
91
|
+
const files = [];
|
|
92
|
+
while (queue.length > 0) {
|
|
93
|
+
const current = queue.shift();
|
|
94
|
+
if (!current) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const entries = await readdir(current, { withFileTypes: true });
|
|
98
|
+
for (const entry of entries) {
|
|
99
|
+
const path = join(current, entry.name);
|
|
100
|
+
if (entry.isDirectory()) {
|
|
101
|
+
queue.push(path);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (entry.isFile() && entry.name.endsWith(".yaml")) {
|
|
105
|
+
files.push(path);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return files;
|
|
110
|
+
}
|
|
111
|
+
export function summarizeDiff(before, after) {
|
|
112
|
+
const beforeObj = asObject(before);
|
|
113
|
+
const afterObj = asObject(after);
|
|
114
|
+
const keys = new Set([...Object.keys(beforeObj), ...Object.keys(afterObj)]);
|
|
115
|
+
const changes = [];
|
|
116
|
+
for (const key of keys) {
|
|
117
|
+
const beforeVal = JSON.stringify(beforeObj[key]);
|
|
118
|
+
const afterVal = JSON.stringify(afterObj[key]);
|
|
119
|
+
if (beforeVal !== afterVal) {
|
|
120
|
+
changes.push(`${key} changed`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return changes.length > 0 ? changes : ["no structural changes"];
|
|
124
|
+
}
|
|
125
|
+
export function selectAppliedMode(mode, instruction) {
|
|
126
|
+
if (mode === "replace" || mode === "append") {
|
|
127
|
+
return mode;
|
|
128
|
+
}
|
|
129
|
+
const lowered = instruction.toLowerCase();
|
|
130
|
+
if (lowered.includes("replace") || lowered.includes("置換") || lowered.includes("入れ替")) {
|
|
131
|
+
return "replace";
|
|
132
|
+
}
|
|
133
|
+
return "append";
|
|
134
|
+
}
|
|
135
|
+
export function findAvailablePath(basePath) {
|
|
136
|
+
if (!existsSync(basePath)) {
|
|
137
|
+
return basePath;
|
|
138
|
+
}
|
|
139
|
+
const used = new Set();
|
|
140
|
+
const ext = basePath.endsWith(".yaml") ? ".yaml" : "";
|
|
141
|
+
const stem = ext ? basePath.slice(0, -ext.length) : basePath;
|
|
142
|
+
used.add(basename(stem));
|
|
143
|
+
const nextSlug = ensureUniqueSlug(basename(stem), used);
|
|
144
|
+
return join(dirname(basePath), `${nextSlug}${ext}`);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tlog/mcp",
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "tlog MCP server",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/tlog-dev/tlog.git",
|
|
9
|
+
"directory": "packages/mcp"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/tlog-dev/tlog/tree/main/packages/mcp",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/tlog-dev/tlog/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"tlog",
|
|
17
|
+
"mcp",
|
|
18
|
+
"model-context-protocol",
|
|
19
|
+
"test-management",
|
|
20
|
+
"yaml"
|
|
21
|
+
],
|
|
22
|
+
"type": "module",
|
|
23
|
+
"bin": {
|
|
24
|
+
"tlog-mcp": "dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc -p tsconfig.json",
|
|
31
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
32
|
+
"test": "vitest run",
|
|
33
|
+
"test:coverage": "vitest run --coverage --coverage.reporter=lcov --coverage.reporter=text"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
37
|
+
"@tlog/shared": "0.1.0"
|
|
38
|
+
}
|
|
39
|
+
}
|