@lazyingart/agintiflow 0.20.47 → 0.20.49
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/docs/skillmesh.md +158 -0
- package/package.json +4 -2
- package/references/skill-mesh-sharing-design.md +1123 -0
- package/scripts/smoke-skillmesh.js +128 -0
- package/src/cli.js +14 -2
- package/src/i18n.js +1 -0
- package/src/interactive-cli.js +40 -0
- package/src/skill-library.js +66 -3
- package/src/skillmesh.js +1284 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Skill Mesh
|
|
2
|
+
|
|
3
|
+
Skill Mesh lets AgInTiFlow exchange reusable skills without sharing raw sessions, project code, `.env` files, browser state, artifacts, or provider keys.
|
|
4
|
+
|
|
5
|
+
The first implementation is intentionally conservative:
|
|
6
|
+
|
|
7
|
+
- Skills are shared as signed JSON skill packs.
|
|
8
|
+
- Each pack is validated for required `SKILL.md` frontmatter, safe paths, size limits, secret-like text, and privacy metadata.
|
|
9
|
+
- Shared packs cannot override built-in skills.
|
|
10
|
+
- Community skills are installed disabled by default.
|
|
11
|
+
- Sync is explicit and metadata-first; there is no realtime polling loop.
|
|
12
|
+
- Relay nodes run without model/API keys.
|
|
13
|
+
|
|
14
|
+
## Modes
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
aginti skillmesh status
|
|
18
|
+
aginti skillmesh share
|
|
19
|
+
aginti skillmesh record
|
|
20
|
+
aginti skillmesh off
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Interactive CLI:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
/skillmesh
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The selector has three modes:
|
|
30
|
+
|
|
31
|
+
- `share`: record locally and allow reviewed skill-pack sharing.
|
|
32
|
+
- `record`: record local sanitized learning metadata only.
|
|
33
|
+
- `off`: disable Skill Mesh loading and sync.
|
|
34
|
+
|
|
35
|
+
## Pack Commands
|
|
36
|
+
|
|
37
|
+
Export a reviewed local skill:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
aginti skillmesh export <skill-id>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Import a reviewed pack:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
aginti skillmesh import ./example.skillpack.json
|
|
47
|
+
aginti skillmesh enable <skill-id>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Submit a reviewed pack to a relay:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
aginti skillmesh submit ./example.skillpack.json --node https://skills.flow.lazying.art
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Sync metadata and optionally download packs:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
aginti skillmesh sync
|
|
60
|
+
aginti skillmesh sync --node http://127.0.0.1:7377 --install
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Downloaded community packs are still disabled until explicitly enabled.
|
|
64
|
+
|
|
65
|
+
## Relay Node
|
|
66
|
+
|
|
67
|
+
Run a Skill Mesh relay:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
aginti skillmesh serve \
|
|
71
|
+
--role major \
|
|
72
|
+
--host 127.0.0.1 \
|
|
73
|
+
--port 7377 \
|
|
74
|
+
--data ~/.aginti-skill-relay \
|
|
75
|
+
--public-url https://skills.flow.lazying.art
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Endpoints:
|
|
79
|
+
|
|
80
|
+
- `GET /health`
|
|
81
|
+
- `GET /feed.json`
|
|
82
|
+
- `POST /sync/metadata`
|
|
83
|
+
- `POST /submit`
|
|
84
|
+
- `GET /packs/<hash>.json`
|
|
85
|
+
- `GET /packs/<hash>/metadata.json`
|
|
86
|
+
|
|
87
|
+
The relay stores only validated skill packs and metadata in its data directory. It rejects raw sessions, unsafe paths, secret-like text, unsupported schemas, overlarge packs, unsigned packs, and packs that do not declare the strict privacy contract.
|
|
88
|
+
|
|
89
|
+
## Service Mode
|
|
90
|
+
|
|
91
|
+
A relay started in `tmux` or a normal shell will stop after reboot. For a node that should keep listening after reboot, install it as a service.
|
|
92
|
+
|
|
93
|
+
System service, recommended for public relay nodes:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
aginti skillmesh service install \
|
|
97
|
+
--host 0.0.0.0 \
|
|
98
|
+
--port 7377 \
|
|
99
|
+
--data ~/.aginti-skill-relay \
|
|
100
|
+
--public-url http://YOUR_PUBLIC_HOST:7377
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
This uses `sudo -n` to create and enable `/etc/systemd/system/aginti-skill-relay.service`, so it requires sudo permission. It runs the relay as the current user and restarts on failure and after reboot.
|
|
104
|
+
|
|
105
|
+
User service, useful when sudo is not available:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
aginti skillmesh service install --user --linger \
|
|
109
|
+
--host 0.0.0.0 \
|
|
110
|
+
--port 7377 \
|
|
111
|
+
--data ~/.aginti-skill-relay \
|
|
112
|
+
--public-url http://YOUR_PUBLIC_HOST:7377
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
A user service can run without sudo, but boot persistence requires lingering:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
sudo loginctl enable-linger $(whoami)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Service commands:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
aginti skillmesh service status
|
|
125
|
+
aginti skillmesh service restart
|
|
126
|
+
aginti skillmesh service stop
|
|
127
|
+
aginti skillmesh service uninstall
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Use `--user` with those commands for the user-service scope.
|
|
131
|
+
|
|
132
|
+
## Storage
|
|
133
|
+
|
|
134
|
+
Local client storage:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
~/.agintiflow/skillmesh/
|
|
138
|
+
config.json
|
|
139
|
+
identity.json
|
|
140
|
+
index.sqlite
|
|
141
|
+
skills/
|
|
142
|
+
packs/
|
|
143
|
+
inbox/
|
|
144
|
+
outbox/
|
|
145
|
+
reviewed/
|
|
146
|
+
feeds/
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Relay storage:
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
~/.aginti-skill-relay/
|
|
153
|
+
index.sqlite
|
|
154
|
+
packs/
|
|
155
|
+
logs/
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`identity.json` contains the local Ed25519 signing key and should remain private.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lazyingart/agintiflow",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.49",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AgInTiFlow is a web-first coding agent and CLI with DeepSeek routing, sandboxed tools, model providers, canvas artifacts, and optional wrappers.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"scripts/smoke-model-roles.js",
|
|
59
59
|
"scripts/smoke-platform.js",
|
|
60
60
|
"scripts/smoke-skills.js",
|
|
61
|
+
"scripts/smoke-skillmesh.js",
|
|
61
62
|
"scripts/smoke-tmux-tools.js",
|
|
62
63
|
"scripts/smoke-toolchain-docker.js",
|
|
63
64
|
"scripts/smoke-web-api.js",
|
|
@@ -81,6 +82,7 @@
|
|
|
81
82
|
"smoke:canvas-artifacts": "node scripts/smoke-canvas-artifacts.js",
|
|
82
83
|
"smoke:cli-chat": "node scripts/smoke-cli-chat.js",
|
|
83
84
|
"smoke:skills": "node scripts/smoke-skills.js",
|
|
85
|
+
"smoke:skillmesh": "node scripts/smoke-skillmesh.js",
|
|
84
86
|
"smoke:toolchain-docker": "node scripts/smoke-toolchain-docker.js",
|
|
85
87
|
"smoke:inbox": "node scripts/smoke-inbox.js",
|
|
86
88
|
"smoke:model-roles": "node scripts/smoke-model-roles.js",
|
|
@@ -91,7 +93,7 @@
|
|
|
91
93
|
"real:deepseek": "node scripts/real-deepseek-capabilities.js",
|
|
92
94
|
"supervision:seed": "node scripts/seed-supervised-homework.js",
|
|
93
95
|
"storage:migrate": "node bin/aginti-cli.js storage migrate",
|
|
94
|
-
"test": "npm run check && npm run smoke:autoupdate && npm run smoke:web-api && npm run smoke:coding-tools && npm run smoke:auxiliary-tools && npm run smoke:auth && npm run smoke:canvas-artifacts && npm run smoke:capabilities && npm run smoke:model-roles && npm run smoke:platform && npm run smoke:skills && npm run smoke:tmux-tools && npm run smoke:cli-chat && npm run smoke:inbox",
|
|
96
|
+
"test": "npm run check && npm run smoke:autoupdate && npm run smoke:web-api && npm run smoke:coding-tools && npm run smoke:auxiliary-tools && npm run smoke:auth && npm run smoke:canvas-artifacts && npm run smoke:capabilities && npm run smoke:model-roles && npm run smoke:platform && npm run smoke:skills && npm run smoke:skillmesh && npm run smoke:tmux-tools && npm run smoke:cli-chat && npm run smoke:inbox",
|
|
95
97
|
"pack:dry-run": "npm pack --dry-run",
|
|
96
98
|
"smoke:capabilities": "node scripts/smoke-capabilities.js"
|
|
97
99
|
},
|