replen 1.0.28 → 1.0.30
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.
|
@@ -43,6 +43,14 @@ Parse the JSON response. Note:
|
|
|
43
43
|
|
|
44
44
|
- `filterMode` — `tags`, `zero-knowledge`, or `fingerprint`
|
|
45
45
|
- `scopedTo` — confirms the project context the user has open
|
|
46
|
+
- `projectThesis` — what this project is trying to BE (`purpose`) and where it's
|
|
47
|
+
heading (`goals`). **This is your primary relevance lens.** Judge every
|
|
48
|
+
candidate against the mission, not just the capability match: a library can fit
|
|
49
|
+
a tech slot and still NOT advance what the product is trying to be (a generic
|
|
50
|
+
charting lib for a decision-support platform), and a candidate that advances a
|
|
51
|
+
`goal` is worth surfacing even if it doesn't map to an existing capability.
|
|
52
|
+
Lead your writeups with mission-fit, not just tech-fit. (Null until the project
|
|
53
|
+
is onboarded with a thesis — then fall back to capability-fit alone.)
|
|
46
54
|
- `candidates[]` — the actual list to triage
|
|
47
55
|
- `candidates[].priorContext` — server-attached MEMORY: the user's earlier
|
|
48
56
|
verdicts on this repo, and whether the matched capability is already
|
|
@@ -79,6 +79,35 @@ State the plan in one line ("12 to ground, 18 version-backfills, 3 skips") so
|
|
|
79
79
|
the user sees why it'll be fast. **A full code-read on an already-grounded repo
|
|
80
80
|
is wasted work — the pre-flight exists to prevent exactly the 24-minute re-run.**
|
|
81
81
|
|
|
82
|
+
**Then amortize the FULL-ground bucket by stack (cuts the cold read hardest).**
|
|
83
|
+
A portfolio's repos cluster by stack — 8 Next.js + Drizzle + Firebase apps share
|
|
84
|
+
~80% of their *technical* capabilities, which is exactly what Replen matches on
|
|
85
|
+
("describe the tech, not the application"). So the expensive repeated thing is
|
|
86
|
+
the *shared* thing. Group the full-ground repos by a cheap **stack fingerprint**
|
|
87
|
+
read from each manifest you already have to open (framework + ORM/DB + a couple
|
|
88
|
+
of capability-bearing deps, e.g. `next+drizzle+firebase` / `fastapi+pytorch` /
|
|
89
|
+
`hardhat+solidity`). Within each group:
|
|
90
|
+
- Ground the **first** repo fully (the 2a–2e contract).
|
|
91
|
+
- For each **sibling**, hand its grounding subagent the leader's pushed
|
|
92
|
+
`capabilities` array as a **TECH-ONLY draft to verify and diff** — the subagent
|
|
93
|
+
reads only enough to confirm which shared capabilities actually apply, drop the
|
|
94
|
+
ones that don't, and ADD this repo's domain-specific capabilities + its own
|
|
95
|
+
`paths`/versions. It does NOT re-derive the shared stack from scratch.
|
|
96
|
+
This is a *draft to verify*, never auto-accept (the "don't invent capabilities
|
|
97
|
+
the code doesn't show" rule still holds), and you template only TECH capabilities
|
|
98
|
+
— never the report, domain tags, or anything application-specific (privacy +
|
|
99
|
+
no cross-repo domain bleed). Singletons (no stack sibling) just full-ground
|
|
100
|
+
normally.
|
|
101
|
+
|
|
102
|
+
Mechanically: process the group leader first and have its subagent **return its
|
|
103
|
+
`capabilities` array** (the `{tag, descriptor, modality}` objects, paths
|
|
104
|
+
stripped) in its final message; the orchestrator passes that array into each
|
|
105
|
+
sibling subagent's prompt as `STACK DRAFT (verify against THIS repo, don't
|
|
106
|
+
auto-accept)`. Groups still run concurrently with each other — only the
|
|
107
|
+
leader→siblings step within a group is ordered. If returning the array is
|
|
108
|
+
impractical for your host, fall back to plain full-ground for the siblings (no
|
|
109
|
+
correctness loss, just no speed-up).
|
|
110
|
+
|
|
82
111
|
## Step 2 — Per-repo grounding (autonomous; fan out if you can)
|
|
83
112
|
|
|
84
113
|
**Parallelise if your host supports it.** In Claude Code, spawn one background
|
|
@@ -187,6 +216,30 @@ into the report or the descriptors — the capability is the signal; the
|
|
|
187
216
|
application is exactly what stays local. When in doubt, describe it as the
|
|
188
217
|
public README does.
|
|
189
218
|
|
|
219
|
+
### 2c-thesis. Capture the product THESIS (what it's trying to BE)
|
|
220
|
+
|
|
221
|
+
Capabilities say what a project technically *does*; the **thesis** says what it's
|
|
222
|
+
trying to *be* and where it's *heading* — and that's a far better relevance test
|
|
223
|
+
than any capability slot ("does this advance a contested-airspace decision-
|
|
224
|
+
support platform?" beats "does this do OSINT?"). Replen now matches and triages
|
|
225
|
+
against it, so capture it:
|
|
226
|
+
|
|
227
|
+
- **First, look for an explicit thesis the user already keeps** — `goals.md`,
|
|
228
|
+
`GOALS.md`, `handover.md`, `HANDOVER.md`, `ROADMAP.md`, `PRD.md`, `vision.md`,
|
|
229
|
+
`docs/product*.md`, or the "what it is / active areas" sections of CLAUDE.md.
|
|
230
|
+
These are the user's own words for the mission — use them as the primary
|
|
231
|
+
source (same adapter spirit as the knowledge-graph step 2a-pre).
|
|
232
|
+
- **Derive two things:**
|
|
233
|
+
- `purpose` — 1–2 sentences: what the product is trying to be and what makes
|
|
234
|
+
it distinct. The mission, not a feature list.
|
|
235
|
+
- `goals` — a few outcome directions it's heading toward (e.g. "real-time
|
|
236
|
+
multi-sensor fusion", "sub-second COA ranking").
|
|
237
|
+
- **Respect the cover** exactly as for the report: the thesis describes intent
|
|
238
|
+
and tech direction, never a sensitive codename / end-user / operational target.
|
|
239
|
+
Follow the framing the user's own docs use.
|
|
240
|
+
|
|
241
|
+
Pass both to `replen_set_capabilities` (`purpose`, `goals`) in 2e.
|
|
242
|
+
|
|
190
243
|
### 2d. Derive grounded capabilities
|
|
191
244
|
|
|
192
245
|
From the report + code, produce 8–15 **grounded** capability objects — NOT bare
|
|
@@ -215,10 +268,11 @@ specific — `cloudflare bypass`/`proxy rotation`, not just `web scraping`.
|
|
|
215
268
|
sidesteps the shadow. Ensure each repo has a GitHub remote so it scopes by
|
|
216
269
|
`owner/name`.
|
|
217
270
|
2. **Set domain tags** with `replen_set_tags` — broad domain labels.
|
|
218
|
-
3. **Set capabilities + report** with `replen_set_capabilities`, passing
|
|
219
|
-
grounded `capabilities` array
|
|
220
|
-
|
|
221
|
-
|
|
271
|
+
3. **Set capabilities + report + thesis** with `replen_set_capabilities`, passing
|
|
272
|
+
the grounded `capabilities` array, the `report` from 2c, AND the `purpose` +
|
|
273
|
+
`goals` from 2c-thesis. The server builds the facet vectors immediately, stores
|
|
274
|
+
the report as grounding, and hands the thesis to the triage agent so candidates
|
|
275
|
+
are judged against the mission. Use the MCP tools, not hand-rolled `curl`.
|
|
222
276
|
**Include `paths` on each capability** — up to 5 file paths that implement
|
|
223
277
|
it (e.g. `{tag: "computer vision", …, paths: ["src/cv/transformations.py"]}`).
|
|
224
278
|
Paths only, never code. You just read these files; recording WHERE each
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "replen",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.30",
|
|
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": {
|