oh-my-claude-sisyphus 3.7.14 → 3.7.16
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +7 -4
- package/bridge/mcp-server.cjs +73 -10
- package/dist/__tests__/hooks.test.js +32 -16
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +1 -1
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/lsp-servers.test.d.ts +2 -0
- package/dist/__tests__/lsp-servers.test.d.ts.map +1 -0
- package/dist/__tests__/lsp-servers.test.js +118 -0
- package/dist/__tests__/lsp-servers.test.js.map +1 -0
- package/dist/__tests__/task-continuation.test.d.ts +2 -0
- package/dist/__tests__/task-continuation.test.d.ts.map +1 -0
- package/dist/__tests__/task-continuation.test.js +740 -0
- package/dist/__tests__/task-continuation.test.js.map +1 -0
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +6 -3
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/todo-continuation/index.d.ts +111 -3
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
- package/dist/hooks/todo-continuation/index.js +204 -23
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/tools/ast-tools.d.ts.map +1 -1
- package/dist/tools/ast-tools.js +20 -6
- package/dist/tools/ast-tools.js.map +1 -1
- package/dist/tools/lsp/client.d.ts.map +1 -1
- package/dist/tools/lsp/client.js +15 -1
- package/dist/tools/lsp/client.js.map +1 -1
- package/dist/tools/lsp/servers.d.ts.map +1 -1
- package/dist/tools/lsp/servers.js +62 -1
- package/dist/tools/lsp/servers.js.map +1 -1
- package/package.json +1 -1
- package/templates/hooks/persistent-mode.mjs +57 -7
- package/templates/hooks/persistent-mode.sh +62 -5
- package/templates/hooks/stop-continuation.mjs +65 -8
- package/templates/hooks/stop-continuation.sh +57 -4
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { LSP_SERVERS, getServerForFile, getServerForLanguage } from '../tools/lsp/servers.js';
|
|
3
|
+
describe('LSP Server Configurations', () => {
|
|
4
|
+
const serverKeys = Object.keys(LSP_SERVERS);
|
|
5
|
+
it('should have 16 configured servers', () => {
|
|
6
|
+
expect(serverKeys).toHaveLength(16);
|
|
7
|
+
});
|
|
8
|
+
it.each(serverKeys)('server "%s" should have valid config', (key) => {
|
|
9
|
+
const config = LSP_SERVERS[key];
|
|
10
|
+
expect(config.name).toBeTruthy();
|
|
11
|
+
expect(config.command).toBeTruthy();
|
|
12
|
+
expect(Array.isArray(config.args)).toBe(true);
|
|
13
|
+
expect(config.extensions.length).toBeGreaterThan(0);
|
|
14
|
+
expect(config.installHint).toBeTruthy();
|
|
15
|
+
});
|
|
16
|
+
it('should have no duplicate extension mappings across servers', () => {
|
|
17
|
+
const seen = new Map();
|
|
18
|
+
for (const [key, config] of Object.entries(LSP_SERVERS)) {
|
|
19
|
+
for (const ext of config.extensions) {
|
|
20
|
+
if (seen.has(ext)) {
|
|
21
|
+
throw new Error(`Extension "${ext}" mapped to both "${seen.get(ext)}" and "${key}"`);
|
|
22
|
+
}
|
|
23
|
+
seen.set(ext, key);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('getServerForFile', () => {
|
|
29
|
+
const cases = [
|
|
30
|
+
['app.ts', 'TypeScript Language Server'],
|
|
31
|
+
['app.py', 'Python Language Server (pylsp)'],
|
|
32
|
+
['main.rs', 'Rust Analyzer'],
|
|
33
|
+
['main.go', 'gopls'],
|
|
34
|
+
['main.c', 'clangd'],
|
|
35
|
+
['App.java', 'Eclipse JDT Language Server'],
|
|
36
|
+
['data.json', 'JSON Language Server'],
|
|
37
|
+
['index.html', 'HTML Language Server'],
|
|
38
|
+
['style.css', 'CSS Language Server'],
|
|
39
|
+
['config.yaml', 'YAML Language Server'],
|
|
40
|
+
['index.php', 'PHP Language Server (Intelephense)'],
|
|
41
|
+
['template.phtml', 'PHP Language Server (Intelephense)'],
|
|
42
|
+
['app.rb', 'Ruby Language Server (Solargraph)'],
|
|
43
|
+
['Rakefile.rake', 'Ruby Language Server (Solargraph)'],
|
|
44
|
+
['test.gemspec', 'Ruby Language Server (Solargraph)'],
|
|
45
|
+
['init.lua', 'Lua Language Server'],
|
|
46
|
+
['Main.kt', 'Kotlin Language Server'],
|
|
47
|
+
['build.gradle.kts', 'Kotlin Language Server'],
|
|
48
|
+
['app.ex', 'ElixirLS'],
|
|
49
|
+
['test.exs', 'ElixirLS'],
|
|
50
|
+
['page.heex', 'ElixirLS'],
|
|
51
|
+
['template.eex', 'ElixirLS'],
|
|
52
|
+
['Program.cs', 'OmniSharp'],
|
|
53
|
+
['view.erb', 'Ruby Language Server (Solargraph)'],
|
|
54
|
+
];
|
|
55
|
+
it.each(cases)('should resolve "%s" to "%s"', (file, expectedName) => {
|
|
56
|
+
const server = getServerForFile(file);
|
|
57
|
+
expect(server).not.toBeNull();
|
|
58
|
+
expect(server.name).toBe(expectedName);
|
|
59
|
+
});
|
|
60
|
+
it('should return null for unknown extensions', () => {
|
|
61
|
+
expect(getServerForFile('file.xyz')).toBeNull();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('getServerForLanguage', () => {
|
|
65
|
+
const cases = [
|
|
66
|
+
['typescript', 'TypeScript Language Server'],
|
|
67
|
+
['javascript', 'TypeScript Language Server'],
|
|
68
|
+
['python', 'Python Language Server (pylsp)'],
|
|
69
|
+
['rust', 'Rust Analyzer'],
|
|
70
|
+
['go', 'gopls'],
|
|
71
|
+
['golang', 'gopls'],
|
|
72
|
+
['c', 'clangd'],
|
|
73
|
+
['cpp', 'clangd'],
|
|
74
|
+
['java', 'Eclipse JDT Language Server'],
|
|
75
|
+
['json', 'JSON Language Server'],
|
|
76
|
+
['html', 'HTML Language Server'],
|
|
77
|
+
['css', 'CSS Language Server'],
|
|
78
|
+
['yaml', 'YAML Language Server'],
|
|
79
|
+
// New languages
|
|
80
|
+
['php', 'PHP Language Server (Intelephense)'],
|
|
81
|
+
['phtml', 'PHP Language Server (Intelephense)'],
|
|
82
|
+
['ruby', 'Ruby Language Server (Solargraph)'],
|
|
83
|
+
['rb', 'Ruby Language Server (Solargraph)'],
|
|
84
|
+
['rake', 'Ruby Language Server (Solargraph)'],
|
|
85
|
+
['gemspec', 'Ruby Language Server (Solargraph)'],
|
|
86
|
+
['lua', 'Lua Language Server'],
|
|
87
|
+
['kotlin', 'Kotlin Language Server'],
|
|
88
|
+
['kt', 'Kotlin Language Server'],
|
|
89
|
+
['kts', 'Kotlin Language Server'],
|
|
90
|
+
['elixir', 'ElixirLS'],
|
|
91
|
+
['ex', 'ElixirLS'],
|
|
92
|
+
['exs', 'ElixirLS'],
|
|
93
|
+
['heex', 'ElixirLS'],
|
|
94
|
+
['eex', 'ElixirLS'],
|
|
95
|
+
['csharp', 'OmniSharp'],
|
|
96
|
+
['erb', 'Ruby Language Server (Solargraph)'],
|
|
97
|
+
['c#', 'OmniSharp'],
|
|
98
|
+
['cs', 'OmniSharp'],
|
|
99
|
+
];
|
|
100
|
+
it.each(cases)('should resolve language "%s" to "%s"', (lang, expectedName) => {
|
|
101
|
+
const server = getServerForLanguage(lang);
|
|
102
|
+
expect(server).not.toBeNull();
|
|
103
|
+
expect(server.name).toBe(expectedName);
|
|
104
|
+
});
|
|
105
|
+
it('should be case-insensitive', () => {
|
|
106
|
+
expect(getServerForLanguage('PHP')?.name).toBe('PHP Language Server (Intelephense)');
|
|
107
|
+
expect(getServerForLanguage('Kotlin')?.name).toBe('Kotlin Language Server');
|
|
108
|
+
});
|
|
109
|
+
it('should return null for unknown languages', () => {
|
|
110
|
+
expect(getServerForLanguage('brainfuck')).toBeNull();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('OmniSharp command casing', () => {
|
|
114
|
+
it('should use lowercase command for cross-platform compatibility', () => {
|
|
115
|
+
expect(LSP_SERVERS.csharp.command).toBe('omnisharp');
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=lsp-servers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-servers.test.js","sourceRoot":"","sources":["../../src/__tests__/lsp-servers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-continuation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/task-continuation.test.ts"],"names":[],"mappings":""}
|