@iflow-ai/iflow-cli 0.1.4 → 0.1.6

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
@@ -1,4 +1,5 @@
1
1
  # 🤖 iFlow CLI
2
+ ![iFlow CLI Screenshot](./assets/iflow-cli.jpg)
2
3
 
3
4
  **English** | [中文](README_CN.md) | [日本語](README_JA.md) | [한국어](README_KO.md) | [Français](README_FR.md) | [Deutsch](README_DE.md) | [Español](README_ES.md) | [Русский](README_RU.md)
4
5
 
@@ -14,7 +15,6 @@ iFlow CLI is a powerful AI assistant that runs directly in your terminal. It sea
14
15
  ## 📥 Installation
15
16
 
16
17
  ### System requirements
17
-
18
18
  - Operating Systems: macOS 10.15+, Ubuntu 20.04+/Debian 10+, or Windows 10+ (with WSL 1, WSL 2, or Git for Windows)
19
19
  - Hardware: 4GB+ RAM
20
20
  - Software: Node.js 18+
@@ -22,31 +22,13 @@ iFlow CLI is a powerful AI assistant that runs directly in your terminal. It sea
22
22
  - Shell: Works best in Bash, Zsh or Fish
23
23
 
24
24
  ### install command
25
-
26
25
  ```shell
27
26
  bash -c "$(curl -fsSL https://cloud.iflow.cn/iflow-cli/install.sh)"
28
27
  ```
29
28
 
30
29
  This command automatically installs all necessary dependencies for your terminal.
31
30
 
32
- **Windows Users**:
33
-
34
- 1. Go to https://nodejs.org/en/download to download the latest Node.js installer
35
- 2. Run the installer to install Node.js
36
- 3. Restart your terminal: CMD or PowerShell
37
- 4. Run `npm install -g @iflow-ai/iflow-cli` to install iFlow CLI
38
- 5. Run `iflow` to start iFlow CLI
39
-
40
- If you are in China Mainland, you can use the following command to install iFlow CLI:
41
-
42
- 1. Go to https://cloud.iflow.cn/iflow-cli/nvm-setup.exe to download the latest nvm installer
43
- 2. Run the installer to install nvm
44
- 3. **Restart your terminal: CMD or PowerShell**
45
- 4. Run `nvm node_mirror https://npmmirror.com/mirrors/node/` and `nvm npm_mirror https://npmmirror.com/mirrors/npm/`
46
- 5. Run `nvm install 22` to install Node.js 22
47
- 6. Run `nvm use 22` to use Node.js 22
48
- 7. Run `npm install -g @iflow-ai/iflow-cli` to install iFlow CLI
49
- 8. Run `iflow` to start iFlow CLI
31
+ **Windows Users**: First launch `bash` in your terminal, then run the installation script above.
50
32
 
51
33
  ## 🔑 Authentication
52
34
 
@@ -58,7 +40,6 @@ iFlow offers two authentication options:
58
40
  ![iFlow CLI Login](./assets/login.jpg)
59
41
 
60
42
  To get your API key:
61
-
62
43
  1. Register for an iFlow account
63
44
  2. Go to your profile settings or click [this direct link](https://iflow.cn/?open=setting)
64
45
  3. Click "Reset" in the pop-up dialog to generate a new API key
@@ -154,35 +135,20 @@ iFlow CLI extends beyond coding to handle a wide range of tasks:
154
135
  > Write a program that downloads stock prices daily and sends me email notifications.
155
136
  ```
156
137
 
157
- _Note: Advanced automation tasks can leverage MCP servers to integrate your local system tools with enterprise collaboration suites._
138
+ *Note: Advanced automation tasks can leverage MCP servers to integrate your local system tools with enterprise collaboration suites.*
158
139
 
159
140
  ## 🔧 Switch to customized model
160
141
 
161
142
  iFlow CLI can connect to any OpenAI-compatible API. Edit the settings file in `~/.iflow/settings.json` to change the model you use.
162
143
 
163
144
  Here is a settings demo file:
164
-
165
145
  ```json
166
146
  {
167
- "theme": "Default",
168
- "selectedAuthType": "iflow",
169
- "apiKey": "your iflow key",
170
- "baseUrl": "https://apis.iflow.cn/v1",
171
- "modelName": "Qwen3-Coder",
172
- "searchApiKey": "your iflow key"
147
+ "theme": "Default",
148
+ "selectedAuthType": "iflow",
149
+ "apiKey": "your iflow key",
150
+ "baseUrl": "https://apis.iflow.cn/v1",
151
+ "modelName": "Qwen3-Coder",
152
+ "searchApiKey": "your iflow key"
173
153
  }
174
- ```
175
-
176
- ## GitHub Actions
177
-
178
- You can also use iFlow CLI in your GitHub Actions workflows with the community-maintained action: [iflow-cli-action](https://github.com/vibe-ideas/iflow-cli-action)
179
-
180
- ## Community Communication
181
-
182
- If you encounter problems in use, you can directly raise Issues on the github page.
183
-
184
- You can also scan the following Wechat group to join the community group for communication and discussion.
185
-
186
- ### Wechat group
187
-
188
- ![Wechat group](./assets/iflow-wechat.jpg)
154
+ ```
@@ -0,0 +1,26 @@
1
+ (version 1)
2
+
3
+ ;; allow everything by default
4
+ (allow default)
5
+
6
+ ;; deny all writes EXCEPT under specific paths
7
+ (deny file-write*)
8
+ (allow file-write*
9
+ (subpath (param "TARGET_DIR"))
10
+ (subpath (param "TMP_DIR"))
11
+ (subpath (param "CACHE_DIR"))
12
+ (subpath (string-append (param "HOME_DIR") "/.iflow"))
13
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
14
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
15
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
16
+ (literal "/dev/stdout")
17
+ (literal "/dev/stderr")
18
+ (literal "/dev/null")
19
+ )
20
+
21
+ ;; deny all inbound network traffic EXCEPT on debugger port
22
+ (deny network-inbound)
23
+ (allow network-inbound (local ip "localhost:9229"))
24
+
25
+ ;; deny all outbound network traffic
26
+ (deny network-outbound)
@@ -0,0 +1,19 @@
1
+ (version 1)
2
+
3
+ ;; allow everything by default
4
+ (allow default)
5
+
6
+ ;; deny all writes EXCEPT under specific paths
7
+ (deny file-write*)
8
+ (allow file-write*
9
+ (subpath (param "TARGET_DIR"))
10
+ (subpath (param "TMP_DIR"))
11
+ (subpath (param "CACHE_DIR"))
12
+ (subpath (string-append (param "HOME_DIR") "/.iflow"))
13
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
14
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
15
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
16
+ (literal "/dev/stdout")
17
+ (literal "/dev/stderr")
18
+ (literal "/dev/null")
19
+ )
@@ -0,0 +1,31 @@
1
+ (version 1)
2
+
3
+ ;; allow everything by default
4
+ (allow default)
5
+
6
+ ;; deny all writes EXCEPT under specific paths
7
+ (deny file-write*)
8
+ (allow file-write*
9
+ (subpath (param "TARGET_DIR"))
10
+ (subpath (param "TMP_DIR"))
11
+ (subpath (param "CACHE_DIR"))
12
+ (subpath (string-append (param "HOME_DIR") "/.iflow"))
13
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
14
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
15
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
16
+ (literal "/dev/stdout")
17
+ (literal "/dev/stderr")
18
+ (literal "/dev/null")
19
+ )
20
+
21
+ ;; deny all inbound network traffic EXCEPT on debugger port
22
+ (deny network-inbound)
23
+ (allow network-inbound (local ip "localhost:9229"))
24
+
25
+ ;; deny all outbound network traffic EXCEPT through proxy on localhost:8877
26
+ ;; set `iflow_SANDBOX_PROXY_COMMAND=<command>` to run proxy alongside sandbox
27
+ ;; proxy must listen on :::8877 (see docs/examples/proxy-script.md)
28
+ (deny network-outbound)
29
+ (allow network-outbound (remote tcp "localhost:8877"))
30
+
31
+ (allow network-bind (local ip "*:*"))
@@ -0,0 +1,87 @@
1
+ (version 1)
2
+
3
+ ;; deny everything by default
4
+ (deny default)
5
+
6
+ ;; allow reading files from anywhere on host
7
+ (allow file-read*)
8
+
9
+ ;; allow exec/fork (children inherit policy)
10
+ (allow process-exec)
11
+ (allow process-fork)
12
+
13
+ ;; allow signals to self, e.g. SIGPIPE on write to closed pipe
14
+ (allow signal (target self))
15
+
16
+ ;; allow read access to specific information about system
17
+ ;; from https://source.chromium.org/chromium/chromium/src/+/main:sandbox/policy/mac/common.sb;l=273-319;drc=7b3962fe2e5fc9e2ee58000dc8fbf3429d84d3bd
18
+ (allow sysctl-read
19
+ (sysctl-name "hw.activecpu")
20
+ (sysctl-name "hw.busfrequency_compat")
21
+ (sysctl-name "hw.byteorder")
22
+ (sysctl-name "hw.cacheconfig")
23
+ (sysctl-name "hw.cachelinesize_compat")
24
+ (sysctl-name "hw.cpufamily")
25
+ (sysctl-name "hw.cpufrequency_compat")
26
+ (sysctl-name "hw.cputype")
27
+ (sysctl-name "hw.l1dcachesize_compat")
28
+ (sysctl-name "hw.l1icachesize_compat")
29
+ (sysctl-name "hw.l2cachesize_compat")
30
+ (sysctl-name "hw.l3cachesize_compat")
31
+ (sysctl-name "hw.logicalcpu_max")
32
+ (sysctl-name "hw.machine")
33
+ (sysctl-name "hw.ncpu")
34
+ (sysctl-name "hw.nperflevels")
35
+ (sysctl-name "hw.optional.arm.FEAT_BF16")
36
+ (sysctl-name "hw.optional.arm.FEAT_DotProd")
37
+ (sysctl-name "hw.optional.arm.FEAT_FCMA")
38
+ (sysctl-name "hw.optional.arm.FEAT_FHM")
39
+ (sysctl-name "hw.optional.arm.FEAT_FP16")
40
+ (sysctl-name "hw.optional.arm.FEAT_I8MM")
41
+ (sysctl-name "hw.optional.arm.FEAT_JSCVT")
42
+ (sysctl-name "hw.optional.arm.FEAT_LSE")
43
+ (sysctl-name "hw.optional.arm.FEAT_RDM")
44
+ (sysctl-name "hw.optional.arm.FEAT_SHA512")
45
+ (sysctl-name "hw.optional.armv8_2_sha512")
46
+ (sysctl-name "hw.packages")
47
+ (sysctl-name "hw.pagesize_compat")
48
+ (sysctl-name "hw.physicalcpu_max")
49
+ (sysctl-name "hw.tbfrequency_compat")
50
+ (sysctl-name "hw.vectorunit")
51
+ (sysctl-name "kern.hostname")
52
+ (sysctl-name "kern.maxfilesperproc")
53
+ (sysctl-name "kern.osproductversion")
54
+ (sysctl-name "kern.osrelease")
55
+ (sysctl-name "kern.ostype")
56
+ (sysctl-name "kern.osvariant_status")
57
+ (sysctl-name "kern.osversion")
58
+ (sysctl-name "kern.secure_kernel")
59
+ (sysctl-name "kern.usrstack64")
60
+ (sysctl-name "kern.version")
61
+ (sysctl-name "sysctl.proc_cputype")
62
+ (sysctl-name-prefix "hw.perflevel")
63
+ )
64
+
65
+ ;; allow writes to specific paths
66
+ (allow file-write*
67
+ (subpath (param "TARGET_DIR"))
68
+ (subpath (param "TMP_DIR"))
69
+ (subpath (param "CACHE_DIR"))
70
+ (subpath (string-append (param "HOME_DIR") "/.iflow"))
71
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
72
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
73
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
74
+ (literal "/dev/stdout")
75
+ (literal "/dev/stderr")
76
+ (literal "/dev/null")
77
+ )
78
+
79
+ ;; allow communication with sysmond for process listing (e.g. for pgrep)
80
+ (allow mach-lookup (global-name "com.apple.sysmond"))
81
+
82
+ ;; enable terminal access required by ink
83
+ ;; fixes setRawMode EPERM failure (at node:tty:81:24)
84
+ (allow file-ioctl (regex #"^/dev/tty.*"))
85
+
86
+ ;; allow inbound network traffic on debugger port
87
+ (allow network-inbound (local ip "localhost:9229"))
@@ -0,0 +1,90 @@
1
+ (version 1)
2
+
3
+ ;; deny everything by default
4
+ (deny default)
5
+
6
+ ;; allow reading files from anywhere on host
7
+ (allow file-read*)
8
+
9
+ ;; allow exec/fork (children inherit policy)
10
+ (allow process-exec)
11
+ (allow process-fork)
12
+
13
+ ;; allow signals to self, e.g. SIGPIPE on write to closed pipe
14
+ (allow signal (target self))
15
+
16
+ ;; allow read access to specific information about system
17
+ ;; from https://source.chromium.org/chromium/chromium/src/+/main:sandbox/policy/mac/common.sb;l=273-319;drc=7b3962fe2e5fc9e2ee58000dc8fbf3429d84d3bd
18
+ (allow sysctl-read
19
+ (sysctl-name "hw.activecpu")
20
+ (sysctl-name "hw.busfrequency_compat")
21
+ (sysctl-name "hw.byteorder")
22
+ (sysctl-name "hw.cacheconfig")
23
+ (sysctl-name "hw.cachelinesize_compat")
24
+ (sysctl-name "hw.cpufamily")
25
+ (sysctl-name "hw.cpufrequency_compat")
26
+ (sysctl-name "hw.cputype")
27
+ (sysctl-name "hw.l1dcachesize_compat")
28
+ (sysctl-name "hw.l1icachesize_compat")
29
+ (sysctl-name "hw.l2cachesize_compat")
30
+ (sysctl-name "hw.l3cachesize_compat")
31
+ (sysctl-name "hw.logicalcpu_max")
32
+ (sysctl-name "hw.machine")
33
+ (sysctl-name "hw.ncpu")
34
+ (sysctl-name "hw.nperflevels")
35
+ (sysctl-name "hw.optional.arm.FEAT_BF16")
36
+ (sysctl-name "hw.optional.arm.FEAT_DotProd")
37
+ (sysctl-name "hw.optional.arm.FEAT_FCMA")
38
+ (sysctl-name "hw.optional.arm.FEAT_FHM")
39
+ (sysctl-name "hw.optional.arm.FEAT_FP16")
40
+ (sysctl-name "hw.optional.arm.FEAT_I8MM")
41
+ (sysctl-name "hw.optional.arm.FEAT_JSCVT")
42
+ (sysctl-name "hw.optional.arm.FEAT_LSE")
43
+ (sysctl-name "hw.optional.arm.FEAT_RDM")
44
+ (sysctl-name "hw.optional.arm.FEAT_SHA512")
45
+ (sysctl-name "hw.optional.armv8_2_sha512")
46
+ (sysctl-name "hw.packages")
47
+ (sysctl-name "hw.pagesize_compat")
48
+ (sysctl-name "hw.physicalcpu_max")
49
+ (sysctl-name "hw.tbfrequency_compat")
50
+ (sysctl-name "hw.vectorunit")
51
+ (sysctl-name "kern.hostname")
52
+ (sysctl-name "kern.maxfilesperproc")
53
+ (sysctl-name "kern.osproductversion")
54
+ (sysctl-name "kern.osrelease")
55
+ (sysctl-name "kern.ostype")
56
+ (sysctl-name "kern.osvariant_status")
57
+ (sysctl-name "kern.osversion")
58
+ (sysctl-name "kern.secure_kernel")
59
+ (sysctl-name "kern.usrstack64")
60
+ (sysctl-name "kern.version")
61
+ (sysctl-name "sysctl.proc_cputype")
62
+ (sysctl-name-prefix "hw.perflevel")
63
+ )
64
+
65
+ ;; allow writes to specific paths
66
+ (allow file-write*
67
+ (subpath (param "TARGET_DIR"))
68
+ (subpath (param "TMP_DIR"))
69
+ (subpath (param "CACHE_DIR"))
70
+ (subpath (string-append (param "HOME_DIR") "/.iflow"))
71
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
72
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
73
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
74
+ (literal "/dev/stdout")
75
+ (literal "/dev/stderr")
76
+ (literal "/dev/null")
77
+ )
78
+
79
+ ;; allow communication with sysmond for process listing (e.g. for pgrep)
80
+ (allow mach-lookup (global-name "com.apple.sysmond"))
81
+
82
+ ;; enable terminal access required by ink
83
+ ;; fixes setRawMode EPERM failure (at node:tty:81:24)
84
+ (allow file-ioctl (regex #"^/dev/tty.*"))
85
+
86
+ ;; allow inbound network traffic on debugger port
87
+ (allow network-inbound (local ip "localhost:9229"))
88
+
89
+ ;; allow all outbound network traffic
90
+ (allow network-outbound)
@@ -0,0 +1,92 @@
1
+ (version 1)
2
+
3
+ ;; deny everything by default
4
+ (deny default)
5
+
6
+ ;; allow reading files from anywhere on host
7
+ (allow file-read*)
8
+
9
+ ;; allow exec/fork (children inherit policy)
10
+ (allow process-exec)
11
+ (allow process-fork)
12
+
13
+ ;; allow signals to self, e.g. SIGPIPE on write to closed pipe
14
+ (allow signal (target self))
15
+
16
+ ;; allow read access to specific information about system
17
+ ;; from https://source.chromium.org/chromium/chromium/src/+/main:sandbox/policy/mac/common.sb;l=273-319;drc=7b3962fe2e5fc9e2ee58000dc8fbf3429d84d3bd
18
+ (allow sysctl-read
19
+ (sysctl-name "hw.activecpu")
20
+ (sysctl-name "hw.busfrequency_compat")
21
+ (sysctl-name "hw.byteorder")
22
+ (sysctl-name "hw.cacheconfig")
23
+ (sysctl-name "hw.cachelinesize_compat")
24
+ (sysctl-name "hw.cpufamily")
25
+ (sysctl-name "hw.cpufrequency_compat")
26
+ (sysctl-name "hw.cputype")
27
+ (sysctl-name "hw.l1dcachesize_compat")
28
+ (sysctl-name "hw.l1icachesize_compat")
29
+ (sysctl-name "hw.l2cachesize_compat")
30
+ (sysctl-name "hw.l3cachesize_compat")
31
+ (sysctl-name "hw.logicalcpu_max")
32
+ (sysctl-name "hw.machine")
33
+ (sysctl-name "hw.ncpu")
34
+ (sysctl-name "hw.nperflevels")
35
+ (sysctl-name "hw.optional.arm.FEAT_BF16")
36
+ (sysctl-name "hw.optional.arm.FEAT_DotProd")
37
+ (sysctl-name "hw.optional.arm.FEAT_FCMA")
38
+ (sysctl-name "hw.optional.arm.FEAT_FHM")
39
+ (sysctl-name "hw.optional.arm.FEAT_FP16")
40
+ (sysctl-name "hw.optional.arm.FEAT_I8MM")
41
+ (sysctl-name "hw.optional.arm.FEAT_JSCVT")
42
+ (sysctl-name "hw.optional.arm.FEAT_LSE")
43
+ (sysctl-name "hw.optional.arm.FEAT_RDM")
44
+ (sysctl-name "hw.optional.arm.FEAT_SHA512")
45
+ (sysctl-name "hw.optional.armv8_2_sha512")
46
+ (sysctl-name "hw.packages")
47
+ (sysctl-name "hw.pagesize_compat")
48
+ (sysctl-name "hw.physicalcpu_max")
49
+ (sysctl-name "hw.tbfrequency_compat")
50
+ (sysctl-name "hw.vectorunit")
51
+ (sysctl-name "kern.hostname")
52
+ (sysctl-name "kern.maxfilesperproc")
53
+ (sysctl-name "kern.osproductversion")
54
+ (sysctl-name "kern.osrelease")
55
+ (sysctl-name "kern.ostype")
56
+ (sysctl-name "kern.osvariant_status")
57
+ (sysctl-name "kern.osversion")
58
+ (sysctl-name "kern.secure_kernel")
59
+ (sysctl-name "kern.usrstack64")
60
+ (sysctl-name "kern.version")
61
+ (sysctl-name "sysctl.proc_cputype")
62
+ (sysctl-name-prefix "hw.perflevel")
63
+ )
64
+
65
+ ;; allow writes to specific paths
66
+ (allow file-write*
67
+ (subpath (param "TARGET_DIR"))
68
+ (subpath (param "TMP_DIR"))
69
+ (subpath (param "CACHE_DIR"))
70
+ (subpath (string-append (param "HOME_DIR") "/.iflow"))
71
+ (subpath (string-append (param "HOME_DIR") "/.npm"))
72
+ (subpath (string-append (param "HOME_DIR") "/.cache"))
73
+ (subpath (string-append (param "HOME_DIR") "/.gitconfig"))
74
+ (literal "/dev/stdout")
75
+ (literal "/dev/stderr")
76
+ (literal "/dev/null")
77
+ )
78
+
79
+ ;; allow communication with sysmond for process listing (e.g. for pgrep)
80
+ (allow mach-lookup (global-name "com.apple.sysmond"))
81
+
82
+ ;; enable terminal access required by ink
83
+ ;; fixes setRawMode EPERM failure (at node:tty:81:24)
84
+ (allow file-ioctl (regex #"^/dev/tty.*"))
85
+
86
+ ;; allow inbound network traffic on debugger port
87
+ (allow network-inbound (local ip "localhost:9229"))
88
+
89
+ ;; allow outbound network traffic through proxy on localhost:8877
90
+ ;; set `iflow_SANDBOX_PROXY_COMMAND=<command>` to run proxy alongside sandbox
91
+ ;; proxy must listen on :::8877 (see docs/examples/proxy-script.md)
92
+ (allow network-outbound (remote tcp "localhost:8877"))
package/package.json CHANGED
@@ -1,18 +1,16 @@
1
1
  {
2
2
  "name": "@iflow-ai/iflow-cli",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "engines": {
5
- "node": ">=20.0.0"
5
+ "node": ">=20"
6
6
  },
7
+ "type": "module",
7
8
  "repository": {
8
9
  "type": "git",
9
10
  "url": "git+https://github.com/iflow-ai/iflow-cli.git"
10
11
  },
11
- "config": {
12
- "sandboxImageUri": "us-docker.pkg.dev/taobao/iflow-cli/sandbox:0.1.3"
13
- },
14
12
  "bin": {
15
- "iflow": "bundle/iflow.js"
13
+ "iflow": "./bundle/iflow.js"
16
14
  },
17
15
  "files": [
18
16
  "bundle/",
@@ -20,6 +18,7 @@
20
18
  "LICENSE"
21
19
  ],
22
20
  "publishConfig": {
23
- "registry": "https://registry.npmjs.org"
21
+ "registry": "https://registry.npmjs.org",
22
+ "access": "public"
24
23
  }
25
24
  }