antlink 0.0.2 → 0.0.4

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
@@ -12,17 +12,29 @@
12
12
  **Installing AntLink**
13
13
 
14
14
  ```shell
15
- $ npm install antlink -g
15
+ $ npm install antlink -g # 全局安装
16
16
  ```
17
17
 
18
- **Initialize service**
19
18
 
20
19
  ```shell
21
- cd E:\antwork
22
- ant init
20
+ cd E:\antwork # 蚁巢位置路径
21
+ ant init # 建巢(获得安全码)
22
+ ant reset [code] # 重置蚁巢(需安全码)
23
23
  ```
24
24
 
25
25
 
26
+ ```shell
27
+ ant nest start # 启动蚁巢
28
+ ant nest stop # 停止蚁巢
29
+ ant nest restart # 重启蚁巢
30
+ ant nest status # 运行状态
31
+ ```
32
+
33
+
34
+
35
+
36
+
37
+
26
38
 
27
39
  [npm-v-1]: https://badgen.net/npm/v/antlink
28
40
  [npm-v-2]: https://img.shields.io/npm/v/antlink
package/index.js CHANGED
@@ -1,4 +1,10 @@
1
1
  'use strict';
2
- module.exports = {
3
- console.log('Hello, I am an intelligent agent');
4
- };
2
+ const plain = require('./lib/utils/plain');
3
+ module.exports = async()=>{
4
+ try{
5
+ const res = await plain(__dirname);
6
+ console.log(res);
7
+ }catch(err){
8
+ console.log(err);
9
+ }
10
+ }
package/lib/comm.js CHANGED
@@ -2,13 +2,14 @@
2
2
  fkgConmm();
3
3
  async function fkgConmm() {
4
4
  const arg = process.argv;
5
- const {version} = require('../package.json');
6
- if (arg.length < 3) console.log(version);
5
+ const {version} = require('../package.json');
6
+ const versionFunt = ()=>{console.log('v'+version);}
7
+ if (arg.length < 3) versionFunt();
7
8
  if (arg.length > 2) {
8
- const arr = require('./json/command.json');
9
+ const arr = require('./json/cmds.json');
9
10
  const name = arg[2].toLowerCase(); // 字母转小写
10
11
  if (name=='-v') {
11
- console.log(version);
12
+ versionFunt();
12
13
  } else if(arr.includes(name)){
13
14
  await require('./order/'+name)(arg.slice(3));
14
15
  }else {
@@ -0,0 +1 @@
1
+ ["init","nest","reset","info"]
package/lib/order/init.js CHANGED
@@ -1,4 +1,45 @@
1
1
  'use strict';
2
- module.exports = async(arg)=>{
3
- console.log(arg);
2
+ const oss = require('oss-sdk');
3
+ const log = require('../utils/logs');
4
+ module.exports = async()=>{
5
+ // 判断是否初始化
6
+ const dir = oss.dir(process.cwd());
7
+ const res = await dir.list();
8
+ if(res){
9
+ if(res.length>0){
10
+ // 当前文件夹存在文件,需要清空
11
+ log.r('The current folder is not empty')
12
+ log.r('This folder must be cleared!')
13
+ }else{
14
+ // 开始初始化
15
+ const dirAdd = await dir.add('nest','data','skills','scripts');
16
+ if(dirAdd){
17
+ // 新建配置文件
18
+ let obj = {};
19
+ const {version} = require('../../package.json');
20
+ obj.version = version;
21
+ obj.initTime = new Date().getTime();
22
+ const rrid = require('rrid');
23
+ obj.appId = rrid.key(32);
24
+ const scode = rrid.key(16);
25
+ obj.appKey = rrid.ekey(obj.appId+obj.initTime+scode,obj.appId+obj.initTime+scode);
26
+ const file = oss.file(process.cwd());
27
+ const fileAdd = await file.add('config.ant',JSON.stringify(obj));
28
+ if(fileAdd){
29
+ // 初始化成功
30
+ log.g('Initialization successful!');
31
+ log.y('Security Code:'+scode);
32
+ log.y('Keep the security code safe')
33
+ }else{
34
+ log.r('Initialization failed!');
35
+ await dir.clear();
36
+ }
37
+ }else{
38
+ //初始化失败:无法创建目录
39
+ log.r('Initialization failed: unable to create directory')
40
+ }
41
+ }
42
+ }else{
43
+ log.r('Unknown error!')
44
+ }
4
45
  }
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+ const log = require('../../utils/logs');
3
+ module.exports = async(arg)=>{
4
+ if(arg.length===0){
5
+ log.r('Missing parameter')
6
+ }else{
7
+ const cmd = arg[0];
8
+ const arr = ['start','stop','restart','status'];
9
+ if(arr.includes(cmd)) {
10
+ await require('./'+cmd)(arg.slice(1));
11
+ }else{
12
+ log.y('Command not found:ant nest '+cmd)
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+ module.exports = async(arg)=>{
3
+ console.log(arg);
4
+ }
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+ module.exports = async()=>{
3
+ console.log(arg);
4
+ }
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+ module.exports = async(arg)=>{
3
+ console.log(arg);
4
+ }
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+ module.exports = async(arg)=>{
3
+ console.log(arg);
4
+ }
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+ const oss = require('oss-sdk');
3
+ const scode = require('../utils/scode');
4
+ const log = require('../utils/logs');
5
+ module.exports = async(arg)=>{
6
+ const res = await scode(arg[0]);
7
+ if(res){
8
+ // 安全码验证通过
9
+ const dir = oss.dir(process.cwd());
10
+ const clear = await dir.clear();
11
+ if(clear){
12
+ log.g('Reset successful!');
13
+ }else{
14
+ log.r('Reset failure!');
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,35 @@
1
+ const logs = require('./logs')
2
+ const readline = require('readline');
3
+ module.exports = (...arg) => {
4
+ let arr = [];
5
+ return new Promise(async (resolve) => {
6
+ if (arg.length > 0) {
7
+ try{
8
+ const ps = readline.createInterface({
9
+ input: process.stdin, // 输入源:终端标准输入
10
+ output: process.stdout // 输出源:终端标准输出
11
+ });
12
+ process.stdin.setEncoding('utf8');
13
+ const inputs = (text)=>{
14
+ return new Promise((resolves) => {
15
+ ps.question('\033[33m'+text, (answer) => {
16
+ console.log('\033[0m');
17
+ resolves(answer.trim());
18
+ });
19
+ });
20
+ }
21
+ for (let i = 0; i < arg.length; i++) {
22
+ arr.push(await inputs(arg[i]));
23
+ if(arg.length-1===i) ps.close();
24
+ }
25
+ resolve(arr);
26
+ }catch(err){
27
+ logs.r(err);
28
+ resolve(arr);
29
+ }
30
+ } else {
31
+ resolve(arr);
32
+ logs.r('Please enter parameters');
33
+ }
34
+ })
35
+ }
@@ -0,0 +1,43 @@
1
+ const logs = (d)=> {console.log(d);}
2
+ module.exports = {
3
+ b(...d){
4
+ for (var i = 0; i < d.length; i++) {
5
+ logs('\033[30m'+d[i]+'\033[0m');
6
+ }
7
+ },
8
+ r(...d){
9
+ for (var i = 0; i < d.length; i++) {
10
+ logs('\033[31m'+d[i]+'\033[0m');
11
+ }
12
+ },
13
+ g(...d){
14
+ for (var i = 0; i < d.length; i++) {
15
+ logs('\033[32m'+d[i]+'\033[0m');
16
+ }
17
+ },
18
+ y(...d){
19
+ for (var i = 0; i < d.length; i++) {
20
+ logs('\033[33m'+d[i]+'\033[0m');
21
+ }
22
+ },
23
+ blue(...d){
24
+ for (var i = 0; i < d.length; i++) {
25
+ logs('\033[34m'+d[i]+'\033[0m');
26
+ }
27
+ },
28
+ p(...d){
29
+ for (var i = 0; i < d.length; i++) {
30
+ logs('\033[35m'+d[i]+'\033[0m');
31
+ }
32
+ },
33
+ sblue(...d){
34
+ for (var i = 0; i < d.length; i++) {
35
+ logs('\033[36m'+d[i]+'\033[0m');
36
+ }
37
+ },
38
+ w(...d){
39
+ for (var i = 0; i < d.length; i++) {
40
+ logs('\033[37m'+d[i]+'\033[0m');
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,52 @@
1
+ const path = require('path');
2
+ const fs = require('fs').promises;
3
+
4
+ /**
5
+ * 生成文件夹目录结构纯文本
6
+ * @param {string} dirPath - 目标文件夹路径
7
+ * @param {Array<string>} ignoreDirs - 需要忽略的文件夹列表
8
+ * @returns {Promise<string>} 目录结构纯文本
9
+ */
10
+ module.exports = async (dirPath) => {
11
+ const result = [];
12
+ const ignoreDirs = ['node_modules','test.js','package-lock.json'];
13
+ // 递归遍历目录
14
+ async function traverse(currentPath, prefix = '') {
15
+ try {
16
+ const entries = await fs.readdir(currentPath, { withFileTypes: true });
17
+
18
+ // 过滤 + 排序
19
+ const filteredEntries = entries
20
+ .filter(entry => !ignoreDirs.includes(entry.name))
21
+ .sort((a, b) => {
22
+ if (a.isDirectory() && !b.isDirectory()) return -1;
23
+ if (!a.isDirectory() && b.isDirectory()) return 1;
24
+ return a.name.localeCompare(b.name);
25
+ });
26
+
27
+ for (let i = 0; i < filteredEntries.length; i++) {
28
+ const entry = filteredEntries[i];
29
+ const isLast = i === filteredEntries.length - 1;
30
+ const connector = isLast ? '└── ' : '├── ';
31
+ const fullPath = path.join(currentPath, entry.name);
32
+
33
+ result.push(prefix + connector + entry.name);
34
+
35
+ if (entry.isDirectory()) {
36
+ const newPrefix = prefix + (isLast ? ' ' : '│ ');
37
+ await traverse(fullPath, newPrefix);
38
+ }
39
+ }
40
+ } catch (err) {
41
+ throw new Error(`遍历目录失败: ${err.message}`);
42
+ }
43
+ }
44
+
45
+ // 安全获取根目录名
46
+ const resolvedPath = path.resolve(dirPath);
47
+ const rootName = path.basename(resolvedPath);
48
+ result.push(rootName);
49
+
50
+ await traverse(dirPath);
51
+ return result.join('\n');
52
+ };
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+ const oss = require('oss-sdk');
3
+ const log = require('./logs');
4
+ const input = require('./input');
5
+ module.exports = async(scode)=>{
6
+ let ok = null;
7
+ if(scode===undefined) {
8
+ scode = await input('Enter Security Code:');
9
+ scode = scode[0];
10
+ }
11
+ if(scode) {
12
+ // 验证安全码
13
+ const file = oss.file(process.cwd());
14
+ let conf = await file.get('config.ant');
15
+ if(conf){
16
+ try {
17
+ conf = JSON.parse(conf);
18
+ const rrid = require('rrid');
19
+ const key = rrid.ekey(conf.appId+conf.initTime+scode,conf.appId+conf.initTime+scode);
20
+ if(key===conf.appKey){
21
+ // 验证码通过
22
+ ok = conf;
23
+ }else{
24
+ log.r('Security code error');
25
+ }
26
+ }catch(err){
27
+ log.r(err);
28
+ }
29
+ }else{
30
+ // 配置文件不存在
31
+ log.r('The configuration file does not exist')
32
+ }
33
+ }else{
34
+ log.r('The security code does not exist');
35
+ }
36
+ return ok;
37
+ }
package/package.json CHANGED
@@ -1,17 +1,28 @@
1
1
  {
2
2
  "name": "antlink",
3
- "version": "0.0.2",
4
- "description": "The framework has just been formed.",
3
+ "version": "0.0.4",
4
+ "description": "Ant Nest AI Framework.",
5
5
  "main": "index.js",
6
6
  "author": "weduu",
7
7
  "license": "MIT",
8
8
  "bin": {
9
9
  "ant": "bin/ant"
10
10
  },
11
+ "keywords": [
12
+ "ai",
13
+ "cli",
14
+ "agent",
15
+ "tenant"
16
+ ],
11
17
  "files": [
12
18
  "lib/",
13
19
  "bin/",
14
20
  "index.js",
21
+ "plain.md",
15
22
  "README.md"
16
- ]
17
- }
23
+ ],
24
+ "dependencies": {
25
+ "oss-sdk": "^1.0.5",
26
+ "rrid": "^1.0.7"
27
+ }
28
+ }
package/plain.md ADDED
@@ -0,0 +1,29 @@
1
+ AntLink
2
+ ├── bin
3
+ │ └── ant
4
+ ├── lib
5
+ │ ├── ants
6
+ │ │ ├── models
7
+ │ │ ├── plugins
8
+ │ │ ├── skills
9
+ │ │ └── tools
10
+ │ ├── json
11
+ │ │ └── cmds.json
12
+ │ ├── order
13
+ │ │ ├── nest
14
+ │ │ │ └── index.js
15
+ │ │ ├── init.js
16
+ │ │ └── reset.js
17
+ │ ├── utils
18
+ │ │ ├── input.js
19
+ │ │ ├── logs.js
20
+ │ │ ├── plain.js
21
+ │ │ └── scode.js
22
+ │ ├── web
23
+ │ │ ├── api
24
+ │ │ └── h5
25
+ │ └── comm.js
26
+ ├── index.js
27
+ ├── package.json
28
+ ├── plain.md
29
+ └── README.md
@@ -1 +0,0 @@
1
- ["init","start","stop","kill","reset"]