rrce-workflow 0.2.79 → 0.2.81

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.
@@ -2,7 +2,7 @@
2
2
  name: RRCE Doctor
3
3
  description: Analyze codebase health using semantic search; identify issues and recommend improvement tasks.
4
4
  argument-hint: "[PROJECT_NAME=<name>] [FOCUS_AREA=<area>]"
5
- tools: ['search_knowledge', 'get_project_context', 'index_knowledge', 'list_projects']
5
+ tools: ['search_knowledge', 'get_project_context', 'index_knowledge', 'list_projects', 'create_task']
6
6
  required-args: []
7
7
  optional-args:
8
8
  - name: PROJECT_NAME
@@ -55,7 +55,7 @@ For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
55
55
  ### Step 1: Load Project Context
56
56
 
57
57
  ```
58
- Tool: get_project_context
58
+ Tool: rrce_get_project_context
59
59
  Args: { "project": "{{WORKSPACE_NAME}}" }
60
60
  ```
61
61
 
@@ -93,7 +93,7 @@ Use `search_knowledge` to efficiently find problem areas. Run queries based on F
93
93
 
94
94
  **Query Execution:**
95
95
  ```
96
- Tool: search_knowledge
96
+ Tool: rrce_search_knowledge
97
97
  Args: { "query": "<query>", "project": "{{WORKSPACE_NAME}}" }
98
98
  ```
99
99
 
@@ -2,7 +2,7 @@
2
2
  name: RRCE Documentation
3
3
  description: Produce project documentation aligned with the latest delivery.
4
4
  argument-hint: "DOC_TYPE=<type> [TASK_SLUG=<slug> | TARGET_PATH=<relative>] [RELEASE_REF=<tag/sha>]"
5
- tools: ['search_knowledge', 'get_project_context', 'list_projects', 'read', 'write', 'edit', 'bash', 'glob', 'grep']
5
+ tools: ['search_knowledge', 'get_project_context', 'list_projects', 'update_task', 'read', 'write', 'edit', 'bash', 'glob', 'grep']
6
6
  required-args:
7
7
  - name: DOC_TYPE
8
8
  prompt: "Enter the documentation type (e.g., api, architecture, runbook, changelog)"
@@ -44,11 +44,16 @@ Pipeline Position
44
44
  1. **Path Resolution**: Always use the "System Resolved Paths" from the context preamble.
45
45
  - Use `{{RRCE_DATA}}` for all RRCE-specific storage.
46
46
  - Use `{{WORKSPACE_ROOT}}` for project source code.
47
- 2. **File Writing**: When using the `write` tool:
47
+ 2. **Metadata Updates**: For `meta.json` changes, use the MCP tool:
48
+ ```
49
+ Tool: rrce_update_task
50
+ Args: { "project": "{{WORKSPACE_NAME}}", "task_slug": "{{TASK_SLUG}}", "updates": { ... } }
51
+ ```
52
+ This tool saves the file automatically. Do NOT use `write` for meta.json.
53
+ 3. **File Writing**: When using the `write` tool for other files:
48
54
  - The `content` parameter **MUST be a string**.
49
- - If writing JSON (like `meta.json`), you **MUST stringify it** first.
50
- - Example: `write(filePath, JSON.stringify(data, null, 2))`
51
- 3. **Directory Safety**: Use `bash` with `mkdir -p` to ensure parent directories exist before writing files if they might be missing.
55
+ - For JSON in other files, stringify first: `JSON.stringify(data, null, 2)`
56
+ 4. **Directory Safety**: Use `bash` with `mkdir -p` to ensure parent directories exist before writing files if they might be missing.
52
57
 
53
58
  Prerequisites (RECOMMENDED)
54
59
  If a `TASK_SLUG` is provided:
@@ -2,7 +2,7 @@
2
2
  name: RRCE Executor
3
3
  description: Execute the planned tasks to deliver working code and tests. The ONLY agent authorized to modify source code.
4
4
  argument-hint: "TASK_SLUG=<slug> [BRANCH=<git ref>]"
5
- tools: ['search_knowledge', 'get_project_context', 'index_knowledge', 'terminalLastCommand', 'read', 'write', 'edit', 'bash', 'glob', 'grep']
5
+ tools: ['search_knowledge', 'get_project_context', 'index_knowledge', 'update_task', 'terminalLastCommand', 'read', 'write', 'edit', 'bash', 'glob', 'grep']
6
6
  required-args:
7
7
  - name: TASK_SLUG
8
8
  prompt: "Enter the task slug to execute"
@@ -79,11 +79,16 @@ Before touching ANY code, verify ALL of the following in order:
79
79
  1. **Path Resolution**: Always use the "System Resolved Paths" from the context preamble.
80
80
  - Use `{{RRCE_DATA}}` for all RRCE-specific storage.
81
81
  - Use `{{WORKSPACE_ROOT}}` for project source code.
82
- 2. **File Writing**: When using the `write` tool:
82
+ 2. **Metadata Updates**: For `meta.json` changes, use the MCP tool:
83
+ ```
84
+ Tool: rrce_update_task
85
+ Args: { "project": "{{WORKSPACE_NAME}}", "task_slug": "{{TASK_SLUG}}", "updates": { ... } }
86
+ ```
87
+ This tool saves the file automatically. Do NOT use `write` for meta.json.
88
+ 3. **File Writing**: When using the `write` tool for other files:
83
89
  - The `content` parameter **MUST be a string**.
84
- - If writing JSON (like `meta.json`), you **MUST stringify it** first.
85
- - Example: `write(filePath, JSON.stringify(data, null, 2))`
86
- 3. **Directory Safety**: Use `bash` with `mkdir -p` to ensure parent directories exist before writing files if they might be missing.
90
+ - For JSON in other files, stringify first: `JSON.stringify(data, null, 2)`
91
+ 4. **Directory Safety**: Use `bash` with `mkdir -p` to ensure parent directories exist before writing files if they might be missing.
87
92
 
88
93
  ## Mission
89
94
  - Implement the scoped work as defined in the execution plan
@@ -96,7 +101,7 @@ Before touching ANY code, verify ALL of the following in order:
96
101
 
97
102
  Before implementing, search for relevant patterns:
98
103
  ```
99
- Tool: search_knowledge
104
+ Tool: rrce_search_knowledge
100
105
  Args: { "query": "<component or pattern name>", "project": "{{WORKSPACE_NAME}}" }
101
106
  ```
102
107
 
@@ -262,7 +267,7 @@ After completing execution:
262
267
 
263
268
  If significant code was added or modified, suggest running:
264
269
  ```
265
- Tool: index_knowledge
270
+ Tool: rrce_index_knowledge
266
271
  Args: { "project": "{{WORKSPACE_NAME}}" }
267
272
  ```
268
273
 
@@ -132,7 +132,7 @@ Scan in this priority order. Stop early if sufficient information gathered:
132
132
  **Always run after generating/updating context:**
133
133
 
134
134
  ```
135
- Tool: index_knowledge
135
+ Tool: rrce_index_knowledge
136
136
  Args: { "project": "{{WORKSPACE_NAME}}" }
137
137
  ```
138
138
 
@@ -2,7 +2,7 @@
2
2
  name: RRCE Planning
3
3
  description: Transform research findings into an actionable execution plan through interactive task breakdown.
4
4
  argument-hint: "TASK_SLUG=<slug>"
5
- tools: ['search_knowledge', 'get_project_context', 'list_projects', 'read', 'glob', 'grep', 'write', 'bash']
5
+ tools: ['search_knowledge', 'get_project_context', 'list_projects', 'update_task', 'read', 'glob', 'grep', 'write', 'bash']
6
6
  required-args:
7
7
  - name: TASK_SLUG
8
8
  prompt: "Enter the task slug to create a plan for"
@@ -52,13 +52,18 @@ For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
52
52
  1. **Path Resolution**: Always use the "System Resolved Paths" from the context preamble.
53
53
  - Use `{{RRCE_DATA}}` for all RRCE-specific storage.
54
54
  - Use `{{WORKSPACE_ROOT}}` for reading project source code (READ ONLY).
55
- 2. **File Writing**: When using the `write` tool:
55
+ 2. **Metadata Updates**: For `meta.json` changes, use the MCP tool:
56
+ ```
57
+ Tool: rrce_update_task
58
+ Args: { "project": "{{WORKSPACE_NAME}}", "task_slug": "{{TASK_SLUG}}", "updates": { ... } }
59
+ ```
60
+ This tool saves the file automatically. Do NOT use `write` for meta.json.
61
+ 3. **File Writing**: When using the `write` tool for other files:
56
62
  - The `content` parameter **MUST be a string**.
57
- - If writing JSON (like `meta.json`), you **MUST stringify it** first.
58
- - Example: `write(filePath, JSON.stringify(data, null, 2))`
59
- 3. **Write Permissions**: You may ONLY write to:
63
+ - For JSON in other files, stringify first: `JSON.stringify(data, null, 2)`
64
+ 4. **Write Permissions**: You may ONLY write to:
60
65
  - `{{RRCE_DATA}}/tasks/{{TASK_SLUG}}/planning/` (plan artifacts)
61
- - `{{RRCE_DATA}}/tasks/{{TASK_SLUG}}/meta.json` (metadata)
66
+ - `{{RRCE_DATA}}/tasks/{{TASK_SLUG}}/meta.json` (metadata via rrce_update_task)
62
67
  - `{{RRCE_DATA}}/knowledge/` (new knowledge documents)
63
68
 
64
69
  ## Prerequisites (STRICT)
@@ -113,7 +118,7 @@ Extract and internalize:
113
118
 
114
119
  Search for related patterns and prior art:
115
120
  ```
116
- Tool: search_knowledge
121
+ Tool: rrce_search_knowledge
117
122
  Args: { "query": "<task keywords>", "project": "{{WORKSPACE_NAME}}" }
118
123
  ```
119
124
 
@@ -273,7 +278,7 @@ After saving the plan and updating metadata:
273
278
 
274
279
  If new knowledge files were created in `{{RRCE_DATA}}/knowledge/`, suggest running:
275
280
  ```
276
- Tool: index_knowledge
281
+ Tool: rrce_index_knowledge
277
282
  Args: { "project": "{{WORKSPACE_NAME}}" }
278
283
  ```
279
284
 
@@ -2,7 +2,7 @@
2
2
  name: RRCE Research
3
3
  description: Interactive research and requirements clarification through constructive dialogue. Achieves 100% understanding before planning.
4
4
  argument-hint: REQUEST="<user prompt>" [TASK_SLUG=<slug>] [TITLE="<task title>"] [SOURCE=<url>]
5
- tools: ['search_knowledge', 'get_project_context', 'list_projects', 'read', 'glob', 'grep', 'write', 'bash']
5
+ tools: ['search_knowledge', 'get_project_context', 'list_projects', 'create_task', 'update_task', 'read', 'glob', 'grep', 'write', 'bash']
6
6
  required-args:
7
7
  - name: TASK_SLUG
8
8
  prompt: "Enter a task slug (kebab-case identifier)"
@@ -57,13 +57,18 @@ For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
57
57
  1. **Path Resolution**: Always use the "System Resolved Paths" from the context preamble.
58
58
  - Use `{{RRCE_DATA}}` for all RRCE-specific storage.
59
59
  - Use `{{WORKSPACE_ROOT}}` for reading project source code (READ ONLY).
60
- 2. **File Writing**: When using the `write` tool:
60
+ 2. **Metadata Updates**: For `meta.json` changes, use the MCP tool:
61
+ ```
62
+ Tool: rrce_update_task
63
+ Args: { "project": "{{WORKSPACE_NAME}}", "task_slug": "{{TASK_SLUG}}", "updates": { ... } }
64
+ ```
65
+ This tool saves the file automatically. Do NOT use `write` for meta.json.
66
+ 3. **File Writing**: When using the `write` tool for other files:
61
67
  - The `content` parameter **MUST be a string**.
62
- - If writing JSON (like `meta.json`), you **MUST stringify it** first.
63
- - Example: `write(filePath, JSON.stringify(data, null, 2))`
64
- 3. **Write Permissions**: You may ONLY write to:
68
+ - For JSON in other files, stringify first: `JSON.stringify(data, null, 2)`
69
+ 4. **Write Permissions**: You may ONLY write to:
65
70
  - `{{RRCE_DATA}}/tasks/{{TASK_SLUG}}/` (task artifacts)
66
- - `{{RRCE_DATA}}/tasks/{{TASK_SLUG}}/meta.json` (metadata)
71
+ - `{{RRCE_DATA}}/tasks/{{TASK_SLUG}}/meta.json` (metadata via rrce_update_task)
67
72
 
68
73
  ## Mission
69
74
  - Challenge and refine the incoming request until intent, constraints, and success criteria are explicit
@@ -78,7 +83,7 @@ For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
78
83
  **Search existing knowledge for relevant context:**
79
84
 
80
85
  ```
81
- Tool: search_knowledge
86
+ Tool: rrce_search_knowledge
82
87
  Args: { "query": "<keywords from REQUEST>", "project": "{{WORKSPACE_NAME}}" }
83
88
  ```
84
89
 
@@ -91,7 +96,7 @@ Look for:
91
96
  **Get project context:**
92
97
 
93
98
  ```
94
- Tool: get_project_context
99
+ Tool: rrce_get_project_context
95
100
  Args: { "project": "{{WORKSPACE_NAME}}" }
96
101
  ```
97
102
 
@@ -2,7 +2,7 @@
2
2
  name: RRCE Sync
3
3
  description: Reconcile project state with the RRCE knowledge base and update semantic index.
4
4
  argument-hint: "[SCOPE=<path|module>]"
5
- tools: ['search_knowledge', 'get_project_context', 'index_knowledge', 'list_projects', 'read', 'write', 'edit', 'bash', 'glob', 'grep']
5
+ tools: ['search_knowledge', 'get_project_context', 'index_knowledge', 'list_projects', 'update_task', 'read', 'write', 'edit', 'bash', 'glob', 'grep']
6
6
  required-args: []
7
7
  optional-args:
8
8
  - name: SCOPE
@@ -27,11 +27,16 @@ Pipeline Position
27
27
  1. **Path Resolution**: Always use the "System Resolved Paths" from the context preamble.
28
28
  - Use `{{RRCE_DATA}}` for all RRCE-specific storage.
29
29
  - Use `{{WORKSPACE_ROOT}}` for project source code.
30
- 2. **File Writing**: When using the `write` tool:
30
+ 2. **Metadata Updates**: For `meta.json` changes, use the MCP tool:
31
+ ```
32
+ Tool: rrce_update_task
33
+ Args: { "project": "{{WORKSPACE_NAME}}", "task_slug": "{{TASK_SLUG}}", "updates": { ... } }
34
+ ```
35
+ This tool saves the file automatically. Do NOT use `write` for meta.json.
36
+ 3. **File Writing**: When using the `write` tool for other files:
31
37
  - The `content` parameter **MUST be a string**.
32
- - If writing JSON (like `meta.json`), you **MUST stringify it** first.
33
- - Example: `write(filePath, JSON.stringify(data, null, 2))`
34
- 3. **Directory Safety**: Use `bash` with `mkdir -p` to ensure parent directories exist before writing files if they might be missing.
38
+ - For JSON in other files, stringify first: `JSON.stringify(data, null, 2)`
39
+ 4. **Directory Safety**: Use `bash` with `mkdir -p` to ensure parent directories exist before writing files if they might be missing.
35
40
 
36
41
  Prerequisites (STRICT)
37
42
  1. **Project Context Exists**: Check `{{RRCE_DATA}}/knowledge/project-context.md` exists.
@@ -62,7 +67,7 @@ Workflow
62
67
  5. Summarize any unresolved questions or future sync needs at the bottom of the modified file(s) under a `Checklist` heading.
63
68
  6. **Semantic Indexing (MANDATORY)**: After updating any knowledge files, run the indexer to keep search current:
64
69
  ```
65
- Tool: index_knowledge
70
+ Tool: rrce_index_knowledge
66
71
  Args: { "project": "{{WORKSPACE_NAME}}" }
67
72
  ```
68
73
 
package/dist/index.js CHANGED
@@ -1260,7 +1260,7 @@ function copyPromptsToDir(prompts, targetDir, extension) {
1260
1260
  fs7.writeFileSync(targetPath, content);
1261
1261
  }
1262
1262
  }
1263
- function convertToOpenCodeAgent(prompt) {
1263
+ function convertToOpenCodeAgent(prompt, useFileReference = false, promptFilePath) {
1264
1264
  const { frontmatter, content } = prompt;
1265
1265
  const tools = {};
1266
1266
  const hostTools = ["read", "write", "edit", "bash", "grep", "glob", "webfetch", "terminalLastCommand"];
@@ -1277,7 +1277,7 @@ function convertToOpenCodeAgent(prompt) {
1277
1277
  return {
1278
1278
  description: frontmatter.description,
1279
1279
  mode: "primary",
1280
- prompt: content,
1280
+ prompt: useFileReference && promptFilePath ? `{file:${promptFilePath}}` : content,
1281
1281
  tools
1282
1282
  };
1283
1283
  }
@@ -1694,6 +1694,8 @@ async function installAgentPrompts(config, workspacePath, dataPaths) {
1694
1694
  if (primaryDataPath) {
1695
1695
  if (config.storageMode === "global") {
1696
1696
  try {
1697
+ const promptsDir = path12.join(path12.dirname(OPENCODE_CONFIG), "prompts");
1698
+ ensureDir(promptsDir);
1697
1699
  let opencodeConfig = { $schema: "https://opencode.ai/config.json" };
1698
1700
  if (fs10.existsSync(OPENCODE_CONFIG)) {
1699
1701
  opencodeConfig = JSON.parse(fs10.readFileSync(OPENCODE_CONFIG, "utf-8"));
@@ -1701,7 +1703,10 @@ async function installAgentPrompts(config, workspacePath, dataPaths) {
1701
1703
  if (!opencodeConfig.agent) opencodeConfig.agent = {};
1702
1704
  for (const prompt of prompts) {
1703
1705
  const baseName = path12.basename(prompt.filePath, ".md");
1704
- const agentConfig = convertToOpenCodeAgent(prompt);
1706
+ const promptFileName = `rrce-${baseName}.md`;
1707
+ const promptFilePath = path12.join(promptsDir, promptFileName);
1708
+ fs10.writeFileSync(promptFilePath, prompt.content);
1709
+ const agentConfig = convertToOpenCodeAgent(prompt, true, `./prompts/${promptFileName}`);
1705
1710
  opencodeConfig.agent[baseName] = agentConfig;
1706
1711
  }
1707
1712
  fs10.writeFileSync(OPENCODE_CONFIG, JSON.stringify(opencodeConfig, null, 2) + "\n");
@@ -2816,7 +2821,7 @@ function registerToolHandlers(server) {
2816
2821
  server.setRequestHandler(ListToolsRequestSchema, async () => {
2817
2822
  const tools = [
2818
2823
  {
2819
- name: "search_knowledge",
2824
+ name: "rrce_search_knowledge",
2820
2825
  description: "Search across all exposed project knowledge bases",
2821
2826
  inputSchema: {
2822
2827
  type: "object",
@@ -2828,7 +2833,7 @@ function registerToolHandlers(server) {
2828
2833
  }
2829
2834
  },
2830
2835
  {
2831
- name: "index_knowledge",
2836
+ name: "rrce_index_knowledge",
2832
2837
  description: "Update the semantic search index for a specific project",
2833
2838
  inputSchema: {
2834
2839
  type: "object",
@@ -2840,12 +2845,12 @@ function registerToolHandlers(server) {
2840
2845
  }
2841
2846
  },
2842
2847
  {
2843
- name: "list_projects",
2848
+ name: "rrce_list_projects",
2844
2849
  description: "List all projects exposed via MCP. Use these names for project-specific tools.",
2845
2850
  inputSchema: { type: "object", properties: {} }
2846
2851
  },
2847
2852
  {
2848
- name: "get_project_context",
2853
+ name: "rrce_get_project_context",
2849
2854
  description: "Get the project context/architecture for a specific project",
2850
2855
  inputSchema: {
2851
2856
  type: "object",
@@ -2854,12 +2859,12 @@ function registerToolHandlers(server) {
2854
2859
  }
2855
2860
  },
2856
2861
  {
2857
- name: "list_agents",
2862
+ name: "rrce_list_agents",
2858
2863
  description: "List available agents (e.g. init, plan) and their arguments. Use this to discover which agent to call.",
2859
2864
  inputSchema: { type: "object", properties: {} }
2860
2865
  },
2861
2866
  {
2862
- name: "get_agent_prompt",
2867
+ name: "rrce_get_agent_prompt",
2863
2868
  description: 'Get the system prompt for a specific agent. Accepts agent Name (e.g. "RRCE Init") or ID (e.g. "init").',
2864
2869
  inputSchema: {
2865
2870
  type: "object",
@@ -2871,7 +2876,7 @@ function registerToolHandlers(server) {
2871
2876
  }
2872
2877
  },
2873
2878
  {
2874
- name: "list_tasks",
2879
+ name: "rrce_list_tasks",
2875
2880
  description: "List all tasks for a project",
2876
2881
  inputSchema: {
2877
2882
  type: "object",
@@ -2880,7 +2885,7 @@ function registerToolHandlers(server) {
2880
2885
  }
2881
2886
  },
2882
2887
  {
2883
- name: "get_task",
2888
+ name: "rrce_get_task",
2884
2889
  description: "Get details of a specific task",
2885
2890
  inputSchema: {
2886
2891
  type: "object",
@@ -2892,7 +2897,7 @@ function registerToolHandlers(server) {
2892
2897
  }
2893
2898
  },
2894
2899
  {
2895
- name: "create_task",
2900
+ name: "rrce_create_task",
2896
2901
  description: "Create a new task in the project",
2897
2902
  inputSchema: {
2898
2903
  type: "object",
@@ -2906,7 +2911,7 @@ function registerToolHandlers(server) {
2906
2911
  }
2907
2912
  },
2908
2913
  {
2909
- name: "update_task",
2914
+ name: "rrce_update_task",
2910
2915
  description: "Update an existing task",
2911
2916
  inputSchema: {
2912
2917
  type: "object",
@@ -2919,7 +2924,7 @@ function registerToolHandlers(server) {
2919
2924
  }
2920
2925
  },
2921
2926
  {
2922
- name: "delete_task",
2927
+ name: "rrce_delete_task",
2923
2928
  description: "Delete a task from the project",
2924
2929
  inputSchema: {
2925
2930
  type: "object",
@@ -2934,7 +2939,7 @@ function registerToolHandlers(server) {
2934
2939
  const projects = getExposedProjects();
2935
2940
  if (projects.length === 0) {
2936
2941
  tools.push({
2937
- name: "help_setup",
2942
+ name: "rrce_help_setup",
2938
2943
  description: "Get help on how to configure projects for the RRCE MCP Server",
2939
2944
  inputSchema: { type: "object", properties: {} }
2940
2945
  });
@@ -2946,27 +2951,27 @@ function registerToolHandlers(server) {
2946
2951
  logger.info(`Calling tool: ${name}`, args);
2947
2952
  try {
2948
2953
  switch (name) {
2949
- case "search_knowledge": {
2954
+ case "rrce_search_knowledge": {
2950
2955
  const params = args;
2951
2956
  const results = await searchKnowledge(params.query, params.project);
2952
2957
  return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
2953
2958
  }
2954
- case "index_knowledge": {
2959
+ case "rrce_index_knowledge": {
2955
2960
  const params = args;
2956
2961
  const result = await indexKnowledge(params.project, params.force);
2957
2962
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
2958
2963
  }
2959
- case "list_projects": {
2964
+ case "rrce_list_projects": {
2960
2965
  const projects = getExposedProjects();
2961
2966
  const list = projects.map((p) => ({ name: p.name, source: p.source, path: p.path }));
2962
2967
  return {
2963
2968
  content: [{
2964
2969
  type: "text",
2965
- text: JSON.stringify(list, null, 2) + "\n\nTip: Use these project names for tools like `get_project_context` or `index_knowledge`."
2970
+ text: JSON.stringify(list, null, 2) + "\n\nTip: Use these project names for tools like `rrce_get_project_context` or `rrce_index_knowledge`."
2966
2971
  }]
2967
2972
  };
2968
2973
  }
2969
- case "get_project_context": {
2974
+ case "rrce_get_project_context": {
2970
2975
  const context = getProjectContext(args.project);
2971
2976
  if (!context) {
2972
2977
  const projects = getExposedProjects().map((p) => p.name).join(", ");
@@ -2977,7 +2982,7 @@ Available projects: ${projects}`;
2977
2982
  }
2978
2983
  return { content: [{ type: "text", text: context }] };
2979
2984
  }
2980
- case "list_agents": {
2985
+ case "rrce_list_agents": {
2981
2986
  const prompts = getAllPrompts();
2982
2987
  return {
2983
2988
  content: [{
@@ -2987,11 +2992,11 @@ Available projects: ${projects}`;
2987
2992
  id: p.id,
2988
2993
  description: p.description,
2989
2994
  arguments: p.arguments
2990
- })), null, 2) + "\n\nTip: Retrieve the prompt for an agent using `get_agent_prompt` with its name or ID."
2995
+ })), null, 2) + "\n\nTip: Retrieve the prompt for an agent using `rrce_get_agent_prompt` with its name or ID."
2991
2996
  }]
2992
2997
  };
2993
2998
  }
2994
- case "get_agent_prompt": {
2999
+ case "rrce_get_agent_prompt": {
2995
3000
  const params = args;
2996
3001
  const agentName = params.agent;
2997
3002
  const promptDef = getPromptDef(agentName);
@@ -3016,12 +3021,12 @@ The system has pre-resolved the configuration for this project. Use these values
3016
3021
  `;
3017
3022
  return { content: [{ type: "text", text: contextPreamble + rendered }] };
3018
3023
  }
3019
- case "list_tasks": {
3024
+ case "rrce_list_tasks": {
3020
3025
  const params = args;
3021
3026
  const tasks = getProjectTasks(params.project);
3022
3027
  return { content: [{ type: "text", text: JSON.stringify(tasks, null, 2) }] };
3023
3028
  }
3024
- case "get_task": {
3029
+ case "rrce_get_task": {
3025
3030
  const params = args;
3026
3031
  const task = getTask(params.project, params.task_slug);
3027
3032
  if (!task) {
@@ -3029,26 +3034,28 @@ The system has pre-resolved the configuration for this project. Use these values
3029
3034
  }
3030
3035
  return { content: [{ type: "text", text: JSON.stringify(task, null, 2) }] };
3031
3036
  }
3032
- case "create_task": {
3037
+ case "rrce_create_task": {
3033
3038
  const params = args;
3034
3039
  const taskData = {
3035
3040
  title: params.title || params.task_slug,
3036
3041
  summary: params.summary || ""
3037
3042
  };
3038
3043
  const task = await createTask(params.project, params.task_slug, taskData);
3039
- return { content: [{ type: "text", text: JSON.stringify(task, null, 2) }] };
3044
+ return { content: [{ type: "text", text: `\u2713 Task '${params.task_slug}' created. meta.json saved.
3045
+ ${JSON.stringify(task, null, 2)}` }] };
3040
3046
  }
3041
- case "update_task": {
3047
+ case "rrce_update_task": {
3042
3048
  const params = args;
3043
3049
  const task = await updateTask(params.project, params.task_slug, params.updates);
3044
- return { content: [{ type: "text", text: JSON.stringify(task, null, 2) }] };
3050
+ return { content: [{ type: "text", text: `\u2713 Task '${params.task_slug}' updated. meta.json saved.
3051
+ ${JSON.stringify(task, null, 2)}` }] };
3045
3052
  }
3046
- case "delete_task": {
3053
+ case "rrce_delete_task": {
3047
3054
  const params = args;
3048
3055
  const success = deleteTask(params.project, params.task_slug);
3049
- return { content: [{ type: "text", text: success ? `Task '${params.task_slug}' deleted.` : `Failed to delete task '${params.task_slug}'.` }] };
3056
+ return { content: [{ type: "text", text: success ? `\u2713 Task '${params.task_slug}' deleted.` : `\u2717 Failed to delete '${params.task_slug}'.` }] };
3050
3057
  }
3051
- case "help_setup": {
3058
+ case "rrce_help_setup": {
3052
3059
  const msg = `
3053
3060
  RRCE MCP Server is running, but no projects are configured/exposed.
3054
3061
 
@@ -3286,7 +3293,7 @@ async function handleConfigure() {
3286
3293
  enableSemanticSearch = shouldEnable;
3287
3294
  if (enableSemanticSearch) {
3288
3295
  note3(
3289
- `This enables "search_knowledge" tool for agents.
3296
+ `This enables "rrce_search_knowledge" tool for agents.
3290
3297
  First use will download a ~100MB embedding model (all-MiniLM-L6-v2)
3291
3298
  to your local device (one-time).`,
3292
3299
  "Semantic Search Enabled"
@@ -5013,6 +5020,8 @@ ${dataPaths.map((p) => ` \u2022 ${p}`).join("\n")}`,
5013
5020
  function updateOpenCodeAgents(prompts, mode, primaryDataPath) {
5014
5021
  if (mode === "global") {
5015
5022
  try {
5023
+ const promptsDir = path19.join(path19.dirname(OPENCODE_CONFIG), "prompts");
5024
+ ensureDir(promptsDir);
5016
5025
  let opencodeConfig = { $schema: "https://opencode.ai/config.json" };
5017
5026
  if (fs18.existsSync(OPENCODE_CONFIG)) {
5018
5027
  opencodeConfig = JSON.parse(fs18.readFileSync(OPENCODE_CONFIG, "utf-8"));
@@ -5026,11 +5035,18 @@ function updateOpenCodeAgents(prompts, mode, primaryDataPath) {
5026
5035
  const stillExists = currentAgentNames.includes(existingName);
5027
5036
  if (isRrceAgent && !stillExists) {
5028
5037
  delete opencodeConfig.agent[existingName];
5038
+ const oldPromptFile = path19.join(promptsDir, `rrce-${existingName}.md`);
5039
+ if (fs18.existsSync(oldPromptFile)) {
5040
+ fs18.unlinkSync(oldPromptFile);
5041
+ }
5029
5042
  }
5030
5043
  }
5031
5044
  for (const prompt of prompts) {
5032
5045
  const baseName = path19.basename(prompt.filePath, ".md");
5033
- const agentConfig = convertToOpenCodeAgent(prompt);
5046
+ const promptFileName = `rrce-${baseName}.md`;
5047
+ const promptFilePath = path19.join(promptsDir, promptFileName);
5048
+ fs18.writeFileSync(promptFilePath, prompt.content);
5049
+ const agentConfig = convertToOpenCodeAgent(prompt, true, `./prompts/${promptFileName}`);
5034
5050
  opencodeConfig.agent[baseName] = agentConfig;
5035
5051
  }
5036
5052
  fs18.writeFileSync(OPENCODE_CONFIG, JSON.stringify(opencodeConfig, null, 2) + "\n");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rrce-workflow",
3
- "version": "0.2.79",
3
+ "version": "0.2.81",
4
4
  "description": "RRCE-Workflow TUI - Agentic code workflow generator for AI-assisted development",
5
5
  "author": "RRCE Team",
6
6
  "license": "MIT",