musubi-sdd 5.1.0 → 5.6.1

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.
Files changed (232) hide show
  1. package/README.ja.md +106 -48
  2. package/README.md +110 -32
  3. package/bin/musubi-analyze.js +74 -67
  4. package/bin/musubi-browser.js +27 -26
  5. package/bin/musubi-change.js +48 -47
  6. package/bin/musubi-checkpoint.js +10 -7
  7. package/bin/musubi-convert.js +25 -25
  8. package/bin/musubi-costs.js +27 -10
  9. package/bin/musubi-gui.js +52 -46
  10. package/bin/musubi-init.js +1952 -10
  11. package/bin/musubi-orchestrate.js +327 -239
  12. package/bin/musubi-remember.js +69 -56
  13. package/bin/musubi-resolve.js +53 -45
  14. package/bin/musubi-trace.js +51 -22
  15. package/bin/musubi-validate.js +39 -30
  16. package/bin/musubi-workflow.js +33 -34
  17. package/bin/musubi.js +39 -2
  18. package/package.json +1 -1
  19. package/src/agents/agent-loop.js +94 -95
  20. package/src/agents/agentic/code-generator.js +119 -109
  21. package/src/agents/agentic/code-reviewer.js +105 -108
  22. package/src/agents/agentic/index.js +4 -4
  23. package/src/agents/browser/action-executor.js +13 -13
  24. package/src/agents/browser/ai-comparator.js +11 -10
  25. package/src/agents/browser/context-manager.js +6 -6
  26. package/src/agents/browser/index.js +5 -5
  27. package/src/agents/browser/nl-parser.js +31 -46
  28. package/src/agents/browser/screenshot.js +2 -2
  29. package/src/agents/browser/test-generator.js +6 -4
  30. package/src/agents/function-tool.js +71 -65
  31. package/src/agents/index.js +7 -7
  32. package/src/agents/schema-generator.js +98 -94
  33. package/src/analyzers/ast-extractor.js +158 -146
  34. package/src/analyzers/codegraph-auto-update.js +858 -0
  35. package/src/analyzers/complexity-analyzer.js +536 -0
  36. package/src/analyzers/context-optimizer.js +241 -126
  37. package/src/analyzers/impact-analyzer.js +1 -1
  38. package/src/analyzers/large-project-analyzer.js +766 -0
  39. package/src/analyzers/repository-map.js +77 -81
  40. package/src/analyzers/security-analyzer.js +19 -11
  41. package/src/analyzers/stuck-detector.js +19 -17
  42. package/src/converters/index.js +78 -57
  43. package/src/converters/ir/types.js +12 -12
  44. package/src/converters/parsers/musubi-parser.js +134 -126
  45. package/src/converters/parsers/openapi-parser.js +70 -53
  46. package/src/converters/parsers/speckit-parser.js +239 -175
  47. package/src/converters/writers/musubi-writer.js +123 -118
  48. package/src/converters/writers/speckit-writer.js +124 -113
  49. package/src/generators/rust-migration-generator.js +512 -0
  50. package/src/gui/public/index.html +1365 -1211
  51. package/src/gui/server.js +41 -40
  52. package/src/gui/services/file-watcher.js +23 -8
  53. package/src/gui/services/project-scanner.js +26 -20
  54. package/src/gui/services/replanning-service.js +27 -23
  55. package/src/gui/services/traceability-service.js +8 -8
  56. package/src/gui/services/workflow-service.js +14 -7
  57. package/src/index.js +151 -0
  58. package/src/integrations/cicd.js +90 -104
  59. package/src/integrations/codegraph-mcp.js +643 -0
  60. package/src/integrations/documentation.js +142 -103
  61. package/src/integrations/examples.js +95 -80
  62. package/src/integrations/github-client.js +17 -17
  63. package/src/integrations/index.js +5 -5
  64. package/src/integrations/mcp/index.js +21 -21
  65. package/src/integrations/mcp/mcp-context-provider.js +76 -78
  66. package/src/integrations/mcp/mcp-discovery.js +74 -72
  67. package/src/integrations/mcp/mcp-tool-registry.js +99 -94
  68. package/src/integrations/mcp-connector.js +70 -66
  69. package/src/integrations/platforms.js +50 -49
  70. package/src/integrations/tool-discovery.js +37 -31
  71. package/src/llm-providers/anthropic-provider.js +11 -11
  72. package/src/llm-providers/base-provider.js +16 -18
  73. package/src/llm-providers/copilot-provider.js +22 -19
  74. package/src/llm-providers/index.js +26 -25
  75. package/src/llm-providers/ollama-provider.js +11 -11
  76. package/src/llm-providers/openai-provider.js +12 -12
  77. package/src/managers/agent-memory.js +36 -24
  78. package/src/managers/checkpoint-manager.js +4 -8
  79. package/src/managers/delta-spec.js +19 -19
  80. package/src/managers/index.js +13 -4
  81. package/src/managers/memory-condenser.js +35 -45
  82. package/src/managers/repo-skill-manager.js +57 -31
  83. package/src/managers/skill-loader.js +25 -22
  84. package/src/managers/skill-tools.js +36 -72
  85. package/src/managers/workflow.js +30 -22
  86. package/src/monitoring/cost-tracker.js +48 -46
  87. package/src/monitoring/incident-manager.js +116 -106
  88. package/src/monitoring/index.js +144 -134
  89. package/src/monitoring/observability.js +75 -62
  90. package/src/monitoring/quality-dashboard.js +45 -41
  91. package/src/monitoring/release-manager.js +63 -53
  92. package/src/orchestration/agent-skill-binding.js +39 -47
  93. package/src/orchestration/error-handler.js +65 -107
  94. package/src/orchestration/guardrails/base-guardrail.js +26 -24
  95. package/src/orchestration/guardrails/guardrail-rules.js +50 -64
  96. package/src/orchestration/guardrails/index.js +5 -5
  97. package/src/orchestration/guardrails/input-guardrail.js +58 -45
  98. package/src/orchestration/guardrails/output-guardrail.js +104 -81
  99. package/src/orchestration/guardrails/safety-check.js +79 -79
  100. package/src/orchestration/index.js +38 -55
  101. package/src/orchestration/mcp-tool-adapters.js +96 -99
  102. package/src/orchestration/orchestration-engine.js +21 -21
  103. package/src/orchestration/pattern-registry.js +60 -45
  104. package/src/orchestration/patterns/auto.js +34 -47
  105. package/src/orchestration/patterns/group-chat.js +59 -65
  106. package/src/orchestration/patterns/handoff.js +67 -65
  107. package/src/orchestration/patterns/human-in-loop.js +51 -72
  108. package/src/orchestration/patterns/nested.js +25 -40
  109. package/src/orchestration/patterns/sequential.js +35 -34
  110. package/src/orchestration/patterns/swarm.js +63 -56
  111. package/src/orchestration/patterns/triage.js +150 -109
  112. package/src/orchestration/reasoning/index.js +9 -9
  113. package/src/orchestration/reasoning/planning-engine.js +143 -140
  114. package/src/orchestration/reasoning/reasoning-engine.js +206 -144
  115. package/src/orchestration/reasoning/self-correction.js +121 -128
  116. package/src/orchestration/replanning/adaptive-goal-modifier.js +107 -112
  117. package/src/orchestration/replanning/alternative-generator.js +37 -42
  118. package/src/orchestration/replanning/config.js +63 -59
  119. package/src/orchestration/replanning/goal-progress-tracker.js +98 -100
  120. package/src/orchestration/replanning/index.js +24 -20
  121. package/src/orchestration/replanning/plan-evaluator.js +49 -50
  122. package/src/orchestration/replanning/plan-monitor.js +32 -28
  123. package/src/orchestration/replanning/proactive-path-optimizer.js +175 -178
  124. package/src/orchestration/replanning/replan-history.js +33 -26
  125. package/src/orchestration/replanning/replanning-engine.js +106 -108
  126. package/src/orchestration/skill-executor.js +107 -109
  127. package/src/orchestration/skill-registry.js +85 -89
  128. package/src/orchestration/workflow-examples.js +228 -231
  129. package/src/orchestration/workflow-executor.js +65 -68
  130. package/src/orchestration/workflow-orchestrator.js +72 -73
  131. package/src/phase4-integration.js +47 -40
  132. package/src/phase5-integration.js +89 -30
  133. package/src/reporters/coverage-report.js +82 -30
  134. package/src/reporters/hierarchical-reporter.js +498 -0
  135. package/src/reporters/traceability-matrix-report.js +29 -20
  136. package/src/resolvers/issue-resolver.js +43 -31
  137. package/src/steering/advanced-validation.js +133 -124
  138. package/src/steering/auto-updater.js +60 -73
  139. package/src/steering/index.js +6 -6
  140. package/src/steering/quality-metrics.js +41 -35
  141. package/src/steering/steering-auto-update.js +83 -86
  142. package/src/steering/steering-validator.js +98 -106
  143. package/src/steering/template-constraints.js +53 -54
  144. package/src/templates/agents/claude-code/CLAUDE.md +32 -32
  145. package/src/templates/agents/claude-code/skills/agent-assistant/SKILL.md +13 -5
  146. package/src/templates/agents/claude-code/skills/ai-ml-engineer/mlops-guide.md +23 -23
  147. package/src/templates/agents/claude-code/skills/ai-ml-engineer/model-card-template.md +60 -41
  148. package/src/templates/agents/claude-code/skills/api-designer/api-patterns.md +27 -19
  149. package/src/templates/agents/claude-code/skills/api-designer/openapi-template.md +11 -7
  150. package/src/templates/agents/claude-code/skills/bug-hunter/SKILL.md +4 -3
  151. package/src/templates/agents/claude-code/skills/bug-hunter/root-cause-analysis.md +37 -15
  152. package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md +36 -42
  153. package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md +69 -60
  154. package/src/templates/agents/claude-code/skills/cloud-architect/aws-patterns.md +31 -38
  155. package/src/templates/agents/claude-code/skills/cloud-architect/azure-patterns.md +28 -23
  156. package/src/templates/agents/claude-code/skills/code-reviewer/SKILL.md +61 -0
  157. package/src/templates/agents/claude-code/skills/code-reviewer/best-practices.md +27 -0
  158. package/src/templates/agents/claude-code/skills/code-reviewer/review-checklist.md +29 -10
  159. package/src/templates/agents/claude-code/skills/code-reviewer/review-standards.md +29 -24
  160. package/src/templates/agents/claude-code/skills/constitution-enforcer/SKILL.md +8 -6
  161. package/src/templates/agents/claude-code/skills/constitution-enforcer/constitutional-articles.md +62 -26
  162. package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +35 -16
  163. package/src/templates/agents/claude-code/skills/database-administrator/backup-recovery.md +27 -17
  164. package/src/templates/agents/claude-code/skills/database-administrator/tuning-guide.md +25 -20
  165. package/src/templates/agents/claude-code/skills/database-schema-designer/schema-patterns.md +39 -22
  166. package/src/templates/agents/claude-code/skills/devops-engineer/ci-cd-templates.md +25 -22
  167. package/src/templates/agents/claude-code/skills/issue-resolver/SKILL.md +24 -21
  168. package/src/templates/agents/claude-code/skills/orchestrator/SKILL.md +148 -63
  169. package/src/templates/agents/claude-code/skills/orchestrator/patterns.md +35 -16
  170. package/src/templates/agents/claude-code/skills/orchestrator/selection-matrix.md +69 -64
  171. package/src/templates/agents/claude-code/skills/performance-engineer/optimization-playbook.md +47 -47
  172. package/src/templates/agents/claude-code/skills/performance-optimizer/SKILL.md +69 -0
  173. package/src/templates/agents/claude-code/skills/performance-optimizer/benchmark-template.md +63 -45
  174. package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md +33 -35
  175. package/src/templates/agents/claude-code/skills/project-manager/SKILL.md +7 -6
  176. package/src/templates/agents/claude-code/skills/project-manager/agile-ceremonies.md +47 -28
  177. package/src/templates/agents/claude-code/skills/project-manager/project-templates.md +94 -78
  178. package/src/templates/agents/claude-code/skills/quality-assurance/SKILL.md +20 -17
  179. package/src/templates/agents/claude-code/skills/quality-assurance/qa-plan-template.md +63 -49
  180. package/src/templates/agents/claude-code/skills/release-coordinator/SKILL.md +5 -5
  181. package/src/templates/agents/claude-code/skills/release-coordinator/feature-flag-guide.md +30 -26
  182. package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md +67 -35
  183. package/src/templates/agents/claude-code/skills/requirements-analyst/ears-format.md +54 -42
  184. package/src/templates/agents/claude-code/skills/requirements-analyst/validation-rules.md +36 -33
  185. package/src/templates/agents/claude-code/skills/security-auditor/SKILL.md +77 -19
  186. package/src/templates/agents/claude-code/skills/security-auditor/audit-checklists.md +24 -24
  187. package/src/templates/agents/claude-code/skills/security-auditor/owasp-top-10.md +61 -20
  188. package/src/templates/agents/claude-code/skills/security-auditor/vulnerability-patterns.md +43 -11
  189. package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +1 -0
  190. package/src/templates/agents/claude-code/skills/site-reliability-engineer/incident-response-template.md +55 -25
  191. package/src/templates/agents/claude-code/skills/site-reliability-engineer/observability-patterns.md +78 -68
  192. package/src/templates/agents/claude-code/skills/site-reliability-engineer/slo-sli-guide.md +73 -53
  193. package/src/templates/agents/claude-code/skills/software-developer/solid-principles.md +83 -37
  194. package/src/templates/agents/claude-code/skills/software-developer/test-first-workflow.md +38 -31
  195. package/src/templates/agents/claude-code/skills/steering/SKILL.md +1 -0
  196. package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +31 -0
  197. package/src/templates/agents/claude-code/skills/system-architect/adr-template.md +25 -7
  198. package/src/templates/agents/claude-code/skills/system-architect/c4-model-guide.md +74 -61
  199. package/src/templates/agents/claude-code/skills/technical-writer/doc-templates/documentation-templates.md +70 -52
  200. package/src/templates/agents/claude-code/skills/test-engineer/SKILL.md +2 -0
  201. package/src/templates/agents/claude-code/skills/test-engineer/ears-test-mapping.md +75 -71
  202. package/src/templates/agents/claude-code/skills/test-engineer/test-types.md +85 -63
  203. package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +39 -36
  204. package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +22 -17
  205. package/src/templates/agents/claude-code/skills/ui-ux-designer/SKILL.md +1 -0
  206. package/src/templates/agents/claude-code/skills/ui-ux-designer/accessibility-guidelines.md +49 -75
  207. package/src/templates/agents/claude-code/skills/ui-ux-designer/design-system-components.md +71 -59
  208. package/src/templates/agents/codex/AGENTS.md +74 -42
  209. package/src/templates/agents/cursor/AGENTS.md +74 -42
  210. package/src/templates/agents/gemini-cli/GEMINI.md +74 -42
  211. package/src/templates/agents/github-copilot/AGENTS.md +83 -51
  212. package/src/templates/agents/qwen-code/QWEN.md +74 -42
  213. package/src/templates/agents/windsurf/AGENTS.md +74 -42
  214. package/src/templates/architectures/README.md +41 -0
  215. package/src/templates/architectures/clean-architecture/README.md +113 -0
  216. package/src/templates/architectures/event-driven/README.md +162 -0
  217. package/src/templates/architectures/hexagonal/README.md +130 -0
  218. package/src/templates/index.js +6 -1
  219. package/src/templates/locale-manager.js +16 -16
  220. package/src/templates/shared/delta-spec-template.md +20 -13
  221. package/src/templates/shared/github-actions/musubi-issue-resolver.yml +5 -5
  222. package/src/templates/shared/github-actions/musubi-security-check.yml +3 -3
  223. package/src/templates/shared/github-actions/musubi-validate.yml +4 -4
  224. package/src/templates/shared/steering/structure.md +95 -0
  225. package/src/templates/skills/browser-agent.md +21 -16
  226. package/src/templates/skills/web-gui.md +8 -0
  227. package/src/templates/template-constraints.js +50 -53
  228. package/src/validators/advanced-validation.js +30 -36
  229. package/src/validators/constitutional-validator.js +77 -73
  230. package/src/validators/critic-system.js +49 -59
  231. package/src/validators/delta-format.js +59 -55
  232. package/src/validators/traceability-validator.js +7 -11
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP Tool Adapters - Bidirectional MCP-Skill Integration
3
3
  * Sprint 3.3.5: MCP Tool Ecosystem
4
- *
4
+ *
5
5
  * Features:
6
6
  * - MCP tool to MUSUBI skill conversion
7
7
  * - MUSUBI skill to MCP tool export
@@ -19,7 +19,7 @@ const MCPTransport = {
19
19
  STDIO: 'stdio',
20
20
  SSE: 'sse',
21
21
  HTTP: 'http',
22
- WEBSOCKET: 'websocket'
22
+ WEBSOCKET: 'websocket',
23
23
  };
24
24
 
25
25
  /**
@@ -27,7 +27,7 @@ const MCPTransport = {
27
27
  */
28
28
  const AdapterDirection = {
29
29
  MCP_TO_SKILL: 'mcp-to-skill',
30
- SKILL_TO_MCP: 'skill-to-mcp'
30
+ SKILL_TO_MCP: 'skill-to-mcp',
31
31
  };
32
32
 
33
33
  /**
@@ -45,18 +45,18 @@ class MCPToolDefinition {
45
45
 
46
46
  validate() {
47
47
  const errors = [];
48
-
48
+
49
49
  if (!this.name) {
50
50
  errors.push('Tool name is required');
51
51
  }
52
-
52
+
53
53
  if (!this.inputSchema || this.inputSchema.type !== 'object') {
54
54
  errors.push('Input schema must be an object type');
55
55
  }
56
-
56
+
57
57
  return {
58
58
  valid: errors.length === 0,
59
- errors
59
+ errors,
60
60
  };
61
61
  }
62
62
  }
@@ -73,14 +73,14 @@ class SchemaTranslator {
73
73
  return {
74
74
  type: 'object',
75
75
  properties: {},
76
- required: []
76
+ required: [],
77
77
  };
78
78
  }
79
79
 
80
80
  const musubiSchema = {
81
81
  type: mcpSchema.type || 'object',
82
82
  properties: {},
83
- required: mcpSchema.required || []
83
+ required: mcpSchema.required || [],
84
84
  };
85
85
 
86
86
  if (mcpSchema.properties) {
@@ -91,7 +91,7 @@ class SchemaTranslator {
91
91
 
92
92
  // Add MUSUBI-specific metadata
93
93
  musubiSchema.$schema = 'https://musubi.dev/schemas/skill-input/v1';
94
-
94
+
95
95
  return musubiSchema;
96
96
  }
97
97
 
@@ -102,13 +102,13 @@ class SchemaTranslator {
102
102
  if (!musubiSchema) {
103
103
  return {
104
104
  type: 'object',
105
- properties: {}
105
+ properties: {},
106
106
  };
107
107
  }
108
108
 
109
109
  const mcpSchema = {
110
110
  type: musubiSchema.type || 'object',
111
- properties: {}
111
+ properties: {},
112
112
  };
113
113
 
114
114
  if (musubiSchema.required && musubiSchema.required.length > 0) {
@@ -129,7 +129,7 @@ class SchemaTranslator {
129
129
  */
130
130
  static _translateProperty(prop) {
131
131
  const result = {
132
- type: prop.type || 'string'
132
+ type: prop.type || 'string',
133
133
  };
134
134
 
135
135
  if (prop.description) {
@@ -173,7 +173,7 @@ class SchemaTranslator {
173
173
  */
174
174
  static _translatePropertyToMcp(prop) {
175
175
  const result = {
176
- type: prop.type || 'string'
176
+ type: prop.type || 'string',
177
177
  };
178
178
 
179
179
  if (prop.description) {
@@ -219,7 +219,7 @@ class MCPToSkillAdapter extends EventEmitter {
219
219
  this.retryConfig = options.retry || {
220
220
  maxRetries: 3,
221
221
  baseDelay: 1000,
222
- maxDelay: 10000
222
+ maxDelay: 10000,
223
223
  };
224
224
  }
225
225
 
@@ -239,7 +239,7 @@ class MCPToSkillAdapter extends EventEmitter {
239
239
  transport,
240
240
  endpoint,
241
241
  status: 'connected',
242
- registeredAt: new Date()
242
+ registeredAt: new Date(),
243
243
  });
244
244
 
245
245
  // Import tools as skills
@@ -253,9 +253,9 @@ class MCPToSkillAdapter extends EventEmitter {
253
253
  }
254
254
  }
255
255
 
256
- this.emit('server-registered', {
257
- serverId: id,
258
- skillCount: importedSkills.length
256
+ this.emit('server-registered', {
257
+ serverId: id,
258
+ skillCount: importedSkills.length,
259
259
  });
260
260
 
261
261
  return importedSkills;
@@ -267,14 +267,14 @@ class MCPToSkillAdapter extends EventEmitter {
267
267
  async importTool(serverId, mcpTool) {
268
268
  const toolDef = new MCPToolDefinition(mcpTool);
269
269
  const validation = toolDef.validate();
270
-
270
+
271
271
  if (!validation.valid) {
272
272
  throw new Error(`Invalid MCP tool: ${validation.errors.join(', ')}`);
273
273
  }
274
274
 
275
275
  // Generate skill ID from server and tool name
276
276
  const skillId = `mcp.${serverId}.${mcpTool.name}`;
277
-
277
+
278
278
  // Create skill definition
279
279
  const skillDefinition = {
280
280
  id: skillId,
@@ -287,8 +287,8 @@ class MCPToSkillAdapter extends EventEmitter {
287
287
  type: 'object',
288
288
  properties: {
289
289
  content: { type: 'array' },
290
- isError: { type: 'boolean' }
291
- }
290
+ isError: { type: 'boolean' },
291
+ },
292
292
  },
293
293
  tags: ['mcp', `mcp-server:${serverId}`],
294
294
  metadata: {
@@ -296,12 +296,12 @@ class MCPToSkillAdapter extends EventEmitter {
296
296
  serverId,
297
297
  originalName: mcpTool.name,
298
298
  transport: toolDef.transport,
299
- annotations: mcpTool.annotations || {}
299
+ annotations: mcpTool.annotations || {},
300
300
  },
301
301
  // Execution handler
302
- handler: async (input) => {
302
+ handler: async input => {
303
303
  return this.executeMCPTool(serverId, mcpTool.name, input);
304
- }
304
+ },
305
305
  };
306
306
 
307
307
  // Store adapter mapping
@@ -309,7 +309,7 @@ class MCPToSkillAdapter extends EventEmitter {
309
309
  skillId,
310
310
  serverId,
311
311
  toolName: mcpTool.name,
312
- definition: toolDef
312
+ definition: toolDef,
313
313
  });
314
314
 
315
315
  // Register with skill registry if available
@@ -327,7 +327,7 @@ class MCPToSkillAdapter extends EventEmitter {
327
327
  */
328
328
  async executeMCPTool(serverId, toolName, input) {
329
329
  const connection = this.connections.get(serverId);
330
-
330
+
331
331
  if (!connection) {
332
332
  throw new Error(`Server ${serverId} not found`);
333
333
  }
@@ -345,24 +345,23 @@ class MCPToSkillAdapter extends EventEmitter {
345
345
  method: 'tools/call',
346
346
  params: {
347
347
  name: toolName,
348
- arguments: input
348
+ arguments: input,
349
349
  },
350
- id: this._generateRequestId()
350
+ id: this._generateRequestId(),
351
351
  };
352
352
 
353
353
  // Execute based on transport
354
354
  const response = await this._sendRequest(connection, request);
355
355
 
356
356
  const duration = Date.now() - startTime;
357
- this.emit('tool-executed', {
358
- serverId,
359
- toolName,
357
+ this.emit('tool-executed', {
358
+ serverId,
359
+ toolName,
360
360
  duration,
361
- success: !response.isError
361
+ success: !response.isError,
362
362
  });
363
363
 
364
364
  return response;
365
-
366
365
  } catch (error) {
367
366
  this.emit('tool-error', { serverId, toolName, error });
368
367
  throw error;
@@ -375,20 +374,20 @@ class MCPToSkillAdapter extends EventEmitter {
375
374
  async _sendRequest(connection, request) {
376
375
  // Note: This is a simplified implementation
377
376
  // Real implementation would handle actual transport protocols
378
-
377
+
379
378
  switch (connection.transport) {
380
379
  case MCPTransport.STDIO:
381
380
  return this._sendStdioRequest(connection, request);
382
-
381
+
383
382
  case MCPTransport.HTTP:
384
383
  return this._sendHttpRequest(connection, request);
385
-
384
+
386
385
  case MCPTransport.SSE:
387
386
  return this._sendSseRequest(connection, request);
388
-
387
+
389
388
  case MCPTransport.WEBSOCKET:
390
389
  return this._sendWebSocketRequest(connection, request);
391
-
390
+
392
391
  default:
393
392
  throw new Error(`Unsupported transport: ${connection.transport}`);
394
393
  }
@@ -397,7 +396,7 @@ class MCPToSkillAdapter extends EventEmitter {
397
396
  /**
398
397
  * Stdio transport (placeholder)
399
398
  */
400
- async _sendStdioRequest(connection, request) {
399
+ async _sendStdioRequest(_connection, _request) {
401
400
  // Placeholder for stdio transport implementation
402
401
  // In real implementation, this would:
403
402
  // 1. Spawn child process
@@ -405,40 +404,40 @@ class MCPToSkillAdapter extends EventEmitter {
405
404
  // 3. Read response from stdout
406
405
  return {
407
406
  content: [{ type: 'text', text: 'Stdio transport result' }],
408
- isError: false
407
+ isError: false,
409
408
  };
410
409
  }
411
410
 
412
411
  /**
413
412
  * HTTP transport (placeholder)
414
413
  */
415
- async _sendHttpRequest(connection, request) {
414
+ async _sendHttpRequest(_connection, _request) {
416
415
  // Placeholder for HTTP transport implementation
417
416
  return {
418
417
  content: [{ type: 'text', text: 'HTTP transport result' }],
419
- isError: false
418
+ isError: false,
420
419
  };
421
420
  }
422
421
 
423
422
  /**
424
423
  * SSE transport (placeholder)
425
424
  */
426
- async _sendSseRequest(connection, request) {
425
+ async _sendSseRequest(_connection, _request) {
427
426
  // Placeholder for SSE transport implementation
428
427
  return {
429
428
  content: [{ type: 'text', text: 'SSE transport result' }],
430
- isError: false
429
+ isError: false,
431
430
  };
432
431
  }
433
432
 
434
433
  /**
435
434
  * WebSocket transport (placeholder)
436
435
  */
437
- async _sendWebSocketRequest(connection, request) {
436
+ async _sendWebSocketRequest(_connection, _request) {
438
437
  // Placeholder for WebSocket transport implementation
439
438
  return {
440
439
  content: [{ type: 'text', text: 'WebSocket transport result' }],
441
- isError: false
440
+ isError: false,
442
441
  };
443
442
  }
444
443
 
@@ -454,7 +453,7 @@ class MCPToSkillAdapter extends EventEmitter {
454
453
  */
455
454
  async disconnectServer(serverId) {
456
455
  const connection = this.connections.get(serverId);
457
-
456
+
458
457
  if (!connection) {
459
458
  return false;
460
459
  }
@@ -480,8 +479,8 @@ class MCPToSkillAdapter extends EventEmitter {
480
479
  */
481
480
  getServerSkills(serverId) {
482
481
  const skills = [];
483
-
484
- for (const [skillId, adapter] of this.adapters) {
482
+
483
+ for (const [_skillId, adapter] of this.adapters) {
485
484
  if (adapter.serverId === serverId) {
486
485
  skills.push(adapter);
487
486
  }
@@ -495,13 +494,13 @@ class MCPToSkillAdapter extends EventEmitter {
495
494
  */
496
495
  getConnectionStatus() {
497
496
  const status = {};
498
-
497
+
499
498
  for (const [id, conn] of this.connections) {
500
499
  status[id] = {
501
500
  status: conn.status,
502
501
  transport: conn.transport,
503
502
  skillCount: this.getServerSkills(id).length,
504
- registeredAt: conn.registeredAt
503
+ registeredAt: conn.registeredAt,
505
504
  };
506
505
  }
507
506
 
@@ -522,7 +521,7 @@ class SkillToMCPAdapter extends EventEmitter {
522
521
  this.serverInfo = {
523
522
  name: options.serverName || 'musubi-mcp-server',
524
523
  version: options.version || '1.0.0',
525
- protocolVersion: '2024-11-05'
524
+ protocolVersion: '2024-11-05',
526
525
  };
527
526
  }
528
527
 
@@ -547,8 +546,8 @@ class SkillToMCPAdapter extends EventEmitter {
547
546
  musubiSkillId: skillId,
548
547
  category: skill.category,
549
548
  version: skill.version,
550
- tags: skill.tags
551
- }
549
+ tags: skill.tags,
550
+ },
552
551
  };
553
552
 
554
553
  this.exportedTools.set(skillId, mcpTool);
@@ -562,7 +561,7 @@ class SkillToMCPAdapter extends EventEmitter {
562
561
  */
563
562
  exportSkills(skillIds) {
564
563
  const tools = [];
565
-
564
+
566
565
  for (const skillId of skillIds) {
567
566
  try {
568
567
  tools.push(this.exportSkill(skillId));
@@ -591,8 +590,8 @@ class SkillToMCPAdapter extends EventEmitter {
591
590
  */
592
591
  handleListTools() {
593
592
  const tools = [];
594
-
595
- for (const [skillId, tool] of this.exportedTools) {
593
+
594
+ for (const [_skillId, tool] of this.exportedTools) {
596
595
  tools.push(tool);
597
596
  }
598
597
 
@@ -604,7 +603,7 @@ class SkillToMCPAdapter extends EventEmitter {
604
603
  */
605
604
  async handleCallTool(params) {
606
605
  const { name, arguments: args } = params;
607
-
606
+
608
607
  // Find skill by tool name
609
608
  let skillId = null;
610
609
  for (const [id, tool] of this.exportedTools) {
@@ -617,7 +616,7 @@ class SkillToMCPAdapter extends EventEmitter {
617
616
  if (!skillId) {
618
617
  return {
619
618
  content: [{ type: 'text', text: `Tool not found: ${name}` }],
620
- isError: true
619
+ isError: true,
621
620
  };
622
621
  }
623
622
 
@@ -637,14 +636,13 @@ class SkillToMCPAdapter extends EventEmitter {
637
636
 
638
637
  return {
639
638
  content: [{ type: 'text', text: 'No handler available for skill' }],
640
- isError: true
639
+ isError: true,
641
640
  };
642
-
643
641
  } catch (error) {
644
642
  this.emit('call-error', { toolName: name, skillId, error });
645
643
  return {
646
644
  content: [{ type: 'text', text: error.message }],
647
- isError: true
645
+ isError: true,
648
646
  };
649
647
  }
650
648
  }
@@ -656,14 +654,14 @@ class SkillToMCPAdapter extends EventEmitter {
656
654
  if (result === null || result === undefined) {
657
655
  return {
658
656
  content: [{ type: 'text', text: 'null' }],
659
- isError: false
657
+ isError: false,
660
658
  };
661
659
  }
662
660
 
663
661
  if (typeof result === 'string') {
664
662
  return {
665
663
  content: [{ type: 'text', text: result }],
666
- isError: false
664
+ isError: false,
667
665
  };
668
666
  }
669
667
 
@@ -675,17 +673,19 @@ class SkillToMCPAdapter extends EventEmitter {
675
673
 
676
674
  // Convert to JSON text
677
675
  return {
678
- content: [{
679
- type: 'text',
680
- text: JSON.stringify(result, null, 2)
681
- }],
682
- isError: false
676
+ content: [
677
+ {
678
+ type: 'text',
679
+ text: JSON.stringify(result, null, 2),
680
+ },
681
+ ],
682
+ isError: false,
683
683
  };
684
684
  }
685
685
 
686
686
  return {
687
687
  content: [{ type: 'text', text: String(result) }],
688
- isError: false
688
+ isError: false,
689
689
  };
690
690
  }
691
691
 
@@ -704,8 +704,8 @@ class SkillToMCPAdapter extends EventEmitter {
704
704
  return {
705
705
  ...this.serverInfo,
706
706
  capabilities: {
707
- tools: { listChanged: true }
708
- }
707
+ tools: { listChanged: true },
708
+ },
709
709
  };
710
710
  }
711
711
 
@@ -713,7 +713,7 @@ class SkillToMCPAdapter extends EventEmitter {
713
713
  * Create MCP protocol handler
714
714
  */
715
715
  createProtocolHandler() {
716
- return async (request) => {
716
+ return async request => {
717
717
  const { method, params, id } = request;
718
718
 
719
719
  switch (method) {
@@ -721,23 +721,24 @@ class SkillToMCPAdapter extends EventEmitter {
721
721
  return {
722
722
  jsonrpc: '2.0',
723
723
  id,
724
- result: this.getServerManifest()
724
+ result: this.getServerManifest(),
725
725
  };
726
726
 
727
727
  case 'tools/list':
728
728
  return {
729
729
  jsonrpc: '2.0',
730
730
  id,
731
- result: this.handleListTools()
731
+ result: this.handleListTools(),
732
732
  };
733
733
 
734
- case 'tools/call':
734
+ case 'tools/call': {
735
735
  const result = await this.handleCallTool(params);
736
736
  return {
737
737
  jsonrpc: '2.0',
738
738
  id,
739
- result
739
+ result,
740
740
  };
741
+ }
741
742
 
742
743
  default:
743
744
  return {
@@ -745,8 +746,8 @@ class SkillToMCPAdapter extends EventEmitter {
745
746
  id,
746
747
  error: {
747
748
  code: -32601,
748
- message: `Method not found: ${method}`
749
- }
749
+ message: `Method not found: ${method}`,
750
+ },
750
751
  };
751
752
  }
752
753
  };
@@ -762,18 +763,18 @@ class MCPAdapterManager extends EventEmitter {
762
763
  super();
763
764
  this.registry = options.registry || null;
764
765
  this.executor = options.executor || null;
765
-
766
+
766
767
  this.importAdapter = new MCPToSkillAdapter({
767
768
  registry: this.registry,
768
769
  timeout: options.timeout,
769
- retry: options.retry
770
+ retry: options.retry,
770
771
  });
771
772
 
772
773
  this.exportAdapter = new SkillToMCPAdapter({
773
774
  registry: this.registry,
774
775
  executor: this.executor,
775
776
  serverName: options.serverName,
776
- version: options.version
777
+ version: options.version,
777
778
  });
778
779
 
779
780
  // Forward events
@@ -785,28 +786,24 @@ class MCPAdapterManager extends EventEmitter {
785
786
  */
786
787
  _setupEventForwarding() {
787
788
  const importEvents = [
788
- 'server-registered',
789
- 'server-disconnected',
790
- 'tool-imported',
789
+ 'server-registered',
790
+ 'server-disconnected',
791
+ 'tool-imported',
791
792
  'tool-executed',
792
793
  'tool-error',
793
- 'import-error'
794
+ 'import-error',
794
795
  ];
795
796
 
796
- const exportEvents = [
797
- 'skill-exported',
798
- 'export-error',
799
- 'call-error'
800
- ];
797
+ const exportEvents = ['skill-exported', 'export-error', 'call-error'];
801
798
 
802
799
  for (const event of importEvents) {
803
- this.importAdapter.on(event, (data) => {
800
+ this.importAdapter.on(event, data => {
804
801
  this.emit(`import:${event}`, data);
805
802
  });
806
803
  }
807
804
 
808
805
  for (const event of exportEvents) {
809
- this.exportAdapter.on(event, (data) => {
806
+ this.exportAdapter.on(event, data => {
810
807
  this.emit(`export:${event}`, data);
811
808
  });
812
809
  }
@@ -861,12 +858,12 @@ class MCPAdapterManager extends EventEmitter {
861
858
  return {
862
859
  import: {
863
860
  connections: this.importAdapter.getConnectionStatus(),
864
- adapterCount: this.importAdapter.adapters.size
861
+ adapterCount: this.importAdapter.adapters.size,
865
862
  },
866
863
  export: {
867
864
  toolCount: this.exportAdapter.exportedTools.size,
868
- serverInfo: this.exportAdapter.serverInfo
869
- }
865
+ serverInfo: this.exportAdapter.serverInfo,
866
+ },
870
867
  };
871
868
  }
872
869
 
@@ -892,5 +889,5 @@ module.exports = {
892
889
  SchemaTranslator,
893
890
  MCPToSkillAdapter,
894
891
  SkillToMCPAdapter,
895
- MCPAdapterManager
892
+ MCPAdapterManager,
896
893
  };