replen 1.0.29 → 1.0.31

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,22 @@ 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.)
54
+ - `keystoneUpgrades` — task-scoped `better_than` upgrades for solutions this
55
+ project already uses (from Keystone, the comparative-knowledge ontology): each
56
+ is `{current, better, betterKind, task, margin, source}`. A deprecated/inferior
57
+ dependency has a maintained/stronger replacement. The footnote may surface one;
58
+ if the user wants it, DO the swap (update the dep, adjust call sites). Always
59
+ cite the `task` — "better" is task-relative (e.g. text-embedding-3-large beats
60
+ 3-small for general retrieval but NOT for short-label matching). Don't push an
61
+ upgrade the user didn't ask about beyond the one calm line.
46
62
  - `candidates[]` — the actual list to triage
47
63
  - `candidates[].priorContext` — server-attached MEMORY: the user's earlier
48
64
  verdicts on this repo, and whether the matched capability is already
@@ -216,6 +216,30 @@ into the report or the descriptors — the capability is the signal; the
216
216
  application is exactly what stays local. When in doubt, describe it as the
217
217
  public README does.
218
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
+
219
243
  ### 2d. Derive grounded capabilities
220
244
 
221
245
  From the report + code, produce 8–15 **grounded** capability objects — NOT bare
@@ -244,10 +268,11 @@ specific — `cloudflare bypass`/`proxy rotation`, not just `web scraping`.
244
268
  sidesteps the shadow. Ensure each repo has a GitHub remote so it scopes by
245
269
  `owner/name`.
246
270
  2. **Set domain tags** with `replen_set_tags` — broad domain labels.
247
- 3. **Set capabilities + report** with `replen_set_capabilities`, passing the
248
- grounded `capabilities` array AND the `report` from 2c. The server builds the
249
- facet vectors immediately and stores the report as grounding for its own
250
- summarization. Use the MCP tools, not hand-rolled `curl`.
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`.
251
276
  **Include `paths` on each capability** — up to 5 file paths that implement
252
277
  it (e.g. `{tag: "computer vision", …, paths: ["src/cv/transformations.py"]}`).
253
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.29",
3
+ "version": "1.0.31",
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": {