mulmoclaude 1.27.0 → 2.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmoclaude",
3
- "version": "1.27.0",
3
+ "version": "2.0.0",
4
4
  "description": "MulmoClaude — GUI-chat with Claude Code + long-term memory. One command to start.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -39,7 +39,7 @@
39
39
  "@mulmoclaude/chart-plugin": "^4.0.1",
40
40
  "@mulmoclaude/collection-plugin": "^5.5.0",
41
41
  "@mulmoclaude/common": "^1.4.0",
42
- "@mulmoclaude/core": "^5.10.1",
42
+ "@mulmoclaude/core": "^5.11.0",
43
43
  "@mulmoclaude/form-plugin": "^2.1.0",
44
44
  "@mulmoclaude/google-plugin": "^4.1.0",
45
45
  "@mulmoclaude/html-plugin": "^5.0.1",
@@ -103,7 +103,7 @@ export function getActiveToolDescriptors(role: Role): ActiveToolDescriptor[] {
103
103
  name: toolName,
104
104
  fullName: fullNameFor(toolName),
105
105
  description: tool.definition.description,
106
- prompt: tool.prompt,
106
+ prompt: toolPromptFor(tool, tool.packageName),
107
107
  // pure MCP tools dispatch internally — no external endpoint
108
108
  source: "static-mcp",
109
109
  });
@@ -1,3 +1,4 @@
1
+ import type { PromptFilesSource } from "@mulmoclaude/core/prompt-files";
1
2
  import { Router, Request, Response } from "express";
2
3
  import { readXPost, searchX } from "@mulmoclaude/x-plugin";
3
4
  import { notify } from "./notify.js";
@@ -31,6 +32,12 @@ export interface McpTool {
31
32
  };
32
33
  requiredEnv?: string[];
33
34
  prompt?: string;
35
+ /** Optional prompt split (`@mulmoclaude/core/prompt-files`): injected instead
36
+ * of `prompt` once `promptFiles` are written under `packageName`'s directory. */
37
+ promptCompact?: string;
38
+ promptFiles?: Record<string, string>;
39
+ /** npm package the tool ships in — names the prompt-files directory. */
40
+ packageName?: string;
34
41
  /** When true, the tool is offered to EVERY role regardless of
35
42
  * `role.availablePlugins` — like a built-in (Bash/Read/Write).
36
43
  * `getActiveToolDescriptors` (server/agent/activeTools.ts) skips
@@ -66,6 +73,11 @@ export function isMcpToolEnabled(tool: McpTool): boolean {
66
73
  return (tool.requiredEnv ?? []).every((key) => Boolean(process.env[key]));
67
74
  }
68
75
 
76
+ /** The MCP tools whose prompt files the host writes at startup. */
77
+ export const MCP_TOOL_PROMPT_FILE_SOURCES: readonly PromptFilesSource[] = mcpTools.flatMap((tool) =>
78
+ tool.packageName ? [{ packageName: tool.packageName, definition: tool }] : [],
79
+ );
80
+
69
81
  export const mcpToolsRouter = Router();
70
82
 
71
83
  interface McpToolParams {
@@ -57,7 +57,10 @@ export function makeManageCollectionTool(deps: ManageCollectionDeps = {}): Retur
57
57
  return makeCoreTool({ bundledHelpsDir: helpsAssetDir, sandboxWorkspacePath: CONTAINER_WORKSPACE_PATH, ...deps });
58
58
  }
59
59
 
60
- export const manageCollection = makeManageCollectionTool({
61
- ablateValidation: isAblated("validation") || undefined,
62
- refreshAfterWrite: defaultRefresh,
63
- });
60
+ export const manageCollection = {
61
+ ...makeManageCollectionTool({
62
+ ablateValidation: isAblated("validation") || undefined,
63
+ refreshAfterWrite: defaultRefresh,
64
+ }),
65
+ packageName: "@mulmoclaude/core",
66
+ };