ask-cli-ai 1.1.0 → 1.2.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/README.md CHANGED
@@ -21,6 +21,7 @@ Forget about switching between applications to know how to use a command or fix
21
21
  - [Usage](#usage)
22
22
  - [Select model](#select-model)
23
23
  - [Supported models](#supported-models)
24
+ - [Connect to local or external providers](#connect-to-local-or-external-providers)
24
25
  - [Reference](#reference)
25
26
 
26
27
  ## Why use Ask CLI?
@@ -118,12 +119,18 @@ You can select a model using the **`ask /models`** command. This will list all t
118
119
  - Claude Sonnet 4.5
119
120
  - Claude Opus 4.5
120
121
 
122
+ ## Connect to local or external providers
123
+
124
+ You can use the **`ask /connect`** command to connect to local models or external providers, using an **OpenAI-compatible API**, like llama.cpp, Ollama, Hugging Face, etc.
125
+
126
+ ![Connect screen](https://github.com/david-minaya/ask/blob/main/images/connect.png)
127
+
121
128
  ## Reference
122
129
 
123
130
  ```
124
131
  AI CLI to help you with commands, coding, apps and more.
125
132
 
126
- Version: 1.1.0
133
+ Version: 1.2.0
127
134
 
128
135
  Usage: ask <prompt..>
129
136
 
@@ -132,6 +139,7 @@ Commands:
132
139
  ask /models Select a model
133
140
  ask /providers Setup providers
134
141
  ask /config Configuration
142
+ ask /connect Connect to an external provider using OpenAI-compatible API
135
143
  ask /history List the chat history
136
144
  ask /clear Clear the chat history
137
145
 
package/dist/app.js CHANGED
@@ -8,10 +8,11 @@ import { clearHistory } from "./commands/clearHistory.js";
8
8
  import { providers } from "./commands/providers.js";
9
9
  import { logo } from "./utils/logo.js";
10
10
  import { config } from "./commands/config.js";
11
+ import { connect } from "./commands/connect.js";
11
12
  void yargs(hideBin(process.argv))
12
13
  .scriptName('ask')
13
- .usage(`${logo}\nAI CLI to help you with commands, coding, apps and more.\n\nVersion: 1.1.0\n\nUsage: $0 <prompt..>`)
14
- .version('1.1.0')
14
+ .usage(`${logo}\nAI CLI to help you with commands, coding, apps and more.\n\nVersion: 1.2.0\n\nUsage: $0 <prompt..>`)
15
+ .version('1.2.0')
15
16
  .locale('en')
16
17
  .example('$0 how to run a docker container', '')
17
18
  .example('how to setup my git account', '')
@@ -45,6 +46,11 @@ void yargs(hideBin(process.argv))
45
46
  command: '/config',
46
47
  describe: 'Configuration',
47
48
  handler: () => config()
49
+ })
50
+ .command({
51
+ command: '/connect',
52
+ describe: 'Connect to an external provider using OpenAI-compatible API',
53
+ handler: () => connect()
48
54
  })
49
55
  .command({
50
56
  command: '/history',
@@ -57,4 +63,4 @@ void yargs(hideBin(process.argv))
57
63
  handler: () => clearHistory()
58
64
  })
59
65
  .parse();
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFvQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUF1QixDQUFDO0FBRS9DLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUIsVUFBVSxDQUFDLEtBQUssQ0FBQztLQUNqQixLQUFLLENBQUMsR0FBRyxJQUFJLHNHQUFzRyxDQUFDO0tBQ3BILE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNaLE9BQU8sQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLENBQUM7S0FDL0MsT0FBTyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsQ0FBQztLQUMxQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDO0tBQ3hDLE9BQU8sQ0FBQyw0Q0FBNEMsRUFBRSxFQUFFLENBQUM7S0FDekQsSUFBSSxFQUFFO0tBQ04sT0FBTyxDQUFDO0lBQ1AsT0FBTyxFQUFFLGVBQWU7SUFDeEIsUUFBUSxFQUFFLGlDQUFpQztJQUMzQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLO1NBQ3BCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3pFLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ1osSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsb0JBQW9CO1FBQ2pDLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7SUFDSixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO0NBQzVELENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUCxPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUU7Q0FDN0IsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRTtDQUMzQixDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1AsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLGVBQWU7SUFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRTtDQUN4QixDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1AsT0FBTyxFQUFFLFVBQVU7SUFDbkIsUUFBUSxFQUFFLHVCQUF1QjtJQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO0NBQzdCLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUCxPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsd0JBQXdCO0lBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUU7Q0FDOUIsQ0FBQztLQUNELEtBQUssRUFBRSxDQUFDIn0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFvQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBd0IsQ0FBQztBQUVqRCxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLFVBQVUsQ0FBQyxLQUFLLENBQUM7S0FDakIsS0FBSyxDQUFDLEdBQUcsSUFBSSxzR0FBc0csQ0FBQztLQUNwSCxPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDWixPQUFPLENBQUMsa0NBQWtDLEVBQUUsRUFBRSxDQUFDO0tBQy9DLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLENBQUM7S0FDMUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQztLQUN4QyxPQUFPLENBQUMsNENBQTRDLEVBQUUsRUFBRSxDQUFDO0tBQ3pELElBQUksRUFBRTtLQUNOLE9BQU8sQ0FBQztJQUNQLE9BQU8sRUFBRSxlQUFlO0lBQ3hCLFFBQVEsRUFBRSxpQ0FBaUM7SUFDM0MsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSztTQUNwQixVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN6RSxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNaLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxXQUFXLEVBQUUsSUFBSTtLQUNsQixDQUFDO0lBQ0osT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztDQUM1RCxDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1AsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO0NBQzdCLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUCxPQUFPLEVBQUUsWUFBWTtJQUNyQixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUU7Q0FDM0IsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUU7Q0FDeEIsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFFBQVEsRUFBRSw2REFBNkQ7SUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUN6QixDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1AsT0FBTyxFQUFFLFVBQVU7SUFDbkIsUUFBUSxFQUFFLHVCQUF1QjtJQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO0NBQzdCLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUCxPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsd0JBQXdCO0lBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUU7Q0FDOUIsQ0FBQztLQUNELEtBQUssRUFBRSxDQUFDIn0=
@@ -4,7 +4,7 @@ import findProcess from 'find-process';
4
4
  import chalk from 'chalk';
5
5
  import { exec as execCb } from 'node:child_process';
6
6
  import { useEffect, useState } from 'react';
7
- import { Box, render, Static, Text, useApp } from 'ink';
7
+ import { Box, render, Static, Text } from 'ink';
8
8
  import { ChatGoogleGenerativeAI } from '@langchain/google-genai';
9
9
  import { configStore } from "../stores/config.js";
10
10
  import { historyStore } from "../stores/history.js";
@@ -13,7 +13,8 @@ import { Loading } from "../components/loading.js";
13
13
  import { ChatAnthropic } from '@langchain/anthropic';
14
14
  import { ChatOpenAI } from '@langchain/openai';
15
15
  import { instructions } from "../templates/instructions.js";
16
- import { providers } from "../providers.js";
16
+ import { useExit } from "../hooks/useExit.js";
17
+ import { SelectModel } from "../components/selectModel.js";
17
18
  const exec = util.promisify(execCb);
18
19
  const config = await configStore.get();
19
20
  const history = await historyStore.get();
@@ -22,53 +23,56 @@ export function ask(prompt, command) {
22
23
  }
23
24
  function Ask(props) {
24
25
  const { prompt, command } = props;
25
- const { exit } = useApp();
26
26
  const [view, setView] = useState('ask');
27
27
  const [sending, setSending] = useState(false);
28
28
  const [response, setResponse] = useState('');
29
29
  const [meta, setMeta] = useState();
30
- const [exitCode, setExitCode] = useState();
30
+ const [_, setExit] = useExit();
31
31
  const [isFirstRun, setIsFirstRun] = useState(false);
32
32
  useEffect(() => {
33
33
  void (async () => {
34
- if (config.model) {
35
- await send(config);
34
+ if (config.isFirstExecution) {
35
+ setView('welcome');
36
+ setIsFirstRun(true);
37
+ }
38
+ else if (!config.model) {
39
+ setView('select-model');
36
40
  }
37
41
  else {
38
- setView('welcome');
42
+ await send(config);
39
43
  }
40
44
  })();
41
45
  }, []);
42
- useEffect(() => {
43
- if (exitCode !== undefined) {
44
- setTimeout(() => exit(), 0);
45
- }
46
- }, [exitCode]);
47
46
  useEffect(() => {
48
47
  void historyStore.deleteOldHistory();
49
48
  }, []);
50
49
  async function handleSend() {
51
- setIsFirstRun(true);
52
50
  setView('ask');
53
51
  const config = await configStore.get();
52
+ config.isFirstExecution = false;
53
+ await configStore.save(config);
54
54
  await send(config);
55
55
  }
56
56
  async function send(config) {
57
- const modelId = config.model.model;
58
- const providerId = config.model.provider;
59
- const apikey = config.providers[providerId].apiKey;
60
- const provider = providers.find(provider => provider.id === providerId);
61
- const model = provider?.models.find(model => model.name === modelId);
62
- if (!apikey) {
63
- console.error(`No API key found for the model ${chalk.bold(`${model.title} (${provider.name})`)}.\n`);
57
+ const modelId = config.model.id;
58
+ const providerId = config.model.providerId;
59
+ const provider = config.providers[providerId];
60
+ const model = provider?.models.find(model => model.id === modelId);
61
+ if (!model) {
62
+ console.error(`Error: model ${chalk.bold(modelId)} not found`);
63
+ setExit(true);
64
+ return;
65
+ }
66
+ if (provider.type !== 'openai-compatible' && !provider.key) {
67
+ console.error(`No API key found for the model ${chalk.bold(`(${provider.name}) ${model.name}`)}.\n`);
64
68
  console.error(`Use the command ${chalk.cyan(chalk.bold('ask /providers'))} to set the API key for the provider ${chalk.bold(provider.name)}.`);
65
- setExitCode(1);
69
+ setExit(true);
66
70
  return;
67
71
  }
68
72
  try {
69
73
  setSending(true);
70
74
  const prompt = await getPrompt();
71
- const modelClient = getModel(providerId, modelId, apikey);
75
+ const modelClient = getModel(provider, model);
72
76
  const startTime = Date.now();
73
77
  const response = await modelClient.invoke([
74
78
  { role: 'system', content: instructions },
@@ -82,18 +86,17 @@ function Ask(props) {
82
86
  ]);
83
87
  setResponse(response.text.replaceAll('\\x1b', '\x1b').replaceAll('\\n', '\n').concat('\x1b[0m'));
84
88
  setMeta({
85
- model: model.title,
89
+ model: model.name,
86
90
  time: endTime - startTime,
87
- inputTokens: response.usage_metadata?.input_tokens || 0,
88
- outputTokens: response.usage_metadata?.output_tokens || 0
91
+ tokens: (response.usage_metadata?.input_tokens || 0) + (response.usage_metadata?.output_tokens || 0)
89
92
  });
90
93
  setSending(false);
91
- setExitCode(0);
94
+ setExit(true);
92
95
  }
93
96
  catch (err) {
94
- console.error(`Error running model ${chalk.bold(`${model.title} (${provider.name})`)}:\n\n${err.message}`);
97
+ console.error(`Error running model ${chalk.bold(`(${provider.name}) ${model.name}`)}:\n\n${err.message}`);
95
98
  setSending(false);
96
- setExitCode(1);
99
+ setExit(true);
97
100
  }
98
101
  }
99
102
  async function getPrompt() {
@@ -104,15 +107,39 @@ function Ask(props) {
104
107
  }
105
108
  return result;
106
109
  }
107
- function getModel(providerId, modelId, apiKey) {
108
- const provider = providers.find(provider => provider.id === providerId);
109
- const model = provider?.models.find(model => model.name === modelId);
110
+ function getModel(provider, model) {
110
111
  const maxOutputTokens = config.settings.maxOutputTokens.value;
111
- switch (providerId) {
112
- case 'openai': return new ChatOpenAI({ model: modelId, apiKey, ...model?.config, maxTokens: maxOutputTokens });
113
- case 'gemini': return new ChatGoogleGenerativeAI({ model: modelId, apiKey, ...model?.config, maxOutputTokens });
114
- case 'anthropic': return new ChatAnthropic({ model: modelId, apiKey, ...model?.config, maxTokens: maxOutputTokens });
115
- default: throw new Error('Model not found');
112
+ switch (provider.type) {
113
+ case 'openai':
114
+ return new ChatOpenAI({
115
+ model: model.id,
116
+ apiKey: provider.key,
117
+ maxTokens: maxOutputTokens,
118
+ ...model?.config
119
+ });
120
+ case 'gemini':
121
+ return new ChatGoogleGenerativeAI({
122
+ model: model.id,
123
+ apiKey: provider.key,
124
+ maxOutputTokens,
125
+ ...model?.config
126
+ });
127
+ case 'anthropic':
128
+ return new ChatAnthropic({
129
+ model: model.id,
130
+ apiKey: provider.key,
131
+ maxTokens: maxOutputTokens,
132
+ ...model?.config
133
+ });
134
+ case 'openai-compatible':
135
+ return new ChatOpenAI({
136
+ model: model.id,
137
+ apiKey: provider.key,
138
+ configuration: { baseURL: provider.url },
139
+ maxTokens: maxOutputTokens
140
+ });
141
+ default:
142
+ throw new Error('Model not found');
116
143
  }
117
144
  }
118
145
  async function runCommand(command) {
@@ -123,7 +150,7 @@ function Ask(props) {
123
150
  }
124
151
  catch (err) {
125
152
  const { stdout, stderr } = err;
126
- return `Error executing command: \n\n${stdout}\n\n${stderr}`;
153
+ return `Error executing command:\n\n${stdout}\n\n${stderr}`;
127
154
  }
128
155
  }
129
156
  function formatTime(time) {
@@ -132,11 +159,12 @@ function Ask(props) {
132
159
  : `${(time / (1000 * 60)).toFixed(1)}m`;
133
160
  }
134
161
  return (_jsxs(Box, { children: [view === 'welcome' &&
135
- _jsx(Welcome, { onSend: handleSend }), view === 'ask' &&
162
+ _jsx(Welcome, { onSend: handleSend }), view === 'select-model' &&
163
+ _jsx(SelectModel, { onSelect: handleSend }), view === 'ask' &&
136
164
  _jsxs(Box, { children: [isFirstRun &&
137
165
  _jsx(Static, { items: [''], children: item => _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: [_jsx(Text, { color: 'cyan', bold: true, children: "Prompt:" }), " ", prompt] }) }, item) }), sending &&
138
166
  _jsx(Loading, {}), !sending && response &&
139
167
  _jsx(Static, { items: [''], children: item => _jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { children: response }), config.settings.metadata.value && meta &&
140
- _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: 'gray', dimColor: true, children: ["Model: ", meta.model, ", Time: ", formatTime(meta.time), ", Tokens: ", meta.inputTokens + meta.outputTokens] }) })] }, item) })] })] }));
168
+ _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: 'gray', dimColor: true, children: ["Model: ", meta.model, ", Time: ", formatTime(meta.time), ", Tokens: ", meta.tokens] }) })] }, item) })] })] }));
141
169
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Fzay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXBDLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLE1BQU0sT0FBTyxH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
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Fzay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBK0IsQ0FBQztBQUU1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXBDLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRXpDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWdCO0lBQ2xELE1BQU0sQ0FBQyxLQUFDLEdBQUcsSUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFPRCxTQUFTLEdBQUcsQ0FBQyxLQUFZO0lBRXZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFxQyxLQUFLLENBQUMsQ0FBQztJQUM1RSxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBbUQsQ0FBQztJQUNwRixNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBELFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDZixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25CLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDO2lCQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsS0FBSyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN2QyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxLQUFLLFVBQVUsVUFBVTtRQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDZixNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFjO1FBRWhDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFNLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFNLENBQUMsVUFBVSxDQUFDO1FBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNkLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLG1CQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNELE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyx3Q0FBd0MsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9JLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNkLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBRUgsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWpCLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxFQUFFLENBQUM7WUFFakMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDO2dCQUN4QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRTtnQkFDekMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDckMsRUFBRyxJQUFJLEVBQUUsT0FBTyxFQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUU7YUFDckMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTNCLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQztnQkFDckIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ2xDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRTthQUN2QyxDQUFDLENBQUM7WUFFSCxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFFakcsT0FBTyxDQUFDO2dCQUNOLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDakIsSUFBSSxFQUFFLE9BQU8sR0FBRyxTQUFTO2dCQUN6QixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsYUFBYSxJQUFJLENBQUMsQ0FBQzthQUNyRyxDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBRWIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVMsR0FBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFFckgsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssVUFBVSxTQUFTO1FBRXRCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVwQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxhQUFhLEdBQUcsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEQsTUFBTSxJQUFJLGdCQUFnQixPQUFPLDBCQUEwQixhQUFhLEVBQUUsQ0FBQztRQUM3RSxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFNBQVMsUUFBUSxDQUFDLFFBQWtCLEVBQUUsS0FBWTtRQUVoRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFlLENBQUM7UUFFeEUsUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxVQUFVLENBQUM7b0JBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDZixNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUc7b0JBQ3BCLFNBQVMsRUFBRSxlQUFlO29CQUMxQixHQUFHLEtBQUssRUFBRSxNQUFNO2lCQUNqQixDQUFDLENBQUM7WUFDTCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLHNCQUFzQixDQUFDO29CQUNoQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2YsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHO29CQUNwQixlQUFlO29CQUNmLEdBQUcsS0FBSyxFQUFFLE1BQU07aUJBQ2pCLENBQUMsQ0FBQztZQUNMLEtBQUssV0FBVztnQkFDZCxPQUFPLElBQUksYUFBYSxDQUFDO29CQUN2QixLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2YsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHO29CQUNwQixTQUFTLEVBQUUsZUFBZTtvQkFDMUIsR0FBRyxLQUFLLEVBQUUsTUFBTTtpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU8sSUFBSSxVQUFVLENBQUM7b0JBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDZixNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUc7b0JBQ3BCLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUN4QyxTQUFTLEVBQUUsZUFBZTtpQkFDM0IsQ0FBQyxDQUFDO1lBQ0w7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFlO1FBQ3ZDLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUF5QyxDQUFDO1lBQ3JFLE9BQU8sK0JBQStCLE1BQU0sT0FBTyxNQUFNLEVBQUUsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLElBQVk7UUFDOUIsT0FBTyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ2hDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FDTCxNQUFDLEdBQUcsZUFDRCxJQUFJLEtBQUssU0FBUztnQkFDakIsS0FBQyxPQUFPLElBQUMsTUFBTSxFQUFFLFVBQVUsR0FBRyxFQUUvQixJQUFJLEtBQUssY0FBYztnQkFDdEIsS0FBQyxXQUFXLElBQUMsUUFBUSxFQUFFLFVBQVUsR0FBRyxFQUVyQyxJQUFJLEtBQUssS0FBSztnQkFDYixNQUFDLEdBQUcsZUFDRCxVQUFVOzRCQUNULEtBQUMsTUFBTSxJQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUNoQixJQUFJLENBQUMsRUFBRSxDQUNOLEtBQUMsR0FBRyxJQUFZLFlBQVksRUFBRSxDQUFDLFlBQzdCLE1BQUMsSUFBSSxlQUFDLEtBQUMsSUFBSSxJQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsSUFBSSw4QkFBZSxPQUFFLE1BQU0sSUFBUSxJQURwRCxJQUFJLENBRVIsR0FFRCxFQUVWLE9BQU87NEJBQ04sS0FBQyxPQUFPLEtBQUUsRUFFWCxDQUFDLE9BQU8sSUFBSSxRQUFROzRCQUNuQixLQUFDLE1BQU0sSUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FDTixNQUFDLEdBQUcsSUFBQyxhQUFhLEVBQUMsUUFBUSxhQUN6QixLQUFDLElBQUksY0FBRSxRQUFRLEdBQVEsRUFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUk7NENBQ3JDLEtBQUMsR0FBRyxJQUFDLFNBQVMsRUFBRSxDQUFDLFlBQ2YsTUFBQyxJQUFJLElBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxRQUFRLDhCQUNqQixJQUFJLENBQUMsS0FBSyxjQUFVLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFZLElBQUksQ0FBQyxNQUFNLElBQ25FLEdBQ0gsS0FQdUIsSUFBSSxDQVMvQixHQUVELElBRVAsSUFFSixDQUNQLENBQUM7QUFDSixDQUFDIn0=
@@ -1,11 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import TextInput from 'ink-text-input';
3
- import { useEffect, useState } from 'react';
2
+ import { useState } from 'react';
4
3
  import { Box, render, Text } from 'ink';
5
4
  import { ScrollView } from 'ink-scroll-view';
6
5
  import { configStore } from "../stores/config.js";
6
+ import { TextInput } from "../components/textInput.js";
7
7
  import { Commands } from "../components/commands.js";
8
8
  import { Command } from "../components/command.js";
9
+ import { useExit } from "../hooks/useExit.js";
9
10
  const height = process.stdout.rows - 4;
10
11
  const initialConfig = await configStore.get();
11
12
  const initialSettings = Object.entries(initialConfig.settings).map(([key, setting]) => ({
@@ -20,12 +21,7 @@ export function Config() {
20
21
  const [currentIndex, setCurrentIndex] = useState(0);
21
22
  const [settingItems, setSettingItems] = useState(initialSettings);
22
23
  const [saved, setSaved] = useState(false);
23
- const [exit, setExit] = useState(false);
24
- useEffect(() => {
25
- if (exit) {
26
- setTimeout(() => process.exit(), 0);
27
- }
28
- }, [exit]);
24
+ const [exit, setExit] = useExit();
29
25
  function handleUp() {
30
26
  unselect();
31
27
  setCurrentIndex(index => Math.max(0, index - 1));
@@ -81,11 +77,11 @@ export function Config() {
81
77
  }
82
78
  if (exit)
83
79
  return null;
84
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Configuration" }), _jsx(Box, { height: settingItems.length > height ? height : undefined, borderStyle: 'single', borderColor: 'cyan', borderTop: false, borderRight: false, borderBottom: false, marginTop: 1, paddingLeft: 1, children: _jsx(ScrollView, { children: settingItems.map((item, index) => (_jsxs(Box, { width: 80, gap: 1, backgroundColor: index === currentIndex ? 'black' : undefined, children: [_jsx(Box, { minWidth: 20, children: _jsxs(Text, { children: [item.setting.title, ":"] }) }), _jsxs(Box, { minWidth: 6, children: [item.setting.type === 'boolean' &&
80
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: 'whiteBright', bold: true, children: "Configuration" }), _jsx(Box, { height: settingItems.length > height ? height : undefined, borderStyle: 'single', borderColor: 'cyan', borderTop: false, borderRight: false, borderBottom: false, marginTop: 1, paddingLeft: 1, children: _jsx(ScrollView, { children: settingItems.map((item, index) => (_jsxs(Box, { width: 80, gap: 1, backgroundColor: index === currentIndex ? 'black' : undefined, children: [_jsx(Box, { minWidth: 20, children: _jsxs(Text, { children: [item.setting.title, ":"] }) }), _jsxs(Box, { minWidth: 6, children: [item.setting.type === 'boolean' &&
85
81
  _jsx(Text, { color: 'cyan', inverse: item.edit, children: item.setting.value ? 'true' : 'false' }), item.setting.type === 'number' &&
86
82
  _jsxs(Box, { children: [item.edit &&
87
83
  _jsx(Text, { inverse: true, color: 'cyan', children: _jsx(TextInput, { value: item.setting.value.toString(), onChange: value => handleInputChange(item.key, value) }) }), !item.edit &&
88
84
  _jsx(Text, { color: 'cyan', inverse: item.edit, children: item.setting.value })] })] }), _jsx(Box, { children: _jsx(Text, { color: 'gray', dimColor: index !== currentIndex, children: item.setting.description }) })] }, item.key))) }) }), _jsxs(Box, { flexDirection: 'row', gap: 1, children: [_jsxs(Commands, { children: [_jsx(Command, { title: 'Esc (Exit)', esc: true, onPress: handleExit }), _jsx(Command, { title: 'Enter (Select)', enter: true, onPress: handleEnter }), _jsx(Command, { title: 'Ctrl+S (Save)', ctrl: true, inputKey: 's', onPress: handleSave }), _jsx(Command, { up: true, onPress: handleUp }), _jsx(Command, { down: true, onPress: handleDown })] }), saved &&
89
85
  _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: 'cyan', bold: true, children: "Saved!" }) })] })] }));
90
86
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTJCLENBQUM7QUFHcEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sYUFBYSxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTlDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLEdBQUc7SUFDSCxJQUFJLEVBQUUsS0FBSztJQUNYLE9BQU87Q0FDUixDQUFDLENBQUMsQ0FBQztBQUVKLE1BQU0sVUFBVSxNQUFNO0lBQ3BCLE1BQU0sQ0FBQyxLQUFDLE1BQU0sS0FBRyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNO0lBRXBCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELE1BQU0s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
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTJCLENBQUM7QUFFcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUU5QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RixHQUFHO0lBQ0gsSUFBSSxFQUFFLEtBQUs7SUFDWCxPQUFPO0NBQ1IsQ0FBQyxDQUFDLENBQUM7QUFFSixNQUFNLFVBQVUsTUFBTTtJQUNwQixNQUFNLENBQUMsS0FBQyxNQUFNLEtBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTTtJQUVwQixNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FB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
@@ -0,0 +1,112 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import OpenAI from 'openai';
3
+ import Spinner from 'ink-spinner';
4
+ import { useEffect, useState } from 'react';
5
+ import { render, Box, Text } from 'ink';
6
+ import { TextField } from "../components/textField.js";
7
+ import { Commands } from "../components/commands.js";
8
+ import { Command } from "../components/command.js";
9
+ import { configStore } from "../stores/config.js";
10
+ import { useField } from "../hooks/useField.js";
11
+ import { useExit } from "../hooks/useExit.js";
12
+ import { useTestProvider } from "../hooks/useTestProvider.js";
13
+ import { TestProvider } from "../components/testProvider.js";
14
+ export function connect() {
15
+ render(_jsx(Connect, {}));
16
+ }
17
+ function Connect() {
18
+ const [view, setView] = useState('connect');
19
+ const [focusIndex, setFocusIndex] = useState(0);
20
+ const [models, setModels] = useState([]);
21
+ const [testSuccessful, setTestSuccessful] = useState(false);
22
+ const [saving, setSaving] = useState(false);
23
+ const [saved, setSaved] = useState(false);
24
+ const [saveFailed, setSaveFailed] = useState(false);
25
+ const [saveError, setSaveError] = useState();
26
+ const [exit, setExit] = useExit();
27
+ const nameField = useField({ focus: false });
28
+ const urlField = useField({ focus: false });
29
+ const apiKeyField = useField({ focus: false });
30
+ const testProvider = useTestProvider();
31
+ useEffect(() => {
32
+ setTimeout(() => { }, 1000 * 60 * 60 * 24);
33
+ updateFocus(0);
34
+ }, []);
35
+ useEffect(() => {
36
+ if (saved || saveFailed) {
37
+ setTimeout(() => process.exit(), 0);
38
+ }
39
+ }, [saved, saveFailed]);
40
+ function handleExit() {
41
+ setExit(true);
42
+ }
43
+ function handleUp() {
44
+ updateFocus(focusIndex - 1);
45
+ }
46
+ function handleDown() {
47
+ updateFocus(focusIndex + 1);
48
+ }
49
+ async function handleTest() {
50
+ setTestSuccessful(false);
51
+ if (!validate())
52
+ return;
53
+ if (await test()) {
54
+ setTestSuccessful(true);
55
+ }
56
+ }
57
+ async function handleSave() {
58
+ setTestSuccessful(false);
59
+ if (!validate() || !await test())
60
+ return;
61
+ setView('save');
62
+ setSaving(true);
63
+ try {
64
+ const client = new OpenAI({ baseURL: urlField.value, apiKey: apiKeyField.value });
65
+ const models = await client.models.list();
66
+ setModels(models.data.map(model => model.id));
67
+ await configStore.addProvider(nameField.value, urlField.value, apiKeyField.value, models.data.map(model => model.id));
68
+ setSaving(false);
69
+ setSaved(true);
70
+ }
71
+ catch (error) {
72
+ setSaving(false);
73
+ setSaveError(error.message.replaceAll(/(\n|\r|\r\n)/g, ' '));
74
+ setSaveFailed(true);
75
+ }
76
+ }
77
+ function validate() {
78
+ let valid = true;
79
+ nameField.error = undefined;
80
+ urlField.error = undefined;
81
+ if (!nameField.value.trim()) {
82
+ nameField.error = 'Required';
83
+ valid = false;
84
+ }
85
+ if (!urlField.value.trim()) {
86
+ urlField.error = 'Required';
87
+ valid = false;
88
+ }
89
+ return valid;
90
+ }
91
+ async function test() {
92
+ return testProvider.test({ type: 'openai-compatible', url: urlField.value, key: apiKeyField.value });
93
+ }
94
+ function updateFocus(index) {
95
+ const fields = [nameField, urlField, apiKeyField];
96
+ const focusIndex = Math.min(Math.max(index, 0), fields.length - 1);
97
+ for (let i = 0; i < fields.length; i++) {
98
+ fields[i].focus = i === focusIndex;
99
+ }
100
+ setFocusIndex(focusIndex);
101
+ }
102
+ if (exit)
103
+ return null;
104
+ return (_jsxs(Box, { children: [view === 'connect' &&
105
+ _jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { color: 'whiteBright', bold: true, children: "Connect" }), _jsx(Box, { width: 80, flexDirection: 'column', borderColor: 'gray', borderTop: false, borderRight: false, borderBottom: false, marginTop: 1, children: _jsxs(Text, { color: 'gray', children: ["Connect to local models or external providers using an ", _jsx(Text, { bold: true, children: "OpenAI-compatible API" }), ", e.g., llama.cpp, Ollama, Hugging Face, etc."] }) }), _jsxs(Box, { flexDirection: 'column', gap: 1, marginTop: 1, children: [_jsx(TextField, { label: 'Name', placeholder: 'Provider name', focus: nameField.focus, value: nameField.value, error: nameField.error, onChange: value => nameField.change(value) }), _jsx(TextField, { label: 'API url', placeholder: 'OpenAI-compatible API URL', focus: urlField.focus, value: urlField.value, error: urlField.error, onChange: value => urlField.change(value) }), _jsx(TextField, { label: 'API key', placeholder: 'API key (Optional)', focus: apiKeyField.focus, value: apiKeyField.value, error: apiKeyField.error, onChange: value => apiKeyField.change(value) })] }), _jsx(TestProvider, { type: 'openai-compatible', testing: testProvider.testing, error: testProvider.error }), testSuccessful &&
106
+ _jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, color: 'green', children: "\u00A1Connected!" }) }), _jsxs(Commands, { children: [_jsx(Command, { title: 'Esc (Exit)', esc: true, onPress: handleExit }), _jsx(Command, { title: 'Up/Down (Navigation)', up: true, down: true, anyKey: true }), _jsx(Command, { title: 'Ctrl+T (Test connection)', ctrl: true, inputKey: 't', onPress: handleTest }), _jsx(Command, { title: 'Ctrl+S (Save)', ctrl: true, inputKey: 's', onPress: handleSave }), _jsx(Command, { tab: true, onPress: handleDown }), _jsx(Command, { up: true, onPress: handleUp }), _jsx(Command, { down: true, onPress: handleDown })] })] }), view === 'save' &&
107
+ _jsxs(Box, { children: [saving &&
108
+ _jsx(Box, { children: _jsxs(Text, { color: 'yellow', children: ["Saving provider", _jsx(Spinner, { type: 'simpleDots' })] }) }), saved &&
109
+ _jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { children: "Provider saved!" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, children: "Provider:" }) }), _jsx(Box, { children: _jsx(Text, { children: nameField.value }) }), _jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [_jsx(Text, { bold: true, children: "Models:" }), _jsx(Box, { flexDirection: 'column', paddingLeft: 1, children: models.map(model => _jsxs(Text, { children: ["\u25CF ", model] }, model)) })] }), _jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [_jsxs(Text, { children: ["To see the models of the provider, use the ", _jsx(Text, { color: 'cyan', bold: true, children: "ask /models" }), " command."] }), _jsxs(Text, { children: ["To update the provider, use the ", _jsx(Text, { color: 'cyan', bold: true, children: "ask /providers" }), " command."] })] })] }), saveFailed &&
110
+ _jsxs(Box, { flexDirection: 'column', marginTop: 1, gap: 1, children: [_jsx(Text, { children: "Error saving provider:" }), _jsx(Text, { color: 'red', children: saveError })] })] })] }));
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9jb25uZWN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sT0FBTyxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBZ0MsQ0FBQztBQUU5RCxNQUFNLFVBQVUsT0FBTztJQUNyQixNQUFNLENBQUMsS0FBQyxPQUFPLEtBQUUsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxTQUFTLE9BQU87SUFFZCxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxRQUFR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
@@ -1,30 +1,24 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
- import { Box, render, Text, useApp, useInput } from 'ink';
3
+ import { Box, render, Text } from 'ink';
4
4
  import { SelectModel } from "../components/selectModel.js";
5
5
  export function selectModel() {
6
6
  render(_jsx(Select, {}));
7
7
  }
8
8
  function Select() {
9
- const { exit } = useApp();
10
- const [view, setView] = useState('select-model');
9
+ const [provider, setProvider] = useState();
11
10
  const [model, setModel] = useState();
12
- useInput((_, key) => {
13
- if (key.escape) {
14
- setView('none');
15
- }
16
- });
17
11
  useEffect(() => {
18
- if (view === 'none' || view === 'selected-model') {
19
- exit();
12
+ if (model) {
13
+ setTimeout(() => process.exit(), 0);
20
14
  }
21
- }, [view]);
22
- function handleSelect(model) {
15
+ }, [model]);
16
+ function handleSelect(provider, model) {
17
+ setProvider(provider);
23
18
  setModel(model);
24
- setView('selected-model');
25
19
  }
26
- return (_jsxs(Box, { flexDirection: 'column', children: [view === 'select-model' &&
27
- _jsx(SelectModel, { onSelect: handleSelect }), view === 'selected-model' &&
28
- _jsxs(Text, { children: ["Selected model: ", _jsx(Text, { bold: true, color: 'cyanBright', children: model.title })] })] }));
20
+ return (_jsxs(Box, { flexDirection: 'column', children: [!model &&
21
+ _jsx(SelectModel, { onSelect: handleSelect }), model &&
22
+ _jsxs(Text, { children: ["Selected model: ", _jsxs(Text, { bold: true, color: 'cyanBright', children: ["(", provider?.name, ") ", model?.name] })] })] }));
29
23
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0TW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2VsZWN0TW9kZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQStCLENBQUM7QUFHNUQsTUFBTSxVQUFVLFdBQVc7SUFDekIsTUFBTSxDQUFDLEtBQUMsTUFBTSxLQUFFLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQsU0FBUyxNQUFNO0lBRWIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBRTFCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUE2QyxjQUFjLENBQUMsQ0FBQztJQUM3RixNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLFFBQVEsRUFBUyxDQUFDO0lBRTVDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNsQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pELElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQztJQUNILENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFWCxTQUFTLFlBQVksQ0FBQyxLQUFZO1FBQ2hDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxDQUNMLE1BQUMsR0FBRyxJQUFDLGFBQWEsRUFBQyxRQUFRLGFBQ3hCLElBQUksS0FBSyxjQUFjO2dCQUN0QixLQUFDLFdBQVcsSUFBQyxRQUFRLEVBQUUsWUFBWSxHQUFHLEVBRXZDLElBQUksS0FBSyxnQkFBZ0I7Z0JBQ3hCLE1BQUMsSUFBSSxtQ0FBaUIsS0FBQyxJQUFJLElBQUMsSUFBSSxRQUFDLEtBQUssRUFBQyxZQUFZLFlBQUUsS0FBTSxDQUFDLEtBQUssR0FBUSxJQUFPLElBRTlFLENBQ1AsQ0FBQztBQUNKLENBQUMifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0TW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2VsZWN0TW9kZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUErQixDQUFDO0FBSTVELE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE1BQU0sQ0FBQyxLQUFDLE1BQU0sS0FBRSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELFNBQVMsTUFBTTtJQUViLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsUUFBUSxFQUFZLENBQUM7SUFDckQsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLEVBQVMsQ0FBQztJQUU1QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFWixTQUFTLFlBQVksQ0FBQyxRQUFrQixFQUFFLEtBQVk7UUFDcEQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsT0FBTyxDQUNMLE1BQUMsR0FBRyxJQUFDLGFBQWEsRUFBQyxRQUFRLGFBQ3hCLENBQUMsS0FBSztnQkFDTCxLQUFDLFdBQVcsSUFBQyxRQUFRLEVBQUUsWUFBWSxHQUFHLEVBRXZDLEtBQUs7Z0JBQ0osTUFBQyxJQUFJLG1DQUFpQixNQUFDLElBQUksSUFBQyxJQUFJLFFBQUMsS0FBSyxFQUFDLFlBQVksa0JBQUcsUUFBUSxFQUFFLElBQUksUUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFRLElBQU8sSUFFaEcsQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -3,13 +3,14 @@ import { Box, Text } from 'ink';
3
3
  import { useContext, useEffect, useState } from 'react';
4
4
  import { CommandContext } from "./commands.js";
5
5
  export function Command(props) {
6
- const { title, ctrl, esc, enter, up, down, inputKey, onPress } = props;
6
+ const { title, hidden, tab, ctrl, esc, enter, up, down, inputKey, anyKey, onPress } = props;
7
7
  const [active, setActive] = useState(false);
8
8
  const inputEvent = useContext(CommandContext);
9
9
  useEffect(() => {
10
- if (!inputEvent)
10
+ if (!inputEvent || hidden)
11
11
  return;
12
12
  const keyMap = {
13
+ tab,
13
14
  ctrl,
14
15
  escape: esc,
15
16
  return: enter,
@@ -22,8 +23,10 @@ export function Command(props) {
22
23
  .map(([key]) => key);
23
24
  const validateKey = keys.length > 0;
24
25
  const validateInput = inputKey !== undefined;
25
- const isKeyActive = keys.every(key => inputEvent.key[key]);
26
26
  const isInputActive = inputEvent.input === inputKey;
27
+ const isKeyActive = anyKey
28
+ ? keys.some(key => inputEvent.key[key])
29
+ : keys.every(key => inputEvent.key[key]);
27
30
  const active = isActive(validateKey, validateInput, isKeyActive, isInputActive);
28
31
  if (active) {
29
32
  onPress?.();
@@ -48,8 +51,8 @@ export function Command(props) {
48
51
  return false;
49
52
  }
50
53
  }
51
- if (!title)
54
+ if (!title || hidden)
52
55
  return null;
53
- return (_jsx(Box, { children: _jsx(Text, { bold: active, color: active ? 'cyan' : 'gray', children: title }) }));
56
+ return (_jsx(Box, { children: _jsx(Text, { color: active ? 'cyan' : 'gray', children: title }) }));
54
57
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1hbmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFPLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWdCLENBQUM7QUFhaEQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFtQjtJQUV6QyxNQUFNLEVBQ0osS0FBSyxFQUNMLElBQUksRUFDSixHQUFHLEVBQ0gsS0FBSyxFQUNMLEVBQUUsRUFDRixJQUFJLEVBQ0osUUFBUSxFQUNSLE9BQU8sRUFDUixHQUFHLEtBQUssQ0FBQztJQUVWLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU5QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBRWIsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBRXhCLE1BQU0sTUFBTSxHQUFpQjtZQUMzQixJQUFJO1lBQ0osTUFBTSxFQUFFLEdBQUc7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLE1BQU07YUFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUM7YUFDckMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBZ0IsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sYUFBYSxHQUFHLFFBQVEsS0FBSyxTQUFTLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQztRQUVwRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFaEYsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVqQixTQUFTLFFBQVEsQ0FBQyxXQUFvQixFQUFFLGFBQXNCLEVBQUUsV0FBb0IsRUFBRSxhQUFzQjtRQUMxRyxJQUFJLElBQUksSUFBSSxRQUFRLEtBQUssR0FBRyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxJQUFJLFdBQVcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUN4QyxPQUFPLFdBQVcsSUFBSSxhQUFhLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksV0FBVyxFQUFFLENBQUM7WUFDdkIsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQzthQUFNLElBQUksYUFBYSxFQUFFLENBQUM7WUFDekIsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV4QixPQUFPLENBQ0wsS0FBQyxHQUFHLGNBQ0YsS0FBQyxJQUFJLElBQ0gsSUFBSSxFQUFFLE1BQU0sRUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sWUFDOUIsS0FBSyxHQUNELEdBQ0gsQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1hbmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFPLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWdCLENBQUM7QUFnQmhELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBbUI7SUFFekMsTUFBTSxFQUNKLEtBQUssRUFDTCxNQUFNLEVBQ04sR0FBRyxFQUNILElBQUksRUFDSixHQUFHLEVBQ0gsS0FBSyxFQUNMLEVBQUUsRUFDRixJQUFJLEVBQ0osUUFBUSxFQUNSLE1BQU0sRUFDTixPQUFPLEVBQ1IsR0FBRyxLQUFLLENBQUM7SUFFVixNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU1QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUViLElBQUksQ0FBQyxVQUFVLElBQUksTUFBTTtZQUFFLE9BQU87UUFFbEMsTUFBTSxNQUFNLEdBQWlCO1lBQzNCLEdBQUc7WUFDSCxJQUFJO1lBQ0osTUFBTSxFQUFFLEdBQUc7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxFQUFFO1lBQ1gsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLE1BQU07YUFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUM7YUFDckMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBZ0IsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sYUFBYSxHQUFHLFFBQVEsS0FBSyxTQUFTLENBQUM7UUFDN0MsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUM7UUFFcEQsTUFBTSxXQUFXLEdBQUcsTUFBTTtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWhGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFakIsU0FBUyxRQUFRLENBQUMsV0FBb0IsRUFBRSxhQUFzQixFQUFFLFdBQW9CLEVBQUUsYUFBc0I7UUFDMUcsSUFBSSxJQUFJLElBQUksUUFBUSxLQUFLLEdBQUcsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO2FBQU0sSUFBSSxXQUFXLElBQUksYUFBYSxFQUFFLENBQUM7WUFDeEMsT0FBTyxXQUFXLElBQUksYUFBYSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7YUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLElBQUksTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRWxDLE9BQU8sQ0FDTCxLQUFDLEdBQUcsY0FDRixLQUFDLElBQUksSUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sWUFDbEMsS0FBSyxHQUNELEdBQ0gsQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9