oh-my-claude-sisyphus 3.7.2 → 3.7.4

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 (114) hide show
  1. package/agents/build-fixer-low.md +2 -2
  2. package/agents/build-fixer.md +74 -19
  3. package/agents/code-reviewer.md +7 -7
  4. package/agents/designer-high.md +2 -2
  5. package/agents/designer-low.md +1 -1
  6. package/agents/designer.md +17 -2
  7. package/agents/security-reviewer.md +86 -17
  8. package/agents/tdd-guide.md +151 -12
  9. package/dist/__tests__/compatibility-security.test.d.ts +13 -0
  10. package/dist/__tests__/compatibility-security.test.d.ts.map +1 -0
  11. package/dist/__tests__/compatibility-security.test.js +403 -0
  12. package/dist/__tests__/compatibility-security.test.js.map +1 -0
  13. package/dist/__tests__/compatibility.test.d.ts +7 -0
  14. package/dist/__tests__/compatibility.test.d.ts.map +1 -0
  15. package/dist/__tests__/compatibility.test.js +484 -0
  16. package/dist/__tests__/compatibility.test.js.map +1 -0
  17. package/dist/__tests__/hud/analytics-display.test.js +4 -0
  18. package/dist/__tests__/hud/analytics-display.test.js.map +1 -1
  19. package/dist/__tests__/installer.test.js +1 -1
  20. package/dist/__tests__/skills.test.js +6 -5
  21. package/dist/__tests__/skills.test.js.map +1 -1
  22. package/dist/agents/definitions.js +1 -1
  23. package/dist/agents/definitions.js.map +1 -1
  24. package/dist/compatibility/discovery.d.ts +58 -0
  25. package/dist/compatibility/discovery.d.ts.map +1 -0
  26. package/dist/compatibility/discovery.js +621 -0
  27. package/dist/compatibility/discovery.js.map +1 -0
  28. package/dist/compatibility/index.d.ts +51 -0
  29. package/dist/compatibility/index.d.ts.map +1 -0
  30. package/dist/compatibility/index.js +72 -0
  31. package/dist/compatibility/index.js.map +1 -0
  32. package/dist/compatibility/mcp-bridge.d.ts +138 -0
  33. package/dist/compatibility/mcp-bridge.d.ts.map +1 -0
  34. package/dist/compatibility/mcp-bridge.js +524 -0
  35. package/dist/compatibility/mcp-bridge.js.map +1 -0
  36. package/dist/compatibility/permission-adapter.d.ts +79 -0
  37. package/dist/compatibility/permission-adapter.d.ts.map +1 -0
  38. package/dist/compatibility/permission-adapter.js +369 -0
  39. package/dist/compatibility/permission-adapter.js.map +1 -0
  40. package/dist/compatibility/registry.d.ts +161 -0
  41. package/dist/compatibility/registry.d.ts.map +1 -0
  42. package/dist/compatibility/registry.js +389 -0
  43. package/dist/compatibility/registry.js.map +1 -0
  44. package/dist/compatibility/types.d.ts +249 -0
  45. package/dist/compatibility/types.d.ts.map +1 -0
  46. package/dist/compatibility/types.js +8 -0
  47. package/dist/compatibility/types.js.map +1 -0
  48. package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
  49. package/dist/features/rate-limit-wait/daemon.js +3 -0
  50. package/dist/features/rate-limit-wait/daemon.js.map +1 -1
  51. package/dist/hooks/autopilot/prompts.d.ts.map +1 -1
  52. package/dist/hooks/autopilot/prompts.js +17 -3
  53. package/dist/hooks/autopilot/prompts.js.map +1 -1
  54. package/dist/hooks/github-auto-responder/classifier.d.ts +43 -0
  55. package/dist/hooks/github-auto-responder/classifier.d.ts.map +1 -0
  56. package/dist/hooks/github-auto-responder/classifier.js +150 -0
  57. package/dist/hooks/github-auto-responder/classifier.js.map +1 -0
  58. package/dist/hooks/github-auto-responder/config.d.ts +109 -0
  59. package/dist/hooks/github-auto-responder/config.d.ts.map +1 -0
  60. package/dist/hooks/github-auto-responder/config.js +69 -0
  61. package/dist/hooks/github-auto-responder/config.js.map +1 -0
  62. package/dist/hooks/github-auto-responder/constants.d.ts +45 -0
  63. package/dist/hooks/github-auto-responder/constants.d.ts.map +1 -0
  64. package/dist/hooks/github-auto-responder/constants.js +60 -0
  65. package/dist/hooks/github-auto-responder/constants.js.map +1 -0
  66. package/dist/hooks/github-auto-responder/filters.d.ts +95 -0
  67. package/dist/hooks/github-auto-responder/filters.d.ts.map +1 -0
  68. package/dist/hooks/github-auto-responder/filters.js +174 -0
  69. package/dist/hooks/github-auto-responder/filters.js.map +1 -0
  70. package/dist/hooks/github-auto-responder/github-client.d.ts +65 -0
  71. package/dist/hooks/github-auto-responder/github-client.d.ts.map +1 -0
  72. package/dist/hooks/github-auto-responder/github-client.js +128 -0
  73. package/dist/hooks/github-auto-responder/github-client.js.map +1 -0
  74. package/dist/hooks/github-auto-responder/idempotency.d.ts +68 -0
  75. package/dist/hooks/github-auto-responder/idempotency.d.ts.map +1 -0
  76. package/dist/hooks/github-auto-responder/idempotency.js +147 -0
  77. package/dist/hooks/github-auto-responder/idempotency.js.map +1 -0
  78. package/dist/hooks/github-auto-responder/index.d.ts +140 -0
  79. package/dist/hooks/github-auto-responder/index.d.ts.map +1 -0
  80. package/dist/hooks/github-auto-responder/index.js +145 -0
  81. package/dist/hooks/github-auto-responder/index.js.map +1 -0
  82. package/dist/hooks/github-auto-responder/persona.d.ts +40 -0
  83. package/dist/hooks/github-auto-responder/persona.d.ts.map +1 -0
  84. package/dist/hooks/github-auto-responder/persona.js +99 -0
  85. package/dist/hooks/github-auto-responder/persona.js.map +1 -0
  86. package/dist/hooks/github-auto-responder/responder.d.ts +122 -0
  87. package/dist/hooks/github-auto-responder/responder.d.ts.map +1 -0
  88. package/dist/hooks/github-auto-responder/responder.js +264 -0
  89. package/dist/hooks/github-auto-responder/responder.js.map +1 -0
  90. package/dist/hooks/github-auto-responder/server.d.ts +140 -0
  91. package/dist/hooks/github-auto-responder/server.d.ts.map +1 -0
  92. package/dist/hooks/github-auto-responder/server.js +301 -0
  93. package/dist/hooks/github-auto-responder/server.js.map +1 -0
  94. package/dist/hooks/github-auto-responder/signature.d.ts +34 -0
  95. package/dist/hooks/github-auto-responder/signature.d.ts.map +1 -0
  96. package/dist/hooks/github-auto-responder/signature.js +79 -0
  97. package/dist/hooks/github-auto-responder/signature.js.map +1 -0
  98. package/dist/hooks/github-auto-responder/templates.d.ts +16 -0
  99. package/dist/hooks/github-auto-responder/templates.d.ts.map +1 -0
  100. package/dist/hooks/github-auto-responder/templates.js +93 -0
  101. package/dist/hooks/github-auto-responder/templates.js.map +1 -0
  102. package/dist/hooks/github-auto-responder/types.d.ts +246 -0
  103. package/dist/hooks/github-auto-responder/types.d.ts.map +1 -0
  104. package/dist/hooks/github-auto-responder/types.js +7 -0
  105. package/dist/hooks/github-auto-responder/types.js.map +1 -0
  106. package/dist/hud/analytics-display.d.ts +1 -1
  107. package/dist/hud/analytics-display.d.ts.map +1 -1
  108. package/dist/hud/analytics-display.js +24 -7
  109. package/dist/hud/analytics-display.js.map +1 -1
  110. package/dist/installer/index.d.ts +1 -1
  111. package/dist/installer/index.js +1 -1
  112. package/docs/COMPATIBILITY.md +1051 -0
  113. package/package.json +3 -1
  114. package/scripts/github-webhook-server.ts +141 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-claude-sisyphus",
3
- "version": "3.7.2",
3
+ "version": "3.7.4",
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",
@@ -53,10 +53,12 @@
53
53
  "@ast-grep/napi": "^0.31.0",
54
54
  "@tokscale/core": "^1.0.25",
55
55
  "@types/better-sqlite3": "^7.6.13",
56
+ "ajv": "^8.17.1",
56
57
  "better-sqlite3": "^12.6.2",
57
58
  "chalk": "^5.3.0",
58
59
  "commander": "^12.1.0",
59
60
  "jsonc-parser": "^3.3.1",
61
+ "safe-regex": "^2.1.1",
60
62
  "vscode-languageserver-protocol": "^3.17.5",
61
63
  "zod": "^3.23.8"
62
64
  },
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/env tsx
2
+
3
+ /**
4
+ * GitHub Webhook Server - Standalone Entry Point
5
+ *
6
+ * Starts an HTTP server that listens for GitHub webhook events and
7
+ * processes them through the auto-responder pipeline.
8
+ *
9
+ * Usage: ./scripts/github-webhook-server.ts
10
+ *
11
+ * Environment Variables:
12
+ * - GITHUB_WEBHOOK_SECRET: Secret for webhook payload verification
13
+ * - GITHUB_TOKEN: GitHub API token for posting comments
14
+ * - ANTHROPIC_API_KEY: Anthropic API key for response generation
15
+ * - GITHUB_SELF_LOGIN: GitHub username of the bot (for self-reply filtering)
16
+ * - AUTO_RESPONDER_MODE: 'draft' or 'auto' (default: 'draft')
17
+ * - AUTO_RESPONDER_PORT: Server port (default: 3000)
18
+ */
19
+
20
+ import { createAutoResponder } from '../src/hooks/github-auto-responder/responder.js';
21
+ import { loadConfig } from '../src/hooks/github-auto-responder/config.js';
22
+ import { verifySignature } from '../src/hooks/github-auto-responder/signature.js';
23
+ import type { WebhookPayload } from '../src/hooks/github-auto-responder/types.js';
24
+
25
+ /**
26
+ * Main server function - starts HTTP listener and initializes auto-responder
27
+ */
28
+ async function main(): Promise<void> {
29
+ try {
30
+ console.log('[webhook-server] Starting GitHub webhook server...');
31
+
32
+ // Load configuration from environment
33
+ const config = loadConfig();
34
+ console.log(`[webhook-server] Loaded config: port=${config.port}, mode=${config.mode}`);
35
+
36
+ // Create and initialize auto-responder
37
+ const responder = createAutoResponder(config);
38
+ await responder.init();
39
+ console.log('[webhook-server] Auto-responder initialized');
40
+
41
+ // Create HTTP server to listen for webhooks
42
+ const server = (
43
+ await import('http')
44
+ ).createServer(async (req, res) => {
45
+ // Only handle POST requests to /webhook
46
+ if (req.method !== 'POST' || req.url !== '/webhook') {
47
+ res.writeHead(404, { 'Content-Type': 'application/json' });
48
+ res.end(JSON.stringify({ error: 'Not found' }));
49
+ return;
50
+ }
51
+
52
+ // Read request body
53
+ let body = '';
54
+ req.on('data', (chunk) => {
55
+ body += chunk.toString();
56
+ });
57
+
58
+ req.on('end', async () => {
59
+ try {
60
+ // Verify webhook signature
61
+ const signature = (
62
+ req.headers['x-hub-signature-256'] as string
63
+ ) || '';
64
+ if (!verifySignature(Buffer.from(body), signature, config.webhookSecret)) {
65
+ res.writeHead(401, { 'Content-Type': 'application/json' });
66
+ res.end(
67
+ JSON.stringify({ error: 'Invalid signature' }),
68
+ );
69
+ return;
70
+ }
71
+
72
+ // Parse payload
73
+ const payload: WebhookPayload = JSON.parse(body);
74
+ const deliveryId = (
75
+ req.headers['x-github-delivery'] as string
76
+ ) || 'unknown';
77
+
78
+ console.log(
79
+ `[webhook-server] Received webhook: delivery=${deliveryId}, action=${payload.action}`,
80
+ );
81
+
82
+ // Process webhook
83
+ const result = await responder.processWebhook(deliveryId, payload);
84
+
85
+ // Send response
86
+ res.writeHead(200, { 'Content-Type': 'application/json' });
87
+ res.end(JSON.stringify(result));
88
+ } catch (error) {
89
+ console.error('[webhook-server] Error processing webhook:', error);
90
+ res.writeHead(500, { 'Content-Type': 'application/json' });
91
+ res.end(
92
+ JSON.stringify({
93
+ error: 'Internal server error',
94
+ message: error instanceof Error ? error.message : 'Unknown error',
95
+ }),
96
+ );
97
+ }
98
+ });
99
+ });
100
+
101
+ // Handle unhandled rejections
102
+ process.on('unhandledRejection', (reason, promise) => {
103
+ console.error('[webhook-server] Unhandled rejection:', reason);
104
+ });
105
+
106
+ // Handle graceful shutdown
107
+ process.on('SIGTERM', async () => {
108
+ console.log('[webhook-server] SIGTERM received, shutting down...');
109
+ server.close(async () => {
110
+ await responder.close();
111
+ process.exit(0);
112
+ });
113
+ });
114
+
115
+ process.on('SIGINT', async () => {
116
+ console.log('[webhook-server] SIGINT received, shutting down...');
117
+ server.close(async () => {
118
+ await responder.close();
119
+ process.exit(0);
120
+ });
121
+ });
122
+
123
+ // Start listening
124
+ server.listen(config.port, () => {
125
+ console.log(
126
+ `[webhook-server] Server started on http://localhost:${config.port}`,
127
+ );
128
+ console.log(`[webhook-server] Listening for webhooks at /webhook`);
129
+ console.log(`[webhook-server] Mode: ${config.mode}`);
130
+ });
131
+ } catch (error) {
132
+ console.error('[webhook-server] Fatal error:', error);
133
+ process.exit(1);
134
+ }
135
+ }
136
+
137
+ // Run main function
138
+ main().catch((error) => {
139
+ console.error('[webhook-server] Uncaught error:', error);
140
+ process.exit(1);
141
+ });