inkdrift 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -14
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +25 -8
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -9
package/README.md
CHANGED
|
@@ -46,20 +46,6 @@ npm install
|
|
|
46
46
|
|
|
47
47
|
## 使用
|
|
48
48
|
|
|
49
|
-
### npx 运行(无需 clone)
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# 1. 在工作目录创建 .env 配置文件
|
|
53
|
-
cp .env.example .env
|
|
54
|
-
# 编辑 .env 填写 FLOWUS_TOKEN、FLOWUS_DATABASE_ID、GLM_API_KEY
|
|
55
|
-
|
|
56
|
-
# 2. 启动 nmem 服务
|
|
57
|
-
nmem serve &
|
|
58
|
-
|
|
59
|
-
# 3. 运行
|
|
60
|
-
npx inkdrift
|
|
61
|
-
```
|
|
62
|
-
|
|
63
49
|
### 本地开发
|
|
64
50
|
|
|
65
51
|
```bash
|
|
@@ -74,6 +60,42 @@ POLL_INTERVAL_MS=30000 npm run dev
|
|
|
74
60
|
|
|
75
61
|
`Ctrl+C` 优雅退出。
|
|
76
62
|
|
|
63
|
+
## 部署
|
|
64
|
+
|
|
65
|
+
### 1. 创建配置文件
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cat > ~/.inkdrift << 'EOF'
|
|
69
|
+
FLOWUS_TOKEN=xxx
|
|
70
|
+
FLOWUS_DATABASE_ID=xxx
|
|
71
|
+
GLM_API_KEY=xxx
|
|
72
|
+
EOF
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
或从 Gitea secrets 下载:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
export GITEA_TOKEN=your_gitea_read_token
|
|
79
|
+
wget -q -O ~/.inkdrift \
|
|
80
|
+
"http://mini.totoro.studio:3000/api/v1/repos/goldyard/secrets/raw/inkdrift.env?token=$GITEA_TOKEN"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 2. 启动
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
nmem serve &
|
|
87
|
+
npx inkdrift
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 3. 更新配置
|
|
91
|
+
|
|
92
|
+
修改 [secrets 仓库](http://mini.totoro.studio:3000/goldyard/secrets) 中的 `inkdrift.env` 并 push,然后在服务器重新下载:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
wget -q -O ~/.inkdrift \
|
|
96
|
+
"http://mini.totoro.studio:3000/api/v1/repos/goldyard/secrets/raw/inkdrift.env?token=$GITEA_TOKEN"
|
|
97
|
+
```
|
|
98
|
+
|
|
77
99
|
## 项目结构
|
|
78
100
|
|
|
79
101
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAsBlB,CAAC"}
|
package/dist/utils/config.js
CHANGED
|
@@ -1,23 +1,40 @@
|
|
|
1
1
|
import dotenv from 'dotenv';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
3
4
|
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import path from 'node:path';
|
|
5
6
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
|
|
7
|
+
// Config file priority:
|
|
8
|
+
// 1. ~/.inkdrift (npx global usage)
|
|
9
|
+
// 2. project-root .env (development mode)
|
|
10
|
+
const homeConfig = path.join(homedir(), '.inkdrift');
|
|
9
11
|
const projectEnv = path.resolve(__dirname, '../../.env');
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
+
const configPath = existsSync(homeConfig)
|
|
13
|
+
? homeConfig
|
|
14
|
+
: projectEnv;
|
|
15
|
+
if (existsSync(configPath)) {
|
|
16
|
+
dotenv.config({ path: configPath });
|
|
17
|
+
}
|
|
18
|
+
function requireEnv(name) {
|
|
19
|
+
const value = process.env[name];
|
|
20
|
+
if (!value) {
|
|
21
|
+
console.error(`Missing config. Create ~/.inkdrift with:
|
|
22
|
+
FLOWUS_TOKEN=xxx
|
|
23
|
+
FLOWUS_DATABASE_ID=xxx
|
|
24
|
+
GLM_API_KEY=xxx`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
12
29
|
export const config = {
|
|
13
30
|
flowus: {
|
|
14
31
|
baseUrl: process.env.FLOWUS_BASE_URL || 'https://api.flowus.cn',
|
|
15
|
-
token:
|
|
16
|
-
databaseId:
|
|
32
|
+
token: requireEnv('FLOWUS_TOKEN'),
|
|
33
|
+
databaseId: requireEnv('FLOWUS_DATABASE_ID'),
|
|
17
34
|
},
|
|
18
35
|
glm: {
|
|
19
36
|
baseUrl: process.env.GLM_BASE_URL || 'https://aiping.cn/api/v1',
|
|
20
|
-
apiKey:
|
|
37
|
+
apiKey: requireEnv('GLM_API_KEY'),
|
|
21
38
|
model: process.env.GLM_MODEL || 'GLM-4.7',
|
|
22
39
|
},
|
|
23
40
|
web: {
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,wBAAwB;AACxB,oCAAoC;AACpC,0CAA0C;AAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEzD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACvC,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,UAAU,CAAC;AAEf,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC;;;kBAGA,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,uBAAuB;QAC/D,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC;QACjC,UAAU,EAAE,UAAU,CAAC,oBAAoB,CAAC;KAC7C;IACD,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,0BAA0B;QAC/D,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS;KAC1C;IACD,GAAG,EAAE;QACH,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,EAAE,EAAE,CAAC;KACnD;IACD,KAAK,EAAE;QACL,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,EAAE,EAAE,CAAC;QAC/C,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,EAAE,EAAE,CAAC;KACnE;IACD,GAAG,EAAE;QACH,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,QAAQ;KACrC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "inkdrift",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "WeChat public account article knowledge distiller bot",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,19 +11,11 @@
|
|
|
11
11
|
"dist",
|
|
12
12
|
".env.example"
|
|
13
13
|
],
|
|
14
|
-
"bin": {
|
|
15
|
-
"inkdrift": "./dist/index.js"
|
|
16
|
-
},
|
|
17
|
-
"files": [
|
|
18
|
-
"dist",
|
|
19
|
-
".env.example"
|
|
20
|
-
],
|
|
21
14
|
"scripts": {
|
|
22
15
|
"dev": "tsx src/index.ts",
|
|
23
16
|
"dev:once": "tsx src/index-once.ts",
|
|
24
17
|
"build": "tsc",
|
|
25
18
|
"prepare": "npm run build",
|
|
26
|
-
"prepare": "npm run build",
|
|
27
19
|
"start": "node dist/index.js",
|
|
28
20
|
"start:once": "node dist/index-once.js",
|
|
29
21
|
"test": "echo \"Error: no test specified\" && exit 1"
|