@plumpslabs/kuma 2.3.9 → 2.3.10

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.
@@ -36,10 +36,10 @@ var AGENT_DETECTORS = [
36
36
  },
37
37
  {
38
38
  type: "windsurf",
39
- checkFiles: [".windsurfrules"],
40
- checkDirs: [],
39
+ checkFiles: [],
40
+ checkDirs: [".windsurf"],
41
41
  priority: 70,
42
- label: "Windsurf (.windsurfrules)"
42
+ label: "Windsurf (.windsurf/)"
43
43
  },
44
44
  {
45
45
  type: "opencode",
@@ -156,7 +156,7 @@ function getSkillPath(type) {
156
156
  case "aider":
157
157
  return "CONVENTIONS.md";
158
158
  case "windsurf":
159
- return ".windsurfrules";
159
+ return ".windsurf/rules/kuma.md";
160
160
  case "copilot":
161
161
  return ".github/skills/kuma/SKILL.md";
162
162
  case "qwen":
@@ -23,12 +23,12 @@ var ALL_CONFIG_TYPES = [
23
23
  var CONFIG_LABELS = {
24
24
  claude: "Claude Code (CLAUDE.md / plugin)",
25
25
  cursor: "Cursor (.cursor/rules/*.mdc)",
26
- windsurf: "Windsurf (.windsurfrules)",
26
+ windsurf: "Windsurf (.windsurf/rules/)",
27
27
  copilot: "GitHub Copilot Editor (AGENTS.md + Skill)",
28
28
  cline: "Cline (.clinerules/*.md)",
29
29
  aider: "Aider (CONVENTIONS.md via .aider.conf.yml)",
30
30
  antigravity: "Antigravity CLI (.agents/skills/)",
31
- opencode: "OpenCode (opencode.json)",
31
+ opencode: "OpenCode (opencode.json + skills)",
32
32
  codex: "Codex CLI (AGENTS.md + .codex/config.toml)",
33
33
  qwen: "Qwen Code (AGENTS.md + settings.json)",
34
34
  kiro: "Kiro (.kiro/steering/*.md)",
@@ -42,7 +42,7 @@ function configFilePath(type) {
42
42
  case "cursor":
43
43
  return ".cursor/rules/kuma.mdc";
44
44
  case "windsurf":
45
- return ".windsurfrules";
45
+ return ".windsurf/rules/kuma.md";
46
46
  case "copilot":
47
47
  return "AGENTS.md";
48
48
  case "cline":
@@ -97,7 +97,12 @@ function windsurfRulesTemplate() {
97
97
  return [
98
98
  "# Kuma MCP \u2014 Windsurf",
99
99
  "",
100
- KUMA_CORE_INSTRUCTIONS
100
+ "Windsurf Cascade agent: Kuma MCP tools are installed.",
101
+ "All behavioral rules are in `.kuma/init.md`.",
102
+ "**Before coding, load project context via `kuma_init()`.**",
103
+ "Project knowledge persists in `.kuma/memories/*.md` across sessions.",
104
+ "",
105
+ "Also auto-detected as SKILL.md in `.windsurf/skills/` and `.agents/skills/`."
101
106
  ].join("\n");
102
107
  }
103
108
  function copilotTemplate() {
@@ -337,7 +342,43 @@ var TEMPLATES = {
337
342
  codewhale: codewhaleTemplate
338
343
  };
339
344
  var APPEND_SEPARATOR = "\n\n---\n_Generated by Kuma MCP - https://github.com/plumpslabs/kuma_\n\n";
340
- function handleOpencodeSecondary(_root, _results) {
345
+ function handleOpencodeSecondary(root, results) {
346
+ const skillPath = path.resolve(root, ".agents", "skills", "kuma", "SKILL.md");
347
+ if (results.some((r) => r.filePath === ".agents/skills/kuma/SKILL.md")) return;
348
+ try {
349
+ const dir = path.dirname(skillPath);
350
+ const content = [
351
+ "---",
352
+ "name: kuma-mcp",
353
+ "description: Kuma MCP \u2014 safety toolkit for AI coding agents. Research, memory, and safety guard.",
354
+ "---",
355
+ "",
356
+ "Kuma MCP tools are installed. All behavioral rules are in `.kuma/init.md`.",
357
+ "**Before coding, call `kuma_init()` to load project context and session memory.**",
358
+ "Project knowledge persists in `.kuma/memories/*.md` across sessions.",
359
+ "",
360
+ "MCP server configured in `opencode.json`."
361
+ ].join("\n");
362
+ if (fs.existsSync(skillPath)) {
363
+ const existing = fs.readFileSync(skillPath, "utf-8");
364
+ if (existing.includes("kuma-mcp")) {
365
+ results.push({ type: "opencode", filePath: ".agents/skills/kuma/SKILL.md", action: "skipped" });
366
+ return;
367
+ }
368
+ results.push({ type: "opencode", filePath: ".agents/skills/kuma/SKILL.md", action: "skipped" });
369
+ } else {
370
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
371
+ fs.writeFileSync(skillPath, content, "utf-8");
372
+ results.push({ type: "opencode", filePath: ".agents/skills/kuma/SKILL.md", action: "created" });
373
+ }
374
+ } catch (err) {
375
+ results.push({
376
+ type: "opencode",
377
+ filePath: ".agents/skills/kuma/SKILL.md",
378
+ action: "error",
379
+ error: err instanceof Error ? err.message : String(err)
380
+ });
381
+ }
341
382
  }
342
383
  function handleCodexSecondary(root, results) {
343
384
  const tomlPath = path.resolve(root, ".codex/config.toml");
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  ALL_CONFIG_TYPES,
9
9
  formatInitResults,
10
10
  runInit
11
- } from "./chunk-L5WU2HTN.js";
11
+ } from "./chunk-J2CBDLXB.js";
12
12
  import {
13
13
  formatDecisionTemplate,
14
14
  getProactiveMemories,
@@ -2340,7 +2340,7 @@ Usage:
2340
2340
  Available config files:
2341
2341
  --claude CLAUDE.md (Claude Code)
2342
2342
  --cursor .cursor/rules/kuma.mdc (Cursor)
2343
- --windsurf .windsurfrules (Windsurf)
2343
+ --windsurf .windsurf/rules/kuma.md (Windsurf)
2344
2344
  --copilot AGENTS.md + .github/skills/ (GitHub Copilot Editor)
2345
2345
  --cline .clinerules/kuma.md (Cline)
2346
2346
  --aider CONVENTIONS.md + .aider.conf.yml (Aider)
@@ -2556,7 +2556,7 @@ async function main() {
2556
2556
  const matchaAgentsMd = path7.resolve(process.cwd(), "AGENTS.md");
2557
2557
  const matchaWindsurfRules = path7.resolve(
2558
2558
  process.cwd(),
2559
- ".windsurfrules"
2559
+ ".windsurf"
2560
2560
  );
2561
2561
  if (fs7.existsSync(matchaSkills) || fs7.existsSync(matchaAgents) || fs7.existsSync(matchaRootSkills) || fs7.existsSync(matchaAgentsMd) || fs7.existsSync(matchaWindsurfRules)) {
2562
2562
  console.error(
@@ -2571,7 +2571,7 @@ async function main() {
2571
2571
  });
2572
2572
  (async () => {
2573
2573
  try {
2574
- const { generateInitMdContent } = await import("./init-AJAESUZZ.js");
2574
+ const { generateInitMdContent } = await import("./init-LLP6JDFR.js");
2575
2575
  const fs7 = await import("fs");
2576
2576
  const path7 = await import("path");
2577
2577
  const initMdPath = path7.resolve(process.cwd(), ".kuma/init.md");
@@ -2587,8 +2587,8 @@ async function main() {
2587
2587
  })();
2588
2588
  (async () => {
2589
2589
  try {
2590
- const { detectAgent, getSkillPath, getAgentLabel } = await import("./agentDetector-G4RBMZ6X.js");
2591
- const { generateSkill, getSecondaryFiles } = await import("./skillGenerator-F6YO4H5D.js");
2590
+ const { detectAgent, getSkillPath, getAgentLabel } = await import("./agentDetector-3OTNKKBS.js");
2591
+ const { generateSkill, getSecondaryFiles } = await import("./skillGenerator-ILZFWO5O.js");
2592
2592
  const fs7 = await import("fs");
2593
2593
  const path7 = await import("path");
2594
2594
  const detection = detectAgent();
@@ -2745,7 +2745,7 @@ function interactiveSelect() {
2745
2745
  type: "cursor",
2746
2746
  label: "2) Cursor (.cursor/rules/kuma.mdc)"
2747
2747
  },
2748
- { type: "windsurf", label: "3) Windsurf (.windsurfrules)" },
2748
+ { type: "windsurf", label: "3) Windsurf (.windsurf/rules/kuma.md)" },
2749
2749
  {
2750
2750
  type: "copilot",
2751
2751
  label: "4) GitHub Copilot Editor (AGENTS.md + Skill)"
@@ -4,7 +4,7 @@ import {
4
4
  formatInitResults,
5
5
  generateInitMdContent,
6
6
  runInit
7
- } from "./chunk-L5WU2HTN.js";
7
+ } from "./chunk-J2CBDLXB.js";
8
8
  import "./chunk-E2KFPEBT.js";
9
9
  export {
10
10
  ALL_CONFIG_TYPES,
@@ -176,16 +176,14 @@ function generateAiderConfig() {
176
176
  }
177
177
  function generateWindsurfSkill() {
178
178
  return [
179
- "# Kuma MCP \u2014 Windsurf Rules",
179
+ "# Kuma MCP \u2014 Windsurf",
180
180
  "",
181
- BOOTSTRAP,
181
+ "Windsurf Cascade agent: Kuma MCP tools are available.",
182
+ "All behavioral rules are in `.kuma/init.md`.",
183
+ "**Before coding, call `kuma_init()` to load project context.**",
184
+ "Project knowledge persists in `.kuma/memories/*.md` across sessions.",
182
185
  "",
183
- "\u{1F4D6} **Usage:**",
184
- " \u2022 `kuma_init()` \u2014 load project context (call first)",
185
- ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
186
- ' \u2022 `kuma_verify({action: "test"})` \u2014 verify after edits',
187
- " \u2022 `.kuma/init.md` \u2014 full behavioral rules",
188
- " \u2022 `.kuma/memories/` \u2014 persistent project knowledge"
186
+ "Also auto-detected via `.windsurf/skills/` and `.agents/skills/`."
189
187
  ].join("\n");
190
188
  }
191
189
  function generateCopilotSkill() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumpslabs/kuma",
3
- "version": "2.3.9",
3
+ "version": "2.3.10",
4
4
  "description": "Safety-first context & orchestration engine for AI coding agents. MCP server with mandatory research pipeline, knowledge graph, impact analysis, decision memory, and safety guard — works with any MCP client.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",