oh-my-claude-sisyphus 3.7.8 → 3.7.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.
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone MCP Server for OMC Tools
4
+ *
5
+ * This server exposes LSP, AST, and Python REPL tools via stdio transport
6
+ * for discovery by Claude Code's MCP management system.
7
+ *
8
+ * Usage: node dist/mcp/standalone-server.js
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=standalone-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-server.d.ts","sourceRoot":"","sources":["../../src/mcp/standalone-server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone MCP Server for OMC Tools
4
+ *
5
+ * This server exposes LSP, AST, and Python REPL tools via stdio transport
6
+ * for discovery by Claude Code's MCP management system.
7
+ *
8
+ * Usage: node dist/mcp/standalone-server.js
9
+ */
10
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
11
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
12
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
13
+ // Only import LSP tools - no native dependencies
14
+ // AST tools (@ast-grep/napi) and python_repl (better-sqlite3) require native modules
15
+ // which can't be bundled and won't exist in plugin cache
16
+ import { lspTools } from '../tools/lsp-tools.js';
17
+ import { z } from 'zod';
18
+ // Convert Zod schema to JSON Schema for MCP
19
+ function zodToJsonSchema(schema) {
20
+ // Handle both ZodObject and raw shape
21
+ const rawShape = schema instanceof z.ZodObject ? schema.shape : schema;
22
+ const properties = {};
23
+ const required = [];
24
+ for (const [key, value] of Object.entries(rawShape)) {
25
+ const zodType = value;
26
+ properties[key] = zodTypeToJsonSchema(zodType);
27
+ // Check if required (not optional) - with safety check
28
+ const isOptional = zodType && typeof zodType.isOptional === 'function' && zodType.isOptional();
29
+ if (!isOptional) {
30
+ required.push(key);
31
+ }
32
+ }
33
+ return {
34
+ type: 'object',
35
+ properties,
36
+ required
37
+ };
38
+ }
39
+ function zodTypeToJsonSchema(zodType) {
40
+ const result = {};
41
+ // Safety check for undefined zodType
42
+ if (!zodType || !zodType._def) {
43
+ return { type: 'string' };
44
+ }
45
+ // Handle optional wrapper
46
+ if (zodType instanceof z.ZodOptional) {
47
+ return zodTypeToJsonSchema(zodType._def.innerType);
48
+ }
49
+ // Handle default wrapper
50
+ if (zodType instanceof z.ZodDefault) {
51
+ const inner = zodTypeToJsonSchema(zodType._def.innerType);
52
+ inner.default = zodType._def.defaultValue();
53
+ return inner;
54
+ }
55
+ // Get description if available
56
+ const description = zodType._def?.description;
57
+ if (description) {
58
+ result.description = description;
59
+ }
60
+ // Handle basic types
61
+ if (zodType instanceof z.ZodString) {
62
+ result.type = 'string';
63
+ }
64
+ else if (zodType instanceof z.ZodNumber) {
65
+ result.type = zodType._def?.checks?.some((c) => c.kind === 'int')
66
+ ? 'integer'
67
+ : 'number';
68
+ }
69
+ else if (zodType instanceof z.ZodBoolean) {
70
+ result.type = 'boolean';
71
+ }
72
+ else if (zodType instanceof z.ZodArray) {
73
+ result.type = 'array';
74
+ result.items = zodType._def?.type ? zodTypeToJsonSchema(zodType._def.type) : { type: 'string' };
75
+ }
76
+ else if (zodType instanceof z.ZodEnum) {
77
+ result.type = 'string';
78
+ result.enum = zodType._def?.values;
79
+ }
80
+ else if (zodType instanceof z.ZodObject) {
81
+ return zodToJsonSchema(zodType.shape);
82
+ }
83
+ else {
84
+ result.type = 'string';
85
+ }
86
+ return result;
87
+ }
88
+ // Create the MCP server
89
+ const server = new Server({
90
+ name: 'omc-tools',
91
+ version: '1.0.0',
92
+ }, {
93
+ capabilities: {
94
+ tools: {},
95
+ },
96
+ });
97
+ // List available tools
98
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
99
+ return {
100
+ tools: lspTools.map(tool => ({
101
+ name: tool.name,
102
+ description: tool.description,
103
+ inputSchema: zodToJsonSchema(tool.schema),
104
+ })),
105
+ };
106
+ });
107
+ // Handle tool calls
108
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
109
+ const { name, arguments: args } = request.params;
110
+ const tool = lspTools.find(t => t.name === name);
111
+ if (!tool) {
112
+ return {
113
+ content: [{ type: 'text', text: `Unknown tool: ${name}` }],
114
+ isError: true,
115
+ };
116
+ }
117
+ try {
118
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
+ const result = await tool.handler(args ?? {});
120
+ return {
121
+ content: result.content,
122
+ isError: false,
123
+ };
124
+ }
125
+ catch (error) {
126
+ const errorMessage = error instanceof Error ? error.message : String(error);
127
+ return {
128
+ content: [{ type: 'text', text: `Error: ${errorMessage}` }],
129
+ isError: true,
130
+ };
131
+ }
132
+ });
133
+ // Start the server
134
+ async function main() {
135
+ const transport = new StdioServerTransport();
136
+ await server.connect(transport);
137
+ console.error('OMC Tools MCP Server running on stdio');
138
+ }
139
+ main().catch((error) => {
140
+ console.error('Failed to start server:', error);
141
+ process.exit(1);
142
+ });
143
+ //# sourceMappingURL=standalone-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-server.js","sourceRoot":"","sources":["../../src/mcp/standalone-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-claude-sisyphus",
3
- "version": "3.7.8",
3
+ "version": "3.7.10",
4
4
  "description": "Multi-agent orchestration system for Claude Code - Inspired by oh-my-opencode",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,12 +27,13 @@
27
27
  "skills",
28
28
  "templates",
29
29
  "docs",
30
- "plugin.json",
30
+ ".claude-plugin",
31
+ ".mcp.json",
31
32
  "README.md",
32
33
  "LICENSE"
33
34
  ],
34
35
  "scripts": {
35
- "build": "tsc && node scripts/build-skill-bridge.mjs",
36
+ "build": "tsc && node scripts/build-skill-bridge.mjs && node scripts/build-mcp-server.mjs",
36
37
  "build:bridge": "node scripts/build-skill-bridge.mjs",
37
38
  "dev": "tsc --watch",
38
39
  "start": "node dist/index.js",
@@ -51,6 +52,7 @@
51
52
  "dependencies": {
52
53
  "@anthropic-ai/claude-agent-sdk": "^0.1.0",
53
54
  "@ast-grep/napi": "^0.31.0",
55
+ "@modelcontextprotocol/sdk": "^1.25.3",
54
56
  "@tokscale/core": "^1.0.25",
55
57
  "@types/better-sqlite3": "^7.6.13",
56
58
  "ajv": "^8.17.1",
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Build script for standalone MCP server bundle
4
+ * Bundles the MCP server into a standalone JS file for plugin distribution
5
+ */
6
+
7
+ import * as esbuild from 'esbuild';
8
+ import { mkdir } from 'fs/promises';
9
+
10
+ // Output to bridge/ directory (not gitignored) for plugin distribution
11
+ const outfile = 'bridge/mcp-server.cjs';
12
+
13
+ // Ensure output directory exists
14
+ await mkdir('bridge', { recursive: true });
15
+
16
+ await esbuild.build({
17
+ entryPoints: ['src/mcp/standalone-server.ts'],
18
+ bundle: true,
19
+ platform: 'node',
20
+ target: 'node18',
21
+ format: 'cjs',
22
+ outfile,
23
+ // Externalize Node.js built-ins and native modules
24
+ external: [
25
+ 'fs', 'path', 'os', 'util', 'stream', 'events',
26
+ 'buffer', 'crypto', 'http', 'https', 'url',
27
+ 'child_process', 'assert', 'module', 'net', 'tls',
28
+ 'dns', 'readline', 'tty', 'worker_threads',
29
+ // Native modules that can't be bundled
30
+ '@ast-grep/napi',
31
+ 'better-sqlite3',
32
+ ],
33
+ });
34
+
35
+ console.log(`Built ${outfile}`);