oh-my-claude-sisyphus 3.7.2 → 3.7.3
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/dist/__tests__/compatibility-security.test.d.ts +13 -0
- package/dist/__tests__/compatibility-security.test.d.ts.map +1 -0
- package/dist/__tests__/compatibility-security.test.js +403 -0
- package/dist/__tests__/compatibility-security.test.js.map +1 -0
- package/dist/__tests__/compatibility.test.d.ts +7 -0
- package/dist/__tests__/compatibility.test.d.ts.map +1 -0
- package/dist/__tests__/compatibility.test.js +484 -0
- package/dist/__tests__/compatibility.test.js.map +1 -0
- package/dist/__tests__/hud/analytics-display.test.js +4 -0
- package/dist/__tests__/hud/analytics-display.test.js.map +1 -1
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/index.js +0 -0
- package/dist/compatibility/discovery.d.ts +58 -0
- package/dist/compatibility/discovery.d.ts.map +1 -0
- package/dist/compatibility/discovery.js +619 -0
- package/dist/compatibility/discovery.js.map +1 -0
- package/dist/compatibility/index.d.ts +51 -0
- package/dist/compatibility/index.d.ts.map +1 -0
- package/dist/compatibility/index.js +72 -0
- package/dist/compatibility/index.js.map +1 -0
- package/dist/compatibility/mcp-bridge.d.ts +138 -0
- package/dist/compatibility/mcp-bridge.d.ts.map +1 -0
- package/dist/compatibility/mcp-bridge.js +524 -0
- package/dist/compatibility/mcp-bridge.js.map +1 -0
- package/dist/compatibility/permission-adapter.d.ts +79 -0
- package/dist/compatibility/permission-adapter.d.ts.map +1 -0
- package/dist/compatibility/permission-adapter.js +369 -0
- package/dist/compatibility/permission-adapter.js.map +1 -0
- package/dist/compatibility/registry.d.ts +161 -0
- package/dist/compatibility/registry.d.ts.map +1 -0
- package/dist/compatibility/registry.js +389 -0
- package/dist/compatibility/registry.js.map +1 -0
- package/dist/compatibility/types.d.ts +249 -0
- package/dist/compatibility/types.d.ts.map +1 -0
- package/dist/compatibility/types.js +8 -0
- package/dist/compatibility/types.js.map +1 -0
- package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
- package/dist/features/rate-limit-wait/daemon.js +3 -0
- package/dist/features/rate-limit-wait/daemon.js.map +1 -1
- package/dist/hud/analytics-display.d.ts +1 -1
- package/dist/hud/analytics-display.d.ts.map +1 -1
- package/dist/hud/analytics-display.js +24 -7
- package/dist/hud/analytics-display.js.map +1 -1
- package/docs/COMPATIBILITY.md +1051 -0
- package/package.json +3 -1
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
- package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
- package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
- package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/config.test.js +0 -37
- package/dist/__tests__/learned-skills/config.test.js.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.js +0 -99
- package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.js +0 -59
- package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.js +0 -69
- package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.js +0 -81
- package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.js +0 -85
- package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
- package/dist/agents/codex-agents.d.ts +0 -20
- package/dist/agents/codex-agents.d.ts.map +0 -1
- package/dist/agents/codex-agents.js +0 -36
- package/dist/agents/codex-agents.js.map +0 -1
- package/dist/agents/document-writer.d.ts +0 -11
- package/dist/agents/document-writer.d.ts.map +0 -1
- package/dist/agents/document-writer.js +0 -209
- package/dist/agents/document-writer.js.map +0 -1
- package/dist/agents/frontend-engineer.d.ts +0 -11
- package/dist/agents/frontend-engineer.d.ts.map +0 -1
- package/dist/agents/frontend-engineer.js +0 -115
- package/dist/agents/frontend-engineer.js.map +0 -1
- package/dist/agents/librarian.d.ts +0 -12
- package/dist/agents/librarian.d.ts.map +0 -1
- package/dist/agents/librarian.js +0 -103
- package/dist/agents/librarian.js.map +0 -1
- package/dist/agents/metis.d.ts +0 -12
- package/dist/agents/metis.d.ts.map +0 -1
- package/dist/agents/metis.js +0 -117
- package/dist/agents/metis.js.map +0 -1
- package/dist/agents/momus.d.ts +0 -12
- package/dist/agents/momus.d.ts.map +0 -1
- package/dist/agents/momus.js +0 -128
- package/dist/agents/momus.js.map +0 -1
- package/dist/agents/multimodal-looker.d.ts +0 -11
- package/dist/agents/multimodal-looker.d.ts.map +0 -1
- package/dist/agents/multimodal-looker.js +0 -70
- package/dist/agents/multimodal-looker.js.map +0 -1
- package/dist/agents/oracle.d.ts +0 -13
- package/dist/agents/oracle.d.ts.map +0 -1
- package/dist/agents/oracle.js +0 -191
- package/dist/agents/oracle.js.map +0 -1
- package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
- package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
- package/dist/agents/orchestrator-sisyphus.js +0 -115
- package/dist/agents/orchestrator-sisyphus.js.map +0 -1
- package/dist/agents/prometheus.d.ts +0 -12
- package/dist/agents/prometheus.d.ts.map +0 -1
- package/dist/agents/prometheus.js +0 -195
- package/dist/agents/prometheus.js.map +0 -1
- package/dist/agents/sisyphus-junior.d.ts +0 -12
- package/dist/agents/sisyphus-junior.d.ts.map +0 -1
- package/dist/agents/sisyphus-junior.js +0 -93
- package/dist/agents/sisyphus-junior.js.map +0 -1
- package/dist/cli/components/CostDashboard.d.ts +0 -15
- package/dist/cli/components/CostDashboard.d.ts.map +0 -1
- package/dist/cli/components/CostDashboard.js +0 -15
- package/dist/cli/components/CostDashboard.js.map +0 -1
- package/dist/cli/components/LiveStats.d.ts +0 -16
- package/dist/cli/components/LiveStats.d.ts.map +0 -1
- package/dist/cli/components/LiveStats.js +0 -16
- package/dist/cli/components/LiveStats.js.map +0 -1
- package/dist/cli/components/SessionBrowser.d.ts +0 -14
- package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
- package/dist/cli/components/SessionBrowser.js +0 -14
- package/dist/cli/components/SessionBrowser.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -21
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -21
- package/dist/cli/tui.js.map +0 -1
- package/dist/hooks/autopilot/signals.d.ts +0 -20
- package/dist/hooks/autopilot/signals.d.ts.map +0 -1
- package/dist/hooks/autopilot/signals.js +0 -75
- package/dist/hooks/autopilot/signals.js.map +0 -1
- package/dist/hooks/autopilot/summary.d.ts +0 -27
- package/dist/hooks/autopilot/summary.d.ts.map +0 -1
- package/dist/hooks/autopilot/summary.js +0 -160
- package/dist/hooks/autopilot/summary.js.map +0 -1
- package/dist/hooks/autopilot/transition.d.ts +0 -39
- package/dist/hooks/autopilot/transition.d.ts.map +0 -1
- package/dist/hooks/autopilot/transition.js +0 -216
- package/dist/hooks/autopilot/transition.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
- package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.js +0 -201
- package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
- package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.js +0 -34
- package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
- package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
- package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
- package/dist/hooks/edit-error-recovery/index.js +0 -89
- package/dist/hooks/edit-error-recovery/index.js.map +0 -1
- package/dist/hooks/learned-skills/config.d.ts +0 -53
- package/dist/hooks/learned-skills/config.d.ts.map +0 -1
- package/dist/hooks/learned-skills/config.js +0 -103
- package/dist/hooks/learned-skills/config.js.map +0 -1
- package/dist/hooks/learned-skills/constants.d.ts +0 -24
- package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
- package/dist/hooks/learned-skills/constants.js +0 -26
- package/dist/hooks/learned-skills/constants.js.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.js +0 -83
- package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
- package/dist/hooks/learned-skills/detector.d.ts +0 -30
- package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detector.js +0 -150
- package/dist/hooks/learned-skills/detector.js.map +0 -1
- package/dist/hooks/learned-skills/finder.d.ts +0 -21
- package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
- package/dist/hooks/learned-skills/finder.js +0 -117
- package/dist/hooks/learned-skills/finder.js.map +0 -1
- package/dist/hooks/learned-skills/index.d.ts +0 -62
- package/dist/hooks/learned-skills/index.d.ts.map +0 -1
- package/dist/hooks/learned-skills/index.js +0 -137
- package/dist/hooks/learned-skills/index.js.map +0 -1
- package/dist/hooks/learned-skills/loader.d.ts +0 -20
- package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
- package/dist/hooks/learned-skills/loader.js +0 -107
- package/dist/hooks/learned-skills/loader.js.map +0 -1
- package/dist/hooks/learned-skills/parser.d.ts +0 -21
- package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
- package/dist/hooks/learned-skills/parser.js +0 -190
- package/dist/hooks/learned-skills/parser.js.map +0 -1
- package/dist/hooks/learned-skills/promotion.d.ts +0 -29
- package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
- package/dist/hooks/learned-skills/promotion.js +0 -87
- package/dist/hooks/learned-skills/promotion.js.map +0 -1
- package/dist/hooks/learned-skills/types.d.ts +0 -109
- package/dist/hooks/learned-skills/types.d.ts.map +0 -1
- package/dist/hooks/learned-skills/types.js +0 -8
- package/dist/hooks/learned-skills/types.js.map +0 -1
- package/dist/hooks/learned-skills/validator.d.ts +0 -15
- package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
- package/dist/hooks/learned-skills/validator.js +0 -87
- package/dist/hooks/learned-skills/validator.js.map +0 -1
- package/dist/hooks/learned-skills/writer.d.ts +0 -27
- package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
- package/dist/hooks/learned-skills/writer.js +0 -126
- package/dist/hooks/learned-skills/writer.js.map +0 -1
- package/dist/hooks/mnemosyne/config.d.ts +0 -53
- package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/config.js +0 -103
- package/dist/hooks/mnemosyne/config.js.map +0 -1
- package/dist/hooks/mnemosyne/constants.d.ts +0 -24
- package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/constants.js +0 -26
- package/dist/hooks/mnemosyne/constants.js.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.js +0 -83
- package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
- package/dist/hooks/mnemosyne/detector.d.ts +0 -30
- package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detector.js +0 -150
- package/dist/hooks/mnemosyne/detector.js.map +0 -1
- package/dist/hooks/mnemosyne/finder.d.ts +0 -21
- package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/finder.js +0 -117
- package/dist/hooks/mnemosyne/finder.js.map +0 -1
- package/dist/hooks/mnemosyne/index.d.ts +0 -62
- package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/index.js +0 -137
- package/dist/hooks/mnemosyne/index.js.map +0 -1
- package/dist/hooks/mnemosyne/loader.d.ts +0 -20
- package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/loader.js +0 -113
- package/dist/hooks/mnemosyne/loader.js.map +0 -1
- package/dist/hooks/mnemosyne/parser.d.ts +0 -21
- package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/parser.js +0 -190
- package/dist/hooks/mnemosyne/parser.js.map +0 -1
- package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
- package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/promotion.js +0 -87
- package/dist/hooks/mnemosyne/promotion.js.map +0 -1
- package/dist/hooks/mnemosyne/types.d.ts +0 -109
- package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/types.js +0 -8
- package/dist/hooks/mnemosyne/types.js.map +0 -1
- package/dist/hooks/mnemosyne/validator.d.ts +0 -15
- package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/validator.js +0 -87
- package/dist/hooks/mnemosyne/validator.js.map +0 -1
- package/dist/hooks/mnemosyne/writer.d.ts +0 -27
- package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/writer.js +0 -126
- package/dist/hooks/mnemosyne/writer.js.map +0 -1
- package/dist/hooks/ralph-loop/index.d.ts +0 -116
- package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
- package/dist/hooks/ralph-loop/index.js +0 -322
- package/dist/hooks/ralph-loop/index.js.map +0 -1
- package/dist/hooks/ralph-prd/index.d.ts +0 -130
- package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
- package/dist/hooks/ralph-prd/index.js +0 -310
- package/dist/hooks/ralph-prd/index.js.map +0 -1
- package/dist/hooks/ralph-progress/index.d.ts +0 -102
- package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
- package/dist/hooks/ralph-progress/index.js +0 -408
- package/dist/hooks/ralph-progress/index.js.map +0 -1
- package/dist/hooks/ralph-verifier/index.d.ts +0 -72
- package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
- package/dist/hooks/ralph-verifier/index.js +0 -223
- package/dist/hooks/ralph-verifier/index.js.map +0 -1
- package/dist/hooks/session-recovery/constants.d.ts +0 -56
- package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/session-recovery/constants.js +0 -78
- package/dist/hooks/session-recovery/constants.js.map +0 -1
- package/dist/hooks/session-recovery/index.d.ts +0 -53
- package/dist/hooks/session-recovery/index.d.ts.map +0 -1
- package/dist/hooks/session-recovery/index.js +0 -321
- package/dist/hooks/session-recovery/index.js.map +0 -1
- package/dist/hooks/session-recovery/storage.d.ts +0 -76
- package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
- package/dist/hooks/session-recovery/storage.js +0 -383
- package/dist/hooks/session-recovery/storage.js.map +0 -1
- package/dist/hooks/session-recovery/types.d.ts +0 -145
- package/dist/hooks/session-recovery/types.d.ts.map +0 -1
- package/dist/hooks/session-recovery/types.js +0 -8
- package/dist/hooks/session-recovery/types.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
- package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
- package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
- package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
- package/dist/hooks/ultraqa-loop/index.js +0 -216
- package/dist/hooks/ultraqa-loop/index.js.map +0 -1
- package/dist/hooks/ultrawork-state/index.d.ts +0 -62
- package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
- package/dist/hooks/ultrawork-state/index.js +0 -208
- package/dist/hooks/ultrawork-state/index.js.map +0 -1
- package/dist/hud/sisyphus-state.d.ts +0 -31
- package/dist/hud/sisyphus-state.d.ts.map +0 -1
- package/dist/hud/sisyphus-state.js +0 -163
- package/dist/hud/sisyphus-state.js.map +0 -1
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Integration tests for learned skill discovery
|
|
3
|
-
*
|
|
4
|
-
* Tests the discoverAllCommands() functionality with project and user-scoped skills
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
-
import { mkdirSync, writeFileSync, rmSync, existsSync, readdirSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
import { tmpdir } from 'os';
|
|
10
|
-
import { discoverAllCommands, findCommand, executeSlashCommand } from '../../../hooks/auto-slash-command/executor.js';
|
|
11
|
-
describe('Learned Skill Discovery', () => {
|
|
12
|
-
let testProjectRoot;
|
|
13
|
-
let testUserSkillsDir;
|
|
14
|
-
let originalCwd;
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
// Save original CWD
|
|
17
|
-
originalCwd = process.cwd();
|
|
18
|
-
// Create temp project root
|
|
19
|
-
testProjectRoot = join(tmpdir(), `omc-test-${Date.now()}`);
|
|
20
|
-
mkdirSync(testProjectRoot, { recursive: true });
|
|
21
|
-
// Create temp user skills directory
|
|
22
|
-
testUserSkillsDir = join(tmpdir(), `omc-user-skills-${Date.now()}`);
|
|
23
|
-
mkdirSync(testUserSkillsDir, { recursive: true });
|
|
24
|
-
// Change to test project root
|
|
25
|
-
process.chdir(testProjectRoot);
|
|
26
|
-
});
|
|
27
|
-
afterEach(() => {
|
|
28
|
-
// Restore original CWD
|
|
29
|
-
process.chdir(originalCwd);
|
|
30
|
-
// Clean up temp directories
|
|
31
|
-
if (existsSync(testProjectRoot)) {
|
|
32
|
-
rmSync(testProjectRoot, { recursive: true, force: true });
|
|
33
|
-
}
|
|
34
|
-
if (existsSync(testUserSkillsDir)) {
|
|
35
|
-
rmSync(testUserSkillsDir, { recursive: true, force: true });
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
it('should discover skills in project .omc/skills/', () => {
|
|
39
|
-
// Create project skills directory
|
|
40
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
41
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
42
|
-
// Create a test skill file
|
|
43
|
-
const skillContent = `---
|
|
44
|
-
name: test-project-skill
|
|
45
|
-
description: A test project skill
|
|
46
|
-
model: sonnet
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
This is a test project skill template.
|
|
50
|
-
|
|
51
|
-
User request: $ARGUMENTS
|
|
52
|
-
`;
|
|
53
|
-
writeFileSync(join(projectSkillsDir, 'test-project-skill.md'), skillContent);
|
|
54
|
-
// Discover commands
|
|
55
|
-
const commands = discoverAllCommands();
|
|
56
|
-
// Verify skill is discovered
|
|
57
|
-
const projectSkill = commands.find(cmd => cmd.name === 'test-project-skill');
|
|
58
|
-
expect(projectSkill).toBeDefined();
|
|
59
|
-
expect(projectSkill?.scope).toBe('project-skill');
|
|
60
|
-
expect(projectSkill?.metadata.description).toBe('A test project skill');
|
|
61
|
-
expect(projectSkill?.metadata.model).toBe('sonnet');
|
|
62
|
-
});
|
|
63
|
-
it('should discover skills in user ~/.claude/skills/omc-learned/', () => {
|
|
64
|
-
// Mock the user skills directory by creating it in our test location
|
|
65
|
-
// Note: This test would need to mock homedir() or use environment variables
|
|
66
|
-
// For now, we'll test the discoverCommandsFromDir function indirectly
|
|
67
|
-
// Create user skills directory (simulated)
|
|
68
|
-
const userSkillsDir = join(testProjectRoot, '.test-user-skills');
|
|
69
|
-
mkdirSync(userSkillsDir, { recursive: true });
|
|
70
|
-
// Create a test user skill file
|
|
71
|
-
const skillContent = `---
|
|
72
|
-
name: test-user-skill
|
|
73
|
-
description: A test user skill
|
|
74
|
-
agent: executor
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
This is a test user skill template.
|
|
78
|
-
|
|
79
|
-
Arguments provided: $ARGUMENTS
|
|
80
|
-
`;
|
|
81
|
-
writeFileSync(join(userSkillsDir, 'test-user-skill.md'), skillContent);
|
|
82
|
-
// Manually test discovery logic (since we can't easily mock homedir)
|
|
83
|
-
const entries = readdirSync(userSkillsDir, { withFileTypes: true });
|
|
84
|
-
const mdFiles = entries.filter((e) => e.isFile() && e.name.endsWith('.md'));
|
|
85
|
-
expect(mdFiles.length).toBeGreaterThan(0);
|
|
86
|
-
expect(mdFiles[0].name).toBe('test-user-skill.md');
|
|
87
|
-
});
|
|
88
|
-
it('should prioritize project skills over user skills with same name', () => {
|
|
89
|
-
// Create both project and user skills directories
|
|
90
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
91
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
92
|
-
// Create project skill
|
|
93
|
-
const projectSkillContent = `---
|
|
94
|
-
name: duplicate-skill
|
|
95
|
-
description: Project version
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
This is the PROJECT version.
|
|
99
|
-
`;
|
|
100
|
-
writeFileSync(join(projectSkillsDir, 'duplicate-skill.md'), projectSkillContent);
|
|
101
|
-
// Create .claude/commands user skill (simulating user-level command)
|
|
102
|
-
const userCommandsDir = join(testProjectRoot, '.claude-user-sim', 'commands');
|
|
103
|
-
mkdirSync(userCommandsDir, { recursive: true });
|
|
104
|
-
const userSkillContent = `---
|
|
105
|
-
name: duplicate-skill
|
|
106
|
-
description: User version
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
This is the USER version.
|
|
110
|
-
`;
|
|
111
|
-
writeFileSync(join(userCommandsDir, 'duplicate-skill.md'), userSkillContent);
|
|
112
|
-
// Discover all commands
|
|
113
|
-
const commands = discoverAllCommands();
|
|
114
|
-
// Find all instances of duplicate-skill
|
|
115
|
-
const duplicateSkills = commands.filter(cmd => cmd.name === 'duplicate-skill');
|
|
116
|
-
// The first one should be the project skill (higher priority)
|
|
117
|
-
if (duplicateSkills.length > 0) {
|
|
118
|
-
expect(duplicateSkills[0].scope).toBe('project-skill');
|
|
119
|
-
expect(duplicateSkills[0].metadata.description).toBe('Project version');
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
it('should parse flat .md format with frontmatter correctly', () => {
|
|
123
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
124
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
125
|
-
// Create skill with comprehensive frontmatter
|
|
126
|
-
const skillContent = `---
|
|
127
|
-
name: comprehensive-skill
|
|
128
|
-
description: A comprehensive test skill
|
|
129
|
-
argument-hint: <task description>
|
|
130
|
-
model: opus
|
|
131
|
-
agent: architect
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
# Comprehensive Skill Template
|
|
135
|
-
|
|
136
|
-
This template uses all metadata fields.
|
|
137
|
-
|
|
138
|
-
## Task
|
|
139
|
-
$ARGUMENTS
|
|
140
|
-
|
|
141
|
-
## Instructions
|
|
142
|
-
1. Analyze the task
|
|
143
|
-
2. Execute with precision
|
|
144
|
-
3. Verify results
|
|
145
|
-
`;
|
|
146
|
-
writeFileSync(join(projectSkillsDir, 'comprehensive-skill.md'), skillContent);
|
|
147
|
-
const commands = discoverAllCommands();
|
|
148
|
-
const skill = commands.find(cmd => cmd.name === 'comprehensive-skill');
|
|
149
|
-
expect(skill).toBeDefined();
|
|
150
|
-
expect(skill?.metadata.name).toBe('comprehensive-skill');
|
|
151
|
-
expect(skill?.metadata.description).toBe('A comprehensive test skill');
|
|
152
|
-
expect(skill?.metadata.argumentHint).toBe('<task description>');
|
|
153
|
-
expect(skill?.metadata.model).toBe('opus');
|
|
154
|
-
expect(skill?.metadata.agent).toBe('architect');
|
|
155
|
-
expect(skill?.content).toContain('# Comprehensive Skill Template');
|
|
156
|
-
expect(skill?.content).toContain('$ARGUMENTS');
|
|
157
|
-
});
|
|
158
|
-
it('should fallback to filename if no name field in frontmatter', () => {
|
|
159
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
160
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
161
|
-
// Create skill WITHOUT name field
|
|
162
|
-
const skillContent = `---
|
|
163
|
-
description: Skill without explicit name
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
This skill has no name field.
|
|
167
|
-
`;
|
|
168
|
-
writeFileSync(join(projectSkillsDir, 'unnamed-skill.md'), skillContent);
|
|
169
|
-
const commands = discoverAllCommands();
|
|
170
|
-
const skill = commands.find(cmd => cmd.name === 'unnamed-skill');
|
|
171
|
-
expect(skill).toBeDefined();
|
|
172
|
-
expect(skill?.metadata.name).toBe('unnamed-skill'); // Should use filename
|
|
173
|
-
expect(skill?.metadata.description).toBe('Skill without explicit name');
|
|
174
|
-
});
|
|
175
|
-
it('should find learned skill by name via findCommand()', () => {
|
|
176
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
177
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
178
|
-
const skillContent = `---
|
|
179
|
-
name: findable-skill
|
|
180
|
-
description: A skill that can be found
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
This skill should be findable.
|
|
184
|
-
`;
|
|
185
|
-
writeFileSync(join(projectSkillsDir, 'findable-skill.md'), skillContent);
|
|
186
|
-
// Use findCommand to locate it
|
|
187
|
-
const found = findCommand('findable-skill');
|
|
188
|
-
expect(found).not.toBeNull();
|
|
189
|
-
expect(found?.name).toBe('findable-skill');
|
|
190
|
-
expect(found?.scope).toBe('project-skill');
|
|
191
|
-
expect(found?.metadata.description).toBe('A skill that can be found');
|
|
192
|
-
});
|
|
193
|
-
it('should execute learned skill slash command correctly', () => {
|
|
194
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
195
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
196
|
-
const skillContent = `---
|
|
197
|
-
name: executable-skill
|
|
198
|
-
description: An executable skill
|
|
199
|
-
model: sonnet
|
|
200
|
-
agent: executor
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
Execute the following task:
|
|
204
|
-
|
|
205
|
-
$ARGUMENTS
|
|
206
|
-
|
|
207
|
-
Please proceed with care.
|
|
208
|
-
`;
|
|
209
|
-
writeFileSync(join(projectSkillsDir, 'executable-skill.md'), skillContent);
|
|
210
|
-
// Simulate slash command execution
|
|
211
|
-
const parsed = {
|
|
212
|
-
command: 'executable-skill',
|
|
213
|
-
args: 'implement feature X',
|
|
214
|
-
raw: '/executable-skill implement feature X',
|
|
215
|
-
};
|
|
216
|
-
const result = executeSlashCommand(parsed);
|
|
217
|
-
expect(result.success).toBe(true);
|
|
218
|
-
expect(result.replacementText).toBeDefined();
|
|
219
|
-
expect(result.replacementText).toContain('executable-skill');
|
|
220
|
-
expect(result.replacementText).toContain('An executable skill');
|
|
221
|
-
expect(result.replacementText).toContain('**Model**: sonnet');
|
|
222
|
-
expect(result.replacementText).toContain('**Agent**: executor');
|
|
223
|
-
expect(result.replacementText).toContain('**Scope**: project-skill');
|
|
224
|
-
expect(result.replacementText).toContain('implement feature X');
|
|
225
|
-
expect(result.replacementText).toContain('Execute the following task:');
|
|
226
|
-
});
|
|
227
|
-
it('should handle $ARGUMENTS placeholder replacement', () => {
|
|
228
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
229
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
230
|
-
const skillContent = `---
|
|
231
|
-
name: args-test
|
|
232
|
-
description: Test argument replacement
|
|
233
|
-
---
|
|
234
|
-
|
|
235
|
-
Task: $ARGUMENTS
|
|
236
|
-
Context: Processing $ARGUMENTS
|
|
237
|
-
Result: Completed $ARGUMENTS
|
|
238
|
-
`;
|
|
239
|
-
writeFileSync(join(projectSkillsDir, 'args-test.md'), skillContent);
|
|
240
|
-
const parsed = {
|
|
241
|
-
command: 'args-test',
|
|
242
|
-
args: 'build authentication system',
|
|
243
|
-
raw: '/args-test build authentication system',
|
|
244
|
-
};
|
|
245
|
-
const result = executeSlashCommand(parsed);
|
|
246
|
-
expect(result.success).toBe(true);
|
|
247
|
-
expect(result.replacementText).toContain('Task: build authentication system');
|
|
248
|
-
expect(result.replacementText).toContain('Context: Processing build authentication system');
|
|
249
|
-
expect(result.replacementText).toContain('Result: Completed build authentication system');
|
|
250
|
-
});
|
|
251
|
-
it('should handle skills without $ARGUMENTS placeholder', () => {
|
|
252
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
253
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
254
|
-
const skillContent = `---
|
|
255
|
-
name: no-args-placeholder
|
|
256
|
-
description: Skill without placeholder
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
This is a static template.
|
|
260
|
-
It does not use argument placeholders.
|
|
261
|
-
`;
|
|
262
|
-
writeFileSync(join(projectSkillsDir, 'no-args-placeholder.md'), skillContent);
|
|
263
|
-
const parsed = {
|
|
264
|
-
command: 'no-args-placeholder',
|
|
265
|
-
args: 'some user input',
|
|
266
|
-
raw: '/no-args-placeholder some user input',
|
|
267
|
-
};
|
|
268
|
-
const result = executeSlashCommand(parsed);
|
|
269
|
-
expect(result.success).toBe(true);
|
|
270
|
-
// Should append user request section when no $ARGUMENTS found
|
|
271
|
-
expect(result.replacementText).toContain('This is a static template');
|
|
272
|
-
expect(result.replacementText).toContain('## User Request');
|
|
273
|
-
expect(result.replacementText).toContain('some user input');
|
|
274
|
-
});
|
|
275
|
-
it('should return error for non-existent skill', () => {
|
|
276
|
-
const parsed = {
|
|
277
|
-
command: 'non-existent-skill',
|
|
278
|
-
args: 'test',
|
|
279
|
-
raw: '/non-existent-skill test',
|
|
280
|
-
};
|
|
281
|
-
const result = executeSlashCommand(parsed);
|
|
282
|
-
expect(result.success).toBe(false);
|
|
283
|
-
expect(result.error).toBeDefined();
|
|
284
|
-
expect(result.error).toContain('not found');
|
|
285
|
-
});
|
|
286
|
-
it('should handle empty arguments gracefully', () => {
|
|
287
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
288
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
289
|
-
const skillContent = `---
|
|
290
|
-
name: empty-args-skill
|
|
291
|
-
description: Test empty arguments
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
Arguments: $ARGUMENTS
|
|
295
|
-
`;
|
|
296
|
-
writeFileSync(join(projectSkillsDir, 'empty-args-skill.md'), skillContent);
|
|
297
|
-
const parsed = {
|
|
298
|
-
command: 'empty-args-skill',
|
|
299
|
-
args: '',
|
|
300
|
-
raw: '/empty-args-skill',
|
|
301
|
-
};
|
|
302
|
-
const result = executeSlashCommand(parsed);
|
|
303
|
-
expect(result.success).toBe(true);
|
|
304
|
-
expect(result.replacementText).toContain('Arguments: (no arguments provided)');
|
|
305
|
-
});
|
|
306
|
-
it('should discover multiple skills from same directory', () => {
|
|
307
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
308
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
309
|
-
// Create multiple skills
|
|
310
|
-
for (let i = 1; i <= 3; i++) {
|
|
311
|
-
const skillContent = `---
|
|
312
|
-
name: multi-skill-${i}
|
|
313
|
-
description: Skill number ${i}
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
Template ${i}
|
|
317
|
-
`;
|
|
318
|
-
writeFileSync(join(projectSkillsDir, `multi-skill-${i}.md`), skillContent);
|
|
319
|
-
}
|
|
320
|
-
const commands = discoverAllCommands();
|
|
321
|
-
const multiSkills = commands.filter(cmd => cmd.name.startsWith('multi-skill-'));
|
|
322
|
-
expect(multiSkills.length).toBe(3);
|
|
323
|
-
expect(multiSkills.every(s => s.scope === 'project-skill')).toBe(true);
|
|
324
|
-
});
|
|
325
|
-
it('should ignore non-.md files in skills directory', () => {
|
|
326
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
327
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
328
|
-
// Create .md file
|
|
329
|
-
writeFileSync(join(projectSkillsDir, 'valid-skill.md'), '---\nname: valid\n---\nContent');
|
|
330
|
-
// Create non-.md files
|
|
331
|
-
writeFileSync(join(projectSkillsDir, 'invalid.txt'), 'Should be ignored');
|
|
332
|
-
writeFileSync(join(projectSkillsDir, 'README'), 'Should be ignored');
|
|
333
|
-
const commands = discoverAllCommands();
|
|
334
|
-
const projectSkills = commands.filter(cmd => cmd.scope === 'project-skill');
|
|
335
|
-
expect(projectSkills.length).toBe(1);
|
|
336
|
-
expect(projectSkills[0].name).toBe('valid-skill');
|
|
337
|
-
});
|
|
338
|
-
it('should handle malformed frontmatter gracefully', () => {
|
|
339
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
340
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
341
|
-
// Create skill with malformed frontmatter
|
|
342
|
-
const malformedContent = `---
|
|
343
|
-
this is not valid yaml
|
|
344
|
-
no colons here
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
Body content
|
|
348
|
-
`;
|
|
349
|
-
writeFileSync(join(projectSkillsDir, 'malformed.md'), malformedContent);
|
|
350
|
-
// Should not throw, just skip the malformed file
|
|
351
|
-
const commands = discoverAllCommands();
|
|
352
|
-
const malformed = commands.find(cmd => cmd.name === 'malformed');
|
|
353
|
-
// Should still parse (frontmatter parsing is lenient)
|
|
354
|
-
// It will have empty metadata but valid name from filename
|
|
355
|
-
expect(malformed?.metadata.name).toBe('malformed');
|
|
356
|
-
});
|
|
357
|
-
it('should handle skills without frontmatter', () => {
|
|
358
|
-
const projectSkillsDir = join(testProjectRoot, '.omc', 'skills');
|
|
359
|
-
mkdirSync(projectSkillsDir, { recursive: true });
|
|
360
|
-
// Create skill without frontmatter
|
|
361
|
-
const noFrontmatter = `This is just plain markdown content.
|
|
362
|
-
|
|
363
|
-
No frontmatter at all.
|
|
364
|
-
`;
|
|
365
|
-
writeFileSync(join(projectSkillsDir, 'no-frontmatter.md'), noFrontmatter);
|
|
366
|
-
const commands = discoverAllCommands();
|
|
367
|
-
const skill = commands.find(cmd => cmd.name === 'no-frontmatter');
|
|
368
|
-
expect(skill).toBeDefined();
|
|
369
|
-
expect(skill?.metadata.name).toBe('no-frontmatter');
|
|
370
|
-
expect(skill?.metadata.description).toBe(''); // Empty string for missing description
|
|
371
|
-
expect(skill?.content).toContain('This is just plain markdown content');
|
|
372
|
-
});
|
|
373
|
-
});
|
|
374
|
-
//# sourceMappingURL=executor.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executor.test.js","sourceRoot":"","sources":["../../../../src/__tests__/hooks/auto-slash-command/executor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-tracking.integration.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/hud/auto-tracking.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
describe('Auto-Tracking Integration', () => {
|
|
3
|
-
it('should record tokens on HUD render', async () => {
|
|
4
|
-
// TODO: Test end-to-end auto-recording
|
|
5
|
-
expect(true).toBe(true);
|
|
6
|
-
});
|
|
7
|
-
it('should associate tokens with running agents', async () => {
|
|
8
|
-
// TODO: Test agent correlation
|
|
9
|
-
expect(true).toBe(true);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=auto-tracking.integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-tracking.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/hud/auto-tracking.integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,uCAAuC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { loadConfig, getConfigValue } from '../../hooks/learned-skills/config.js';
|
|
3
|
-
describe('Claudeception Config', () => {
|
|
4
|
-
it('should return defaults when no config exists', () => {
|
|
5
|
-
const config = loadConfig();
|
|
6
|
-
expect(config.enabled).toBe(true);
|
|
7
|
-
expect(config.detection.promptThreshold).toBe(60);
|
|
8
|
-
});
|
|
9
|
-
it('should have valid default detection config', () => {
|
|
10
|
-
const config = loadConfig();
|
|
11
|
-
expect(config.detection.enabled).toBe(true);
|
|
12
|
-
expect(config.detection.promptCooldown).toBe(5);
|
|
13
|
-
});
|
|
14
|
-
it('should have valid default quality config', () => {
|
|
15
|
-
const config = loadConfig();
|
|
16
|
-
expect(config.quality.minScore).toBe(50);
|
|
17
|
-
expect(config.quality.minProblemLength).toBe(10);
|
|
18
|
-
expect(config.quality.minSolutionLength).toBe(20);
|
|
19
|
-
});
|
|
20
|
-
it('should have valid default storage config', () => {
|
|
21
|
-
const config = loadConfig();
|
|
22
|
-
expect(config.storage.maxSkillsPerScope).toBe(100);
|
|
23
|
-
expect(config.storage.autoPrune).toBe(false);
|
|
24
|
-
expect(config.storage.pruneDays).toBe(90);
|
|
25
|
-
});
|
|
26
|
-
it('should get specific config value', () => {
|
|
27
|
-
const enabled = getConfigValue('enabled');
|
|
28
|
-
expect(typeof enabled).toBe('boolean');
|
|
29
|
-
});
|
|
30
|
-
it('should get nested config value', () => {
|
|
31
|
-
const detection = getConfigValue('detection');
|
|
32
|
-
expect(detection).toHaveProperty('enabled');
|
|
33
|
-
expect(detection).toHaveProperty('promptThreshold');
|
|
34
|
-
expect(detection).toHaveProperty('promptCooldown');
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
//# sourceMappingURL=config.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAElF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detector.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/detector.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { detectExtractableMoment, shouldPromptExtraction, generateExtractionPrompt, } from '../../hooks/learned-skills/detector.js';
|
|
3
|
-
describe('Skill Detector', () => {
|
|
4
|
-
describe('detectExtractableMoment', () => {
|
|
5
|
-
it('should detect problem-solution pattern', () => {
|
|
6
|
-
const message = 'The issue was caused by a race condition. I fixed it by adding proper locking.';
|
|
7
|
-
const result = detectExtractableMoment(message);
|
|
8
|
-
expect(result.detected).toBe(true);
|
|
9
|
-
expect(result.patternType).toBe('problem-solution');
|
|
10
|
-
expect(result.confidence).toBeGreaterThan(0);
|
|
11
|
-
});
|
|
12
|
-
it('should detect technique pattern', () => {
|
|
13
|
-
const message = 'A better way to handle this is to use the observer pattern instead of polling.';
|
|
14
|
-
const result = detectExtractableMoment(message);
|
|
15
|
-
expect(result.detected).toBe(true);
|
|
16
|
-
expect(result.patternType).toBe('technique');
|
|
17
|
-
});
|
|
18
|
-
it('should detect best practice pattern', () => {
|
|
19
|
-
const message = 'Best practices include keeping state as local as possible for React components.';
|
|
20
|
-
const result = detectExtractableMoment(message);
|
|
21
|
-
expect(result.detected).toBe(true);
|
|
22
|
-
expect(result.patternType).toBe('best-practice');
|
|
23
|
-
});
|
|
24
|
-
it('should not detect in regular conversation', () => {
|
|
25
|
-
const message = 'Sure, I can help you with that. What would you like to know?';
|
|
26
|
-
const result = detectExtractableMoment(message);
|
|
27
|
-
expect(result.detected).toBe(false);
|
|
28
|
-
});
|
|
29
|
-
it('should extract trigger keywords when pattern detected', () => {
|
|
30
|
-
// Message that matches problem-solution pattern AND contains trigger keywords
|
|
31
|
-
const message = 'The issue was caused by React state management. I fixed it by using TypeScript strict mode.';
|
|
32
|
-
const result = detectExtractableMoment(message, 'How do I manage state in React?');
|
|
33
|
-
expect(result.detected).toBe(true);
|
|
34
|
-
expect(result.suggestedTriggers).toContain('react');
|
|
35
|
-
expect(result.suggestedTriggers).toContain('typescript');
|
|
36
|
-
});
|
|
37
|
-
it('should detect workaround pattern', () => {
|
|
38
|
-
const message = 'As a workaround, you can temporarily disable the cache while debugging.';
|
|
39
|
-
const result = detectExtractableMoment(message);
|
|
40
|
-
expect(result.detected).toBe(true);
|
|
41
|
-
expect(result.patternType).toBe('workaround');
|
|
42
|
-
});
|
|
43
|
-
it('should detect optimization pattern', () => {
|
|
44
|
-
const message = 'To get better performance, optimize by using memoization on expensive calculations.';
|
|
45
|
-
const result = detectExtractableMoment(message);
|
|
46
|
-
expect(result.detected).toBe(true);
|
|
47
|
-
expect(result.patternType).toBe('optimization');
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
describe('shouldPromptExtraction', () => {
|
|
51
|
-
it('should return true when confidence exceeds threshold', () => {
|
|
52
|
-
const detection = {
|
|
53
|
-
detected: true,
|
|
54
|
-
confidence: 75,
|
|
55
|
-
patternType: 'problem-solution',
|
|
56
|
-
suggestedTriggers: [],
|
|
57
|
-
reason: 'test',
|
|
58
|
-
};
|
|
59
|
-
expect(shouldPromptExtraction(detection, 60)).toBe(true);
|
|
60
|
-
});
|
|
61
|
-
it('should return false when not detected', () => {
|
|
62
|
-
const detection = {
|
|
63
|
-
detected: false,
|
|
64
|
-
confidence: 0,
|
|
65
|
-
patternType: 'problem-solution',
|
|
66
|
-
suggestedTriggers: [],
|
|
67
|
-
reason: 'test',
|
|
68
|
-
};
|
|
69
|
-
expect(shouldPromptExtraction(detection)).toBe(false);
|
|
70
|
-
});
|
|
71
|
-
it('should return false when below threshold', () => {
|
|
72
|
-
const detection = {
|
|
73
|
-
detected: true,
|
|
74
|
-
confidence: 40,
|
|
75
|
-
patternType: 'problem-solution',
|
|
76
|
-
suggestedTriggers: [],
|
|
77
|
-
reason: 'test',
|
|
78
|
-
};
|
|
79
|
-
expect(shouldPromptExtraction(detection, 60)).toBe(false);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe('generateExtractionPrompt', () => {
|
|
83
|
-
it('should generate prompt with detection details', () => {
|
|
84
|
-
const detection = {
|
|
85
|
-
detected: true,
|
|
86
|
-
confidence: 80,
|
|
87
|
-
patternType: 'technique',
|
|
88
|
-
suggestedTriggers: ['react', 'hooks'],
|
|
89
|
-
reason: 'Detected technique pattern',
|
|
90
|
-
};
|
|
91
|
-
const prompt = generateExtractionPrompt(detection);
|
|
92
|
-
expect(prompt).toContain('useful technique');
|
|
93
|
-
expect(prompt).toContain('80%');
|
|
94
|
-
expect(prompt).toContain('react, hooks');
|
|
95
|
-
expect(prompt).toContain('/claudeception');
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
//# sourceMappingURL=detector.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detector.test.js","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/detector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"finder.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/learned-skills/finder.test.ts"],"names":[],"mappings":""}
|