@miadi/inquiry-weave 0.6.3 → 0.6.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.
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * inquiry-weave-mcp — anonymous feeding on the inquiry threads, joined to
4
+ * the weave.
5
+ *
6
+ * Feeds on the token-free HTTP surface (`/api/inquiry`, Etuaptmumk-RSM#259):
7
+ * no GitHub token exists in this process, by construction — the anonymity is
8
+ * inherited from the API, not promised by the tool. The third tool answers
9
+ * with the relationship this package exists for: an inquiry thread joined to
10
+ * the episode/artefact identities woven to its issue.
11
+ *
12
+ * Env:
13
+ * MIADI_INQUIRY_API_BASE required — e.g. http://localhost:3000 or the
14
+ * deployed app origin. No default is invented.
15
+ * MIADI_CHRONICLE_ROOT optional — enables inquiry_weave_kin.
16
+ *
17
+ * Zero new dependencies: raw newline-delimited JSON-RPC over stdio.
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG"}
@@ -0,0 +1,165 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * inquiry-weave-mcp — anonymous feeding on the inquiry threads, joined to
4
+ * the weave.
5
+ *
6
+ * Feeds on the token-free HTTP surface (`/api/inquiry`, Etuaptmumk-RSM#259):
7
+ * no GitHub token exists in this process, by construction — the anonymity is
8
+ * inherited from the API, not promised by the tool. The third tool answers
9
+ * with the relationship this package exists for: an inquiry thread joined to
10
+ * the episode/artefact identities woven to its issue.
11
+ *
12
+ * Env:
13
+ * MIADI_INQUIRY_API_BASE required — e.g. http://localhost:3000 or the
14
+ * deployed app origin. No default is invented.
15
+ * MIADI_CHRONICLE_ROOT optional — enables inquiry_weave_kin.
16
+ *
17
+ * Zero new dependencies: raw newline-delimited JSON-RPC over stdio.
18
+ */
19
+ import { readdirSync, readFileSync, existsSync } from "node:fs";
20
+ import { join } from "node:path";
21
+ import { createInterface } from "node:readline";
22
+ const API_BASE = (process.env.MIADI_INQUIRY_API_BASE || "").replace(/\/$/, "");
23
+ const CHRONICLE_ROOT = process.env.MIADI_CHRONICLE_ROOT || "";
24
+ async function apiGet(path) {
25
+ if (!API_BASE) {
26
+ throw new Error("MIADI_INQUIRY_API_BASE is not set — point it at the app that serves /api/inquiry (local or deployed). No default is invented.");
27
+ }
28
+ const res = await fetch(`${API_BASE}${path}`, { headers: { Accept: "application/json" } });
29
+ if (!res.ok)
30
+ throw new Error(`GET ${path} answered ${res.status}`);
31
+ return res.json();
32
+ }
33
+ /** The weave join: which episodes/artefacts are woven to this issue number.
34
+ * Reads inquiry/<artefact>/.weave.yaml files under the chronicle root —
35
+ * string-scan for the issue ref, honest about being a scan. */
36
+ function weaveKin(issueId) {
37
+ if (!CHRONICLE_ROOT || !existsSync(CHRONICLE_ROOT)) {
38
+ return {
39
+ available: false,
40
+ reason: "MIADI_CHRONICLE_ROOT not set or absent — the kin join needs the chronicle on disk",
41
+ };
42
+ }
43
+ const kin = [];
44
+ const needle = `#${issueId}`;
45
+ for (const ep of readdirSync(CHRONICLE_ROOT)) {
46
+ const inq = join(CHRONICLE_ROOT, ep, "inquiry");
47
+ if (!existsSync(inq))
48
+ continue;
49
+ for (const art of readdirSync(inq)) {
50
+ const wy = join(inq, art, ".weave.yaml");
51
+ if (!existsSync(wy))
52
+ continue;
53
+ try {
54
+ const text = readFileSync(wy, "utf8");
55
+ if (text.includes(needle)) {
56
+ kin.push({ episode: ep, artefact: art, weave: wy });
57
+ }
58
+ }
59
+ catch {
60
+ /* unreadable weave files are skipped, not invented */
61
+ }
62
+ }
63
+ }
64
+ return { available: true, issueId, kin, method: "string-scan of .weave.yaml under MIADI_CHRONICLE_ROOT" };
65
+ }
66
+ const TOOLS = [
67
+ {
68
+ name: "inquiry_list_threads",
69
+ description: "List inquiry threads (GitHub issues rendered by the token-free /api/inquiry surface). Anonymous by construction.",
70
+ inputSchema: {
71
+ type: "object",
72
+ properties: { state: { type: "string", enum: ["open", "closed", "all"] } },
73
+ },
74
+ },
75
+ {
76
+ name: "inquiry_get_thread",
77
+ description: "Get one inquiry thread with its full comment list, by issue number.",
78
+ inputSchema: {
79
+ type: "object",
80
+ properties: { issueId: { type: "number" } },
81
+ required: ["issueId"],
82
+ },
83
+ },
84
+ {
85
+ name: "inquiry_weave_kin",
86
+ description: "The relationship this package exists for: the episodes and artefacts woven to an issue — the thread's kin in the chronicle.",
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: { issueId: { type: "number" } },
90
+ required: ["issueId"],
91
+ },
92
+ },
93
+ ];
94
+ async function callTool(name, args) {
95
+ switch (name) {
96
+ case "inquiry_list_threads": {
97
+ const state = typeof args.state === "string" ? `?state=${args.state}` : "";
98
+ return apiGet(`/api/inquiry${state}`);
99
+ }
100
+ case "inquiry_get_thread":
101
+ return apiGet(`/api/inquiry/${Number(args.issueId)}`);
102
+ case "inquiry_weave_kin":
103
+ return weaveKin(Number(args.issueId));
104
+ default:
105
+ throw new Error(`unknown tool "${name}"`);
106
+ }
107
+ }
108
+ function reply(id, result) {
109
+ process.stdout.write(JSON.stringify({ jsonrpc: "2.0", id, result }) + "\n");
110
+ }
111
+ function replyError(id, message) {
112
+ process.stdout.write(JSON.stringify({ jsonrpc: "2.0", id, error: { code: -32000, message } }) + "\n");
113
+ }
114
+ const rl = createInterface({ input: process.stdin });
115
+ rl.on("line", (line) => {
116
+ void (async () => {
117
+ if (!line.trim())
118
+ return;
119
+ let msg;
120
+ try {
121
+ msg = JSON.parse(line);
122
+ }
123
+ catch {
124
+ return;
125
+ }
126
+ const { id, method, params } = msg;
127
+ if (id === undefined && method?.startsWith("notifications/"))
128
+ return;
129
+ switch (method) {
130
+ case "initialize":
131
+ reply(id, {
132
+ protocolVersion: params?.protocolVersion || "2024-11-05",
133
+ capabilities: { tools: {} },
134
+ serverInfo: { name: "inquiry-weave-mcp", version: "0.6.6" },
135
+ });
136
+ break;
137
+ case "tools/list":
138
+ reply(id, { tools: TOOLS });
139
+ break;
140
+ case "tools/call": {
141
+ const p = (params || {});
142
+ try {
143
+ const out = await callTool(p.name || "", p.arguments || {});
144
+ reply(id, { content: [{ type: "text", text: JSON.stringify(out, null, 2) }] });
145
+ }
146
+ catch (err) {
147
+ reply(id, {
148
+ content: [
149
+ { type: "text", text: `error: ${err instanceof Error ? err.message : String(err)}` },
150
+ ],
151
+ isError: true,
152
+ });
153
+ }
154
+ break;
155
+ }
156
+ case "ping":
157
+ reply(id, {});
158
+ break;
159
+ default:
160
+ if (id !== undefined)
161
+ replyError(id, `method not supported: ${method}`);
162
+ }
163
+ })();
164
+ });
165
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miadi/inquiry-weave",
3
- "version": "0.6.3",
3
+ "version": "0.6.6",
4
4
  "description": "Relate and sync IAIP inquiry artefacts, their GitHub issues, and miadi-chronicle episodes. Creates vessels and relations only \u2014 never inquiry content.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -11,12 +11,14 @@
11
11
  "exports": {
12
12
  ".": {
13
13
  "types": "./dist/index.d.ts",
14
- "import": "./dist/index.js"
14
+ "import": "./dist/index.js",
15
+ "default": "./dist/index.js"
15
16
  },
16
17
  "./package.json": "./package.json"
17
18
  },
18
19
  "bin": {
19
- "inquiry-weave": "dist/bin.js"
20
+ "inquiry-weave": "dist/bin.js",
21
+ "inquiry-weave-mcp": "dist/mcp-server.js"
20
22
  },
21
23
  "files": [
22
24
  "dist",
@@ -29,7 +31,7 @@
29
31
  "prepublishOnly": "npm run build"
30
32
  },
31
33
  "dependencies": {
32
- "@miadi/episodic-memory-schema": "^0.5.1 || ^0.6.0",
34
+ "@miadi/episodic-memory-schema": "^0.5.1 || ^0.6.0 || ^0.7.0",
33
35
  "yaml": "^2.5.0"
34
36
  },
35
37
  "devDependencies": {