kiri-mcp-server 0.9.4 → 0.9.6

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 (80) hide show
  1. package/README.md +4 -2
  2. package/dist/package.json +1 -1
  3. package/dist/src/client/proxy.js +0 -0
  4. package/dist/src/daemon/daemon.js +0 -0
  5. package/dist/src/server/context.d.ts.map +1 -1
  6. package/dist/src/server/handlers.d.ts +7 -3
  7. package/dist/src/server/handlers.d.ts.map +1 -1
  8. package/dist/src/server/handlers.js +165 -20
  9. package/dist/src/server/handlers.js.map +1 -1
  10. package/dist/src/server/main.js +0 -0
  11. package/dist/src/server/rpc.d.ts +40 -4
  12. package/dist/src/server/rpc.d.ts.map +1 -1
  13. package/dist/src/server/rpc.js +132 -42
  14. package/dist/src/server/rpc.js.map +1 -1
  15. package/dist/src/server/runtime.d.ts.map +1 -1
  16. package/dist/src/server/runtime.js +2 -1
  17. package/dist/src/server/runtime.js.map +1 -1
  18. package/dist/src/shared/security/masker.d.ts +1 -0
  19. package/dist/src/shared/security/masker.d.ts.map +1 -1
  20. package/dist/src/shared/security/masker.js +59 -13
  21. package/dist/src/shared/security/masker.js.map +1 -1
  22. package/package.json +1 -1
  23. package/dist/client/cli.js +0 -68
  24. package/dist/client/cli.js.map +0 -1
  25. package/dist/client/index.js +0 -5
  26. package/dist/client/index.js.map +0 -1
  27. package/dist/eval/metrics.js +0 -47
  28. package/dist/eval/metrics.js.map +0 -1
  29. package/dist/indexer/cli.js +0 -362
  30. package/dist/indexer/cli.js.map +0 -1
  31. package/dist/indexer/codeintel.js +0 -182
  32. package/dist/indexer/codeintel.js.map +0 -1
  33. package/dist/indexer/git.js +0 -30
  34. package/dist/indexer/git.js.map +0 -1
  35. package/dist/indexer/language.js +0 -34
  36. package/dist/indexer/language.js.map +0 -1
  37. package/dist/indexer/pipeline/filters/denylist.js +0 -71
  38. package/dist/indexer/pipeline/filters/denylist.js.map +0 -1
  39. package/dist/indexer/schema.js +0 -101
  40. package/dist/indexer/schema.js.map +0 -1
  41. package/dist/server/bootstrap.js +0 -19
  42. package/dist/server/bootstrap.js.map +0 -1
  43. package/dist/server/context.js +0 -1
  44. package/dist/server/context.js.map +0 -1
  45. package/dist/server/fallbacks/degradeController.js +0 -69
  46. package/dist/server/fallbacks/degradeController.js.map +0 -1
  47. package/dist/server/handlers.js +0 -1268
  48. package/dist/server/handlers.js.map +0 -1
  49. package/dist/server/main.js +0 -151
  50. package/dist/server/main.js.map +0 -1
  51. package/dist/server/observability/metrics.js +0 -56
  52. package/dist/server/observability/metrics.js.map +0 -1
  53. package/dist/server/observability/tracing.js +0 -58
  54. package/dist/server/observability/tracing.js.map +0 -1
  55. package/dist/server/rpc.js +0 -477
  56. package/dist/server/rpc.js.map +0 -1
  57. package/dist/server/runtime.js +0 -47
  58. package/dist/server/runtime.js.map +0 -1
  59. package/dist/server/scoring.js +0 -116
  60. package/dist/server/scoring.js.map +0 -1
  61. package/dist/server/stdio.js +0 -76
  62. package/dist/server/stdio.js.map +0 -1
  63. package/dist/shared/duckdb.js +0 -119
  64. package/dist/shared/duckdb.js.map +0 -1
  65. package/dist/shared/embedding.js +0 -98
  66. package/dist/shared/embedding.js.map +0 -1
  67. package/dist/shared/index.js +0 -9
  68. package/dist/shared/index.js.map +0 -1
  69. package/dist/shared/security/config.js +0 -64
  70. package/dist/shared/security/config.js.map +0 -1
  71. package/dist/shared/security/masker.js +0 -56
  72. package/dist/shared/security/masker.js.map +0 -1
  73. package/dist/shared/tokenizer.js +0 -4
  74. package/dist/shared/tokenizer.js.map +0 -1
  75. package/dist/shared/utils/simpleYaml.js +0 -89
  76. package/dist/shared/utils/simpleYaml.js.map +0 -1
  77. package/dist/src/shared/utils/socket.d.ts +0 -57
  78. package/dist/src/shared/utils/socket.d.ts.map +0 -1
  79. package/dist/src/shared/utils/socket.js +0 -104
  80. package/dist/src/shared/utils/socket.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/server/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAqBhE,2BAA2B;AAC3B,IAAI,aAAa,GAAsD,IAAI,CAAC;AAE5E;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAgB,EAAE,WAAmB;IAC5D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,qBAAqB,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,OAAkC,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CACb,YAAY,WAAW,iBAAiB,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,yCAAyC,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAyB,CAAC;AACnC,CAAC;AAED,SAAS,sBAAsB;IAC7B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;QAE/E,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,eAAe,CAAC,aAAa,CAA8C,CAAC;QAE3F,2BAA2B;QAC3B,MAAM,gBAAgB,GAAyB;YAC7C,SAAS;YACT,QAAQ;YACR,UAAU;YACV,WAAW;YACX,SAAS;SACV,CAAC;QACF,MAAM,SAAS,GAAwD,EAAE,CAAC;QAC1E,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;QAED,aAAa,GAAG,SAAuD,CAAC;QACxE,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,KAAK,CAAC,CAAC;QAC5F,2BAA2B;QAC3B,aAAa,GAAG;YACd,OAAO,EAAE;gBACP,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;aACjB;YACD,MAAM,EAAE;gBACN,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,GAAG;aAChB;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,GAAG;aAChB;YACD,SAAS,EAAE;gBACT,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,GAAG;aAChB;YACD,OAAO,EAAE;gBACP,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,GAAG;aAChB;SACF,CAAC;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAwB,CAAC;IAC5D,OAAO,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAuC;IACxE,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,IAAI,WAAW,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;QAC3C,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
@@ -1,76 +0,0 @@
1
- import { performance } from "node:perf_hooks";
2
- import { stdin, stdout, stderr } from "node:process";
3
- import { createInterface } from "node:readline";
4
- import { createRpcHandler, errorResponse } from "./rpc.js";
5
- import { createServerRuntime } from "./runtime.js";
6
- export async function startStdioServer(options) {
7
- const runtime = await createServerRuntime(options);
8
- const handleRpc = createRpcHandler(runtime);
9
- const rl = createInterface({ input: stdin, crlfDelay: Infinity });
10
- const closeRuntime = async () => {
11
- await runtime.close();
12
- };
13
- // STDOUT エラーハンドリング: パイプクローズや書き込みエラーに対応
14
- stdout.on("error", (err) => {
15
- if (err.code === "EPIPE") {
16
- stderr.write("STDOUT pipe closed, shutting down.\n");
17
- rl.close();
18
- }
19
- else {
20
- stderr.write(`STDOUT error: ${String(err)}\n`);
21
- }
22
- });
23
- stderr.write("KIRI MCP stdio server ready\n");
24
- await new Promise((resolve) => {
25
- rl.on("line", (line) => {
26
- const trimmed = line.trim();
27
- if (!trimmed) {
28
- return;
29
- }
30
- void (async () => {
31
- let payload;
32
- try {
33
- payload = JSON.parse(line);
34
- }
35
- catch {
36
- const response = errorResponse(null, "Invalid JSON payload. Submit a JSON-RPC 2.0 compliant request.");
37
- stdout.write(JSON.stringify(response) + "\n");
38
- return;
39
- }
40
- const start = performance.now();
41
- try {
42
- const result = await handleRpc(payload);
43
- stdout.write(JSON.stringify(result.response) + "\n");
44
- }
45
- catch (error) {
46
- stderr.write(`Unhandled stdio RPC error: ${String(error)}\n`);
47
- const response = errorResponse(payload.id ?? null, "Unexpected server error. Inspect server logs and retry the request.");
48
- stdout.write(JSON.stringify(response) + "\n");
49
- }
50
- finally {
51
- const elapsed = performance.now() - start;
52
- runtime.metrics.recordRequest(elapsed);
53
- }
54
- })().catch((error) => {
55
- stderr.write(`Failed to process RPC line: ${String(error)}\n`);
56
- });
57
- });
58
- rl.once("close", async () => {
59
- await closeRuntime().catch((error) => {
60
- stderr.write(`Error during runtime shutdown: ${String(error)}\n`);
61
- });
62
- resolve();
63
- });
64
- stdin.once("end", () => {
65
- rl.close();
66
- });
67
- stdin.once("close", () => {
68
- rl.close();
69
- });
70
- stdin.once("error", (error) => {
71
- stderr.write(`STDIN error: ${error instanceof Error ? error.message : String(error)}\n`);
72
- rl.close();
73
- });
74
- });
75
- }
76
- //# sourceMappingURL=stdio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/server/stdio.ts"],"names":[],"mappings":"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"}
@@ -1,119 +0,0 @@
1
- import { mkdir } from "node:fs/promises";
2
- import { dirname } from "node:path";
3
- import duckdb from "duckdb";
4
- function hasDefinedParams(params) {
5
- return Array.isArray(params) ? params.length > 0 : Object.keys(params).length > 0;
6
- }
7
- function assertNoUndefined(sql, params) {
8
- if (Array.isArray(params)) {
9
- const index = params.findIndex((value) => value === undefined);
10
- if (index >= 0) {
11
- throw new Error(`Parameter ${index} is undefined for SQL: ${sql}`);
12
- }
13
- }
14
- else {
15
- for (const [key, value] of Object.entries(params)) {
16
- if (value === undefined) {
17
- throw new Error(`Parameter ${key} is undefined for SQL: ${sql}`);
18
- }
19
- }
20
- }
21
- }
22
- export class DuckDBClient {
23
- constructor(path) {
24
- this.database = new duckdb.Database(path);
25
- }
26
- static async connect(options) {
27
- if (options.ensureDirectory) {
28
- await mkdir(dirname(options.databasePath), { recursive: true });
29
- }
30
- return new DuckDBClient(options.databasePath);
31
- }
32
- async run(sql, params = []) {
33
- assertNoUndefined(sql, params);
34
- await new Promise((resolve, reject) => {
35
- const callback = (err) => {
36
- if (err) {
37
- reject(err);
38
- return;
39
- }
40
- resolve();
41
- };
42
- if (Array.isArray(params)) {
43
- if (params.length > 0) {
44
- // @ts-expect-error - duckdb.run expects rest parameters which cannot be strongly typed with unknown[]
45
- this.database.run(sql, ...params, callback);
46
- }
47
- else {
48
- this.database.run(sql, callback);
49
- }
50
- }
51
- else if (hasDefinedParams(params)) {
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- this.database.run(sql, params, callback);
54
- }
55
- else {
56
- this.database.run(sql, callback);
57
- }
58
- }).catch((error) => {
59
- const message = error instanceof Error ? error.message : String(error);
60
- throw new Error(`${message} | SQL: ${sql} | Params: ${JSON.stringify(params)}`);
61
- });
62
- }
63
- async all(sql, params = []) {
64
- assertNoUndefined(sql, params);
65
- return await new Promise((resolve, reject) => {
66
- const callback = (err, rows) => {
67
- if (err) {
68
- reject(err);
69
- return;
70
- }
71
- resolve(rows);
72
- };
73
- if (Array.isArray(params)) {
74
- if (params.length > 0) {
75
- // @ts-expect-error - duckdb.all expects rest parameters which cannot be strongly typed with unknown[]
76
- this.database.all(sql, ...params, callback);
77
- }
78
- else {
79
- this.database.all(sql, callback);
80
- }
81
- }
82
- else if (hasDefinedParams(params)) {
83
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
- this.database.all(sql, params, callback);
85
- }
86
- else {
87
- this.database.all(sql, callback);
88
- }
89
- }).catch((error) => {
90
- const message = error instanceof Error ? error.message : String(error);
91
- throw new Error(`${message} | SQL: ${sql} | Params: ${JSON.stringify(params)}`);
92
- });
93
- }
94
- async transaction(fn) {
95
- await this.run("BEGIN TRANSACTION");
96
- try {
97
- const result = await fn();
98
- await this.run("COMMIT");
99
- return result;
100
- }
101
- catch (error) {
102
- await this.run("ROLLBACK").catch(() => {
103
- // Ignore rollback errors so original error is surfaced.
104
- });
105
- throw error;
106
- }
107
- }
108
- async close() {
109
- await new Promise((resolve, reject) => {
110
- this.database.close((err) => {
111
- if (err) {
112
- reject(err);
113
- return;
114
- }
115
- resolve();
116
- });
117
- });
118
- }
119
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"duckdb.js","sourceRoot":"","sources":["../../src/shared/duckdb.ts"],"names":[],"mappings":"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"}
@@ -1,98 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- const DEFAULT_DIMS = 64;
3
- /**
4
- * 埋め込み生成用のトークン化
5
- * keyword extractionと同じ戦略を使用してハイフン区切り用語を保持
6
- */
7
- function tokenize(text) {
8
- const strategy = process.env.KIRI_TOKENIZATION_STRATEGY?.toLowerCase();
9
- // レガシーモード: ハイフンも分割(従来の動作)
10
- if (strategy === "legacy") {
11
- return text
12
- .toLowerCase()
13
- .split(/[^\p{L}\p{N}_]+/u)
14
- .map((token) => token.trim())
15
- .filter((token) => token.length > 0);
16
- }
17
- // phrase-aware または hybrid モード: ハイフンを保持
18
- return text
19
- .toLowerCase()
20
- .split(/[^\p{L}\p{N}_-]+/u)
21
- .map((token) => token.trim())
22
- .filter((token) => token.length > 0);
23
- }
24
- function hashToken(token) {
25
- const digest = createHash("sha256").update(token).digest();
26
- // Use the first four bytes to build a deterministic integer hash
27
- const byte0 = digest[0] ?? 0;
28
- const byte1 = digest[1] ?? 0;
29
- const byte2 = digest[2] ?? 0;
30
- const byte3 = digest[3] ?? 0;
31
- return ((byte0 << 24) | (byte1 << 16) | (byte2 << 8) | byte3) >>> 0;
32
- }
33
- function applyToken(vector, token) {
34
- const hash = hashToken(token);
35
- const index = hash % vector.length;
36
- const sign = (hash & 1) === 0 ? 1 : -1;
37
- const weight = Math.log(1 + token.length);
38
- const current = vector[index];
39
- if (current !== undefined) {
40
- vector[index] = current + sign * weight;
41
- }
42
- }
43
- function normalize(values) {
44
- const norm = Math.sqrt(values.reduce((sum, value) => sum + value * value, 0));
45
- if (!Number.isFinite(norm) || norm === 0) {
46
- return values.map(() => 0);
47
- }
48
- return values.map((value) => value / norm);
49
- }
50
- export function generateEmbedding(text, dims = DEFAULT_DIMS) {
51
- if (!text || text.trim().length === 0) {
52
- return null;
53
- }
54
- const tokens = tokenize(text);
55
- if (tokens.length === 0) {
56
- return null;
57
- }
58
- const vector = new Array(dims).fill(0);
59
- for (const token of tokens) {
60
- applyToken(vector, token);
61
- }
62
- return { dims, values: normalize(vector) };
63
- }
64
- /**
65
- * Calculate structural similarity between two embedding vectors using cosine similarity.
66
- * Note: This measures syntactic/structural similarity based on LSH (Locality-Sensitive Hashing),
67
- * not semantic similarity from language models like BERT or GPT embeddings.
68
- *
69
- * @param a - First embedding vector
70
- * @param b - Second embedding vector
71
- * @returns Similarity score between 0 and 1
72
- */
73
- export function structuralSimilarity(a, b) {
74
- const length = Math.min(a.length, b.length);
75
- if (length === 0) {
76
- return 0;
77
- }
78
- let dot = 0;
79
- let normA = 0;
80
- let normB = 0;
81
- for (let i = 0; i < length; i += 1) {
82
- const valueA = a[i];
83
- const valueB = b[i];
84
- if (valueA === undefined || valueB === undefined) {
85
- continue;
86
- }
87
- dot += valueA * valueB;
88
- normA += valueA * valueA;
89
- normB += valueB * valueB;
90
- }
91
- if (normA === 0 || normB === 0) {
92
- return 0;
93
- }
94
- return dot / Math.sqrt(normA * normB);
95
- }
96
- /** @deprecated Use structuralSimilarity() instead. Kept for backward compatibility. */
97
- export const cosineSimilarity = structuralSimilarity;
98
- export const EMBEDDING_DIMS = DEFAULT_DIMS;
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/shared/embedding.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export function assertCondition(condition, message) {
2
- if (!condition) {
3
- throw new Error(message);
4
- }
5
- }
6
- export function notImplemented(feature) {
7
- throw new Error(`Feature not implemented: ${feature}`);
8
- }
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,SAAkB,EAAE,OAAe;IACjE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;AACzD,CAAC"}
@@ -1,64 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { dirname, resolve } from "node:path";
4
- import { z } from "zod";
5
- import { parseSimpleYaml } from "../utils/simpleYaml.js";
6
- /**
7
- * セキュリティ設定のスキーマ定義(Zodによる型安全な検証)
8
- */
9
- const SecurityConfigSchema = z.object({
10
- allowed_paths: z.array(z.string()).min(1, "At least one allowed path required"),
11
- allow_network_egress: z.boolean(),
12
- allow_subprocess: z.boolean(),
13
- sensitive_tokens: z.array(z.string()),
14
- });
15
- export function loadSecurityConfig(configPath) {
16
- const path = resolve(configPath ?? "config/security.yml");
17
- const content = readFileSync(path, "utf8");
18
- const parsed = parseSimpleYaml(content);
19
- // Zodによるスキーマ検証(手動アサーションを置き換え)
20
- const result = SecurityConfigSchema.safeParse(parsed);
21
- if (!result.success) {
22
- const errors = result.error.issues.map((i) => i.message).join(", ");
23
- throw new Error(`Security configuration is invalid. Fix the following errors: ${errors}`);
24
- }
25
- const hash = createHash("sha256").update(content).digest("hex");
26
- return { config: result.data, hash };
27
- }
28
- export function readSecurityLock(lockPath) {
29
- try {
30
- return readFileSync(resolve(lockPath ?? "var/security.lock"), "utf8").trim();
31
- }
32
- catch {
33
- return null;
34
- }
35
- }
36
- export function evaluateSecurityStatus(configPath, lockPath) {
37
- const { config, hash } = loadSecurityConfig(configPath);
38
- const stored = readSecurityLock(lockPath);
39
- return {
40
- config,
41
- configPath: resolve(configPath ?? "config/security.yml"),
42
- lockPath: resolve(lockPath ?? "var/security.lock"),
43
- hash,
44
- lockHash: stored,
45
- matches: stored === null ? false : stored === hash,
46
- };
47
- }
48
- export function assertSecurityBaseline(configPath, lockPath) {
49
- const status = evaluateSecurityStatus(configPath, lockPath);
50
- if (!status.lockHash) {
51
- throw new Error(`Security lock is missing at ${status.lockPath}. Establish baseline by running 'pnpm exec tsx src/client/cli.ts security verify --write-lock'.`);
52
- }
53
- if (!status.matches) {
54
- throw new Error(`Security configuration at ${status.configPath} does not match lock hash. Review configuration changes before proceeding.`);
55
- }
56
- return status;
57
- }
58
- export function updateSecurityLock(hash, lockPath) {
59
- const path = resolve(lockPath ?? "var/security.lock");
60
- mkdirSync(dirname(path), { recursive: true });
61
- writeFileSync(path, `${hash}\n`, "utf8");
62
- return path;
63
- }
64
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/security/config.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- /**
2
- * トークンパターンの妥当性を検証してReDoS攻撃を防ぐ
3
- * @param token 検証対象のトークン文字列
4
- * @throws パターンが長すぎる、またはネストした量指定子を含む場合
5
- */
6
- function validateTokenPattern(token) {
7
- if (token.length > 100) {
8
- throw new Error("Token pattern exceeds maximum length. Use shorter patterns.");
9
- }
10
- // ネストした量指定子による壊滅的バックトラッキングを防ぐ
11
- if (/(\*|\+|\{)\s*(\*|\+|\{)/.test(token)) {
12
- throw new Error("Invalid pattern contains nested quantifiers. Simplify the pattern.");
13
- }
14
- }
15
- function maskString(input, tokens, replacement) {
16
- let applied = 0;
17
- let output = input;
18
- for (const token of tokens) {
19
- if (!token)
20
- continue;
21
- validateTokenPattern(token); // ReDoS対策の検証を追加
22
- const escaped = token.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
23
- const pattern = new RegExp(escaped, "g");
24
- const matches = output.match(pattern);
25
- if (matches && matches.length > 0) {
26
- applied += matches.length;
27
- output = output.replace(pattern, replacement);
28
- }
29
- }
30
- return { masked: output, applied };
31
- }
32
- export function maskValue(value, options) {
33
- if (typeof value === "string") {
34
- return maskString(value, options.tokens, options.replacement ?? "***");
35
- }
36
- if (Array.isArray(value)) {
37
- let applied = 0;
38
- const maskedArray = value.map((item) => {
39
- const result = maskValue(item, options);
40
- applied += result.applied;
41
- return result.masked;
42
- });
43
- return { masked: maskedArray, applied };
44
- }
45
- if (value && typeof value === "object") {
46
- let applied = 0;
47
- const entries = Object.entries(value).map(([key, item]) => {
48
- const result = maskValue(item, options);
49
- applied += result.applied;
50
- return [key, result.masked];
51
- });
52
- return { masked: Object.fromEntries(entries), applied };
53
- }
54
- return { masked: value, applied: 0 };
55
- }
56
- //# sourceMappingURL=masker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"masker.js","sourceRoot":"","sources":["../../../src/shared/security/masker.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,8BAA8B;IAC9B,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,MAAgB,EAAE,WAAmB;IACtE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,OAAuB;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;YAC1B,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YACnF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;YAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACvC,CAAC"}
@@ -1,4 +0,0 @@
1
- export function encode(text) {
2
- const codePoints = Array.from(text);
3
- return codePoints.map((_, index) => index);
4
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/shared/tokenizer.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,89 +0,0 @@
1
- function parseScalar(value) {
2
- let trimmed = value.trim();
3
- const commentIndex = trimmed.indexOf(" #");
4
- if (commentIndex >= 0) {
5
- trimmed = trimmed.slice(0, commentIndex).trim();
6
- }
7
- if (trimmed === "true")
8
- return true;
9
- if (trimmed === "false")
10
- return false;
11
- if (trimmed === "null")
12
- return null;
13
- if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
14
- return Number(trimmed);
15
- }
16
- if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
17
- return trimmed.slice(1, -1);
18
- }
19
- if (trimmed.startsWith("'") && trimmed.endsWith("'")) {
20
- return trimmed.slice(1, -1);
21
- }
22
- return trimmed;
23
- }
24
- function ensureObject(value) {
25
- if (!value || typeof value !== "object" || Array.isArray(value)) {
26
- throw new Error("Expected mapping");
27
- }
28
- return value;
29
- }
30
- export function parseSimpleYaml(content) {
31
- const root = {};
32
- const lines = content.split(/\r?\n/);
33
- const stack = [{ indent: -1, value: root }];
34
- for (let index = 0; index < lines.length; index++) {
35
- const rawLine = lines[index];
36
- if (!rawLine || /^\s*$/.test(rawLine) || /^\s*#/.test(rawLine)) {
37
- continue;
38
- }
39
- const indentMatch = rawLine.match(/^\s*/);
40
- const indent = indentMatch?.[0]?.length ?? 0;
41
- const line = rawLine.trim();
42
- while (stack.length > 0) {
43
- const last = stack[stack.length - 1];
44
- if (!last || indent <= last.indent) {
45
- stack.pop();
46
- }
47
- else {
48
- break;
49
- }
50
- }
51
- const parent = stack[stack.length - 1];
52
- if (!parent) {
53
- throw new Error("Invalid YAML structure: no parent context");
54
- }
55
- const container = parent.value;
56
- if (line.startsWith("- ")) {
57
- if (!Array.isArray(container)) {
58
- throw new Error("List item without array context");
59
- }
60
- container.push(parseScalar(line.slice(2)));
61
- continue;
62
- }
63
- const separatorIndex = line.indexOf(":");
64
- if (separatorIndex === -1) {
65
- throw new Error(`Invalid YAML line: ${line}`);
66
- }
67
- const key = line.slice(0, separatorIndex).trim();
68
- const remainder = line.slice(separatorIndex + 1);
69
- const target = ensureObject(container);
70
- if (remainder.trim().length === 0) {
71
- const nextLine = lines[index + 1];
72
- const isList = nextLine ? nextLine.trim().startsWith("- ") : false;
73
- if (isList) {
74
- const arr = [];
75
- target[key] = arr;
76
- stack.push({ indent, value: arr });
77
- }
78
- else {
79
- const obj = {};
80
- target[key] = obj;
81
- stack.push({ indent, value: obj });
82
- }
83
- }
84
- else {
85
- target[key] = parseScalar(remainder);
86
- }
87
- }
88
- return root;
89
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"simpleYaml.js","sourceRoot":"","sources":["../../../src/shared/utils/simpleYaml.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Socket Path Utility for Cross-Platform IPC
3
- *
4
- * Generates platform-appropriate IPC paths:
5
- * - Unix/Linux/macOS: Unix domain socket files (e.g., /path/to/database.duckdb.sock)
6
- * - Windows: Named pipes (e.g., \\.\pipe\kiri-<hash>)
7
- */
8
- /**
9
- * プラットフォームに応じた適切なソケットパスを生成
10
- *
11
- * Windows環境では名前付きパイプ形式(\\.\pipe\kiri-<hash>)を使用し、
12
- * Unix系環境ではファイルシステムパス(<databasePath>.sock)を使用する。
13
- *
14
- * **セキュリティ注意事項**:
15
- * - Unix: ソケットファイルは0600パーミッション(所有者のみアクセス可能)で保護
16
- * - Windows: 名前付きパイプはデフォルトACLを使用(同一システムの他ユーザーが
17
- * アクセス可能な場合がある)。ハッシュベースのパイプ名で曖昧性を提供するが、
18
- * マルチユーザー環境では信頼できる環境でのみ使用することを推奨。
19
- * - Windows環境では KIRI_PIPE_PREFIX 環境変数でパイプ名プレフィックスを
20
- * カスタマイズ可能(追加のセキュリティ層として利用可能)
21
- *
22
- * @param databasePath - データベースファイルの絶対パス
23
- * @returns プラットフォーム固有のソケットパス
24
- *
25
- * @example
26
- * // Unix/macOS/Linux
27
- * getSocketPath("/path/to/database.duckdb")
28
- * // => "/path/to/database.duckdb.sock"
29
- *
30
- * // Windows (デフォルト)
31
- * getSocketPath("C:\\Users\\user\\database.duckdb")
32
- * // => "\\\\.\\pipe\\kiri-a1b2c3d4..."
33
- *
34
- * // Windows (カスタムプレフィックス)
35
- * process.env.KIRI_PIPE_PREFIX = "myapp"
36
- * getSocketPath("C:\\Users\\user\\database.duckdb")
37
- * // => "\\\\.\\pipe\\myapp-a1b2c3d4..."
38
- */
39
- export declare function getSocketPath(databasePath: string): string;
40
- /**
41
- * ソケットパスからデータベースパスを推測(Unix系のみ)
42
- *
43
- * Windows環境ではハッシュベースのパイプ名を使用するため、
44
- * この関数は情報損失があり、デバッグ用途にのみ使用すべき。
45
- *
46
- * @param socketPath - ソケットパス
47
- * @returns データベースパス(Unix系の場合)またはnull(Windows/不明な形式)
48
- */
49
- export declare function getDatabasePathFromSocket(socketPath: string): string | null;
50
- /**
51
- * デバッグ用のソケットパス情報を生成
52
- *
53
- * @param databasePath - データベースファイルの絶対パス
54
- * @returns デバッグ情報文字列
55
- */
56
- export declare function getSocketPathDebugInfo(databasePath: string): string;
57
- //# sourceMappingURL=socket.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/socket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAc1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY3E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAmBnE"}