@pedroaugusto04/kb-cli 1.1.0 → 1.1.1
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/commands/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pc from 'picocolors';
|
|
2
2
|
import { loadConfig, saveConfig } from '../config.js';
|
|
3
|
-
const VALID_KEYS = ['
|
|
3
|
+
const VALID_KEYS = ['workspaceSlug', 'defaultProjectSlug'];
|
|
4
4
|
export function runConfigGet(key, isRepl = false) {
|
|
5
5
|
const config = loadConfig();
|
|
6
6
|
if (!VALID_KEYS.includes(key)) {
|
|
@@ -20,9 +20,6 @@ export function runConfigSet(key, value, isRepl = false) {
|
|
|
20
20
|
process.exit(1);
|
|
21
21
|
}
|
|
22
22
|
let formattedValue = value.trim();
|
|
23
|
-
if (key === 'apiUrl') {
|
|
24
|
-
formattedValue = formattedValue.replace(/\/$/, '');
|
|
25
|
-
}
|
|
26
23
|
saveConfig({ [key]: formattedValue });
|
|
27
24
|
console.log(pc.green(`Updated configuration: ${key} = ${formattedValue}`));
|
|
28
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,UAAU,GAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,UAAU,GAAgB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;AAExE,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAM,GAAG,KAAK;IACtD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAgB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,8CAA8C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,IAAI,MAAM;YAAE,OAAO;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAgB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,MAAM,GAAG,KAAK;IACrE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAgB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,8CAA8C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,IAAI,MAAM;YAAE,OAAO;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAElC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,GAAG,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAC1H,CAAC","sourcesContent":["import pc from 'picocolors';\nimport { loadConfig, saveConfig } from '../config.js';\n\ntype ConfigKey = 'workspaceSlug' | 'defaultProjectSlug';\n\nconst VALID_KEYS: ConfigKey[] = ['workspaceSlug', 'defaultProjectSlug'];\n\nexport function runConfigGet(key: string, isRepl = false): void {\n const config = loadConfig();\n if (!VALID_KEYS.includes(key as ConfigKey)) {\n console.error(pc.red(`Invalid configuration key. Valid keys are: ${VALID_KEYS.join(', ')}`));\n if (isRepl) return;\n process.exit(1);\n }\n const val = config[key as ConfigKey];\n console.log(val);\n}\n\nexport function runConfigSet(key: string, value: string, isRepl = false): void {\n if (!VALID_KEYS.includes(key as ConfigKey)) {\n console.error(pc.red(`Invalid configuration key. Valid keys are: ${VALID_KEYS.join(', ')}`));\n if (isRepl) return;\n process.exit(1);\n }\n\n let formattedValue = value.trim();\n\n saveConfig({ [key]: formattedValue });\n console.log(pc.green(`Updated configuration: ${key} = ${formattedValue}`));\n}\n\nexport function runConfigList(): void {\n const config = loadConfig();\n console.log(pc.cyan('Current CLI Configuration:'));\n console.log(`${pc.bold('API URL:')} ${config.apiUrl}`);\n console.log(`${pc.bold('Workspace:')} ${config.workspaceSlug}`);\n console.log(`${pc.bold('Default Project:')} ${config.defaultProjectSlug}`);\n const hasAccessToken = !!config.cookies.kb_access_token;\n console.log(`${pc.bold('Authentication Status:')} ${hasAccessToken ? pc.green('Logged In') : pc.red('Not Logged In')}`);\n}\n"]}
|
package/dist/commands/init.js
CHANGED
|
@@ -4,24 +4,7 @@ import { saveConfig } from '../config.js';
|
|
|
4
4
|
import { ApiClient } from '../client.js';
|
|
5
5
|
export async function runInit() {
|
|
6
6
|
intro(pc.cyan('Knowledge Base (kb) CLI Setup'));
|
|
7
|
-
const
|
|
8
|
-
message: 'Enter your KB API Server URL:',
|
|
9
|
-
placeholder: 'https://pedro-duarte.ddns.net/knowledge-base/api',
|
|
10
|
-
initialValue: 'https://pedro-duarte.ddns.net/knowledge-base/api',
|
|
11
|
-
validate: (value) => {
|
|
12
|
-
if (!value || !value.trim())
|
|
13
|
-
return 'Server URL cannot be empty';
|
|
14
|
-
if (!value.startsWith('http://') && !value.startsWith('https://')) {
|
|
15
|
-
return 'URL must start with http:// or https://';
|
|
16
|
-
}
|
|
17
|
-
return;
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
if (isCancel(apiUrlInput)) {
|
|
21
|
-
outro(pc.red('Setup cancelled.'));
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const apiUrl = apiUrlInput.trim().replace(/\/$/, '');
|
|
7
|
+
const apiUrl = 'https://pedro-duarte.ddns.net/knowledge-base/api';
|
|
25
8
|
const authMethod = await select({
|
|
26
9
|
message: 'Select authentication method:',
|
|
27
10
|
options: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAEhD,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["import { intro, outro, text, password, select, spinner, isCancel } from '@clack/prompts';\nimport pc from 'picocolors';\nimport { saveConfig } from '../config.js';\nimport { ApiClient } from '../client.js';\n\nexport async function runInit(): Promise<void> {\n intro(pc.cyan('Knowledge Base (kb) CLI Setup'));\n\n const apiUrl = 'https://pedro-duarte.ddns.net/knowledge-base/api';\n\n const authMethod = await select({\n message: 'Select authentication method:',\n options: [\n { value: 'google', label: '1 - Google OAuth (Browser Login)' },\n { value: 'email', label: '2 - Email & Password' },\n ],\n });\n\n if (isCancel(authMethod)) {\n outro(pc.red('Setup cancelled.'));\n return;\n }\n\n // Save temporary URL so ApiClient can use it for requests\n saveConfig({ apiUrl, cookies: {} });\n const client = new ApiClient();\n const s = spinner();\n\n try {\n if (authMethod === 'google') {\n const googleStartUrl = `${apiUrl}/api/auth/google/start?returnTo=/auth`;\n console.log('\\n' + pc.cyan('Google OAuth Instructions:'));\n console.log(`1. Open the following URL in your browser to log in:`);\n console.log(` ${pc.underline(pc.bold(pc.blue(googleStartUrl)))}`);\n console.log(`2. Once logged in, open the Developer Tools (F12) in your browser.`);\n console.log(`3. Under the Application tab (Storage -> Cookies), find the cookie named \"${pc.bold('kb_access_token')}\".`);\n console.log(`4. Copy its value and paste it below:\\n`);\n\n const token = await password({\n message: 'Paste the kb_access_token cookie value:',\n validate: (value) => {\n if (!value || !value.trim()) return 'Access token value is required';\n return;\n },\n });\n\n if (isCancel(token)) {\n outro(pc.red('Setup cancelled.'));\n return;\n }\n\n s.start('Validating Google access token...');\n saveConfig({\n apiUrl,\n cookies: {\n kb_access_token: token.trim(),\n },\n });\n } else {\n // Email & Password login\n const email = await text({\n message: 'Enter your account email:',\n validate: (value) => {\n if (!value || !value.trim()) return 'Email is required';\n if (!value.includes('@')) return 'Enter a valid email address';\n return;\n },\n });\n\n if (isCancel(email)) {\n outro(pc.red('Setup cancelled.'));\n return;\n }\n\n const userPassword = await password({\n message: 'Enter your password:',\n validate: (value) => {\n if (!value) return 'Password is required';\n return;\n },\n });\n\n if (isCancel(userPassword)) {\n outro(pc.red('Setup cancelled.'));\n return;\n }\n\n s.start('Connecting and authenticating...');\n await client.login(email.trim(), userPassword);\n }\n\n s.message('Fetching workspaces...');\n const workspacesResult = await client.listWorkspaces();\n s.stop(pc.green('Authenticated successfully!'));\n\n let selectedWorkspace = 'default';\n if (workspacesResult && Array.isArray(workspacesResult.workspaces)) {\n const workspaces = workspacesResult.workspaces;\n if (workspaces.length > 1) {\n const workspaceSelection = await select({\n message: 'Select your default workspace:',\n options: workspaces.map((w: any) => ({\n value: w.workspaceSlug,\n label: w.displayName || w.workspaceSlug,\n })),\n });\n\n if (isCancel(workspaceSelection)) {\n outro(pc.red('Setup cancelled.'));\n return;\n }\n selectedWorkspace = String(workspaceSelection);\n } else if (workspaces.length === 1 && workspaces[0]) {\n selectedWorkspace = workspaces[0].workspaceSlug;\n }\n }\n\n saveConfig({\n apiUrl,\n workspaceSlug: selectedWorkspace,\n defaultProjectSlug: 'inbox',\n });\n\n outro(pc.green(`Setup complete! CLI initialized and ready in workspace \"${selectedWorkspace}\".`));\n } catch (error: any) {\n s.stop(pc.red('Authentication failed'));\n const errorMsg = error?.body?.message || error?.message || 'Unknown error';\n outro(pc.red(`Error: ${errorMsg}. Please check your credentials and URL, and run 'kb init' again.`));\n }\n}\n"]}
|