replen 1.5.0 → 1.5.1
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/immerse.js +30 -6
- package/package.json +1 -1
package/dist/immerse.js
CHANGED
|
@@ -59,6 +59,9 @@ async function send(cfg) {
|
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
let grounded = 0, totalFiles = 0, totalChunks = 0, unchanged = 0;
|
|
62
|
+
// Signals for the "nothing happened, here's why" nudge below.
|
|
63
|
+
let reachable = 0; // repos Replen tracks (manifest returned, not a 404)
|
|
64
|
+
let withPaths = 0; // tracked repos that have grounded paths to send
|
|
62
65
|
for (const repo of repos) {
|
|
63
66
|
let manifest;
|
|
64
67
|
try {
|
|
@@ -67,8 +70,10 @@ async function send(cfg) {
|
|
|
67
70
|
catch {
|
|
68
71
|
continue; // not tracked on this account (404) / transient — skip quietly
|
|
69
72
|
}
|
|
73
|
+
reachable++;
|
|
70
74
|
if (manifest.tier === "off" || !Array.isArray(manifest.paths) || manifest.paths.length === 0)
|
|
71
75
|
continue;
|
|
76
|
+
withPaths++;
|
|
72
77
|
// Read exactly the grounded files the server asked for (size-capped).
|
|
73
78
|
const files = [];
|
|
74
79
|
for (const rel of manifest.paths) {
|
|
@@ -104,10 +109,29 @@ async function send(cfg) {
|
|
|
104
109
|
totalChunks += res.chunksEmbedded ?? 0;
|
|
105
110
|
console.log(` ✓ ${repo.githubFullName}: ${res.chunksEmbedded ?? 0} chunk(s) from ${res.filesEmbedded ?? 0} file(s)`);
|
|
106
111
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
if (grounded > 0 || unchanged > 0) {
|
|
113
|
+
const parts = [];
|
|
114
|
+
if (grounded > 0)
|
|
115
|
+
parts.push(`grounded ${grounded} repo(s) — ${totalChunks} chunk(s) from ${totalFiles} file(s)`);
|
|
116
|
+
if (unchanged > 0)
|
|
117
|
+
parts.push(`${unchanged} unchanged`);
|
|
118
|
+
console.log(`\nImmersion: ${parts.join(", ")}.`);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// Nothing was grounded — say WHY rather than a silent no-op, and point the
|
|
122
|
+
// user at the step they're missing.
|
|
123
|
+
if (reachable === 0) {
|
|
124
|
+
// Local repos exist, but none are registered with Replen.
|
|
125
|
+
console.log("\nImmersion: none of your local repos are registered with Replen yet — nothing to ground.");
|
|
126
|
+
console.log("Register them with `npx replen` (or `npx replen sync-projects`), then run `/replen-onboard` in Claude Code to ground them. After that, `npx replen immerse` will have something to send.");
|
|
127
|
+
}
|
|
128
|
+
else if (withPaths === 0) {
|
|
129
|
+
// Tracked, but not onboarded — no grounded capabilities (no file paths) yet.
|
|
130
|
+
console.log("\nImmersion is on, but none of your repos are onboarded yet, so there's nothing to send.");
|
|
131
|
+
console.log("Run `/replen-onboard` in Claude Code first (it's also offered automatically at the start of a session) — it reads each repo and records which files implement each capability. Then re-run `npx replen immerse`.");
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// Onboarded with paths, but the files weren't readable / produced nothing.
|
|
135
|
+
console.log("\nImmersion: nothing to update (no readable grounded files changed).");
|
|
136
|
+
}
|
|
113
137
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "replen",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
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": {
|