pcl-mcp 0.1.4 → 0.2.2

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/README.md CHANGED
@@ -4,6 +4,36 @@
4
4
 
5
5
  Instead of re-explaining your personas, journeys, and architecture decisions every session, PCL serves them via MCP on demand. Any agent (Claude Code, Cursor, Windsurf) queries exactly what it needs, when it needs it.
6
6
 
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ npm install pcl-mcp
11
+ npx pcl init
12
+ # add MCP config (see Agent Configuration below), then start a new agent session
13
+ ```
14
+
15
+ ## Why PCL?
16
+
17
+ **Without PCL**, every coding session starts from scratch:
18
+ - Agents can't find your product docs unless you paste them into the prompt
19
+ - Context windows get bloated with irrelevant information
20
+ - You re-explain personas, business rules, and specs every single time
21
+ - No guardrails — agents make assumptions that violate your business rules
22
+
23
+ **With PCL**, agents load product knowledge on demand:
24
+ - Progressive disclosure — session start costs ~600 tokens (product summary + critical rules)
25
+ - Hybrid search (BM25 + semantic) finds the right context without you guiding it
26
+ - Live reindex on file save — edit a spec, agent sees it immediately
27
+ - Structured Zod schemas — agents get predictable, parseable frontmatter every time
28
+
29
+ ### Concrete use case
30
+
31
+ You ask your agent: *"Build the checkout flow"*
32
+
33
+ **Without PCL:** You paste your billing rules doc, the persona file, the journey map, and the spec into the chat. 4,000 tokens before the agent writes a line of code. Next session, you do it again.
34
+
35
+ **With PCL:** The agent auto-loads critical billing rules at session start (~200 tokens). When it starts the checkout feature, it pulls the relevant persona, fetches the journey steps, and checks the spec's acceptance criteria — all on-demand, only what's needed. Every session, automatically.
36
+
7
37
  ## Stack
8
38
 
9
39
  | Layer | Technology | Why |
@@ -16,14 +46,37 @@ Instead of re-explaining your personas, journeys, and architecture decisions eve
16
46
  | Validation | Zod schemas | Agents rely on predictable frontmatter |
17
47
  | File watching | Chokidar v4 | Live reindex on save |
18
48
 
49
+ ## Prerequisites
50
+
51
+ - **Node.js >= 22** (required — PCL uses modern Node APIs)
52
+
19
53
  ## Install
20
54
 
21
55
  ```bash
22
56
  npm install pcl-mcp
23
- npx pcl init # scaffold /product folder
24
- npm run serve # start MCP server
57
+ npx pcl init # creates ./product with templates
58
+ ```
59
+
60
+ Also available on GitHub Packages as `@michaelgorski/pcl-mcp`.
61
+
62
+ ## Import existing docs
63
+
64
+ If you already have markdown documentation in your repo, PCL can scan, classify, and import it automatically:
65
+
66
+ ```bash
67
+ npx pcl init --scan # scan + import existing docs, then scaffold remaining templates
68
+ npx pcl init --scan-only # scan + import only, skip template scaffolding
25
69
  ```
26
70
 
71
+ The scanner:
72
+ - Walks your repo for `.md` files (skips `node_modules`, `dist`, `.git`, etc.)
73
+ - Classifies each file by directory name, filename, frontmatter keys, and content patterns
74
+ - Transforms matching files into PCL format with proper frontmatter
75
+ - Copies them into the `product/` folder under the correct category
76
+ - Skips categories that already have imported files (no duplicate templates)
77
+
78
+ Supported classifications: **persona**, **journey**, **spec**, **decision**, **domain**, **product**
79
+
27
80
  ## Agent configuration
28
81
 
29
82
  ### Claude Code — `.claude/mcp.json`
@@ -48,6 +101,18 @@ npm run serve # start MCP server
48
101
  }
49
102
  ```
50
103
 
104
+ ### Windsurf — MCP config
105
+ ```json
106
+ {
107
+ "mcpServers": {
108
+ "pcl": {
109
+ "command": "npx",
110
+ "args": ["pcl-mcp", "serve"]
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
51
116
  ## File structure
52
117
 
53
118
  ```
@@ -68,17 +133,25 @@ npm run serve # start MCP server
68
133
 
69
134
  ## Tools available to agents
70
135
 
71
- | Tool | When to use |
72
- |---|---|
73
- | `pcl_product_summary` | Always call at session start |
74
- | `pcl_get_domain("*critical")` | Always load hard business rules |
75
- | `pcl_get_persona(id)` | Before any user-facing feature |
76
- | `pcl_get_journey(id)` | Before any user flow code |
77
- | `pcl_get_spec(id)` | Before implementing a feature |
78
- | `pcl_get_decision(id)` | Before architectural decisions |
79
- | `pcl_list(type)` | Discover what exists |
80
- | `pcl_search(query)` | When you don't know the ID |
81
- | `pcl_related(id)` | Discover connected context |
136
+ | Tool | Params | Description |
137
+ |---|---|---|
138
+ | `pcl_product_summary` | — | Load the product north-star document. Call at session start. |
139
+ | `pcl_get_persona(id)` | `id`: persona ID | Get a user persona by ID. Call before any user-facing feature. |
140
+ | `pcl_get_journey(id)` | `id`: journey ID | Get a user journey by ID including step-by-step detail. |
141
+ | `pcl_get_spec(id)` | `id`: spec ID | Get a feature spec by ID including acceptance criteria. |
142
+ | `pcl_get_decision(id)` | `id`: decision ID | Get an architecture decision record (ADR) by ID. |
143
+ | `pcl_get_domain(id)` | `id`: domain ID or `"*critical"` | Get domain rules by ID. Pass `"*critical"` to load all critical rules. |
144
+ | `pcl_list({ type })` | `type`: `"personas"` \| `"journeys"` \| `"specs"` \| `"decisions"` \| `"domain"` | List all files of a given type with IDs, titles, and summaries. |
145
+ | `pcl_search({ query })` | `query`, `mode?` (`"hybrid"` \| `"semantic"` \| `"keyword"`), `types?`, `top_k?` | Hybrid semantic + keyword search across all product files. |
146
+ | `pcl_related(id)` | `id`: source file ID, `top_k?` | Find files semantically related to a given file ID. |
147
+
148
+ ## Prompts & Resources
149
+
150
+ In addition to tools, PCL exposes MCP prompts and resources:
151
+
152
+ **Prompt: `session-start`** — Returns a product summary + all critical domain rules. Agents can call this at the start of every coding session to orient themselves without loading every file.
153
+
154
+ **Resources: `pcl://files/{type}/{id}`** — Each indexed file is available as an MCP resource. Agents can browse and read individual files directly via the resource URI (e.g., `pcl://files/persona/example-user`).
82
155
 
83
156
  ## How hybrid search works
84
157
 
package/dist/bin/pcl.js CHANGED
@@ -1,9 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  // bin/pcl.ts
3
3
  // CLI: pcl init | pcl serve | pcl status
4
- import { mkdir, writeFile, readFile, access } from "node:fs/promises";
4
+ import { mkdir, writeFile, readFile, readdir, access } from "node:fs/promises";
5
5
  import { join, resolve } from "node:path";
6
- import { constants } from "node:fs";
6
+ import { constants, existsSync } from "node:fs";
7
+ import { createRequire } from "node:module";
8
+ const require = createRequire(import.meta.url);
9
+ const { version } = require("../package.json");
7
10
  const cmd = process.argv[2];
8
11
  const args = process.argv.slice(3);
9
12
  const hasFlag = (flag) => args.includes(flag);
@@ -261,23 +264,38 @@ async function init() {
261
264
 
262
265
  This project uses PCL for product knowledge. An MCP server is running (see mcp config).
263
266
 
267
+ **IMPORTANT:** PCL contains ALL product knowledge — personas, journeys, specs, decisions, and domain rules.
268
+ Read ALL categories thoroughly. Do not skip any folder or assume content is irrelevant.
269
+
264
270
  ### At the start of every coding session:
265
- 1. Call \`pcl_product_summary\` — orient yourself
271
+ 1. Call \`pcl_product_summary\` — orient yourself with the product north star
266
272
  2. Call \`pcl_get_domain("*critical")\` — load non-violable business rules
273
+ 3. Call \`pcl_list({ type: "decisions" })\` — review architecture decisions
274
+ 4. Call \`pcl_list({ type: "personas" })\` — know who you are building for
275
+ 5. Call \`pcl_list({ type: "specs" })\` — see what features are defined
267
276
 
268
277
  ### Before working on any user-facing feature:
269
- - Call \`pcl_list({ type: "personas" })\` then \`pcl_get_persona(id)\` for the relevant persona
270
- - Call \`pcl_list({ type: "journeys" })\` then \`pcl_get_journey(id)\` for the relevant journey
271
- - Call \`pcl_list({ type: "specs" })\` then \`pcl_get_spec(id)\` for the feature spec if it exists
278
+ - Call \`pcl_get_persona(id)\` for EVERY relevant persona — read full detail
279
+ - Call \`pcl_get_journey(id)\` for the relevant user journey — follow every step
280
+ - Call \`pcl_get_spec(id)\` for the feature spec check all acceptance criteria
281
+ - Call \`pcl_get_decision(id)\` for any architecture decision that affects the feature
282
+
283
+ ### Before making any architectural or technical choice:
284
+ - Call \`pcl_list({ type: "decisions" })\` then \`pcl_get_decision(id)\` for relevant ADRs
285
+ - Call \`pcl_get_domain("*critical")\` if the change touches billing, auth, or data models
286
+ - Call \`pcl_search({ query: "your topic" })\` to find related product knowledge
272
287
 
273
- ### When unsure about product decisions:
274
- - Call \`pcl_search({ query: "your question here" })\` to find relevant product knowledge
275
- - Call \`pcl_get_decision(id)\` for architecture decisions affecting your current task
288
+ ### When exploring or unsure:
289
+ - Call \`pcl_search({ query: "your question" })\` hybrid semantic + keyword search
290
+ - Call \`pcl_related(id)\` discover connected context
291
+ - Call \`pcl_list({ type: "domain" })\` then \`pcl_get_domain(id)\` — read ALL domain rules
276
292
 
277
293
  ### NEVER:
278
294
  - Make assumptions about who the user is — always load the persona
279
- - Violate any rule in domain/core-rules.md
295
+ - Skip loading decisions before making architectural choices
296
+ - Violate any rule in domain rules (critical or otherwise)
280
297
  - Build features not covered by an accepted spec without asking first
298
+ - Assume you know the product context — always query PCL first
281
299
  `;
282
300
  try {
283
301
  await access(claudeMd, constants.F_OK);
@@ -302,26 +320,123 @@ This project uses PCL for product knowledge. An MCP server is running (see mcp c
302
320
  console.log(" 1. Edit product/product.md with your actual product details");
303
321
  console.log(" 2. Rename and fill in the example persona, journey, and spec files");
304
322
  console.log(" 3. Add your MCP server config (see README)");
305
- console.log(" 4. npm run serve\n");
323
+ console.log(" 4. Start a new agent session — PCL loads automatically\n");
306
324
  }
307
- // ─── Router ───────────────────────────────────────────────────────────────────
308
- switch (cmd) {
309
- case "init":
310
- init().catch(console.error);
311
- break;
312
- case "serve":
313
- // Delegate to the server module
314
- import("../src/server.js").catch(console.error);
315
- break;
316
- default:
317
- console.log(`
318
- pcl — Product Context Layer CLI
325
+ // ─── Status ──────────────────────────────────────────────────────────────────
326
+ /** Count .md files on disk per subdirectory (no DB needed) */
327
+ async function countDiskFiles(productDir) {
328
+ const counts = {
329
+ personas: 0, journeys: 0, specs: 0, decisions: 0, domain: 0,
330
+ };
331
+ const hasProduct = existsSync(join(productDir, "product.md"));
332
+ for (const dir of Object.keys(counts)) {
333
+ const dirPath = join(productDir, dir);
334
+ if (!existsSync(dirPath))
335
+ continue;
336
+ try {
337
+ const entries = await readdir(dirPath);
338
+ counts[dir] = entries.filter((e) => e.endsWith(".md") && !e.startsWith(".")).length;
339
+ }
340
+ catch { /* dir unreadable */ }
341
+ }
342
+ return { product: hasProduct, counts };
343
+ }
344
+ function resolveStatusDir() {
345
+ // Support --product-dir flag (same as serve)
346
+ const dirFlagIdx = args.indexOf("--product-dir");
347
+ if (dirFlagIdx !== -1 && args[dirFlagIdx + 1]) {
348
+ return resolve(args[dirFlagIdx + 1]);
349
+ }
350
+ const candidates = [
351
+ join(process.cwd(), "product"),
352
+ join(process.cwd(), ".product"),
353
+ ];
354
+ return candidates.find((c) => existsSync(c)) ?? candidates[0];
355
+ }
356
+ async function status() {
357
+ const productDir = resolveStatusDir();
358
+ if (!existsSync(productDir)) {
359
+ console.log(`\nNo product directory found at ${productDir}`);
360
+ console.log(`Run 'pcl init' to scaffold the product folder.\n`);
361
+ return;
362
+ }
363
+ // Always show disk file counts (works without server having run)
364
+ const disk = await countDiskFiles(productDir);
365
+ console.log("\nPCL Status");
366
+ console.log(` Product dir: ${productDir}`);
367
+ if (disk.product) {
368
+ console.log(` Product file: ✓ product.md`);
369
+ }
370
+ else {
371
+ console.log(` Product file: ✗ product.md not found`);
372
+ }
373
+ const typeMap = {
374
+ personas: "persona", journeys: "journey", specs: "spec",
375
+ decisions: "decision", domain: "domain",
376
+ };
377
+ // Check if DB exists (server has been run at least once)
378
+ const dbPath = join(productDir, ".pcl.db");
379
+ const hasDB = existsSync(dbPath);
380
+ let totalDisk = disk.product ? 1 : 0;
381
+ let totalIndexed = 0;
382
+ let totalEmbedded = 0;
383
+ // If DB exists, also show indexed/embedded counts
384
+ let dbData = null;
385
+ if (hasDB) {
386
+ const { openDB, closeDB, getProductFile, listByType } = await import("../src/db.js");
387
+ const db = openDB(productDir);
388
+ dbData = {};
389
+ const product = getProductFile(db);
390
+ if (product) {
391
+ totalIndexed++;
392
+ if (product.embedding.length > 0)
393
+ totalEmbedded++;
394
+ }
395
+ for (const [plural, type] of Object.entries(typeMap)) {
396
+ const files = listByType(db, type);
397
+ const embedded = files.filter((f) => f.embedding.length > 0).length;
398
+ dbData[plural] = { indexed: files.length, embedded };
399
+ totalIndexed += files.length;
400
+ totalEmbedded += embedded;
401
+ }
402
+ closeDB();
403
+ }
404
+ console.log("\n Files by type:");
405
+ for (const dir of Object.keys(disk.counts)) {
406
+ const onDisk = disk.counts[dir];
407
+ totalDisk += onDisk;
408
+ const label = dir.padEnd(12);
409
+ if (dbData && dbData[dir]) {
410
+ const { indexed, embedded } = dbData[dir];
411
+ console.log(` ${label} ${onDisk} on disk, ${indexed} indexed, ${embedded} embedded`);
412
+ }
413
+ else {
414
+ console.log(` ${label} ${onDisk} on disk`);
415
+ }
416
+ }
417
+ if (dbData) {
418
+ console.log(`\n Total: ${totalDisk} on disk, ${totalIndexed} indexed, ${totalEmbedded} embedded`);
419
+ }
420
+ else {
421
+ console.log(`\n Total: ${totalDisk} on disk`);
422
+ console.log(`\n Note: No index found. Start the MCP server to index files and generate embeddings.`);
423
+ }
424
+ }
425
+ // ─── Help text ───────────────────────────────────────────────────────────────
426
+ function printHelp() {
427
+ console.log(`
428
+ pcl — Product Context Layer CLI (v${version})
319
429
 
320
430
  Commands:
321
431
  init [dir] Scaffold /product folder with templates (default: ./product)
322
432
  init --scan [dir] Scan repo for existing .md files, import, then scaffold remaining templates
323
433
  init --scan-only [dir] Scan and import only, don't scaffold templates
324
434
  serve Start the MCP server (reads --product-dir flag)
435
+ status Show file counts and embedding coverage (reads --product-dir flag)
436
+
437
+ Options:
438
+ --help, -h Show this help text
439
+ --version, -v Show version number
325
440
 
326
441
  Examples:
327
442
  npx pcl-mcp init
@@ -329,6 +444,28 @@ Examples:
329
444
  npx pcl-mcp init --scan-only
330
445
  npx pcl-mcp init ./my-product-docs
331
446
  npx pcl-mcp serve --product-dir ./product
447
+ npx pcl-mcp status
332
448
  `);
333
449
  }
450
+ // ─── Router ───────────────────────────────────────────────────────────────────
451
+ switch (cmd) {
452
+ case "init":
453
+ init().catch(console.error);
454
+ break;
455
+ case "serve":
456
+ // Delegate to the server module
457
+ import("../src/server.js").catch(console.error);
458
+ break;
459
+ case "status":
460
+ status().catch(console.error);
461
+ break;
462
+ case "--version":
463
+ case "-v":
464
+ console.log(version);
465
+ break;
466
+ case "--help":
467
+ case "-h":
468
+ default:
469
+ printHelp();
470
+ }
334
471
  //# sourceMappingURL=pcl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pcl.js","sourceRoot":"","sources":["../../bin/pcl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pcl.js","sourceRoot":"","sources":["../../bin/pcl.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,12 @@ import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mc
15
15
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
16
  import { resolve, join } from "node:path";
17
17
  import { existsSync } from "node:fs";
18
+ import { createRequire } from "node:module";
18
19
  import { openDB, closeDB, getProductFile, getCritical, getFileById, listByType } from "./db.js";
19
- import { fullIndex, startWatcher } from "./indexer.js";
20
+ import { fullIndex, startWatcher, backfillEmbeddings } from "./indexer.js";
20
21
  import { handleTool, TOOL_SCHEMAS, renderFile } from "./tools.js";
22
+ const require = createRequire(import.meta.url);
23
+ const { version } = require("../package.json");
21
24
  // ─── Resolve product dir ───────────────────────────────────────────────────────
22
25
  function resolveProductDir() {
23
26
  const argIdx = process.argv.indexOf("--product-dir");
@@ -53,6 +56,13 @@ async function main() {
53
56
  if (result.errors.length > 0) {
54
57
  log(`Schema errors:\n ${result.errors.join("\n ")}`);
55
58
  }
59
+ if (result.total === 0) {
60
+ log(`⚠ No product files found. Run 'pcl init' to scaffold the product folder.`);
61
+ }
62
+ // Backfill embeddings for files that failed embedding previously
63
+ const backfilled = await backfillEmbeddings(db);
64
+ if (backfilled > 0)
65
+ log(`Backfilled ${backfilled} embeddings`);
56
66
  // Start file watcher for live updates
57
67
  const stopWatcher = await startWatcher(db, productDir, (event, path) => {
58
68
  log(`${event}: ${path}`);
@@ -60,7 +70,7 @@ async function main() {
60
70
  // ─── MCP server ─────────────────────────────────────────────────────────────
61
71
  const server = new McpServer({
62
72
  name: "pcl-mcp",
63
- version: "0.1.0",
73
+ version,
64
74
  });
65
75
  // ─── Tools ──────────────────────────────────────────────────────────────────
66
76
  for (const [name, def] of Object.entries(TOOL_SCHEMAS)) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";AACA,gBAAgB;AAChB,mFAAmF;AACnF,EAAE;AACF,SAAS;AACT,gEAAgE;AAChE,kCAAkC;AAClC,EAAE;AACF,kCAAkC;AAClC,4FAA4F;AAC5F,EAAE;AACF,0BAA0B;AAC1B,iFAAiF;AAEjF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAGjF,kFAAkF;AAElF,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;IAC5C,CAAC;IACD,6CAA6C;IAC7C,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;KAChC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,wDAAwD;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAE9B,2DAA2D;IAC3D,MAAM,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEtF,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC/B,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAElC,gFAAgF;IAChF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACpE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK;YAAE,GAAG,CAAC,WAAW,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,mBAAmB,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,qBAAqB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,sCAAsC;IACtC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrE,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAE/E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAK,SAAS;QAClB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,+EAA+E;IAE/E,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAgB,CAAC;QAElC,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,KAAK,CAAC,KAAK,EACf,KAAK,EAAE,KAA8B,EAAE,EAAE;YACvC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,KAAgC,EAAE,EAAE,CAAC,CAAC;gBAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,GAAG,EAAE,EAAE,CAAC;oBAC/D,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,+EAA+E;IAE/E,MAAM,SAAS,GAAe,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9F,MAAM,CAAC,QAAQ,CACb,UAAU,EACV,IAAI,gBAAgB,CAAC,yBAAyB,EAAE;QAC9C,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,SAAS,GAAkF,EAAE,CAAC;YACpG,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,SAAS,CAAC,IAAI,CAAC;wBACb,GAAG,EAAE,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;wBACpC,IAAI,EAAE,CAAC,CAAC,KAAK;wBACb,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;wBACpC,QAAQ,EAAE,eAAe;qBAC1B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,CAAC;KACF,CAAC,EACF,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,eAAe,EAAE,EACjF,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAa,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACrG,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;SACpG,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,+EAA+E;IAE/E,MAAM,CAAC,MAAM,CACX,eAAe,EACf,yGAAyG,EACzG,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,wCAAwC,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;qBACrB;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,+EAA+E;IAE/E,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAEtC,+EAA+E;IAE/E,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxB,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pcl-mcp",
3
- "version": "0.1.4",
3
+ "version": "0.2.2",
4
4
  "description": "Product Context Layer — MCP server for AI-assisted product development",
5
5
  "type": "module",
6
6
  "main": "./dist/src/server.js",
@@ -19,7 +19,9 @@
19
19
  "serve": "node dist/src/server.js",
20
20
  "init": "tsx bin/pcl.ts init",
21
21
  "typecheck": "tsc --noEmit",
22
- "prepare": "tsc"
22
+ "prepare": "tsc",
23
+ "publish:npm": "npm publish --registry https://registry.npmjs.org",
24
+ "publish:github": "npm pkg set name='@michaelgorski/pcl-mcp' && npm publish --registry https://npm.pkg.github.com && npm pkg set name='pcl-mcp'"
23
25
  },
24
26
  "keywords": [
25
27
  "mcp",
@@ -50,6 +52,10 @@
50
52
  "tsx": "^4.19.0",
51
53
  "typescript": "^5.8.0"
52
54
  },
55
+ "publishConfig": {
56
+ "registry": "https://registry.npmjs.org",
57
+ "access": "public"
58
+ },
53
59
  "engines": {
54
60
  "node": ">=22.0.0"
55
61
  }