@ty_krystal/sei-ai 0.1.12 → 0.1.13

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
@@ -20,7 +20,7 @@ $ npm install -g @ty_krystal/sei-ai
20
20
  $ sei-ai COMMAND
21
21
  running command...
22
22
  $ sei-ai (--version)
23
- @ty_krystal/sei-ai/0.1.12 linux-x64 node-v24.17.0
23
+ @ty_krystal/sei-ai/0.1.13 linux-x64 node-v24.17.0
24
24
  $ sei-ai --help [COMMAND]
25
25
  USAGE
26
26
  $ sei-ai COMMAND
@@ -58,9 +58,9 @@ Export and render OpenAPI docs
58
58
 
59
59
  ```
60
60
  USAGE
61
- $ sei-ai api-docs [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
62
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--format
63
- <value>] [--keyword <value>] [--output <value>]
61
+ $ sei-ai api-docs [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
62
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--format <value>]
63
+ [--keyword <value>] [--output <value>]
64
64
 
65
65
  FLAGS
66
66
  --account=<value> AI 登录账号
@@ -72,7 +72,6 @@ FLAGS
72
72
  --format=<value> [default: markdown] 输出格式
73
73
  --keyword=<value> 过滤关键字
74
74
  --output=<value> 输出文件路径
75
- --role=<value> AI 登录角色
76
75
  --timeout=<value> 请求超时(毫秒)
77
76
  --token=<value> 固定 token
78
77
 
@@ -88,9 +87,9 @@ Call a SEI endpoint
88
87
 
89
88
  ```
90
89
  USAGE
91
- $ sei-ai call METHOD PATH [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>]
92
- [--account <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
93
- [--allow-empty] [--allow-failure] [--file <value>] [--json <value>] [--no-token] [--stdin]
90
+ $ sei-ai call METHOD PATH [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
91
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--allow-empty]
92
+ [--allow-failure] [--file <value>] [--json <value>] [--no-token] [--stdin]
94
93
 
95
94
  ARGUMENTS
96
95
  METHOD HTTP method
@@ -108,7 +107,6 @@ FLAGS
108
107
  --file=<value> JSON file path
109
108
  --json=<value> JSON payload
110
109
  --no-token 不附带 token
111
- --role=<value> AI 登录角色
112
110
  --stdin Read JSON payload from stdin
113
111
  --timeout=<value> 请求超时(毫秒)
114
112
  --token=<value> 固定 token
@@ -125,8 +123,8 @@ Add a dictionary category
125
123
 
126
124
  ```
127
125
  USAGE
128
- $ sei-ai dict:add-category NAME TYPECODE [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>]
129
- [--account <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
126
+ $ sei-ai dict:add-category NAME TYPECODE [--config <value>] [--base-url <value>] [--ai-key <value>] [--account
127
+ <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
130
128
  [--allow-failure] [--body <value>] [--code <value>] [--ctype <value>] [--dict-flag <value>] [--ename <value>]
131
129
  [--memo <value>] [--sort <value>] [--sysid <value>] [--uuid <value>]
132
130
 
@@ -148,7 +146,6 @@ FLAGS
148
146
  --dict-flag=<value> 字典标记
149
147
  --ename=<value> 英文名
150
148
  --memo=<value> 备注
151
- --role=<value> AI 登录角色
152
149
  --sort=<value> 排序号
153
150
  --sysid=<value> 系统编号
154
151
  --timeout=<value> 请求超时(毫秒)
@@ -167,10 +164,10 @@ Add a dictionary item
167
164
 
168
165
  ```
169
166
  USAGE
170
- $ sei-ai dict:add-item CODE NAME TYPECODE [--config <value>] [--base-url <value>] [--ai-key <value>] [--role
171
- <value>] [--account <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout
172
- <value>] [--allow-failure] [--body <value>] [--ctype <value>] [--dict-flag <value>] [--ename <value>] [--memo
173
- <value>] [--parent <value>] [--sort <value>] [--sysid <value>] [--uuid <value>]
167
+ $ sei-ai dict:add-item CODE NAME TYPECODE [--config <value>] [--base-url <value>] [--ai-key <value>] [--account
168
+ <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
169
+ [--allow-failure] [--body <value>] [--ctype <value>] [--dict-flag <value>] [--ename <value>] [--memo <value>]
170
+ [--parent <value>] [--sort <value>] [--sysid <value>] [--uuid <value>]
174
171
 
175
172
  ARGUMENTS
176
173
  CODE 字典项编码
@@ -191,7 +188,6 @@ FLAGS
191
188
  --ename=<value> 英文名
192
189
  --memo=<value> 备注
193
190
  --parent=<value> 父级编号
194
- --role=<value> AI 登录角色
195
191
  --sort=<value> 排序号
196
192
  --sysid=<value> 系统编号
197
193
  --timeout=<value> 请求超时(毫秒)
@@ -210,9 +206,9 @@ List dictionary entries
210
206
 
211
207
  ```
212
208
  USAGE
213
- $ sei-ai dict:list [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
214
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
215
- [--allow-failure] [--flat] [--keyword <value>] [--size <value>] [--type <value>]
209
+ $ sei-ai dict:list [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
210
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--allow-failure]
211
+ [--flat] [--keyword <value>] [--size <value>] [--type <value>]
216
212
 
217
213
  FLAGS
218
214
  --account=<value> AI 登录账号
@@ -224,7 +220,6 @@ FLAGS
224
220
  --config=<value> 配置文件路径
225
221
  --flat 只输出平铺结果
226
222
  --keyword=<value> 过滤关键字
227
- --role=<value> AI 登录角色
228
223
  --size=<value> [default: 1000] 返回条数
229
224
  --timeout=<value> 请求超时(毫秒)
230
225
  --token=<value> 固定 token
@@ -262,10 +257,10 @@ Initialize base data
262
257
 
263
258
  ```
264
259
  USAGE
265
- $ sei-ai init:base-data [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
266
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
267
- [--admin-name <value>] [--admin-password <value>] [--admin-role <value>] [--admin-role-name <value>] [--admin-uid
268
- <value>] [--allow-failure] [--reset-admin-password] [--sql-file <value>] [--sysid <value>]
260
+ $ sei-ai init:base-data [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
261
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--admin-name
262
+ <value>] [--admin-password <value>] [--admin-role <value>] [--admin-role-name <value>] [--admin-uid <value>]
263
+ [--allow-failure] [--reset-admin-password] [--sql-file <value>] [--sysid <value>]
269
264
 
270
265
  FLAGS
271
266
  --account=<value> AI 登录账号
@@ -281,7 +276,6 @@ FLAGS
281
276
  --base-url=<value> SEI 基础地址
282
277
  --config=<value> 配置文件路径
283
278
  --reset-admin-password 重置管理员密码
284
- --role=<value> AI 登录角色
285
279
  --sql-file=<value> 初始化 SQL 文件
286
280
  --sysid=<value> 系统编号
287
281
  --timeout=<value> 请求超时(毫秒)
@@ -589,9 +583,9 @@ Query SEI data
589
583
 
590
584
  ```
591
585
  USAGE
592
- $ sei-ai query [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
593
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
594
- [--allow-failure] [--file <value>] [--json <value>] [--stdin]
586
+ $ sei-ai query [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
587
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--allow-failure]
588
+ [--file <value>] [--json <value>] [--stdin]
595
589
 
596
590
  FLAGS
597
591
  --account=<value> AI 登录账号
@@ -603,7 +597,6 @@ FLAGS
603
597
  --config=<value> 配置文件路径
604
598
  --file=<value> JSON file path
605
599
  --json=<value> JSON payload
606
- --role=<value> AI 登录角色
607
600
  --stdin Read JSON payload from stdin
608
601
  --timeout=<value> 请求超时(毫秒)
609
602
  --token=<value> 固定 token
@@ -620,9 +613,9 @@ Query SEI with SQL
620
613
 
621
614
  ```
622
615
  USAGE
623
- $ sei-ai query-sql SQL [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
624
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
625
- [--allow-failure] [--page <value>] [--size <value>]
616
+ $ sei-ai query-sql SQL [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
617
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--allow-failure]
618
+ [--page <value>] [--size <value>]
626
619
 
627
620
  ARGUMENTS
628
621
  SQL SQL 语句
@@ -636,7 +629,6 @@ FLAGS
636
629
  --base-url=<value> SEI 基础地址
637
630
  --config=<value> 配置文件路径
638
631
  --page=<value> [default: 1] 页码
639
- --role=<value> AI 登录角色
640
632
  --size=<value> [default: 20] 每页条数
641
633
  --timeout=<value> 请求超时(毫秒)
642
634
  --token=<value> 固定 token
@@ -656,8 +648,8 @@ Refresh the login token
656
648
 
657
649
  ```
658
650
  USAGE
659
- $ sei-ai relogin [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
660
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
651
+ $ sei-ai relogin [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
652
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
661
653
 
662
654
  FLAGS
663
655
  --account=<value> AI 登录账号
@@ -666,7 +658,6 @@ FLAGS
666
658
  --ai-key=<value> AI 登录密钥
667
659
  --base-url=<value> SEI 基础地址
668
660
  --config=<value> 配置文件路径
669
- --role=<value> AI 登录角色
670
661
  --timeout=<value> 请求超时(毫秒)
671
662
  --token=<value> 固定 token
672
663
 
@@ -682,9 +673,9 @@ Save SEI data
682
673
 
683
674
  ```
684
675
  USAGE
685
- $ sei-ai save [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
686
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
687
- [--allow-failure] [--file <value>] [--json <value>] [--stdin]
676
+ $ sei-ai save [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
677
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--allow-failure]
678
+ [--file <value>] [--json <value>] [--stdin]
688
679
 
689
680
  FLAGS
690
681
  --account=<value> AI 登录账号
@@ -696,7 +687,6 @@ FLAGS
696
687
  --config=<value> 配置文件路径
697
688
  --file=<value> JSON file path
698
689
  --json=<value> JSON payload
699
- --role=<value> AI 登录角色
700
690
  --stdin Read JSON payload from stdin
701
691
  --timeout=<value> 请求超时(毫秒)
702
692
  --token=<value> 固定 token
@@ -713,9 +703,9 @@ Query SEI with SQL
713
703
 
714
704
  ```
715
705
  USAGE
716
- $ sei-ai sql SQL [--config <value>] [--base-url <value>] [--ai-key <value>] [--role <value>] [--account
717
- <value>] [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>]
718
- [--allow-failure] [--page <value>] [--size <value>]
706
+ $ sei-ai sql SQL [--config <value>] [--base-url <value>] [--ai-key <value>] [--account <value>]
707
+ [--account-project <value>] [--account-checkcode <value>] [--token <value>] [--timeout <value>] [--allow-failure]
708
+ [--page <value>] [--size <value>]
719
709
 
720
710
  ARGUMENTS
721
711
  SQL SQL 语句
@@ -729,7 +719,6 @@ FLAGS
729
719
  --base-url=<value> SEI 基础地址
730
720
  --config=<value> 配置文件路径
731
721
  --page=<value> [default: 1] 页码
732
- --role=<value> AI 登录角色
733
722
  --size=<value> [default: 20] 每页条数
734
723
  --timeout=<value> 请求超时(毫秒)
735
724
  --token=<value> 固定 token
@@ -8,7 +8,6 @@ export default class ApiDocsCommand extends SeiCommand {
8
8
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
11
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -15,7 +15,6 @@ export default class CallCommand extends SeiCommand {
15
15
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
17
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
18
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
19
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
20
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -19,7 +19,6 @@ export default class DictAddCategoryCommand extends SeiCommand {
19
19
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
20
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
21
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
22
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
23
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
24
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -20,7 +20,6 @@ export default class DictAddItemCommand extends SeiCommand {
20
20
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
21
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
22
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
23
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
24
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
26
25
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -10,7 +10,6 @@ export default class DictListCommand extends SeiCommand {
10
10
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
14
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
15
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -14,7 +14,6 @@ export default class InitBaseDataCommand extends SeiCommand {
14
14
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
15
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
17
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
18
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
19
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -12,7 +12,6 @@ export default class QuerySqlCommand extends SeiCommand {
12
12
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
14
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
15
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
16
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
17
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -9,7 +9,6 @@ export default class QueryCommand extends SeiCommand {
9
9
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
14
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -5,7 +5,6 @@ export default class ReloginCommand extends SeiCommand {
5
5
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
6
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
7
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
8
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
9
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
10
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -9,7 +9,6 @@ export default class SaveCommand extends SeiCommand {
9
9
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
14
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -6,7 +6,6 @@ export declare abstract class SeiCommand extends Command {
6
6
  config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
7
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
8
  'ai-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
9
  account: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
10
  'account-project': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
11
  'account-checkcode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
@@ -34,7 +33,6 @@ export interface SeiAuthSettingsOptions {
34
33
  baseUrl?: string;
35
34
  token?: string;
36
35
  aiKey?: string;
37
- role?: string;
38
36
  account?: string;
39
37
  accountProject?: string;
40
38
  accountCheckcode?: string;
@@ -12,7 +12,6 @@ export class SeiCommand extends Command {
12
12
  config: Flags.string({ description: '配置文件路径' }),
13
13
  'base-url': Flags.string({ description: 'SEI 基础地址' }),
14
14
  'ai-key': Flags.string({ description: 'AI 登录密钥' }),
15
- role: Flags.string({ aliases: ['profile'], description: 'AI 登录角色' }),
16
15
  account: Flags.string({ description: 'AI 登录账号' }),
17
16
  'account-project': Flags.string({ description: 'AI 登录项目' }),
18
17
  'account-checkcode': Flags.string({ description: 'AI 登录验证码' }),
@@ -36,7 +35,6 @@ export class SeiCommand extends Command {
36
35
  baseUrl: options.baseUrl,
37
36
  token: options.token,
38
37
  aiKey: options.aiKey,
39
- role: options.role,
40
38
  account: options.account,
41
39
  accountProject: options.accountProject,
42
40
  accountCheckcode: options.accountCheckcode,
@@ -58,7 +56,6 @@ export class SeiCommand extends Command {
58
56
  baseUrl: stringFlag(flags, 'base-url'),
59
57
  token: stringFlag(flags, 'token'),
60
58
  aiKey: stringFlag(flags, 'ai-key'),
61
- role: stringFlag(flags, 'role') ?? stringFlag(flags, 'profile'),
62
59
  account: stringFlag(flags, 'account'),
63
60
  accountProject: stringFlag(flags, 'account-project'),
64
61
  accountCheckcode: stringFlag(flags, 'account-checkcode'),
@@ -20,10 +20,8 @@ export function normalizeConfig(input = {}, env = process.env) {
20
20
  tokenEnv: stringOrEnv(auth.tokenEnv, env.SEI_TOKEN ? 'SEI_TOKEN' : 'SEI_TOKEN'),
21
21
  aiKey: stringOrEnv(auth.aiKey, env.SEI_AI_LOGIN_KEY),
22
22
  aiKeyEnv: stringOrEnv(auth.aiKeyEnv, env.SEI_AI_LOGIN_KEY ? 'SEI_AI_LOGIN_KEY' : 'SEI_AI_LOGIN_KEY'),
23
- account: stringOrEnv(auth.account, env.SEI_AI_LOGIN_ACCOUNT),
23
+ account: stringOrEnv(auth.account, env.SEI_AI_LOGIN_ACCOUNT) || 'admin',
24
24
  accountEnv: stringOrEnv(auth.accountEnv, env.SEI_AI_LOGIN_ACCOUNT ? 'SEI_AI_LOGIN_ACCOUNT' : 'SEI_AI_LOGIN_ACCOUNT'),
25
- role: stringOrEnv(auth.role, env.SEI_AI_LOGIN_ROLE),
26
- roleEnv: stringOrEnv(auth.roleEnv, env.SEI_AI_LOGIN_ROLE ? 'SEI_AI_LOGIN_ROLE' : 'SEI_AI_LOGIN_ROLE'),
27
25
  },
28
26
  tools: {
29
27
  query: tools.query !== false,
@@ -2,7 +2,7 @@ import { chmod, mkdir, readFile, writeFile } from 'node:fs/promises';
2
2
  import { homedir } from 'node:os';
3
3
  import { dirname, resolve } from 'node:path';
4
4
  import { createHash } from 'node:crypto';
5
- import { ACCOUNT_CHECK_CODE_PATH, ACCOUNT_LOGIN_DEFAULT_CHECKCODE, ACCOUNT_LOGIN_DEFAULT_OS, ACCOUNT_LOGIN_DEFAULT_PROJECT, ACCOUNT_LOGIN_DEFAULT_TYPE, DDL_EXECUTE_PATH, DEFAULT_AI_KEY, DEFAULT_QUERY_SQL_PAGE, DEFAULT_QUERY_SQL_SIZE, DEFAULT_TIMEOUT_MS, LOGIN_PATH, OPENAPI_DOCS_PATH, QUERY_PATH, QUERY_SQL_PATH, SAVE_PATH, TOKEN_CACHE_DIR_NAME, TOKEN_CACHE_FILE_PREFIX, TOKEN_CACHE_FILE_SUFFIX, TOKEN_CACHE_VERSION, } from './constants.js';
5
+ import { ACCOUNT_CHECK_CODE_PATH, ACCOUNT_LOGIN_DEFAULT_CHECKCODE, ACCOUNT_LOGIN_DEFAULT_OS, ACCOUNT_LOGIN_DEFAULT_PROJECT, ACCOUNT_LOGIN_DEFAULT_TYPE, BASE_SEED_DEFAULT_ADMIN_UID, DDL_EXECUTE_PATH, DEFAULT_AI_KEY, DEFAULT_QUERY_SQL_PAGE, DEFAULT_QUERY_SQL_SIZE, DEFAULT_TIMEOUT_MS, LOGIN_PATH, OPENAPI_DOCS_PATH, QUERY_PATH, QUERY_SQL_PATH, SAVE_PATH, TOKEN_CACHE_DIR_NAME, TOKEN_CACHE_FILE_PREFIX, TOKEN_CACHE_FILE_SUFFIX, TOKEN_CACHE_VERSION, } from './constants.js';
6
6
  import { SeiMcpError } from './errors.js';
7
7
  import { makeUrl, normalizeBaseUrl, toPositiveInteger, truncateText } from './utils.js';
8
8
  export function createSeiClient(config, logger, fetchImpl = fetch) {
@@ -41,8 +41,7 @@ export function createSeiAuthSettings(config, options = {}) {
41
41
  mode: config.auth.mode,
42
42
  token: firstText(options.token, config.auth.token, process.env.SEI_TOKEN),
43
43
  aiKey: firstText(options.aiKey, config.auth.aiKey, process.env.SEI_AI_LOGIN_KEY, DEFAULT_AI_KEY),
44
- role: resolveRole(options.role, config.auth.role),
45
- account: firstText(options.account, config.auth.account, process.env.SEI_AI_LOGIN_ACCOUNT),
44
+ account: firstText(options.account, config.auth.account, process.env.SEI_AI_LOGIN_ACCOUNT, BASE_SEED_DEFAULT_ADMIN_UID),
46
45
  accountProject: firstText(options.accountProject, process.env.SEI_AI_LOGIN_ACCOUNT_PROJECT, ACCOUNT_LOGIN_DEFAULT_PROJECT),
47
46
  accountCheckcode: firstText(options.accountCheckcode, process.env.SEI_AI_LOGIN_ACCOUNT_CHECKCODE, ACCOUNT_LOGIN_DEFAULT_CHECKCODE),
48
47
  timeoutMs: normalizeTimeout(options.timeoutMs),
@@ -240,7 +239,7 @@ async function loginThroughSettings(settings, logger, fetchImpl, options) {
240
239
  canRefresh: true,
241
240
  };
242
241
  }
243
- const token = await loginWithAi(settings, logger, fetchImpl, settings.role || null);
242
+ const token = await loginWithAi(settings, logger, fetchImpl);
244
243
  if (options.useCache) {
245
244
  await saveCachedToken(settings, token, logger);
246
245
  }
@@ -250,14 +249,11 @@ async function loginThroughSettings(settings, logger, fetchImpl, options) {
250
249
  canRefresh: true,
251
250
  };
252
251
  }
253
- async function loginWithAi(settings, logger, fetchImpl, role) {
252
+ async function loginWithAi(settings, logger, fetchImpl) {
254
253
  if (!settings.aiKey) {
255
254
  throw new SeiMcpError('ai-login 模式需要配置 aiKey', 'INVALID_REQUEST');
256
255
  }
257
256
  const payload = { mcp: settings.aiKey };
258
- if (role) {
259
- payload.role = role;
260
- }
261
257
  const response = await requestJsonOnce(settings, logger, fetchImpl, 'POST', LOGIN_PATH, payload, null, {
262
258
  timeoutMs: settings.timeoutMs,
263
259
  });
@@ -265,7 +261,7 @@ async function loginWithAi(settings, logger, fetchImpl, role) {
265
261
  return token;
266
262
  }
267
263
  async function loginAsAccount(settings, logger, fetchImpl) {
268
- const adminToken = await loginWithAi(settings, logger, fetchImpl, null);
264
+ const adminToken = await loginWithAi(settings, logger, fetchImpl);
269
265
  const row = await fetchAccountLoginRow(settings, logger, fetchImpl, adminToken, settings.account);
270
266
  const passport = toText(getRowField(row, '_UID', 'uid', 'passport')) || settings.account;
271
267
  const password = toText(getRowField(row, '_PWD', 'pwd', 'password'));
@@ -431,9 +427,6 @@ async function loadCachedToken(settings) {
431
427
  if (data.baseUrl !== normalizeBaseUrl(settings.baseUrl)) {
432
428
  return null;
433
429
  }
434
- if ((toText(data.role) || null) !== (settings.account ? null : settings.role || null)) {
435
- return null;
436
- }
437
430
  if ((toText(data.account) || null) !== (settings.account || null)) {
438
431
  return null;
439
432
  }
@@ -450,7 +443,6 @@ async function saveCachedToken(settings, token, logger) {
450
443
  await writeFile(path, JSON.stringify({
451
444
  version: TOKEN_CACHE_VERSION,
452
445
  baseUrl: normalizeBaseUrl(settings.baseUrl),
453
- role: settings.account ? null : settings.role || null,
454
446
  account: settings.account || null,
455
447
  token: token.trim(),
456
448
  }, null, 2) + '\n', 'utf8');
@@ -463,7 +455,7 @@ async function saveCachedToken(settings, token, logger) {
463
455
  }
464
456
  }
465
457
  function getTokenCachePath(settings) {
466
- const identity = settings.account ? `account:${settings.account}` : `role:${settings.role || '__default__'}`;
458
+ const identity = `account:${settings.account || BASE_SEED_DEFAULT_ADMIN_UID}`;
467
459
  const scope = `${normalizeBaseUrl(settings.baseUrl)}\0${identity}`;
468
460
  const hash = createHash('sha256').update(scope).digest('hex').slice(0, 16);
469
461
  return resolve(getTokenCacheDir(), `${TOKEN_CACHE_FILE_PREFIX}${hash}${TOKEN_CACHE_FILE_SUFFIX}`);
@@ -518,9 +510,6 @@ function normalizeTimeout(value) {
518
510
  }
519
511
  return DEFAULT_TIMEOUT_MS;
520
512
  }
521
- function resolveRole(role, fallback) {
522
- return firstText(role, fallback, process.env.SEI_AI_LOGIN_ROLE).toLowerCase();
523
- }
524
513
  function firstText(...values) {
525
514
  for (const value of values) {
526
515
  const text = toText(value);
@@ -16,8 +16,6 @@ export interface SeiMcpConfig {
16
16
  aiKeyEnv: string;
17
17
  account: string;
18
18
  accountEnv: string;
19
- role: string;
20
- roleEnv: string;
21
19
  };
22
20
  tools: {
23
21
  query: boolean;
@@ -93,7 +91,6 @@ export interface SeiAuthSettings {
93
91
  mode: 'ai-login' | 'token';
94
92
  token: string;
95
93
  aiKey: string;
96
- role: string;
97
94
  account: string;
98
95
  accountProject: string;
99
96
  accountCheckcode: string;
@@ -103,7 +100,6 @@ export interface SeiCommandOptions {
103
100
  baseUrl?: string;
104
101
  token?: string;
105
102
  aiKey?: string;
106
- role?: string;
107
103
  account?: string;
108
104
  accountProject?: string;
109
105
  accountCheckcode?: string;
@@ -0,0 +1,3 @@
1
+ import type { Hook } from '@oclif/core';
2
+ declare const hook: Hook.CommandNotFound;
3
+ export default hook;
@@ -0,0 +1,36 @@
1
+ import { cyan, yellow } from 'ansis';
2
+ const hook = async function (options) {
3
+ const commandIDs = [...options.config.commandIDs, ...options.config.commands.flatMap((command) => command.aliases)];
4
+ if (commandIDs.length === 0) {
5
+ this.warn(`${yellow(options.id)} is not a ${options.config.bin} command.`);
6
+ this.error(`Run ${cyan.bold(`${options.config.bin} help`)} for a list of available commands.`, { exit: 127 });
7
+ return;
8
+ }
9
+ const suggestion = commandIDs
10
+ .map((command) => ({ command, distance: levenshteinDistance(options.id, command) }))
11
+ .sort((left, right) => left.distance - right.distance || left.command.localeCompare(right.command))[0]?.command;
12
+ this.warn(`${yellow(options.id)} is not a ${options.config.bin} command.`);
13
+ if (suggestion && suggestion !== options.id) {
14
+ this.warn(`Did you mean ${cyan.bold(suggestion)}?`);
15
+ }
16
+ this.error(`Run ${cyan.bold(`${options.config.bin} help`)} for a list of available commands.`, { exit: 127 });
17
+ };
18
+ export default hook;
19
+ function levenshteinDistance(left, right) {
20
+ const rows = left.length + 1;
21
+ const cols = right.length + 1;
22
+ const matrix = Array.from({ length: rows }, () => new Array(cols).fill(0));
23
+ for (let row = 0; row < rows; row += 1) {
24
+ matrix[row][0] = row;
25
+ }
26
+ for (let col = 0; col < cols; col += 1) {
27
+ matrix[0][col] = col;
28
+ }
29
+ for (let row = 1; row < rows; row += 1) {
30
+ for (let col = 1; col < cols; col += 1) {
31
+ const substitutionCost = left[row - 1] === right[col - 1] ? 0 : 1;
32
+ matrix[row][col] = Math.min(matrix[row - 1][col] + 1, matrix[row][col - 1] + 1, matrix[row - 1][col - 1] + substitutionCost);
33
+ }
34
+ }
35
+ return matrix[rows - 1][cols - 1];
36
+ }
@@ -26,16 +26,6 @@
26
26
  "multiple": false,
27
27
  "type": "option"
28
28
  },
29
- "role": {
30
- "aliases": [
31
- "profile"
32
- ],
33
- "description": "AI 登录角色",
34
- "name": "role",
35
- "hasDynamicHelp": false,
36
- "multiple": false,
37
- "type": "option"
38
- },
39
29
  "account": {
40
30
  "description": "AI 登录账号",
41
31
  "name": "account",
@@ -141,16 +131,6 @@
141
131
  "multiple": false,
142
132
  "type": "option"
143
133
  },
144
- "role": {
145
- "aliases": [
146
- "profile"
147
- ],
148
- "description": "AI 登录角色",
149
- "name": "role",
150
- "hasDynamicHelp": false,
151
- "multiple": false,
152
- "type": "option"
153
- },
154
134
  "account": {
155
135
  "description": "AI 登录账号",
156
136
  "name": "account",
@@ -272,16 +252,6 @@
272
252
  "multiple": false,
273
253
  "type": "option"
274
254
  },
275
- "role": {
276
- "aliases": [
277
- "profile"
278
- ],
279
- "description": "AI 登录角色",
280
- "name": "role",
281
- "hasDynamicHelp": false,
282
- "multiple": false,
283
- "type": "option"
284
- },
285
255
  "account": {
286
256
  "description": "AI 登录账号",
287
257
  "name": "account",
@@ -439,16 +409,6 @@
439
409
  "multiple": false,
440
410
  "type": "option"
441
411
  },
442
- "role": {
443
- "aliases": [
444
- "profile"
445
- ],
446
- "description": "AI 登录角色",
447
- "name": "role",
448
- "hasDynamicHelp": false,
449
- "multiple": false,
450
- "type": "option"
451
- },
452
412
  "account": {
453
413
  "description": "AI 登录账号",
454
414
  "name": "account",
@@ -590,16 +550,6 @@
590
550
  "multiple": false,
591
551
  "type": "option"
592
552
  },
593
- "role": {
594
- "aliases": [
595
- "profile"
596
- ],
597
- "description": "AI 登录角色",
598
- "name": "role",
599
- "hasDynamicHelp": false,
600
- "multiple": false,
601
- "type": "option"
602
- },
603
553
  "account": {
604
554
  "description": "AI 登录账号",
605
555
  "name": "account",
@@ -706,16 +656,6 @@
706
656
  "multiple": false,
707
657
  "type": "option"
708
658
  },
709
- "role": {
710
- "aliases": [
711
- "profile"
712
- ],
713
- "description": "AI 登录角色",
714
- "name": "role",
715
- "hasDynamicHelp": false,
716
- "multiple": false,
717
- "type": "option"
718
- },
719
659
  "account": {
720
660
  "description": "AI 登录账号",
721
661
  "name": "account",
@@ -849,16 +789,6 @@
849
789
  "multiple": false,
850
790
  "type": "option"
851
791
  },
852
- "role": {
853
- "aliases": [
854
- "profile"
855
- ],
856
- "description": "AI 登录角色",
857
- "name": "role",
858
- "hasDynamicHelp": false,
859
- "multiple": false,
860
- "type": "option"
861
- },
862
792
  "account": {
863
793
  "description": "AI 登录账号",
864
794
  "name": "account",
@@ -965,16 +895,6 @@
965
895
  "multiple": false,
966
896
  "type": "option"
967
897
  },
968
- "role": {
969
- "aliases": [
970
- "profile"
971
- ],
972
- "description": "AI 登录角色",
973
- "name": "role",
974
- "hasDynamicHelp": false,
975
- "multiple": false,
976
- "type": "option"
977
- },
978
898
  "account": {
979
899
  "description": "AI 登录账号",
980
900
  "name": "account",
@@ -1069,16 +989,6 @@
1069
989
  "multiple": false,
1070
990
  "type": "option"
1071
991
  },
1072
- "role": {
1073
- "aliases": [
1074
- "profile"
1075
- ],
1076
- "description": "AI 登录角色",
1077
- "name": "role",
1078
- "hasDynamicHelp": false,
1079
- "multiple": false,
1080
- "type": "option"
1081
- },
1082
992
  "account": {
1083
993
  "description": "AI 登录账号",
1084
994
  "name": "account",
@@ -1151,16 +1061,6 @@
1151
1061
  "multiple": false,
1152
1062
  "type": "option"
1153
1063
  },
1154
- "role": {
1155
- "aliases": [
1156
- "profile"
1157
- ],
1158
- "description": "AI 登录角色",
1159
- "name": "role",
1160
- "hasDynamicHelp": false,
1161
- "multiple": false,
1162
- "type": "option"
1163
- },
1164
1064
  "account": {
1165
1065
  "description": "AI 登录账号",
1166
1066
  "name": "account",
@@ -1267,16 +1167,6 @@
1267
1167
  "multiple": false,
1268
1168
  "type": "option"
1269
1169
  },
1270
- "role": {
1271
- "aliases": [
1272
- "profile"
1273
- ],
1274
- "description": "AI 登录角色",
1275
- "name": "role",
1276
- "hasDynamicHelp": false,
1277
- "multiple": false,
1278
- "type": "option"
1279
- },
1280
1170
  "account": {
1281
1171
  "description": "AI 登录账号",
1282
1172
  "name": "account",
@@ -1346,5 +1236,5 @@
1346
1236
  "enableJsonFlag": false
1347
1237
  }
1348
1238
  },
1349
- "version": "0.1.12"
1239
+ "version": "0.1.13"
1350
1240
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ty_krystal/sei-ai",
3
3
  "description": "SEI CLI generated with oclif",
4
- "version": "0.1.12",
4
+ "version": "0.1.13",
5
5
  "author": "tanyu",
6
6
  "bin": {
7
7
  "sei-ai": "./bin/run.js"
@@ -26,6 +26,7 @@
26
26
  "mocha": "^11",
27
27
  "oclif": "^4",
28
28
  "shx": "^0.3.4",
29
+ "tsx": "^4.22.0",
29
30
  "ts-node": "^10",
30
31
  "typescript": "^5"
31
32
  },
@@ -56,6 +57,9 @@
56
57
  "strategy": "explicit",
57
58
  "target": "./dist/commands.js"
58
59
  },
60
+ "hooks": {
61
+ "command_not_found": "./dist/hooks/command_not_found.js"
62
+ },
59
63
  "plugins": [
60
64
  "@oclif/plugin-help",
61
65
  "@oclif/plugin-plugins"
@@ -77,7 +81,7 @@
77
81
  "publish:npm": "npm publish --access public",
78
82
  "start": "node ./bin/run.js",
79
83
  "typecheck": "tsc -p tsconfig.json --noEmit",
80
- "test": "pnpm run build && mocha --forbid-only \"test/**/*.test.ts\"",
84
+ "test": "pnpm run build && node --import tsx --test test/**/*.test.ts",
81
85
  "version": "oclif readme && git add README.md"
82
86
  },
83
87
  "types": "dist/index.d.ts"