@senoldogann/context-manager 0.1.24 → 0.1.26

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 (3) hide show
  1. package/README.md +43 -0
  2. package/bin/ccm.js +11 -2
  3. package/package.json +6 -1
package/README.md CHANGED
@@ -31,6 +31,20 @@ npx @senoldogann/context-manager index --path .
31
31
 
32
32
  **That's it!** Restart your AI editor and start asking questions about your code.
33
33
 
34
+ ### First-Run Verification
35
+
36
+ Use this quick smoke test after install:
37
+
38
+ ```bash
39
+ # Verify the CLI responds
40
+ npx @senoldogann/context-manager query --text "src/main.rs:1"
41
+
42
+ # Verify the MCP binary starts
43
+ npx @senoldogann/context-manager mcp
44
+ ```
45
+
46
+ If the wrapper is healthy, the query command should return code context and the MCP process should stay open waiting for stdio messages.
47
+
34
48
  ---
35
49
 
36
50
  ## 📖 What is CCM?
@@ -55,6 +69,15 @@ The npm wrapper downloads pre-built binaries and passes commands through:
55
69
  | `npx @senoldogann/context-manager mcp` | Run MCP server directly |
56
70
  | `npx @senoldogann/context-manager eval --tasks <file>` | Run evaluation tasks |
57
71
 
72
+ ### Supported Hosts
73
+
74
+ | Host | Status |
75
+ |------|--------|
76
+ | Codex | Supported |
77
+ | Cursor | Supported |
78
+ | Claude Desktop | Supported |
79
+ | Antigravity | Supported |
80
+
58
81
  ### Options
59
82
 
60
83
  ```bash
@@ -140,6 +163,15 @@ This package handles:
140
163
  2. Binary download from GitHub Releases
141
164
  3. Global persistence in `~/.ccm`
142
165
 
166
+ ### ✅ Release Reliability
167
+
168
+ - GitHub Releases publish platform binaries plus `checksums.txt`
169
+ - The npm wrapper verifies checksums before using downloaded binaries
170
+ - Redirects are restricted to approved GitHub release hosts
171
+ - Release builds run for Linux, macOS, and Windows before assets are attached
172
+ - npm publishing uses GitHub Actions trusted publishing with OIDC
173
+ - The same smoke path is documented here and in the main repository README
174
+
143
175
  ### ✅ Binary Integrity
144
176
 
145
177
  Downloads are verified against `checksums.txt` from the GitHub Release.
@@ -152,10 +184,21 @@ Enable `CCM_EMBED_DATA_FILES=1` to include them in semantic search.
152
184
 
153
185
  **Source:** https://github.com/senoldogann/LLM-Context-Manager
154
186
 
187
+ **Docs:** [English README](https://github.com/senoldogann/LLM-Context-Manager/blob/main/README.md) | [Turkish README](https://github.com/senoldogann/LLM-Context-Manager/blob/main/README.tr.md)
188
+
155
189
  ---
156
190
 
157
191
  ## 📝 Changelog
158
192
 
193
+ ### v0.1.26
194
+ - ✅ Trusted publishing workflow updated for modern Node and npm requirements
195
+ - ✅ Release jobs now skip npm publish when the same version is already live
196
+ - ✅ Safer wrapper binary downloads during concurrent first-run installs
197
+
198
+ ### v0.1.25
199
+ - ✅ npm publish now uses GitHub Actions trusted publishing (OIDC)
200
+ - ✅ Clearer first-run verification and release reliability docs
201
+
159
202
  ### v0.1.24
160
203
  - ✅ Native `protoc` installation in GitHub Actions release builds
161
204
  - ✅ Updated release workflow actions for newer runner compatibility
package/bin/ccm.js CHANGED
@@ -7,7 +7,7 @@ const os = require('os');
7
7
  const https = require('https');
8
8
  const crypto = require('crypto');
9
9
 
10
- const VERSION = "0.1.24";
10
+ const VERSION = "0.1.26";
11
11
  const REPO = 'senoldogann/LLM-Context-Manager';
12
12
  const BIN_DIR = path.join(os.homedir(), '.ccm', 'bin');
13
13
  const CHECKSUMS_FILE = 'checksums.txt';
@@ -159,6 +159,10 @@ function installCodexConfig() {
159
159
  return true;
160
160
  }
161
161
 
162
+ function createUniqueTmpPath(binPath) {
163
+ return `${binPath}.${process.pid}.${Date.now()}.tmp`;
164
+ }
165
+
162
166
  async function getBinaryFor(commandName) {
163
167
  const platform = os.platform();
164
168
  const arch = os.arch();
@@ -193,12 +197,16 @@ async function getBinaryFor(commandName) {
193
197
  }
194
198
 
195
199
  const url = `https://github.com/${REPO}/releases/download/v${VERSION}/${commandName}-${target}`;
196
- const tmpPath = `${binPath}.tmp`;
200
+ const tmpPath = createUniqueTmpPath(binPath);
197
201
 
198
202
  try {
199
203
  await downloadFile(url, tmpPath);
200
204
  await verifyChecksum(tmpPath, [remoteFilename, binFilename]);
201
205
  fs.chmodSync(tmpPath, '755');
206
+ if (fs.existsSync(binPath)) {
207
+ fs.unlinkSync(tmpPath);
208
+ return binPath;
209
+ }
202
210
  fs.renameSync(tmpPath, binPath);
203
211
  } catch (err) {
204
212
  if (fs.existsSync(tmpPath)) fs.unlinkSync(tmpPath);
@@ -228,6 +236,7 @@ async function getBinary() {
228
236
 
229
237
  function downloadFile(url, dest) {
230
238
  return new Promise((resolve, reject) => {
239
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
231
240
  https.get(url, (response) => {
232
241
  if (response.statusCode === 302 || response.statusCode === 301) {
233
242
  try {
package/package.json CHANGED
@@ -1,7 +1,12 @@
1
1
  {
2
2
  "name": "@senoldogann/context-manager",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "description": "LLM Context Manager MCP Server & CLI wrapper using npx",
5
+ "repository": "https://github.com/senoldogann/LLM-Context-Manager",
6
+ "homepage": "https://github.com/senoldogann/LLM-Context-Manager",
7
+ "bugs": {
8
+ "url": "https://github.com/senoldogann/LLM-Context-Manager/issues"
9
+ },
5
10
  "main": "bin/ccm.js",
6
11
  "bin": {
7
12
  "ccm-cli": "bin/ccm.js",