replen 1.0.16 → 1.0.17

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.
@@ -33,7 +33,7 @@
33
33
  import { readFileSync, writeFileSync, existsSync } from "node:fs";
34
34
  import { join, basename } from "node:path";
35
35
  import { createInterface } from "node:readline";
36
- export const INTEGRATION_VERSION = "8";
36
+ export const INTEGRATION_VERSION = "9";
37
37
  const SECTION_HEADER = "## Replen integration";
38
38
  const MARKER_RE = /<!--\s*replen-integration:\s*v(\d+)\s*-->/;
39
39
  const SECTION_BODY = `<!-- replen-integration: v${INTEGRATION_VERSION} -->
@@ -89,6 +89,16 @@ primitive here.
89
89
  **Don\'t call \`replen_match\` again on subsequent turns** — once
90
90
  per session at start only. The user explicitly types
91
91
  \`/replen\` if they want a fresh triage mid-session.
92
+
93
+ **PORTFOLIO-FIRST RULE (any turn, not just the first).** Before you
94
+ (a) add a new dependency, (b) pick a library/stack for a task, or
95
+ (c) build a capability from scratch (scraping, auth, OCR, queues,
96
+ charting, …), call \`replen_recall\` with the capability first. The
97
+ user\'s OTHER projects may already have a settled way to do it — a
98
+ chosen library, or an implementation file (\`paths\`) you can port.
99
+ If recall returns a convention, FOLLOW IT (or name it and ask)
100
+ instead of introducing a parallel stack. The user should never have
101
+ to say "you know I use scrapling elsewhere" — knowing is your job.
92
102
  `;
93
103
  // Find candidate project directories using the same layered discovery
94
104
  // as `npx replen sync-projects` — explicit --root flag → REPLEN_PROJECT_ROOTS
@@ -135,6 +135,11 @@ specific — `cloudflare bypass`/`proxy rotation`, not just `web scraping`.
135
135
  grounded `capabilities` array AND the `report` from 2c. The server builds the
136
136
  facet vectors immediately and stores the report as grounding for its own
137
137
  summarization. Use the MCP tools, not hand-rolled `curl`.
138
+ **Include `paths` on each capability** — up to 5 file paths that implement
139
+ it (e.g. `{tag: "computer vision", …, paths: ["src/cv/transformations.py"]}`).
140
+ Paths only, never code. You just read these files; recording WHERE each
141
+ capability lives lets Replen point another of the user's projects straight
142
+ at the implementation worth porting ("aegis solved this — see src/cv/…").
138
143
  4. **Report pinned versions** with `replen_set_versions` — the resolved DIRECT
139
144
  dependency versions from the lockfile (package-lock.json / poetry.lock /
140
145
  uv.lock / Cargo.lock), plus runtimes under canonical keys (`node` from
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replen",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
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": {