@codemieai/code 0.0.20 â 0.0.22
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/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +11 -8
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +13 -10
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/BaseMetricsAdapter.d.ts +20 -1
- package/dist/agents/core/BaseMetricsAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseMetricsAdapter.js +77 -1
- package/dist/agents/core/BaseMetricsAdapter.js.map +1 -1
- package/dist/agents/plugins/claude.metrics.d.ts +0 -12
- package/dist/agents/plugins/claude.metrics.d.ts.map +1 -1
- package/dist/agents/plugins/claude.metrics.js +2 -68
- package/dist/agents/plugins/claude.metrics.js.map +1 -1
- package/dist/agents/plugins/gemini.metrics.d.ts +92 -0
- package/dist/agents/plugins/gemini.metrics.d.ts.map +1 -0
- package/dist/agents/plugins/gemini.metrics.js +423 -0
- package/dist/agents/plugins/gemini.metrics.js.map +1 -0
- package/dist/agents/plugins/gemini.plugin.d.ts +3 -0
- package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini.plugin.js +9 -4
- package/dist/agents/plugins/gemini.plugin.js.map +1 -1
- package/dist/cli/commands/doctor/checks/NpmCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/NpmCheck.js +5 -5
- package/dist/cli/commands/doctor/checks/NpmCheck.js.map +1 -1
- package/dist/cli/commands/setup.js +3 -2
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +2 -3
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/env/types.d.ts +2 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/frameworks/plugins/bmad.plugin.d.ts +3 -2
- package/dist/frameworks/plugins/bmad.plugin.d.ts.map +1 -1
- package/dist/frameworks/plugins/bmad.plugin.js +29 -12
- package/dist/frameworks/plugins/bmad.plugin.js.map +1 -1
- package/dist/metrics/MetricsOrchestrator.d.ts +2 -0
- package/dist/metrics/MetricsOrchestrator.d.ts.map +1 -1
- package/dist/metrics/MetricsOrchestrator.js +11 -0
- package/dist/metrics/MetricsOrchestrator.js.map +1 -1
- package/dist/metrics/core/SyncStateManager.d.ts.map +1 -1
- package/dist/metrics/core/SyncStateManager.js +3 -4
- package/dist/metrics/core/SyncStateManager.js.map +1 -1
- package/dist/metrics/sync/aggregator.js +1 -0
- package/dist/metrics/sync/aggregator.js.map +1 -1
- package/dist/metrics/sync/types.d.ts +1 -0
- package/dist/metrics/sync/types.d.ts.map +1 -1
- package/dist/metrics/types.d.ts +2 -0
- package/dist/metrics/types.d.ts.map +1 -1
- package/dist/metrics/utils/git.d.ts +13 -0
- package/dist/metrics/utils/git.d.ts.map +1 -0
- package/dist/metrics/utils/git.js +37 -0
- package/dist/metrics/utils/git.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.models.d.ts +3 -3
- package/dist/providers/plugins/ollama/ollama.models.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.models.js +5 -12
- package/dist/providers/plugins/ollama/ollama.models.js.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.js +2 -35
- package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.d.ts +33 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +80 -3
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.models.d.ts +6 -2
- package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.models.js +18 -4
- package/dist/providers/plugins/sso/sso.models.js.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.js +55 -4
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +2 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/errors.d.ts +25 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +64 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/npm.d.ts +116 -0
- package/dist/utils/npm.d.ts.map +1 -0
- package/dist/utils/npm.js +180 -0
- package/dist/utils/npm.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for git operations in metrics collection.
|
|
5
|
+
*/
|
|
6
|
+
import { exec } from 'child_process';
|
|
7
|
+
import { promisify } from 'util';
|
|
8
|
+
import { logger } from '../../utils/logger.js';
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
/**
|
|
11
|
+
* Detect current git branch from working directory
|
|
12
|
+
*
|
|
13
|
+
* @param cwd - Working directory path
|
|
14
|
+
* @returns Git branch name or undefined if not in a git repo
|
|
15
|
+
*/
|
|
16
|
+
export async function detectGitBranch(cwd) {
|
|
17
|
+
try {
|
|
18
|
+
const { stdout } = await execAsync('git rev-parse --abbrev-ref HEAD', {
|
|
19
|
+
cwd,
|
|
20
|
+
timeout: 5000 // 5 second timeout
|
|
21
|
+
});
|
|
22
|
+
const branch = stdout.trim();
|
|
23
|
+
// Handle detached HEAD state
|
|
24
|
+
if (branch === 'HEAD') {
|
|
25
|
+
logger.debug('[GitUtils] Detached HEAD state detected');
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
logger.debug(`[GitUtils] Detected git branch: ${branch}`);
|
|
29
|
+
return branch;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
// Not a git repo or git command failed
|
|
33
|
+
logger.debug('[GitUtils] Failed to detect git branch:', error);
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/metrics/utils/git.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,iCAAiC,EAAE;YACpE,GAAG;YACH,OAAO,EAAE,IAAI,CAAC,mBAAmB;SAClC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAE7B,6BAA6B;QAC7B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uCAAuC;QACvC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Handles both listing installed models and discovering available models.
|
|
6
6
|
*/
|
|
7
7
|
import type { CodeMieConfigOptions } from '../../../env/types.js';
|
|
8
|
-
import type {
|
|
9
|
-
import { BaseModelProxy } from '../../core/
|
|
8
|
+
import type { InstallProgress, ModelInfo } from '../../core/types.js';
|
|
9
|
+
import { BaseModelProxy } from '../../core/index.js';
|
|
10
10
|
/**
|
|
11
11
|
* Unified Ollama model management
|
|
12
12
|
* Extends BaseModelProxy for common patterns
|
|
@@ -27,7 +27,7 @@ export declare class OllamaModelProxy extends BaseModelProxy {
|
|
|
27
27
|
listModels(): Promise<ModelInfo[]>;
|
|
28
28
|
/**
|
|
29
29
|
* Fetch available models (for setup/discovery)
|
|
30
|
-
* Returns installed
|
|
30
|
+
* Returns installed models if available
|
|
31
31
|
*/
|
|
32
32
|
fetchModels(config: CodeMieConfigOptions): Promise<ModelInfo[]>;
|
|
33
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ollama.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAC,eAAe,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAwEnD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,OAAO,GAAE,MAAsC;IAI3D;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmBxC;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsCrE;;;OAGG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAsEpG;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;CA6BjE"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Combines model discovery and installation for Ollama.
|
|
5
5
|
* Handles both listing installed models and discovering available models.
|
|
6
6
|
*/
|
|
7
|
-
import { BaseModelProxy } from '../../core/
|
|
7
|
+
import { BaseModelProxy } from '../../core/index.js';
|
|
8
8
|
import { ProviderRegistry } from '../../core/registry.js';
|
|
9
9
|
import { OllamaTemplate } from './ollama.template.js';
|
|
10
10
|
import { logger } from '../../../utils/logger.js';
|
|
@@ -93,7 +93,7 @@ export class OllamaModelProxy extends BaseModelProxy {
|
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
95
|
* Fetch available models (for setup/discovery)
|
|
96
|
-
* Returns installed
|
|
96
|
+
* Returns installed models if available
|
|
97
97
|
*/
|
|
98
98
|
async fetchModels(config) {
|
|
99
99
|
try {
|
|
@@ -102,11 +102,9 @@ export class OllamaModelProxy extends BaseModelProxy {
|
|
|
102
102
|
const proxy = baseUrl === this.baseUrl ? this : new OllamaModelProxy(baseUrl);
|
|
103
103
|
// Try to fetch installed models from Ollama
|
|
104
104
|
const installedModels = await proxy.listModels();
|
|
105
|
-
//
|
|
105
|
+
// Return all installed models
|
|
106
106
|
if (installedModels.length > 0) {
|
|
107
|
-
|
|
108
|
-
.filter(m => isCodingModel(m.id))
|
|
109
|
-
.map(m => {
|
|
107
|
+
return installedModels.map(m => {
|
|
110
108
|
const metadata = getCodingModelMetadata(m.id);
|
|
111
109
|
return {
|
|
112
110
|
id: m.id,
|
|
@@ -116,17 +114,13 @@ export class OllamaModelProxy extends BaseModelProxy {
|
|
|
116
114
|
popular: metadata.popular || false
|
|
117
115
|
};
|
|
118
116
|
});
|
|
119
|
-
// Return installed coding models if we have any
|
|
120
|
-
if (codingModels.length > 0) {
|
|
121
|
-
return codingModels;
|
|
122
|
-
}
|
|
123
117
|
}
|
|
124
118
|
}
|
|
125
119
|
catch (error) {
|
|
126
120
|
logger.debug('Failed to fetch installed Ollama models:', error);
|
|
127
121
|
}
|
|
128
122
|
// Fall back to template's recommended models with metadata from template
|
|
129
|
-
|
|
123
|
+
return OllamaTemplate.recommendedModels.map(modelId => {
|
|
130
124
|
const metadata = OllamaTemplate.modelMetadata?.[modelId];
|
|
131
125
|
return {
|
|
132
126
|
id: modelId,
|
|
@@ -135,7 +129,6 @@ export class OllamaModelProxy extends BaseModelProxy {
|
|
|
135
129
|
popular: metadata?.popular ?? true // All recommended models are popular by default
|
|
136
130
|
};
|
|
137
131
|
});
|
|
138
|
-
return recommendedModels;
|
|
139
132
|
}
|
|
140
133
|
/**
|
|
141
134
|
* Install model with progress tracking
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"ollama.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,kBAkDzB,CAAC"}
|
|
@@ -12,7 +12,7 @@ export const OllamaTemplate = registerProvider({
|
|
|
12
12
|
displayName: 'Ollama',
|
|
13
13
|
description: 'Popular open-source local LLM runner - optimized for coding with 16GB RAM',
|
|
14
14
|
defaultPort: 11434,
|
|
15
|
-
defaultBaseUrl: 'http://localhost:11434
|
|
15
|
+
defaultBaseUrl: 'http://localhost:11434',
|
|
16
16
|
requiresAuth: false,
|
|
17
17
|
authType: 'none',
|
|
18
18
|
recommendedModels: [
|
|
@@ -21,27 +21,9 @@ export const OllamaTemplate = registerProvider({
|
|
|
21
21
|
'deepseek-coder-v2',
|
|
22
22
|
'deepseek-v3.1:671b-cloud'
|
|
23
23
|
],
|
|
24
|
-
modelMetadata: {
|
|
25
|
-
'qwen2.5-coder': {
|
|
26
|
-
name: 'Qwen 2.5 Coder',
|
|
27
|
-
description: 'Excellent for coding tasks with tool support (7B, ~5GB)',
|
|
28
|
-
},
|
|
29
|
-
'qwen3-vl:235b-cloud': {
|
|
30
|
-
name: 'Qwen 3 VL',
|
|
31
|
-
description: 'Latest Qwen model with vision and tool support (235B)',
|
|
32
|
-
},
|
|
33
|
-
'deepseek-coder-v2': {
|
|
34
|
-
name: 'DeepSeek Coder V2',
|
|
35
|
-
description: 'Advanced coding model with tool support (16B, ~9GB)',
|
|
36
|
-
},
|
|
37
|
-
'deepseek-v3.1:671b-cloud': {
|
|
38
|
-
name: 'DeepSeek V3.1',
|
|
39
|
-
description: 'Latest DeepSeek model with advanced reasoning (671B)',
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
24
|
capabilities: ['streaming', 'tools', 'embeddings', 'model-management'],
|
|
43
25
|
supportsModelInstallation: true,
|
|
44
|
-
healthCheckEndpoint: '/api/
|
|
26
|
+
healthCheckEndpoint: '/api/version',
|
|
45
27
|
setupInstructions: `
|
|
46
28
|
# Ollama Setup Instructions
|
|
47
29
|
|
|
@@ -58,21 +40,6 @@ curl -fsSL https://ollama.com/install.sh | sh
|
|
|
58
40
|
### Windows
|
|
59
41
|
Download from: https://ollama.com/download
|
|
60
42
|
|
|
61
|
-
## Starting Ollama
|
|
62
|
-
|
|
63
|
-
Ollama runs as a background service after installation.
|
|
64
|
-
|
|
65
|
-
### Verify Running
|
|
66
|
-
\`\`\`bash
|
|
67
|
-
curl http://localhost:11434/api/tags
|
|
68
|
-
\`\`\`
|
|
69
|
-
|
|
70
|
-
### Using CodeMie
|
|
71
|
-
\`\`\`bash
|
|
72
|
-
codemie models install ollama/llama3.2
|
|
73
|
-
codemie models list ollama
|
|
74
|
-
\`\`\`
|
|
75
|
-
|
|
76
43
|
## Recommended Coding Models (Tool Support Required)
|
|
77
44
|
|
|
78
45
|
**Important**: Agents like Codex require models with function calling/tool support.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,0BAA0B;KAC3B;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IACnC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpB;CACA,CAAC,CAAC"}
|
|
@@ -4,12 +4,28 @@
|
|
|
4
4
|
* CodeMie-specific HTTP client with SSO cookie handling
|
|
5
5
|
*/
|
|
6
6
|
import type { CodeMieIntegration } from '../../core/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* User info response from /v1/user endpoint
|
|
9
|
+
*/
|
|
10
|
+
export interface CodeMieUserInfo {
|
|
11
|
+
userId: string;
|
|
12
|
+
name: string;
|
|
13
|
+
username: string;
|
|
14
|
+
isAdmin: boolean;
|
|
15
|
+
applications: string[];
|
|
16
|
+
applicationsAdmin: string[];
|
|
17
|
+
picture: string;
|
|
18
|
+
knowledgeBases: string[];
|
|
19
|
+
userType?: string;
|
|
20
|
+
}
|
|
7
21
|
/**
|
|
8
22
|
* CodeMie API endpoints
|
|
9
23
|
*/
|
|
10
24
|
export declare const CODEMIE_ENDPOINTS: {
|
|
11
25
|
readonly MODELS: "/v1/llm_models";
|
|
12
26
|
readonly USER_SETTINGS: "/v1/settings/user";
|
|
27
|
+
readonly USER: "/v1/user";
|
|
28
|
+
readonly ADMIN_APPLICATIONS: "/v1/admin/applications";
|
|
13
29
|
readonly METRICS: "/v1/metrics";
|
|
14
30
|
readonly AUTH_LOGIN: "/v1/auth/login";
|
|
15
31
|
};
|
|
@@ -17,6 +33,23 @@ export declare const CODEMIE_ENDPOINTS: {
|
|
|
17
33
|
* Fetch models from CodeMie SSO API
|
|
18
34
|
*/
|
|
19
35
|
export declare function fetchCodeMieModels(apiUrl: string, cookies: Record<string, string>): Promise<string[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Fetch user information including accessible applications
|
|
38
|
+
*
|
|
39
|
+
* @param apiUrl - CodeMie API base URL
|
|
40
|
+
* @param cookies - SSO session cookies
|
|
41
|
+
* @returns User info with applications array
|
|
42
|
+
* @throws Error if request fails or response invalid
|
|
43
|
+
*/
|
|
44
|
+
export declare function fetchCodeMieUserInfo(apiUrl: string, cookies: Record<string, string>): Promise<CodeMieUserInfo>;
|
|
45
|
+
/**
|
|
46
|
+
* Fetch application details (non-blocking, best-effort)
|
|
47
|
+
*
|
|
48
|
+
* @param apiUrl - CodeMie API base URL
|
|
49
|
+
* @param cookies - SSO session cookies
|
|
50
|
+
* @returns Application names array (same as /v1/user for now)
|
|
51
|
+
*/
|
|
52
|
+
export declare function fetchApplicationDetails(apiUrl: string, cookies: Record<string, string>): Promise<string[]>;
|
|
20
53
|
/**
|
|
21
54
|
* Fetch integrations from CodeMie SSO API (paginated)
|
|
22
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso.http-client.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAgB,kBAAkB,EAA+B,MAAM,qBAAqB,CAAC;AAEzG;;GAEG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"sso.http-client.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAgB,kBAAkB,EAA+B,MAAM,qBAAqB,CAAC;AAEzG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAwDnB;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,eAAe,CAAC,CAwC1B;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAkCnB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,YAAY,GAAE,MAAwC,GACrD,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAqD/B"}
|
|
@@ -10,6 +10,8 @@ import { HTTPClient } from '../../core/base/http-client.js';
|
|
|
10
10
|
export const CODEMIE_ENDPOINTS = {
|
|
11
11
|
MODELS: '/v1/llm_models',
|
|
12
12
|
USER_SETTINGS: '/v1/settings/user',
|
|
13
|
+
USER: '/v1/user',
|
|
14
|
+
ADMIN_APPLICATIONS: '/v1/admin/applications',
|
|
13
15
|
METRICS: '/v1/metrics',
|
|
14
16
|
AUTH_LOGIN: '/v1/auth/login'
|
|
15
17
|
};
|
|
@@ -64,6 +66,84 @@ export async function fetchCodeMieModels(apiUrl, cookies) {
|
|
|
64
66
|
.sort();
|
|
65
67
|
return filteredModels;
|
|
66
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Fetch user information including accessible applications
|
|
71
|
+
*
|
|
72
|
+
* @param apiUrl - CodeMie API base URL
|
|
73
|
+
* @param cookies - SSO session cookies
|
|
74
|
+
* @returns User info with applications array
|
|
75
|
+
* @throws Error if request fails or response invalid
|
|
76
|
+
*/
|
|
77
|
+
export async function fetchCodeMieUserInfo(apiUrl, cookies) {
|
|
78
|
+
const cookieString = Object.entries(cookies)
|
|
79
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
80
|
+
.join(';');
|
|
81
|
+
const url = `${apiUrl}${CODEMIE_ENDPOINTS.USER}`;
|
|
82
|
+
const client = new HTTPClient({
|
|
83
|
+
timeout: 10000,
|
|
84
|
+
maxRetries: 3,
|
|
85
|
+
rejectUnauthorized: false
|
|
86
|
+
});
|
|
87
|
+
const cliVersion = process.env.CODEMIE_CLI_VERSION || 'unknown';
|
|
88
|
+
const response = await client.getRaw(url, {
|
|
89
|
+
'cookie': cookieString,
|
|
90
|
+
'Content-Type': 'application/json',
|
|
91
|
+
'User-Agent': `codemie-cli/${cliVersion}`,
|
|
92
|
+
'X-CodeMie-CLI': `codemie-cli/${cliVersion}`,
|
|
93
|
+
'X-CodeMie-Client': 'codemie-cli'
|
|
94
|
+
});
|
|
95
|
+
// Handle HTTP errors
|
|
96
|
+
if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 300) {
|
|
97
|
+
if (response.statusCode === 401 || response.statusCode === 403) {
|
|
98
|
+
throw new Error('SSO session expired - please run setup again');
|
|
99
|
+
}
|
|
100
|
+
throw new Error(`Failed to fetch user info: ${response.statusCode} ${response.statusMessage}`);
|
|
101
|
+
}
|
|
102
|
+
// Parse response
|
|
103
|
+
const userInfo = JSON.parse(response.data);
|
|
104
|
+
// Validate response structure
|
|
105
|
+
if (!userInfo || !Array.isArray(userInfo.applications)) {
|
|
106
|
+
throw new Error('Invalid user info response: missing applications array');
|
|
107
|
+
}
|
|
108
|
+
return userInfo;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Fetch application details (non-blocking, best-effort)
|
|
112
|
+
*
|
|
113
|
+
* @param apiUrl - CodeMie API base URL
|
|
114
|
+
* @param cookies - SSO session cookies
|
|
115
|
+
* @returns Application names array (same as /v1/user for now)
|
|
116
|
+
*/
|
|
117
|
+
export async function fetchApplicationDetails(apiUrl, cookies) {
|
|
118
|
+
try {
|
|
119
|
+
const cookieString = Object.entries(cookies)
|
|
120
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
121
|
+
.join(';');
|
|
122
|
+
const url = `${apiUrl}${CODEMIE_ENDPOINTS.ADMIN_APPLICATIONS}?limit=1000`;
|
|
123
|
+
const client = new HTTPClient({
|
|
124
|
+
timeout: 5000,
|
|
125
|
+
maxRetries: 1,
|
|
126
|
+
rejectUnauthorized: false
|
|
127
|
+
});
|
|
128
|
+
const cliVersion = process.env.CODEMIE_CLI_VERSION || 'unknown';
|
|
129
|
+
const response = await client.getRaw(url, {
|
|
130
|
+
'cookie': cookieString,
|
|
131
|
+
'Content-Type': 'application/json',
|
|
132
|
+
'User-Agent': `codemie-cli/${cliVersion}`,
|
|
133
|
+
'X-CodeMie-CLI': `codemie-cli/${cliVersion}`,
|
|
134
|
+
'X-CodeMie-Client': 'codemie-cli'
|
|
135
|
+
});
|
|
136
|
+
if (response.statusCode !== 200) {
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
const data = JSON.parse(response.data);
|
|
140
|
+
return data.applications || [];
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// Non-blocking: return empty array on error
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
}
|
|
67
147
|
/**
|
|
68
148
|
* Fetch integrations from CodeMie SSO API (paginated)
|
|
69
149
|
*/
|
|
@@ -89,9 +169,6 @@ export async function fetchCodeMieIntegrations(apiUrl, cookies, endpointPath = C
|
|
|
89
169
|
if (process.env.CODEMIE_DEBUG) {
|
|
90
170
|
console.log(`[DEBUG] Fetching integrations from: ${fullUrl}`);
|
|
91
171
|
}
|
|
92
|
-
else {
|
|
93
|
-
console.log(`[INFO] Requesting integrations from: ${fullUrl}`);
|
|
94
|
-
}
|
|
95
172
|
const pageIntegrations = await fetchIntegrationsPage(fullUrl, cookieString);
|
|
96
173
|
if (pageIntegrations.length === 0) {
|
|
97
174
|
hasMorePages = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso.http-client.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"sso.http-client.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,9 +37,13 @@ export declare class SSOModelProxy extends BaseModelProxy {
|
|
|
37
37
|
*/
|
|
38
38
|
fetchModels(config: CodeMieConfigOptions): Promise<ModelInfo[]>;
|
|
39
39
|
/**
|
|
40
|
-
* Fetch LiteLLM integrations
|
|
40
|
+
* Fetch LiteLLM integrations filtered by project (optional)
|
|
41
|
+
*
|
|
42
|
+
* @param codeMieUrl - CodeMie organization URL
|
|
43
|
+
* @param projectName - Optional project name for filtering
|
|
44
|
+
* @returns Array of integrations (filtered if projectName provided)
|
|
41
45
|
*/
|
|
42
|
-
fetchIntegrations(codeMieUrl: string): Promise<CodeMieIntegration[]>;
|
|
46
|
+
fetchIntegrations(codeMieUrl: string, projectName?: string): Promise<CodeMieIntegration[]>;
|
|
43
47
|
/**
|
|
44
48
|
* Fetch models from CodeMie API
|
|
45
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAO,CAAC,GAAG,CAAa;gBAEZ,OAAO,CAAC,EAAE,MAAM;IAM5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAcxC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyBrE
|
|
1
|
+
{"version":3,"file":"sso.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAO,CAAC,GAAG,CAAa;gBAEZ,OAAO,CAAC,EAAE,MAAM;IAM5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAcxC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyBrE;;;;;;OAMG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgDhG;;OAEG;YACW,kBAAkB;CA0BjC"}
|
|
@@ -81,9 +81,13 @@ export class SSOModelProxy extends BaseModelProxy {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
/**
|
|
84
|
-
* Fetch LiteLLM integrations
|
|
84
|
+
* Fetch LiteLLM integrations filtered by project (optional)
|
|
85
|
+
*
|
|
86
|
+
* @param codeMieUrl - CodeMie organization URL
|
|
87
|
+
* @param projectName - Optional project name for filtering
|
|
88
|
+
* @returns Array of integrations (filtered if projectName provided)
|
|
85
89
|
*/
|
|
86
|
-
async fetchIntegrations(codeMieUrl) {
|
|
90
|
+
async fetchIntegrations(codeMieUrl, projectName) {
|
|
87
91
|
const credentials = await this.sso.getStoredCredentials();
|
|
88
92
|
if (!credentials) {
|
|
89
93
|
logger.debug('No SSO credentials found for fetching integrations');
|
|
@@ -91,9 +95,19 @@ export class SSOModelProxy extends BaseModelProxy {
|
|
|
91
95
|
}
|
|
92
96
|
const apiUrl = credentials.apiUrl || codeMieUrl;
|
|
93
97
|
logger.debug(`Fetching integrations from: ${apiUrl}${CODEMIE_ENDPOINTS.USER_SETTINGS}`);
|
|
98
|
+
if (projectName) {
|
|
99
|
+
logger.debug(`Filtering by project: ${projectName}`);
|
|
100
|
+
}
|
|
94
101
|
try {
|
|
95
|
-
//
|
|
96
|
-
|
|
102
|
+
// Fetch all integrations
|
|
103
|
+
const allIntegrations = await fetchCodeMieIntegrations(apiUrl, credentials.cookies, CODEMIE_ENDPOINTS.USER_SETTINGS);
|
|
104
|
+
// Filter by project_name if specified
|
|
105
|
+
if (projectName) {
|
|
106
|
+
const filtered = allIntegrations.filter(integration => integration.project_name === projectName);
|
|
107
|
+
logger.debug(`Filtered ${allIntegrations.length} integrations to ${filtered.length} for project "${projectName}"`);
|
|
108
|
+
return filtered;
|
|
109
|
+
}
|
|
110
|
+
return allIntegrations;
|
|
97
111
|
}
|
|
98
112
|
catch (error) {
|
|
99
113
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,cAAc;IACvC,GAAG,CAAa;IAExB,YAAY,OAAgB;QAC1B,+DAA+D;QAC/D,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAgB;QACvB,OAAO,QAAQ,KAAK,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,MAA4B;QAC5C,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAE1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,4EAA4E;gBAC5E,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBACrE,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,yCAAyC;YACzC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;YACvD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACnD,yEAAyE;YACzE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"sso.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,cAAc;IACvC,GAAG,CAAa;IAExB,YAAY,OAAgB;QAC1B,+DAA+D;QAC/D,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAgB;QACvB,OAAO,QAAQ,KAAK,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,MAA4B;QAC5C,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAE1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,4EAA4E;gBAC5E,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBACrE,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,yCAAyC;YACzC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;YACvD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACnD,yEAAyE;YACzE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAkB,EAAE,WAAoB;QAC9D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,UAAU,CAAC;QAEhD,MAAM,CAAC,KAAK,CAAC,+BAA+B,MAAM,GAAG,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;QACxF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAClD,MAAM,EACN,WAAW,CAAC,OAAO,EACnB,iBAAiB,CAAC,aAAa,CAClC,CAAC;YAEF,sCAAsC;YACtC,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CACrC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,KAAK,WAAW,CACxD,CAAC;gBAEF,MAAM,CAAC,KAAK,CAAC,YAAY,eAAe,CAAC,MAAM,oBAAoB,QAAQ,CAAC,MAAM,iBAAiB,WAAW,GAAG,CAAC,CAAC;gBACnH,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,OAAO,eAAe,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAEpE,6BAA6B;YAC7B,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAI,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC5C,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YAC3C,CAAC;YAED,6BAA6B;YAC7B,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,OAA+B;QAC9E,IAAI,CAAC;YACH,gFAAgF;YAChF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAE3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,0CAA0C;YAC1C,0DAA0D;YAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAC/B,MAAM,aAAa,GAAG,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAEjE,OAAO;oBACL,EAAE;oBACF,IAAI,EAAE,EAAE,EAAE,qBAAqB;oBAC/B,OAAO,EAAE,aAAa,CAAC,+BAA+B;iBACvD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACtH,CAAC;IACH,CAAC;CACF;AAED,4BAA4B;AAC5B,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso.setup-steps.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.setup-steps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"sso.setup-steps.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.setup-steps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAQ7B;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,kBAwM3B,CAAC"}
|
|
@@ -14,6 +14,7 @@ import { ProviderRegistry } from '../../core/registry.js';
|
|
|
14
14
|
import { SSOTemplate } from './sso.template.js';
|
|
15
15
|
import { CodeMieSSO } from './sso.auth.js';
|
|
16
16
|
import { SSOModelProxy } from './sso.models.js';
|
|
17
|
+
import { fetchCodeMieUserInfo } from './sso.http-client.js';
|
|
17
18
|
/**
|
|
18
19
|
* SSO setup steps implementation
|
|
19
20
|
*/
|
|
@@ -55,12 +56,58 @@ export const SSOSetupSteps = {
|
|
|
55
56
|
throw new Error(`SSO authentication failed: ${authResult.error || 'Unknown error'}`);
|
|
56
57
|
}
|
|
57
58
|
console.log(chalk.green('â Authentication successful!\n'));
|
|
59
|
+
// === NEW STEP: Fetch applications and select project ===
|
|
60
|
+
let selectedProject;
|
|
61
|
+
try {
|
|
62
|
+
console.log(chalk.cyan('đ Fetching available projects...\n'));
|
|
63
|
+
// Ensure API URL and cookies are available
|
|
64
|
+
if (!authResult.apiUrl || !authResult.cookies) {
|
|
65
|
+
throw new Error('API URL or cookies not found in authentication result');
|
|
66
|
+
}
|
|
67
|
+
// Fetch user's accessible applications
|
|
68
|
+
const userInfo = await fetchCodeMieUserInfo(authResult.apiUrl, authResult.cookies);
|
|
69
|
+
// Validate applications array
|
|
70
|
+
if (!userInfo.applications || userInfo.applications.length === 0) {
|
|
71
|
+
throw new Error('No projects found for your account. Please contact your administrator.');
|
|
72
|
+
}
|
|
73
|
+
// Sort applications alphabetically
|
|
74
|
+
const applications = [...userInfo.applications].sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
|
|
75
|
+
// Auto-select if only one project
|
|
76
|
+
if (applications.length === 1) {
|
|
77
|
+
selectedProject = applications[0];
|
|
78
|
+
console.log(chalk.green(`â Auto-selected project: ${chalk.bold(selectedProject)}\n`));
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Multiple projects - prompt user to select
|
|
82
|
+
console.log(chalk.dim(`Found ${applications.length} accessible project(s)\n`));
|
|
83
|
+
const projectAnswers = await inquirer.prompt([
|
|
84
|
+
{
|
|
85
|
+
type: 'list',
|
|
86
|
+
name: 'project',
|
|
87
|
+
message: 'Select your project:',
|
|
88
|
+
choices: applications.map(app => ({
|
|
89
|
+
name: app,
|
|
90
|
+
value: app
|
|
91
|
+
})),
|
|
92
|
+
pageSize: 15
|
|
93
|
+
}
|
|
94
|
+
]);
|
|
95
|
+
selectedProject = projectAnswers.project;
|
|
96
|
+
console.log(chalk.green(`â Selected project: ${chalk.bold(selectedProject)}\n`));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
101
|
+
console.log(chalk.red(`â Project selection failed: ${errorMsg}\n`));
|
|
102
|
+
// Fail fast - project selection is required
|
|
103
|
+
throw new Error(`Project selection required: ${errorMsg}`);
|
|
104
|
+
}
|
|
58
105
|
// Check for LiteLLM integrations
|
|
59
106
|
const modelProxy = new SSOModelProxy(authResult.apiUrl);
|
|
60
107
|
let integrations;
|
|
61
108
|
let integrationsFetchError;
|
|
62
109
|
try {
|
|
63
|
-
integrations = await modelProxy.fetchIntegrations(codeMieUrl);
|
|
110
|
+
integrations = await modelProxy.fetchIntegrations(codeMieUrl, selectedProject);
|
|
64
111
|
}
|
|
65
112
|
catch (error) {
|
|
66
113
|
// Log error but don't fail setup - integrations are optional
|
|
@@ -71,7 +118,8 @@ export const SSOSetupSteps = {
|
|
|
71
118
|
// Always prompt for integration selection
|
|
72
119
|
let integrationInfo;
|
|
73
120
|
if (integrations.length > 0) {
|
|
74
|
-
|
|
121
|
+
const projectLabel = selectedProject ? ` for project "${selectedProject}"` : '';
|
|
122
|
+
console.log(chalk.cyan(`đĻ Found ${integrations.length} LiteLLM integration(s)${projectLabel}\n`));
|
|
75
123
|
const integrationAnswers = await inquirer.prompt([
|
|
76
124
|
{
|
|
77
125
|
type: 'list',
|
|
@@ -90,17 +138,19 @@ export const SSOSetupSteps = {
|
|
|
90
138
|
}
|
|
91
139
|
else {
|
|
92
140
|
// Show message if no integrations found
|
|
141
|
+
const projectLabel = selectedProject ? ` for project "${selectedProject}"` : '';
|
|
93
142
|
if (integrationsFetchError) {
|
|
94
|
-
console.log(chalk.dim(
|
|
143
|
+
console.log(chalk.dim(`âšī¸ Proceeding without LiteLLM integration (fetch failed)\n`));
|
|
95
144
|
}
|
|
96
145
|
else {
|
|
97
|
-
console.log(chalk.dim(
|
|
146
|
+
console.log(chalk.dim(`âšī¸ No LiteLLM integrations configured${projectLabel}\n`));
|
|
98
147
|
}
|
|
99
148
|
}
|
|
100
149
|
return {
|
|
101
150
|
baseUrl: authResult.apiUrl,
|
|
102
151
|
additionalConfig: {
|
|
103
152
|
codeMieUrl,
|
|
153
|
+
codeMieProject: selectedProject,
|
|
104
154
|
codeMieIntegration: integrationInfo,
|
|
105
155
|
apiUrl: authResult.apiUrl
|
|
106
156
|
}
|
|
@@ -128,6 +178,7 @@ export const SSOSetupSteps = {
|
|
|
128
178
|
const config = {
|
|
129
179
|
provider: 'ai-run-sso',
|
|
130
180
|
codeMieUrl: credentials.additionalConfig?.codeMieUrl,
|
|
181
|
+
codeMieProject: credentials.additionalConfig?.codeMieProject,
|
|
131
182
|
apiKey: "sso-provided",
|
|
132
183
|
baseUrl: credentials.baseUrl,
|
|
133
184
|
model: selectedModel
|