replen 1.0.32 → 1.0.33
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/dist/mcp-setup.js +11 -3
- package/extras/skills/replen/SKILL.md +22 -0
- package/package.json +1 -1
package/dist/mcp-setup.js
CHANGED
|
@@ -26,6 +26,14 @@ import { fileURLToPath } from "node:url";
|
|
|
26
26
|
import { parse as parseToml, stringify as stringifyToml } from "smol-toml";
|
|
27
27
|
import { installSkills } from "./skill-install.js";
|
|
28
28
|
const SERVER_NAME = "replen";
|
|
29
|
+
// Launch the MCP via a SEMVER RANGE, not a tag-less spec. Bare `npx @replen/mcp`
|
|
30
|
+
// resolves once and reuses the cached build forever, so users silently run stale
|
|
31
|
+
// builds and miss new tools (the paths/mode regression came from exactly this).
|
|
32
|
+
// `@^1` makes npx re-resolve the newest 1.x on every session spawn — auto-updates
|
|
33
|
+
// minors/patches, never jumps a breaking major — so a fresh agent session = latest
|
|
34
|
+
// features with no manual `@latest` step to remember. Each setup run REWRITES this
|
|
35
|
+
// entry, so returning users are migrated off the old tag-less spec automatically.
|
|
36
|
+
const MCP_PKG = "@replen/mcp@^1";
|
|
29
37
|
const CLAUDE_CONFIG = join(homedir(), ".claude.json");
|
|
30
38
|
const CLAUDE_SETTINGS = join(homedir(), ".claude", "settings.json");
|
|
31
39
|
const CODEX_CONFIG = join(homedir(), ".codex", "config.toml");
|
|
@@ -99,7 +107,7 @@ function setupClaude(token, base) {
|
|
|
99
107
|
mcpServers[SERVER_NAME] = {
|
|
100
108
|
type: "stdio",
|
|
101
109
|
command: "npx",
|
|
102
|
-
args: ["-y",
|
|
110
|
+
args: ["-y", MCP_PKG],
|
|
103
111
|
env: { DIGEST_BASE_URL: base, DIGEST_TOKEN: token },
|
|
104
112
|
};
|
|
105
113
|
const hooks = installSessionStartHook(config.hooks ?? {});
|
|
@@ -146,7 +154,7 @@ function setupGemini(token, base) {
|
|
|
146
154
|
// docs/tools/mcp-server.md): command, args, env. No `type` field.
|
|
147
155
|
mcpServers[SERVER_NAME] = {
|
|
148
156
|
command: "npx",
|
|
149
|
-
args: ["-y",
|
|
157
|
+
args: ["-y", MCP_PKG],
|
|
150
158
|
env: { DIGEST_BASE_URL: base, DIGEST_TOKEN: token },
|
|
151
159
|
};
|
|
152
160
|
writeJsonAtomic(path, { ...config, mcpServers });
|
|
@@ -168,7 +176,7 @@ function setupCodex(token, base) {
|
|
|
168
176
|
// handles automatically for small objects.
|
|
169
177
|
mcpServers[SERVER_NAME] = {
|
|
170
178
|
command: "npx",
|
|
171
|
-
args: ["-y",
|
|
179
|
+
args: ["-y", MCP_PKG],
|
|
172
180
|
env: { DIGEST_BASE_URL: base, DIGEST_TOKEN: token },
|
|
173
181
|
};
|
|
174
182
|
writeTomlAtomic(path, { ...config, mcp_servers: mcpServers });
|
|
@@ -239,6 +239,28 @@ A triage that isn't recorded never happened.
|
|
|
239
239
|
Only the user-judgment actions (star / hide / handoff / queue work) wait
|
|
240
240
|
for the user. Verdicts never do.
|
|
241
241
|
|
|
242
|
+
#### 3e. Write back what you LEARNED from the code — not just the verdict
|
|
243
|
+
|
|
244
|
+
Triage is the one moment you actually read the source, so feed what you
|
|
245
|
+
learned back into Replen's model of the project (it's non-destructive and
|
|
246
|
+
makes every future match sharper). Two cheap write-backs, both optional,
|
|
247
|
+
both additive:
|
|
248
|
+
|
|
249
|
+
- **Capability paths.** When you confirm which file(s) implement the
|
|
250
|
+
capability a candidate matched — especially if the candidate's
|
|
251
|
+
`matchedFacet` has no paths yet — call `replen_set_capabilities` with
|
|
252
|
+
**`mode:"merge"`** and just that one capability:
|
|
253
|
+
`{ tag: "<matchedFacet>", paths: ["src/…", "lib/…"] }`. Merge mode adds
|
|
254
|
+
the paths without touching the project's other capabilities. This is what
|
|
255
|
+
makes "port THIS exact file" possible in later sessions and populates the
|
|
256
|
+
Atlas dossier + cross-project leaps. Paths only, never code.
|
|
257
|
+
- **Dep corrections.** When the code shows a listed dependency is unused or
|
|
258
|
+
superseded (e.g. a stale `ethers` in a repo that's actually on `viem`),
|
|
259
|
+
pass `depsSuperseded: ["ethers"]` on the `replen_record_triage` call —
|
|
260
|
+
it's marked migrate-off (reversible) so its release/pricing/upgrade noise
|
|
261
|
+
stops. Pass `depsConfirmed: [...]` for deps you verified are genuinely
|
|
262
|
+
used that Replen didn't already know. Names only.
|
|
263
|
+
|
|
242
264
|
No marketing voice. No hype. The user is a working engineer; talk to
|
|
243
265
|
them like a peer. Concrete > clever.
|
|
244
266
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "replen",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.33",
|
|
4
4
|
"description": "Make your AI coding tools smarter. One command, no API keys, free. Replen watches what your projects actually do and surfaces a few things worth bringing in each month. Use one as is, port a piece of another, cherry pick an idea, or build it clean room. The match happens inside your AI tool's session. A few actionable matches a month, by design.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|