vibe-splain 1.0.4 → 1.1.0

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/index.js CHANGED
@@ -135,7 +135,7 @@ async function initParser() {
135
135
  parser.setLanguage(Lang);
136
136
  return parser;
137
137
  }
138
- var EXCLUDE_DIRS = /* @__PURE__ */ new Set(["node_modules", "dist", "build", ".next", ".vibe-splainer", ".git"]);
138
+ var EXCLUDE_DIRS = /* @__PURE__ */ new Set(["node_modules", "dist", "build", ".next", ".vibe-splainer", ".git", ".venv", "venv", "env", "__pycache__", ".idea", ".vscode", ".cache"]);
139
139
  var EXCLUDE_PATTERNS = [/\.test\./, /\.spec\./, /\.config\./, /\.lock$/, /\.min\.js$/, /\.d\.ts$/];
140
140
  var SUPPORTED_EXTENSIONS = /* @__PURE__ */ new Set([".ts", ".tsx", ".js", ".jsx"]);
141
141
  var PILLAR_KEYWORDS = {
@@ -382,8 +382,7 @@ async function regenerateUI(projectRoot, dossier) {
382
382
  cpSync(templateDir, uiDir, { recursive: true });
383
383
  let html = await readFile4(join4(templateDir, "index.html"), "utf8");
384
384
  const injection = `<script>window.__VIBE_DOSSIER__ = ${JSON.stringify(dossier)};</script>`;
385
- html = html.replace("</head>", `${injection}
386
- </head>`);
385
+ html = html.replace("<!-- VIBE_DOSSIER_INJECTION_POINT -->", injection);
387
386
  await writeFile3(join4(uiDir, "index.html"), html, "utf8");
388
387
  console.error("[vibe-splain] UI regenerated at", join4(uiDir, "index.html"));
389
388
  }
@@ -865,7 +864,7 @@ async function startMCPServer() {
865
864
  role: "user",
866
865
  content: {
867
866
  type: "text",
868
- text: "Use the vibe-splain MCP tools to build a full architectural dossier for this project. Call scan_project first. Then for each high-gravity file, call get_file_context to read the source, synthesize a 3-5 sentence narrative explaining WHY the code exists, and call write_decision_card to persist it. Include Mermaid diagrams where they help explain data flow. When you're done, share the exact file:// UI link returned by the tool so I can view the dossier in my browser. Do NOT invent a localhost URL."
867
+ text: "Use the vibe-splain MCP tools to build a full architectural dossier for this project. Call scan_project first. Before writing any cards, define a strict set of 3-5 core architectural pillars, and force all categorizations into those predefined buckets to avoid fragmentation. Then for each high-gravity file, call get_file_context to read the source, synthesize a 3-5 sentence narrative explaining WHY the code exists, and call write_decision_card to persist it. When extracting evidence snippets, extract small, highly specific evidence snippets (5-20 lines). NEVER cite the entire file as evidence. If you find weird hacks, tech debt, or eccentric AI-generated code, document it as a Wild Discovery. Include Mermaid diagrams where they help explain data flow. When you're done, share the exact file:// UI link returned by the tool so I can view the dossier in my browser. Do NOT invent a localhost URL."
869
868
  }
870
869
  }
871
870
  ]
@@ -55,7 +55,7 @@ export async function startMCPServer() {
55
55
  role: 'user',
56
56
  content: {
57
57
  type: 'text',
58
- text: 'Use the vibe-splain MCP tools to build a full architectural dossier for this project. Call scan_project first. Then for each high-gravity file, call get_file_context to read the source, synthesize a 3-5 sentence narrative explaining WHY the code exists, and call write_decision_card to persist it. Include Mermaid diagrams where they help explain data flow. When you\'re done, share the exact file:// UI link returned by the tool so I can view the dossier in my browser. Do NOT invent a localhost URL.',
58
+ text: 'Use the vibe-splain MCP tools to build a full architectural dossier for this project. Call scan_project first. Before writing any cards, define a strict set of 3-5 core architectural pillars, and force all categorizations into those predefined buckets to avoid fragmentation. Then for each high-gravity file, call get_file_context to read the source, synthesize a 3-5 sentence narrative explaining WHY the code exists, and call write_decision_card to persist it. When extracting evidence snippets, extract small, highly specific evidence snippets (5-20 lines). NEVER cite the entire file as evidence. If you find weird hacks, tech debt, or eccentric AI-generated code, document it as a Wild Discovery. Include Mermaid diagrams where they help explain data flow. When you\'re done, share the exact file:// UI link returned by the tool so I can view the dossier in my browser. Do NOT invent a localhost URL.',
59
59
  }
60
60
  }
61
61
  ]
@@ -8,6 +8,7 @@
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com" />
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
10
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
11
+ <!-- VIBE_DOSSIER_INJECTION_POINT -->
11
12
  <script type="module" crossorigin>var gSe=Object.defineProperty;var JU=t=>{throw TypeError(t)};var hSe=(t,e,n)=>e in t?gSe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Ze=(t,e,n)=>hSe(t,typeof e!="symbol"?e+"":e,n),XU=(t,e,n)=>e.has(t)||JU("Cannot "+n);var A3=(t,e,n)=>(XU(t,e,"read from private field"),n?n.call(t):e.get(t)),eH=(t,e,n)=>e.has(t)?JU("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),jE=(t,e,n,a)=>(XU(t,e,"write to private field"),a?a.call(t,n):e.set(t,n),n);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))a(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();var nl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function dA(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var eae={exports:{}},OS={},tae={exports:{}},Rn={};/**
12
13
  * @license React
13
14
  * react.production.min.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-splain",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "Architectural dossier engine for vibe-coded projects. Runs as an MCP server inside your coding agent.",
5
5
  "type": "module",
6
6
  "license": "MIT",