@miraigent/free-ai-ops-mcp 0.1.26 → 0.1.28

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 CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.28] - 2026-07-01
4
+
5
+ ### Fixed
6
+
7
+ - Read the MCP initialize server version from `package.json` so npm releases,
8
+ README smoke checks, and desktop MCP clients cannot drift when the package
9
+ version changes.
10
+
11
+ ## [0.1.27] - 2026-06-30
12
+
13
+ ### Added
14
+
15
+ - Added smoke-test coverage for the exact public MCP tool names returned by
16
+ `tools/list` so README examples and desktop MCP clients stay aligned with the
17
+ packaged server.
18
+
3
19
  ## [0.1.26] - 2026-06-29
4
20
 
5
21
  ### Changed
@@ -1,6 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const serverInfo = { name: 'miraigent-free-ai-ops-mcp', version: '0.1.26' };
3
+ import { readFileSync } from 'node:fs';
4
+
5
+ const packageJson = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
6
+ const serverInfo = { name: 'miraigent-free-ai-ops-mcp', version: packageJson.version };
4
7
 
5
8
  const tools = [
6
9
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miraigent/free-ai-ops-mcp",
3
- "version": "0.1.26",
3
+ "version": "0.1.28",
4
4
  "description": "Free MCP server for developers adding human review gates, prompt risk checks, FAQ review, and CRM note safety to AI tools.",
5
5
  "homepage": "https://github.com/Miraigent/miraigent-free-ai-ops-mcp",
6
6
  "type": "module",
@@ -120,6 +120,10 @@ assert.equal(responses.length, requests.length);
120
120
  assert.equal(responses[0].result.serverInfo.name, 'miraigent-free-ai-ops-mcp');
121
121
  assert.equal(responses[0].result.serverInfo.version, packageJson.version);
122
122
  assert.equal(responses[1].result.tools.length, 4);
123
+ assert.deepEqual(
124
+ responses[1].result.tools.map((tool) => tool.name),
125
+ ['human_review_gate', 'faq_candidate_review', 'ai_safe_crm_note', 'prompt_risk_review']
126
+ );
123
127
  assert.match(responses[2].result.content[0].text, /review_required|stop/);
124
128
  assert.match(responses[2].result.content[0].text, /nextLogRow/);
125
129
  assert.match(responses[3].result.content[0].text, /public_faq_candidate/);
@@ -136,6 +140,10 @@ assert.equal(sampleResponses.length, 3);
136
140
  assert.equal(sampleResponses[0].result.serverInfo.name, 'miraigent-free-ai-ops-mcp');
137
141
  assert.equal(sampleResponses[0].result.serverInfo.version, packageJson.version);
138
142
  assert.equal(sampleResponses[1].result.tools.length, 4);
143
+ assert.deepEqual(
144
+ sampleResponses[1].result.tools.map((tool) => tool.name),
145
+ ['human_review_gate', 'faq_candidate_review', 'ai_safe_crm_note', 'prompt_risk_review']
146
+ );
139
147
  assert.match(sampleResponses[2].result.content[0].text, /gateStatus/);
140
148
  assert.match(sampleResponses[2].result.content[0].text, /reviewOwner/);
141
149
  assert.match(sampleResponses[2].result.content[0].text, /boundary/);
@@ -149,6 +157,10 @@ assert.equal(promptRiskResponses.length, 3);
149
157
  assert.equal(promptRiskResponses[0].result.serverInfo.name, 'miraigent-free-ai-ops-mcp');
150
158
  assert.equal(promptRiskResponses[0].result.serverInfo.version, packageJson.version);
151
159
  assert.equal(promptRiskResponses[1].result.tools.length, 4);
160
+ assert.deepEqual(
161
+ promptRiskResponses[1].result.tools.map((tool) => tool.name),
162
+ ['human_review_gate', 'faq_candidate_review', 'ai_safe_crm_note', 'prompt_risk_review']
163
+ );
152
164
  assert.match(promptRiskResponses[2].result.content[0].text, /prompt_risk_review/);
153
165
  assert.match(promptRiskResponses[2].result.content[0].text, /stop_before_ai_use/);
154
166
  assert.match(promptRiskResponses[2].result.content[0].text, /customer_facing/);