ummaya 0.2.13 → 0.2.14
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/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/pyproject.toml +2 -2
- package/tui/package.json +1 -1
- package/tui/src/commands/install-github-app/OAuthFlowStep.tsx +1 -2
- package/tui/src/commands/install-github-app/install-github-app.tsx +4 -4
- package/tui/src/services/oauth/client.ts +3 -1
- package/tui/src/services/oauth/index.ts +3 -1
- package/tui/src/utils/auth.ts +6 -0
- package/uv.lock +1 -1
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ummaya",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.14",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "ummaya",
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.14",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@alcalzone/ansi-tokenize": "^0.3.0",
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "ummaya"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.14"
|
|
4
4
|
description = "Conversational multi-agent platform for Korean public APIs"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -333,7 +333,7 @@ min_confidence = 80
|
|
|
333
333
|
|
|
334
334
|
[tool.commitizen]
|
|
335
335
|
name = "cz_conventional_commits"
|
|
336
|
-
version = "0.2.
|
|
336
|
+
version = "0.2.14"
|
|
337
337
|
tag_format = "v$version"
|
|
338
338
|
|
|
339
339
|
# PyTorch CPU-only wheel for Docker image size discipline (SC-1: ≤ 2 GB).
|
package/tui/package.json
CHANGED
|
@@ -111,8 +111,7 @@ export function OAuthFlowStep({
|
|
|
111
111
|
const timer_0 = setTimeout(setShowPastePrompt, 3000, true);
|
|
112
112
|
timersRef.current.add(timer_0);
|
|
113
113
|
}, {
|
|
114
|
-
|
|
115
|
-
// Always use Claude AI for subscription tokens
|
|
114
|
+
loginWithFriendliAi: true,
|
|
116
115
|
inferenceOnly: true,
|
|
117
116
|
expiresIn: 365 * 24 * 60 * 60 // 1 year
|
|
118
117
|
});
|
|
@@ -7,7 +7,7 @@ import { useExitOnCtrlCDWithKeybindings } from '../../hooks/useExitOnCtrlCDWithK
|
|
|
7
7
|
import type { KeyboardEvent } from '../../ink/events/keyboard-event.js';
|
|
8
8
|
import { Box } from '../../ink.js';
|
|
9
9
|
import type { LocalJSXCommandOnDone } from '../../types/command.js';
|
|
10
|
-
import { FRIENDLI_PRIMARY_ENV,
|
|
10
|
+
import { FRIENDLI_PRIMARY_ENV, getFriendliApiKey, isFriendliAuthEnabled } from '../../utils/auth.js';
|
|
11
11
|
import { openBrowser } from '../../utils/browser.js';
|
|
12
12
|
import { execFileNoThrow } from '../../utils/execFileNoThrow.js';
|
|
13
13
|
import { getGithubRepo } from '../../utils/git.js';
|
|
@@ -50,11 +50,11 @@ function secretListContains(lines: string[], secretName: string): boolean {
|
|
|
50
50
|
function InstallGitHubApp(props: {
|
|
51
51
|
onDone: (message: string) => void;
|
|
52
52
|
}): React.ReactNode {
|
|
53
|
-
const [existingApiKey] = useState(() =>
|
|
53
|
+
const [existingApiKey] = useState(() => getFriendliApiKey());
|
|
54
54
|
const [state, setState] = useState({
|
|
55
55
|
...INITIAL_STATE,
|
|
56
56
|
useExistingKey: !!existingApiKey,
|
|
57
|
-
selectedApiKeyOption: (existingApiKey ? 'existing' :
|
|
57
|
+
selectedApiKeyOption: (existingApiKey ? 'existing' : isFriendliAuthEnabled() ? 'oauth' : 'new') as 'existing' | 'new' | 'oauth'
|
|
58
58
|
});
|
|
59
59
|
useExitOnCtrlCDWithKeybindings();
|
|
60
60
|
React.useEffect(() => {
|
|
@@ -545,7 +545,7 @@ function InstallGitHubApp(props: {
|
|
|
545
545
|
case 'check-existing-secret':
|
|
546
546
|
return <CheckExistingSecretStep useExistingSecret={state.useExistingSecret} secretName={state.secretName} onToggleUseExistingSecret={handleToggleUseExistingSecret} onSecretNameChange={handleSecretNameChange} onSubmit={handleSubmit} />;
|
|
547
547
|
case 'api-key':
|
|
548
|
-
return <ApiKeyStep existingApiKey={existingApiKey} useExistingKey={state.useExistingKey} apiKeyOrOAuthToken={state.apiKeyOrOAuthToken} onApiKeyChange={handleApiKeyChange} onToggleUseExistingKey={handleToggleUseExistingKey} onSubmit={handleSubmit} onCreateOAuthToken={
|
|
548
|
+
return <ApiKeyStep existingApiKey={existingApiKey} useExistingKey={state.useExistingKey} apiKeyOrOAuthToken={state.apiKeyOrOAuthToken} onApiKeyChange={handleApiKeyChange} onToggleUseExistingKey={handleToggleUseExistingKey} onSubmit={handleSubmit} onCreateOAuthToken={isFriendliAuthEnabled() ? handleCreateOAuthToken : undefined} selectedOption={state.selectedApiKeyOption} onSelectOption={handleApiKeyOptionChange} />;
|
|
549
549
|
case 'creating':
|
|
550
550
|
return <CreatingStep currentWorkflowInstallStep={state.currentWorkflowInstallStep} secretExists={state.secretExists} useExistingSecret={state.useExistingSecret} secretName={state.secretName} skipWorkflow={state.workflowAction === 'skip'} selectedWorkflows={state.selectedWorkflows} />;
|
|
551
551
|
case 'success':
|
|
@@ -48,6 +48,7 @@ export function buildAuthUrl({
|
|
|
48
48
|
state,
|
|
49
49
|
port,
|
|
50
50
|
isManual,
|
|
51
|
+
loginWithFriendliAi,
|
|
51
52
|
loginWithClaudeAi,
|
|
52
53
|
inferenceOnly,
|
|
53
54
|
orgUUID,
|
|
@@ -58,13 +59,14 @@ export function buildAuthUrl({
|
|
|
58
59
|
state: string
|
|
59
60
|
port: number
|
|
60
61
|
isManual: boolean
|
|
62
|
+
loginWithFriendliAi?: boolean
|
|
61
63
|
loginWithClaudeAi?: boolean
|
|
62
64
|
inferenceOnly?: boolean
|
|
63
65
|
orgUUID?: string
|
|
64
66
|
loginHint?: string
|
|
65
67
|
loginMethod?: string
|
|
66
68
|
}): string {
|
|
67
|
-
const authUrlBase = loginWithClaudeAi
|
|
69
|
+
const authUrlBase = (loginWithFriendliAi ?? loginWithClaudeAi)
|
|
68
70
|
? getOauthConfig().CLAUDE_AI_AUTHORIZE_URL
|
|
69
71
|
: getOauthConfig().CONSOLE_AUTHORIZE_URL
|
|
70
72
|
|
|
@@ -32,6 +32,7 @@ export class OAuthService {
|
|
|
32
32
|
async startOAuthFlow(
|
|
33
33
|
authURLHandler: (url: string, automaticUrl?: string) => Promise<void>,
|
|
34
34
|
options?: {
|
|
35
|
+
loginWithFriendliAi?: boolean
|
|
35
36
|
loginWithClaudeAi?: boolean
|
|
36
37
|
inferenceOnly?: boolean
|
|
37
38
|
expiresIn?: number
|
|
@@ -56,11 +57,12 @@ export class OAuthService {
|
|
|
56
57
|
const state = crypto.generateState()
|
|
57
58
|
|
|
58
59
|
// Build auth URLs for both automatic and manual flows
|
|
60
|
+
const loginWithFriendliAi = options?.loginWithFriendliAi ?? options?.loginWithClaudeAi
|
|
59
61
|
const opts = {
|
|
60
62
|
codeChallenge,
|
|
61
63
|
state,
|
|
62
64
|
port: this.port,
|
|
63
|
-
|
|
65
|
+
loginWithFriendliAi,
|
|
64
66
|
inferenceOnly: options?.inferenceOnly,
|
|
65
67
|
orgUUID: options?.orgUUID,
|
|
66
68
|
loginHint: options?.loginHint,
|
package/tui/src/utils/auth.ts
CHANGED
|
@@ -136,6 +136,8 @@ export function isEnterpriseSubscriber(): boolean { return false }
|
|
|
136
136
|
|
|
137
137
|
export function isAnthropicAuthEnabled(): boolean { return false }
|
|
138
138
|
|
|
139
|
+
export function isFriendliAuthEnabled(): boolean { return false }
|
|
140
|
+
|
|
139
141
|
export function is1PApiCustomer(): boolean { return false }
|
|
140
142
|
|
|
141
143
|
export function isUsing3PServices(): boolean { return false }
|
|
@@ -167,6 +169,10 @@ export function getAnthropicApiKey(): null | string {
|
|
|
167
169
|
return getAnthropicApiKeyWithSource().key
|
|
168
170
|
}
|
|
169
171
|
|
|
172
|
+
export function getFriendliApiKey(): null | string {
|
|
173
|
+
return getAnthropicApiKeyWithSource().key
|
|
174
|
+
}
|
|
175
|
+
|
|
170
176
|
export function getAnthropicApiKeyWithSource(
|
|
171
177
|
_opts: { skipRetrievingKeyFromApiKeyHelper?: boolean } = {},
|
|
172
178
|
): { key: null | string; source: ApiKeySource } {
|