claude-code-workflow 6.2.7 → 6.3.0
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/CLAUDE.md +16 -1
- package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +11 -4
- package/.claude/workflows/cli-templates/protocols/write-protocol.md +10 -75
- package/.claude/workflows/cli-tools-usage.md +14 -24
- package/.codex/AGENTS.md +51 -1
- package/.codex/prompts/compact.md +378 -0
- package/.gemini/GEMINI.md +57 -20
- package/ccw/dist/cli.d.ts.map +1 -1
- package/ccw/dist/cli.js +21 -8
- package/ccw/dist/cli.js.map +1 -1
- package/ccw/dist/commands/cli.d.ts +2 -0
- package/ccw/dist/commands/cli.d.ts.map +1 -1
- package/ccw/dist/commands/cli.js +129 -8
- package/ccw/dist/commands/cli.js.map +1 -1
- package/ccw/dist/commands/hook.d.ts.map +1 -1
- package/ccw/dist/commands/hook.js +3 -2
- package/ccw/dist/commands/hook.js.map +1 -1
- package/ccw/dist/config/litellm-api-config-manager.d.ts +180 -0
- package/ccw/dist/config/litellm-api-config-manager.d.ts.map +1 -0
- package/ccw/dist/config/litellm-api-config-manager.js +770 -0
- package/ccw/dist/config/litellm-api-config-manager.js.map +1 -0
- package/ccw/dist/config/provider-models.d.ts +73 -0
- package/ccw/dist/config/provider-models.d.ts.map +1 -0
- package/ccw/dist/config/provider-models.js +172 -0
- package/ccw/dist/config/provider-models.js.map +1 -0
- package/ccw/dist/core/cache-manager.d.ts.map +1 -1
- package/ccw/dist/core/cache-manager.js +3 -5
- package/ccw/dist/core/cache-manager.js.map +1 -1
- package/ccw/dist/core/dashboard-generator.d.ts.map +1 -1
- package/ccw/dist/core/dashboard-generator.js +3 -1
- package/ccw/dist/core/dashboard-generator.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +169 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.js +234 -18
- package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
- package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/hooks-routes.js +30 -32
- package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
- package/ccw/dist/core/routes/litellm-api-routes.d.ts +21 -0
- package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/litellm-api-routes.js +780 -0
- package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -0
- package/ccw/dist/core/routes/litellm-routes.d.ts +20 -0
- package/ccw/dist/core/routes/litellm-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/litellm-routes.js +85 -0
- package/ccw/dist/core/routes/litellm-routes.js.map +1 -0
- package/ccw/dist/core/routes/mcp-routes.js +2 -2
- package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
- package/ccw/dist/core/routes/status-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/status-routes.js +39 -0
- package/ccw/dist/core/routes/status-routes.js.map +1 -1
- package/ccw/dist/core/routes/system-routes.js +1 -1
- package/ccw/dist/core/routes/system-routes.js.map +1 -1
- package/ccw/dist/core/server.d.ts.map +1 -1
- package/ccw/dist/core/server.js +15 -1
- package/ccw/dist/core/server.js.map +1 -1
- package/ccw/dist/mcp-server/index.js +1 -1
- package/ccw/dist/mcp-server/index.js.map +1 -1
- package/ccw/dist/tools/claude-cli-tools.d.ts +82 -0
- package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -0
- package/ccw/dist/tools/claude-cli-tools.js +216 -0
- package/ccw/dist/tools/claude-cli-tools.js.map +1 -0
- package/ccw/dist/tools/cli-executor.d.ts.map +1 -1
- package/ccw/dist/tools/cli-executor.js +76 -14
- package/ccw/dist/tools/cli-executor.js.map +1 -1
- package/ccw/dist/tools/codex-lens.d.ts +9 -2
- package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
- package/ccw/dist/tools/codex-lens.js +114 -9
- package/ccw/dist/tools/codex-lens.js.map +1 -1
- package/ccw/dist/tools/context-cache-store.d.ts +136 -0
- package/ccw/dist/tools/context-cache-store.d.ts.map +1 -0
- package/ccw/dist/tools/context-cache-store.js +256 -0
- package/ccw/dist/tools/context-cache-store.js.map +1 -0
- package/ccw/dist/tools/context-cache.d.ts +56 -0
- package/ccw/dist/tools/context-cache.d.ts.map +1 -0
- package/ccw/dist/tools/context-cache.js +294 -0
- package/ccw/dist/tools/context-cache.js.map +1 -0
- package/ccw/dist/tools/core-memory.d.ts.map +1 -1
- package/ccw/dist/tools/core-memory.js +33 -19
- package/ccw/dist/tools/core-memory.js.map +1 -1
- package/ccw/dist/tools/index.d.ts.map +1 -1
- package/ccw/dist/tools/index.js +2 -0
- package/ccw/dist/tools/index.js.map +1 -1
- package/ccw/dist/tools/litellm-client.d.ts +85 -0
- package/ccw/dist/tools/litellm-client.d.ts.map +1 -0
- package/ccw/dist/tools/litellm-client.js +188 -0
- package/ccw/dist/tools/litellm-client.js.map +1 -0
- package/ccw/dist/tools/litellm-executor.d.ts +34 -0
- package/ccw/dist/tools/litellm-executor.d.ts.map +1 -0
- package/ccw/dist/tools/litellm-executor.js +192 -0
- package/ccw/dist/tools/litellm-executor.js.map +1 -0
- package/ccw/dist/tools/pattern-parser.d.ts +55 -0
- package/ccw/dist/tools/pattern-parser.d.ts.map +1 -0
- package/ccw/dist/tools/pattern-parser.js +237 -0
- package/ccw/dist/tools/pattern-parser.js.map +1 -0
- package/ccw/dist/tools/smart-search.d.ts +1 -0
- package/ccw/dist/tools/smart-search.d.ts.map +1 -1
- package/ccw/dist/tools/smart-search.js +117 -41
- package/ccw/dist/tools/smart-search.js.map +1 -1
- package/ccw/dist/types/litellm-api-config.d.ts +294 -0
- package/ccw/dist/types/litellm-api-config.d.ts.map +1 -0
- package/ccw/dist/types/litellm-api-config.js +8 -0
- package/ccw/dist/types/litellm-api-config.js.map +1 -0
- package/ccw/src/cli.ts +258 -244
- package/ccw/src/commands/cli.ts +153 -9
- package/ccw/src/commands/hook.ts +3 -2
- package/ccw/src/config/.litellm-api-config-manager.ts.2025-12-23T11-57-43-727Z.bak +441 -0
- package/ccw/src/config/litellm-api-config-manager.ts +1012 -0
- package/ccw/src/config/provider-models.ts +222 -0
- package/ccw/src/core/cache-manager.ts +292 -294
- package/ccw/src/core/dashboard-generator.ts +3 -1
- package/ccw/src/core/routes/cli-routes.ts +192 -0
- package/ccw/src/core/routes/codexlens-routes.ts +241 -19
- package/ccw/src/core/routes/hooks-routes.ts +399 -405
- package/ccw/src/core/routes/litellm-api-routes.ts +930 -0
- package/ccw/src/core/routes/litellm-routes.ts +107 -0
- package/ccw/src/core/routes/mcp-routes.ts +1271 -1271
- package/ccw/src/core/routes/status-routes.ts +51 -0
- package/ccw/src/core/routes/system-routes.ts +1 -1
- package/ccw/src/core/server.ts +15 -1
- package/ccw/src/mcp-server/index.ts +1 -1
- package/ccw/src/templates/dashboard-css/12-cli-legacy.css +44 -0
- package/ccw/src/templates/dashboard-css/31-api-settings.css +2265 -0
- package/ccw/src/templates/dashboard-js/components/cli-history.js +15 -8
- package/ccw/src/templates/dashboard-js/components/cli-status.js +323 -9
- package/ccw/src/templates/dashboard-js/components/navigation.js +329 -313
- package/ccw/src/templates/dashboard-js/i18n.js +583 -1
- package/ccw/src/templates/dashboard-js/views/api-settings.js +3362 -0
- package/ccw/src/templates/dashboard-js/views/cli-manager.js +199 -24
- package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +1265 -27
- package/ccw/src/templates/dashboard.html +840 -831
- package/ccw/src/tools/claude-cli-tools.ts +300 -0
- package/ccw/src/tools/cli-executor.ts +83 -14
- package/ccw/src/tools/codex-lens.ts +146 -9
- package/ccw/src/tools/context-cache-store.ts +368 -0
- package/ccw/src/tools/context-cache.ts +393 -0
- package/ccw/src/tools/core-memory.ts +33 -19
- package/ccw/src/tools/index.ts +2 -0
- package/ccw/src/tools/litellm-client.ts +246 -0
- package/ccw/src/tools/litellm-executor.ts +241 -0
- package/ccw/src/tools/pattern-parser.ts +329 -0
- package/ccw/src/tools/smart-search.ts +142 -41
- package/ccw/src/types/litellm-api-config.ts +402 -0
- package/ccw-litellm/README.md +180 -0
- package/ccw-litellm/pyproject.toml +35 -0
- package/ccw-litellm/src/ccw_litellm/__init__.py +47 -0
- package/ccw-litellm/src/ccw_litellm/__pycache__/__init__.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/__pycache__/cli.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/cli.py +108 -0
- package/ccw-litellm/src/ccw_litellm/clients/__init__.py +12 -0
- package/ccw-litellm/src/ccw_litellm/clients/__pycache__/__init__.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/clients/__pycache__/litellm_embedder.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/clients/__pycache__/litellm_llm.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/clients/litellm_embedder.py +251 -0
- package/ccw-litellm/src/ccw_litellm/clients/litellm_llm.py +165 -0
- package/ccw-litellm/src/ccw_litellm/config/__init__.py +22 -0
- package/ccw-litellm/src/ccw_litellm/config/__pycache__/__init__.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/config/__pycache__/loader.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/config/__pycache__/models.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/config/loader.py +316 -0
- package/ccw-litellm/src/ccw_litellm/config/models.py +130 -0
- package/ccw-litellm/src/ccw_litellm/interfaces/__init__.py +14 -0
- package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/__init__.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/embedder.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/llm.cpython-313.pyc +0 -0
- package/ccw-litellm/src/ccw_litellm/interfaces/embedder.py +52 -0
- package/ccw-litellm/src/ccw_litellm/interfaces/llm.py +45 -0
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/cli/commands.py +378 -23
- package/codex-lens/src/codexlens/cli/embedding_manager.py +660 -56
- package/codex-lens/src/codexlens/cli/model_manager.py +31 -18
- package/codex-lens/src/codexlens/cli/output.py +12 -1
- package/codex-lens/src/codexlens/config.py +93 -0
- package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/chain_search.py +6 -2
- package/codex-lens/src/codexlens/search/hybrid_search.py +44 -21
- package/codex-lens/src/codexlens/search/ranking.py +1 -1
- package/codex-lens/src/codexlens/semantic/__init__.py +42 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/base.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/factory.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/gpu_support.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/litellm_embedder.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/base.py +61 -0
- package/codex-lens/src/codexlens/semantic/chunker.py +43 -20
- package/codex-lens/src/codexlens/semantic/embedder.py +60 -13
- package/codex-lens/src/codexlens/semantic/factory.py +98 -0
- package/codex-lens/src/codexlens/semantic/gpu_support.py +225 -3
- package/codex-lens/src/codexlens/semantic/litellm_embedder.py +144 -0
- package/codex-lens/src/codexlens/semantic/rotational_embedder.py +434 -0
- package/codex-lens/src/codexlens/semantic/vector_store.py +33 -8
- package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/storage/path_mapper.py +27 -1
- package/package.json +15 -5
- package/.codex/prompts.zip +0 -0
- package/ccw/package.json +0 -65
|
@@ -4,9 +4,56 @@
|
|
|
4
4
|
* Aggregated status endpoint for faster dashboard loading
|
|
5
5
|
*/
|
|
6
6
|
import type { IncomingMessage, ServerResponse } from 'http';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
import { homedir } from 'os';
|
|
7
10
|
import { getCliToolsStatus } from '../../tools/cli-executor.js';
|
|
8
11
|
import { checkVenvStatus, checkSemanticStatus } from '../../tools/codex-lens.js';
|
|
9
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Check CCW installation status
|
|
15
|
+
* Verifies that required workflow files are installed in user's home directory
|
|
16
|
+
*/
|
|
17
|
+
function checkCcwInstallStatus(): {
|
|
18
|
+
installed: boolean;
|
|
19
|
+
workflowsInstalled: boolean;
|
|
20
|
+
missingFiles: string[];
|
|
21
|
+
installPath: string;
|
|
22
|
+
} {
|
|
23
|
+
const claudeDir = join(homedir(), '.claude');
|
|
24
|
+
const workflowsDir = join(claudeDir, 'workflows');
|
|
25
|
+
|
|
26
|
+
// Required workflow files for full functionality
|
|
27
|
+
const requiredFiles = [
|
|
28
|
+
'chinese-response.md',
|
|
29
|
+
'windows-platform.md',
|
|
30
|
+
'cli-tools-usage.md',
|
|
31
|
+
'coding-philosophy.md',
|
|
32
|
+
'context-tools.md',
|
|
33
|
+
'file-modification.md'
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const missingFiles: string[] = [];
|
|
37
|
+
|
|
38
|
+
// Check each required file
|
|
39
|
+
for (const file of requiredFiles) {
|
|
40
|
+
const filePath = join(workflowsDir, file);
|
|
41
|
+
if (!existsSync(filePath)) {
|
|
42
|
+
missingFiles.push(file);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const workflowsInstalled = existsSync(workflowsDir) && missingFiles.length === 0;
|
|
47
|
+
const installed = existsSync(claudeDir) && workflowsInstalled;
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
installed,
|
|
51
|
+
workflowsInstalled,
|
|
52
|
+
missingFiles,
|
|
53
|
+
installPath: claudeDir
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
10
57
|
export interface RouteContext {
|
|
11
58
|
pathname: string;
|
|
12
59
|
url: URL;
|
|
@@ -27,6 +74,9 @@ export async function handleStatusRoutes(ctx: RouteContext): Promise<boolean> {
|
|
|
27
74
|
// API: Aggregated Status (all statuses in one call)
|
|
28
75
|
if (pathname === '/api/status/all') {
|
|
29
76
|
try {
|
|
77
|
+
// Check CCW installation status (sync, fast)
|
|
78
|
+
const ccwInstallStatus = checkCcwInstallStatus();
|
|
79
|
+
|
|
30
80
|
// Execute all status checks in parallel
|
|
31
81
|
const [cliStatus, codexLensStatus, semanticStatus] = await Promise.all([
|
|
32
82
|
getCliToolsStatus(),
|
|
@@ -39,6 +89,7 @@ export async function handleStatusRoutes(ctx: RouteContext): Promise<boolean> {
|
|
|
39
89
|
cli: cliStatus,
|
|
40
90
|
codexLens: codexLensStatus,
|
|
41
91
|
semantic: semanticStatus,
|
|
92
|
+
ccwInstall: ccwInstallStatus,
|
|
42
93
|
timestamp: new Date().toISOString()
|
|
43
94
|
};
|
|
44
95
|
|
|
@@ -49,7 +49,7 @@ const VERSION_CHECK_CACHE_TTL = 3600000; // 1 hour
|
|
|
49
49
|
*/
|
|
50
50
|
function getCurrentVersion(): string {
|
|
51
51
|
try {
|
|
52
|
-
const packageJsonPath = join(import.meta.dirname, '
|
|
52
|
+
const packageJsonPath = join(import.meta.dirname, '../../../../package.json');
|
|
53
53
|
if (existsSync(packageJsonPath)) {
|
|
54
54
|
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
55
55
|
return pkg.version || '0.0.0';
|
package/ccw/src/core/server.ts
CHANGED
|
@@ -22,6 +22,8 @@ import { handleSessionRoutes } from './routes/session-routes.js';
|
|
|
22
22
|
import { handleCcwRoutes } from './routes/ccw-routes.js';
|
|
23
23
|
import { handleClaudeRoutes } from './routes/claude-routes.js';
|
|
24
24
|
import { handleHelpRoutes } from './routes/help-routes.js';
|
|
25
|
+
import { handleLiteLLMRoutes } from './routes/litellm-routes.js';
|
|
26
|
+
import { handleLiteLLMApiRoutes } from './routes/litellm-api-routes.js';
|
|
25
27
|
|
|
26
28
|
// Import WebSocket handling
|
|
27
29
|
import { handleWebSocketUpgrade, broadcastToClients } from './websocket.js';
|
|
@@ -83,7 +85,8 @@ const MODULE_CSS_FILES = [
|
|
|
83
85
|
'27-graph-explorer.css',
|
|
84
86
|
'28-mcp-manager.css',
|
|
85
87
|
'29-help.css',
|
|
86
|
-
'30-core-memory.css'
|
|
88
|
+
'30-core-memory.css',
|
|
89
|
+
'31-api-settings.css'
|
|
87
90
|
];
|
|
88
91
|
|
|
89
92
|
// Modular JS files in dependency order
|
|
@@ -137,6 +140,7 @@ const MODULE_FILES = [
|
|
|
137
140
|
'views/skills-manager.js',
|
|
138
141
|
'views/rules-manager.js',
|
|
139
142
|
'views/claude-manager.js',
|
|
143
|
+
'views/api-settings.js',
|
|
140
144
|
'views/help.js',
|
|
141
145
|
'main.js'
|
|
142
146
|
];
|
|
@@ -311,6 +315,16 @@ export async function startServer(options: ServerOptions = {}): Promise<http.Ser
|
|
|
311
315
|
if (await handleCodexLensRoutes(routeContext)) return;
|
|
312
316
|
}
|
|
313
317
|
|
|
318
|
+
// LiteLLM routes (/api/litellm/*)
|
|
319
|
+
if (pathname.startsWith('/api/litellm/')) {
|
|
320
|
+
if (await handleLiteLLMRoutes(routeContext)) return;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// LiteLLM API routes (/api/litellm-api/*)
|
|
324
|
+
if (pathname.startsWith('/api/litellm-api/')) {
|
|
325
|
+
if (await handleLiteLLMApiRoutes(routeContext)) return;
|
|
326
|
+
}
|
|
327
|
+
|
|
314
328
|
// Graph routes (/api/graph/*)
|
|
315
329
|
if (pathname.startsWith('/api/graph/')) {
|
|
316
330
|
if (await handleGraphRoutes(routeContext)) return;
|
|
@@ -22,7 +22,7 @@ const ENV_PROJECT_ROOT = 'CCW_PROJECT_ROOT';
|
|
|
22
22
|
const ENV_ALLOWED_DIRS = 'CCW_ALLOWED_DIRS';
|
|
23
23
|
|
|
24
24
|
// Default enabled tools (core set)
|
|
25
|
-
const DEFAULT_TOOLS: string[] = ['write_file', 'edit_file', 'read_file', 'smart_search', 'core_memory'];
|
|
25
|
+
const DEFAULT_TOOLS: string[] = ['write_file', 'edit_file', 'read_file', 'smart_search', 'core_memory', 'context_cache'];
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Get list of enabled tools from environment or defaults
|
|
@@ -170,6 +170,27 @@
|
|
|
170
170
|
letter-spacing: 0.03em;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
+
.cli-tool-badge-disabled {
|
|
174
|
+
font-size: 0.5625rem;
|
|
175
|
+
font-weight: 600;
|
|
176
|
+
padding: 0.125rem 0.375rem;
|
|
177
|
+
background: hsl(38 92% 50% / 0.2);
|
|
178
|
+
color: hsl(38 92% 50%);
|
|
179
|
+
border-radius: 9999px;
|
|
180
|
+
text-transform: uppercase;
|
|
181
|
+
letter-spacing: 0.03em;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* Disabled tool card state */
|
|
185
|
+
.cli-tool-card.disabled {
|
|
186
|
+
opacity: 0.7;
|
|
187
|
+
border-style: dashed;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.cli-tool-card.disabled .cli-tool-name {
|
|
191
|
+
color: hsl(var(--muted-foreground));
|
|
192
|
+
}
|
|
193
|
+
|
|
173
194
|
.cli-tool-info {
|
|
174
195
|
font-size: 0.6875rem;
|
|
175
196
|
margin-bottom: 0.3125rem;
|
|
@@ -773,6 +794,29 @@
|
|
|
773
794
|
border-color: hsl(var(--destructive) / 0.5);
|
|
774
795
|
}
|
|
775
796
|
|
|
797
|
+
/* Enable/Disable button variants */
|
|
798
|
+
.btn-sm.btn-outline-success {
|
|
799
|
+
background: transparent;
|
|
800
|
+
border: 1px solid hsl(142 76% 36% / 0.4);
|
|
801
|
+
color: hsl(142 76% 36%);
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
.btn-sm.btn-outline-success:hover {
|
|
805
|
+
background: hsl(142 76% 36% / 0.1);
|
|
806
|
+
border-color: hsl(142 76% 36% / 0.6);
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
.btn-sm.btn-outline-warning {
|
|
810
|
+
background: transparent;
|
|
811
|
+
border: 1px solid hsl(38 92% 50% / 0.4);
|
|
812
|
+
color: hsl(38 92% 50%);
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
.btn-sm.btn-outline-warning:hover {
|
|
816
|
+
background: hsl(38 92% 50% / 0.1);
|
|
817
|
+
border-color: hsl(38 92% 50% / 0.6);
|
|
818
|
+
}
|
|
819
|
+
|
|
776
820
|
/* Empty State */
|
|
777
821
|
.empty-state {
|
|
778
822
|
display: flex;
|