spidersan 0.3.0 ā 0.3.3
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 +7 -43
- package/dist/bin/spidersan.d.ts.map +1 -1
- package/dist/bin/spidersan.js +2 -1
- package/dist/bin/spidersan.js.map +1 -1
- package/dist/commands/demo.d.ts.map +1 -1
- package/dist/commands/demo.js +24 -19
- package/dist/commands/demo.js.map +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +81 -27
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/msg-read.d.ts.map +1 -1
- package/dist/commands/msg-read.js +59 -34
- package/dist/commands/msg-read.js.map +1 -1
- package/dist/commands/semantic.d.ts.map +1 -1
- package/dist/commands/semantic.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +53 -66
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/welcome.d.ts +3 -0
- package/dist/commands/welcome.d.ts.map +1 -0
- package/dist/commands/welcome.js +92 -0
- package/dist/commands/welcome.js.map +1 -0
- package/dist/storage/git-messages.d.ts +53 -0
- package/dist/storage/git-messages.d.ts.map +1 -0
- package/dist/storage/git-messages.js +372 -0
- package/dist/storage/git-messages.js.map +1 -0
- package/dist/storage/index.d.ts +5 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +7 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/local-messages.d.ts +37 -0
- package/dist/storage/local-messages.d.ts.map +1 -0
- package/dist/storage/local-messages.js +151 -0
- package/dist/storage/local-messages.js.map +1 -0
- package/dist/storage/message-adapter.d.ts +86 -0
- package/dist/storage/message-adapter.d.ts.map +1 -0
- package/dist/storage/message-adapter.js +28 -0
- package/dist/storage/message-adapter.js.map +1 -0
- package/dist/storage/message-factory.d.ts +36 -0
- package/dist/storage/message-factory.d.ts.map +1 -0
- package/dist/storage/message-factory.js +99 -0
- package/dist/storage/message-factory.js.map +1 -0
- package/dist/storage/mycmail-adapter.d.ts +38 -0
- package/dist/storage/mycmail-adapter.d.ts.map +1 -0
- package/dist/storage/mycmail-adapter.js +297 -0
- package/dist/storage/mycmail-adapter.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
aliases: ["Spidersan Overview"]
|
|
3
|
-
tags: [agent/myceliumail, type/readme]
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<div align="center">
|
|
7
1
|
|
|
8
2
|
# š·ļø Spidersan
|
|
9
3
|
|
|
@@ -16,12 +10,13 @@ tags: [agent/myceliumail, type/readme]
|
|
|
16
10
|
|
|
17
11
|

|
|
18
12
|
|
|
19
|
-
[Quick Start](#-quick-start) ⢠[Features](#-features) ⢠[Documentation](#-documentation)
|
|
13
|
+
[Quick Start](#-quick-start) ⢠[Features](#-features) ⢠[Documentation](#-documentation)
|
|
20
14
|
|
|
21
15
|
</div>
|
|
22
16
|
|
|
23
17
|
---
|
|
24
18
|
|
|
19
|
+
|
|
25
20
|
## šÆ The Problem
|
|
26
21
|
|
|
27
22
|
**10 AI agents. 1 file. 51 minutes of chaos.**
|
|
@@ -147,55 +142,25 @@ spidersan rescue-status
|
|
|
147
142
|
|
|
148
143
|
**Perfect for:** Post-hackathon cleanup, onboarding to chaotic repos, AI agent disasters.
|
|
149
144
|
|
|
150
|
-
### Pro (License Required)
|
|
151
|
-
|
|
152
|
-
| Feature | Description |
|
|
153
|
-
|---------|-------------|
|
|
154
|
-
| **Unlimited Branches** | No limit on concurrent registered branches |
|
|
155
|
-
| **Conflict Prediction** | Proactive detection before conflicts occur |
|
|
156
|
-
| **MCP Server** | Model Context Protocol integration for AI agents |
|
|
157
|
-
|
|
158
145
|
---
|
|
159
146
|
|
|
160
147
|
## š Documentation
|
|
161
148
|
|
|
162
149
|
- [One Pager](docs/ONE_PAGER.md) - Product overview
|
|
163
|
-
- [Implementation Plan](docs/implementation_plan.md) - Technical architecture
|
|
164
150
|
- [Data Collection](docs/DATA_COLLECTION.md) - Privacy & data practices
|
|
165
151
|
|
|
166
152
|
---
|
|
167
153
|
|
|
168
|
-
## š Pro
|
|
169
154
|
|
|
170
|
-
Spidersan Pro unlocks advanced features for teams running multiple AI agents.
|
|
171
|
-
|
|
172
|
-
| Feature | Free | Pro ($9/mo) |
|
|
173
|
-
|---------|------|-------------|
|
|
174
|
-
| Core commands | ā
All | ā
All |
|
|
175
|
-
| Concurrent branches | 5 max | ā
Unlimited |
|
|
176
|
-
| MCP Server | ā | ā
|
|
|
177
|
-
| Conflict prediction | ā | ā
Coming soon |
|
|
178
|
-
| Priority support | ā | ā
|
|
|
179
|
-
|
|
180
|
-
**Activate Pro:**
|
|
181
|
-
```bash
|
|
182
|
-
spidersan activate <your-license-key>
|
|
183
|
-
spidersan status # Check your plan
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Get a license: [spidersan.dev/pro](https://spidersan.dev/pro)
|
|
187
|
-
|
|
188
|
-
> **Note:** One Pro license unlocks the entire Treebird ecosystem (Spidersan + Myceliumail).
|
|
189
|
-
|
|
190
|
-
---
|
|
191
155
|
|
|
192
156
|
## š£ļø Feedback & Support
|
|
193
157
|
|
|
194
158
|
We're building this in public and want to hear from you!
|
|
195
159
|
|
|
196
|
-
- **Issues & Features:** [GitHub Issues](https://github.com/treebird7/
|
|
197
|
-
- **Email:**
|
|
198
|
-
- **
|
|
160
|
+
- **Issues & Features:** [GitHub Issues](https://github.com/treebird7/spidersan-oss/issues)
|
|
161
|
+
- **Email:** treebird@treebird.dev
|
|
162
|
+
- **Site:** [Treebird](https://treebird.uk)
|
|
163
|
+
- **Twitter/X:** [@Treebird_Dev](https://twitter.com/Treebird_Dev)
|
|
199
164
|
|
|
200
165
|
Tell us what's working, what's broken, and what you'd love to see next.
|
|
201
166
|
|
|
@@ -210,7 +175,6 @@ Contributions welcome! Please read our contributing guidelines first.
|
|
|
210
175
|
## š License
|
|
211
176
|
|
|
212
177
|
- **Core CLI**: [MIT License](LICENSE.md)
|
|
213
|
-
- **Pro Features**: [Business Source License 1.1](LICENSE.md)
|
|
214
178
|
|
|
215
179
|
---
|
|
216
180
|
|
|
@@ -218,6 +182,6 @@ Contributions welcome! Please read our contributing guidelines first.
|
|
|
218
182
|
|
|
219
183
|
**Made with š·ļø for AI-first development teams**
|
|
220
184
|
|
|
221
|
-
Part of the [Treebird Ecosystem](https://
|
|
185
|
+
Part of the [Treebird Ecosystem](https://treebird.uk) š²
|
|
222
186
|
|
|
223
187
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spidersan.d.ts","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"spidersan.d.ts","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;AA+EvB,eAAO,MAAM,WAAW,eAAkB,CAAC"}
|
package/dist/bin/spidersan.js
CHANGED
|
@@ -25,7 +25,7 @@ logCommand,
|
|
|
25
25
|
// Daemon mode
|
|
26
26
|
watchCommand, radarCommand,
|
|
27
27
|
// Demo/Onboarding
|
|
28
|
-
demoCommand,
|
|
28
|
+
welcomeCommand, demoCommand,
|
|
29
29
|
// MCP Health
|
|
30
30
|
mcpHealthCommand, mcpRestartCommand,
|
|
31
31
|
// Task Torrenting
|
|
@@ -130,6 +130,7 @@ program.addCommand(logCommand);
|
|
|
130
130
|
program.addCommand(watchCommand);
|
|
131
131
|
program.addCommand(radarCommand);
|
|
132
132
|
// Demo/Onboarding
|
|
133
|
+
program.addCommand(welcomeCommand);
|
|
133
134
|
program.addCommand(demoCommand);
|
|
134
135
|
// MCP Health
|
|
135
136
|
program.addCommand(mcpHealthCommand);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spidersan.js","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EACH,WAAW,EACX,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW;AACX,YAAY;AACZ,WAAW,EACX,YAAY,EACZ,cAAc;AACd,iBAAiB;AACjB,aAAa,EACb,gBAAgB,EAChB,WAAW;AACX,UAAU;AACV,eAAe,EACf,aAAa;AACb,oBAAoB;AACpB,WAAW,EACX,YAAY,EACZ,aAAa;AACb,cAAc;AACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,kBAAkB;AAClB,oBAAoB;AACpB,cAAc,EACd,gBAAgB;AAChB,kBAAkB;AAClB,UAAU;AACV,cAAc;AACd,YAAY,EACZ,YAAY;AACZ,kBAAkB;AAClB,WAAW;AACX,aAAa;AACb,gBAAgB,EAChB,iBAAiB;AACjB,kBAAkB;AAClB,cAAc;AACd,cAAc;AACd,iBAAiB;AACjB,cAAc;AACd,cAAc;AACd,+BAA+B;AAC/B,iBAAiB,EACjB,oBAAoB;AACpB,0BAA0B;AAC1B,WAAW;AACX,cAAc;AACd,UAAU;AACV,eAAe;AACf,iBAAiB;AACjB,WAAW;AACX,eAAe,EACf,cAAc,GACjB,MAAM,sBAAsB,CAAC;AAE9B,6CAA6C;AAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,yBAAyB;AACzB,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;AAE3C,sCAAsC;AACtC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACtC,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IACxC,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,OAAO;KACF,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,aAAa,EAAE,+CAA+C,CAAC;KACtE,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,SAAS,GAAG,IAAI,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,4BAA4B;AAC5B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAEtC,mBAAmB;AACnB,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,gCAAgC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,2CAA2C;AAC3C,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,qBAAqB;AACrB,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,aAAa,CAAC,OAAO,CAAC,CAAC;AAEvB,cAAc;AACd,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAEvC,kCAAkC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,cAAc;AACd,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,aAAa;AACb,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAEtC,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,yCAAyC;AACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAEtC,0BAA0B;AAC1B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,+BAA+B;AAC/B,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAEzC,gCAAgC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,cAAc;AACd,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,2BAA2B;AAC3B,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAEtC,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,mCAAmC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEnC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"spidersan.js","sourceRoot":"","sources":["../../src/bin/spidersan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiIpC,eAAO,MAAM,WAAW,SAIlB,CAAC"}
|
package/dist/commands/demo.js
CHANGED
|
@@ -23,59 +23,64 @@ ${c.bright}${c.magenta}āāāāāāāāāāāāāāāāāāā
|
|
|
23
23
|
ā ā
|
|
24
24
|
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā${c.reset}
|
|
25
25
|
`);
|
|
26
|
-
await sleep(
|
|
26
|
+
await sleep(1000);
|
|
27
27
|
// Scenario setup
|
|
28
28
|
console.log(`${c.cyan}š SCENARIO: Two AI agents working on the same codebase${c.reset}\n`);
|
|
29
|
-
await sleep(
|
|
29
|
+
await sleep(1500);
|
|
30
30
|
console.log(`${c.dim}Simulating a typical multi-agent workflow...${c.reset}\n`);
|
|
31
|
-
await sleep(
|
|
31
|
+
await sleep(1200);
|
|
32
32
|
// Agent 1 registers
|
|
33
33
|
console.log(`${c.yellow}āāā Agent 1: Claude (Session A) āāā${c.reset}`);
|
|
34
|
-
await sleep(
|
|
34
|
+
await sleep(800);
|
|
35
35
|
console.log(`${c.green}ā${c.reset} Registering branch: ${c.bright}feature/auth${c.reset}`);
|
|
36
|
-
await sleep(300);
|
|
37
|
-
console.log(`${c.green}ā${c.reset} Files: ${c.cyan}src/auth.ts, src/middleware.ts${c.reset}`);
|
|
38
36
|
await sleep(600);
|
|
37
|
+
console.log(`${c.green}ā${c.reset} Files: ${c.cyan}src/auth.ts, src/middleware.ts${c.reset}`);
|
|
38
|
+
await sleep(1000);
|
|
39
39
|
console.log(`\n${c.dim}[Claude starts working on authentication...]${c.reset}\n`);
|
|
40
|
-
await sleep(
|
|
40
|
+
await sleep(1500);
|
|
41
41
|
// Agent 2 registers - conflict!
|
|
42
42
|
console.log(`${c.yellow}āāā Agent 2: Cursor (Session B) āāā${c.reset}`);
|
|
43
|
-
await sleep(
|
|
43
|
+
await sleep(800);
|
|
44
44
|
console.log(`${c.green}ā${c.reset} Registering branch: ${c.bright}feature/api${c.reset}`);
|
|
45
|
-
await sleep(300);
|
|
46
|
-
console.log(`${c.green}ā${c.reset} Files: ${c.cyan}src/api.ts, src/middleware.ts${c.reset}`);
|
|
47
45
|
await sleep(600);
|
|
46
|
+
console.log(`${c.green}ā${c.reset} Files: ${c.cyan}src/api.ts, src/middleware.ts${c.reset}`);
|
|
47
|
+
await sleep(1000);
|
|
48
48
|
// CONFLICT DETECTED
|
|
49
49
|
console.log(`
|
|
50
50
|
${c.bright}${c.red}āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
51
51
|
ā ā ļø CONFLICT DETECTED! ā
|
|
52
52
|
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā${c.reset}
|
|
53
53
|
`);
|
|
54
|
-
await sleep(
|
|
54
|
+
await sleep(1200);
|
|
55
55
|
console.log(`${c.red}š“ File: ${c.bright}src/middleware.ts${c.reset}`);
|
|
56
|
+
await sleep(500);
|
|
56
57
|
console.log(`${c.red} āā ${c.yellow}feature/auth${c.reset} ${c.dim}(Claude)${c.reset}`);
|
|
58
|
+
await sleep(400);
|
|
57
59
|
console.log(`${c.red} āā ${c.yellow}feature/api${c.reset} ${c.dim}(Cursor)${c.reset}`);
|
|
58
|
-
await sleep(
|
|
60
|
+
await sleep(1500);
|
|
59
61
|
console.log(`
|
|
60
62
|
${c.cyan}š” Spidersan caught this BEFORE you created a merge conflict!${c.reset}
|
|
61
63
|
`);
|
|
62
|
-
await sleep(
|
|
64
|
+
await sleep(1200);
|
|
63
65
|
// Resolution
|
|
64
66
|
console.log(`${c.green}āāā RESOLUTION OPTIONS āāā${c.reset}`);
|
|
67
|
+
await sleep(600);
|
|
65
68
|
console.log(`${c.dim}1.${c.reset} Coordinate with the other agent`);
|
|
69
|
+
await sleep(400);
|
|
66
70
|
console.log(`${c.dim}2.${c.reset} Wait for their branch to merge first`);
|
|
71
|
+
await sleep(400);
|
|
67
72
|
console.log(`${c.dim}3.${c.reset} Split the work differently`);
|
|
68
|
-
await sleep(
|
|
73
|
+
await sleep(1500);
|
|
69
74
|
// Watch mode teaser
|
|
70
75
|
console.log(`
|
|
71
76
|
${c.bright}${c.blue}āāā NEW: WATCH MODE āāā${c.reset}
|
|
72
77
|
${c.dim}Auto-register files as you edit them:${c.reset}
|
|
73
78
|
|
|
74
79
|
${c.cyan}$ spidersan watch --agent claude${c.reset}
|
|
75
|
-
|
|
80
|
+
|
|
76
81
|
${c.dim}Files are tracked automatically. Conflicts detected in real-time.${c.reset}
|
|
77
82
|
`);
|
|
78
|
-
await sleep(
|
|
83
|
+
await sleep(1000);
|
|
79
84
|
// Next steps
|
|
80
85
|
console.log(`
|
|
81
86
|
${c.bright}${c.magenta}āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
@@ -97,9 +102,9 @@ ${c.bright}Quick Setup:${c.reset}
|
|
|
97
102
|
${c.green}$ spidersan watch --agent myname${c.reset}
|
|
98
103
|
|
|
99
104
|
${c.bright}Learn More:${c.reset}
|
|
100
|
-
š
|
|
101
|
-
|
|
102
|
-
š§ Help: ${c.cyan}
|
|
105
|
+
š Repo: ${c.cyan}https://github.com/treebird7/spidersan-oss${c.reset}
|
|
106
|
+
š Site: ${c.cyan}http://treebird.uk${c.reset}
|
|
107
|
+
š§ Help: ${c.cyan}treebird@treebird.dev${c.reset}
|
|
103
108
|
|
|
104
109
|
${c.dim}āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā${c.reset}
|
|
105
110
|
${c.bright}š·ļø The web catches conflicts before they catch you.${c.reset}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,uCAAuC;AACvC,MAAM,MAAM,GAAG;IACX,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;CACnB,CAAC;AAEF,MAAM,CAAC,GAAG,MAAM,CAAC;AAEjB,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,OAAO;IAClB,OAAO,CAAC,GAAG,CAAC;EACd,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO;;;;gEAI0C,CAAC,CAAC,KAAK;CACtE,CAAC,CAAC;IAEC,MAAM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,eAAO,MAAM,YAAY,SAyFnB,CAAC"}
|
package/dist/commands/inbox.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import {
|
|
2
|
+
import { getMessageStorage, parseTierOption, printTierStatus, } from '../storage/message-factory.js';
|
|
3
3
|
// Security: Input validation
|
|
4
4
|
const VALID_AGENT_ID = /^[a-z0-9][a-z0-9_-]{0,30}$/i;
|
|
5
5
|
function validateAgentId(agentId) {
|
|
@@ -8,12 +8,30 @@ function validateAgentId(agentId) {
|
|
|
8
8
|
}
|
|
9
9
|
return agentId;
|
|
10
10
|
}
|
|
11
|
+
function formatTimestamp(date) {
|
|
12
|
+
const now = new Date();
|
|
13
|
+
const diff = now.getTime() - date.getTime();
|
|
14
|
+
const hours = Math.floor(diff / (1000 * 60 * 60));
|
|
15
|
+
const days = Math.floor(hours / 24);
|
|
16
|
+
if (days > 0) {
|
|
17
|
+
return `${days}d ago`;
|
|
18
|
+
}
|
|
19
|
+
else if (hours > 0) {
|
|
20
|
+
return `${hours}h ago`;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const minutes = Math.floor(diff / (1000 * 60));
|
|
24
|
+
return minutes > 0 ? `${minutes}m ago` : 'just now';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
11
27
|
export const inboxCommand = new Command('inbox')
|
|
12
|
-
.description('View messages sent to you (
|
|
28
|
+
.description('View messages sent to you (tiered fallback)')
|
|
13
29
|
.option('-a, --agent <id>', 'Agent identifier (default: SPIDERSAN_AGENT env or "cli-agent")')
|
|
14
|
-
.option('-u, --unread', 'Show only unread messages
|
|
15
|
-
.option('-n, --limit <count>', 'Limit number of messages
|
|
16
|
-
.option('--
|
|
30
|
+
.option('-u, --unread', 'Show only unread messages')
|
|
31
|
+
.option('-n, --limit <count>', 'Limit number of messages', '20')
|
|
32
|
+
.option('--status', 'Show tier availability status')
|
|
33
|
+
.option('--tier <n>', 'Force specific tier (1, 2, or 3)')
|
|
34
|
+
.option('-v, --verbose', 'Show which tier is being used')
|
|
17
35
|
.option('--json', 'Output as JSON')
|
|
18
36
|
.action(async (options) => {
|
|
19
37
|
const rawAgentId = options.agent || process.env.SPIDERSAN_AGENT || 'cli-agent';
|
|
@@ -26,41 +44,77 @@ export const inboxCommand = new Command('inbox')
|
|
|
26
44
|
console.error(`ā ${error.message}`);
|
|
27
45
|
process.exit(1);
|
|
28
46
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
catch {
|
|
34
|
-
console.error('ā Myceliumail (mycmail) not found.');
|
|
35
|
-
console.error(' Please install it: npm install -g myceliumail');
|
|
36
|
-
process.exit(1);
|
|
47
|
+
// Handle --status flag
|
|
48
|
+
if (options.status) {
|
|
49
|
+
await printTierStatus({ agentId });
|
|
50
|
+
return;
|
|
37
51
|
}
|
|
38
|
-
//
|
|
52
|
+
// Get message storage adapter
|
|
53
|
+
const forceTier = parseTierOption(options.tier);
|
|
39
54
|
try {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
55
|
+
const storage = await getMessageStorage({
|
|
56
|
+
forceTier,
|
|
57
|
+
agentId,
|
|
58
|
+
verbose: options.verbose,
|
|
59
|
+
});
|
|
60
|
+
// Fetch messages
|
|
61
|
+
const messages = await storage.inbox(agentId, {
|
|
62
|
+
unread: options.unread,
|
|
63
|
+
limit: parseInt(options.limit, 10),
|
|
43
64
|
});
|
|
44
|
-
if (result.error) {
|
|
45
|
-
throw result.error;
|
|
46
|
-
}
|
|
47
|
-
const output = result.stdout || '';
|
|
48
65
|
if (options.json) {
|
|
49
|
-
// Return structured data if possible
|
|
50
66
|
console.log(JSON.stringify({
|
|
51
67
|
agent: agentId,
|
|
52
|
-
|
|
53
|
-
|
|
68
|
+
tier: storage.getTier(),
|
|
69
|
+
tierName: storage.getTierName(),
|
|
70
|
+
count: messages.length,
|
|
71
|
+
messages: messages.map(m => ({
|
|
72
|
+
...m,
|
|
73
|
+
timestamp: m.timestamp.toISOString(),
|
|
74
|
+
})),
|
|
54
75
|
}, null, 2));
|
|
76
|
+
return;
|
|
55
77
|
}
|
|
56
|
-
|
|
57
|
-
|
|
78
|
+
// Display messages
|
|
79
|
+
const tierInfo = options.verbose ? ` (via ${storage.getTierName()})` : '';
|
|
80
|
+
console.log(`\nš¬ Inbox for ${agentId}${tierInfo}\n`);
|
|
81
|
+
if (messages.length === 0) {
|
|
82
|
+
console.log(' No messages.\n');
|
|
83
|
+
return;
|
|
58
84
|
}
|
|
85
|
+
for (const msg of messages) {
|
|
86
|
+
const readIcon = msg.read ? 'š' : 'š©';
|
|
87
|
+
const encryptIcon = msg.encrypted ? 'š' : '';
|
|
88
|
+
const typeIcon = getTypeIcon(msg.type);
|
|
89
|
+
const timeStr = formatTimestamp(msg.timestamp);
|
|
90
|
+
console.log(`${readIcon} ${typeIcon} ${msg.subject} ${encryptIcon}`);
|
|
91
|
+
console.log(` From: ${msg.from} Ā· ${timeStr}`);
|
|
92
|
+
console.log(` ID: ${msg.id}`);
|
|
93
|
+
if (msg.branch) {
|
|
94
|
+
console.log(` Branch: ${msg.branch}`);
|
|
95
|
+
}
|
|
96
|
+
console.log('');
|
|
97
|
+
}
|
|
98
|
+
console.log(`Total: ${messages.length} message(s)\n`);
|
|
59
99
|
}
|
|
60
100
|
catch (error) {
|
|
61
|
-
console.error('ā Failed to fetch inbox
|
|
101
|
+
console.error('ā Failed to fetch inbox');
|
|
62
102
|
console.error(error.message || error);
|
|
63
103
|
process.exit(1);
|
|
64
104
|
}
|
|
65
105
|
});
|
|
106
|
+
function getTypeIcon(type) {
|
|
107
|
+
switch (type) {
|
|
108
|
+
case 'question':
|
|
109
|
+
return 'ā';
|
|
110
|
+
case 'alert':
|
|
111
|
+
return 'šØ';
|
|
112
|
+
case 'handoff':
|
|
113
|
+
return 'š¤';
|
|
114
|
+
case 'file_share':
|
|
115
|
+
return 'š';
|
|
116
|
+
default:
|
|
117
|
+
return 'ā¹ļø';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
66
120
|
//# sourceMappingURL=inbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export { auditMarkCommand } from './audit-mark.js';
|
|
|
31
31
|
export { logCommand } from './log.js';
|
|
32
32
|
export { watchCommand } from './watch.js';
|
|
33
33
|
export { radarCommand } from './radar.js';
|
|
34
|
+
export { welcomeCommand } from './welcome.js';
|
|
34
35
|
export { demoCommand } from './demo.js';
|
|
35
36
|
export { mcpHealthCommand } from './mcp-health.js';
|
|
36
37
|
export { mcpRestartCommand } from './mcp-restart.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,qBAAqB,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,qBAAqB,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -42,6 +42,7 @@ export { logCommand } from './log.js';
|
|
|
42
42
|
export { watchCommand } from './watch.js';
|
|
43
43
|
export { radarCommand } from './radar.js';
|
|
44
44
|
// Demo/Onboarding
|
|
45
|
+
export { welcomeCommand } from './welcome.js';
|
|
45
46
|
export { demoCommand } from './demo.js';
|
|
46
47
|
// MCP Health
|
|
47
48
|
export { mcpHealthCommand } from './mcp-health.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msg-read.d.ts","sourceRoot":"","sources":["../../src/commands/msg-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"msg-read.d.ts","sourceRoot":"","sources":["../../src/commands/msg-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,cAAc,SAoFrB,CAAC"}
|
|
@@ -1,68 +1,93 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import {
|
|
2
|
+
import { getMessageStorage, parseTierOption } from '../storage/message-factory.js';
|
|
3
3
|
// Security: Input validation
|
|
4
|
-
const VALID_AGENT_ID = /^[a-z0-9][a-z0-9_-]{0,30}$/i;
|
|
5
4
|
const VALID_MESSAGE_ID = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,64}$/;
|
|
6
|
-
function validateAgentId(agentId) {
|
|
7
|
-
if (!VALID_AGENT_ID.test(agentId)) {
|
|
8
|
-
throw new Error(`Invalid agent ID: "${agentId.slice(0, 20)}..."`);
|
|
9
|
-
}
|
|
10
|
-
return agentId;
|
|
11
|
-
}
|
|
12
5
|
function validateMessageId(id) {
|
|
13
6
|
if (!VALID_MESSAGE_ID.test(id)) {
|
|
14
7
|
throw new Error(`Invalid message ID: "${id.slice(0, 20)}..."`);
|
|
15
8
|
}
|
|
16
9
|
return id;
|
|
17
10
|
}
|
|
11
|
+
function formatTimestamp(date) {
|
|
12
|
+
return date.toLocaleString('en-US', {
|
|
13
|
+
weekday: 'short',
|
|
14
|
+
month: 'short',
|
|
15
|
+
day: 'numeric',
|
|
16
|
+
hour: '2-digit',
|
|
17
|
+
minute: '2-digit',
|
|
18
|
+
});
|
|
19
|
+
}
|
|
18
20
|
export const msgReadCommand = new Command('read')
|
|
19
|
-
.description('Read a specific message (
|
|
21
|
+
.description('Read a specific message (tiered fallback)')
|
|
20
22
|
.argument('<id>', 'Message ID (full or partial)')
|
|
21
|
-
.option('--no-mark-read', 'Don\'t mark the message as read
|
|
23
|
+
.option('--no-mark-read', 'Don\'t mark the message as read')
|
|
24
|
+
.option('--tier <n>', 'Force specific tier (1, 2, or 3)')
|
|
25
|
+
.option('-v, --verbose', 'Show which tier is being used')
|
|
22
26
|
.option('--json', 'Output as JSON')
|
|
23
27
|
.action(async (id, options) => {
|
|
24
|
-
const
|
|
25
|
-
// Security: Validate
|
|
26
|
-
let agentId;
|
|
28
|
+
const agentId = process.env.SPIDERSAN_AGENT || 'cli-agent';
|
|
29
|
+
// Security: Validate message ID
|
|
27
30
|
let messageId;
|
|
28
31
|
try {
|
|
29
|
-
agentId = validateAgentId(rawAgentId);
|
|
30
32
|
messageId = validateMessageId(id);
|
|
31
33
|
}
|
|
32
34
|
catch (error) {
|
|
33
35
|
console.error(`ā ${error.message}`);
|
|
34
36
|
process.exit(1);
|
|
35
37
|
}
|
|
38
|
+
// Get message storage adapter
|
|
39
|
+
const forceTier = parseTierOption(options.tier);
|
|
36
40
|
try {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
console.error(' Please install it: npm install -g myceliumail');
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
// Security: Use spawnSync with argument array instead of string interpolation
|
|
45
|
-
try {
|
|
46
|
-
const result = spawnSync('mycmail', ['read', messageId], {
|
|
47
|
-
encoding: 'utf-8',
|
|
48
|
-
env: { ...process.env, MYCELIUMAIL_AGENT_ID: agentId }
|
|
41
|
+
const storage = await getMessageStorage({
|
|
42
|
+
forceTier,
|
|
43
|
+
agentId,
|
|
44
|
+
verbose: options.verbose,
|
|
49
45
|
});
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
// Read message
|
|
47
|
+
const message = await storage.read(messageId);
|
|
48
|
+
if (!message) {
|
|
49
|
+
console.error(`ā Message not found: ${messageId}`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
// Mark as read if requested
|
|
53
|
+
if (options.markRead !== false) {
|
|
54
|
+
await storage.markRead(messageId);
|
|
52
55
|
}
|
|
53
|
-
const output = result.stdout || '';
|
|
54
56
|
if (options.json) {
|
|
55
57
|
console.log(JSON.stringify({
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
tier: storage.getTier(),
|
|
59
|
+
tierName: storage.getTierName(),
|
|
60
|
+
message: {
|
|
61
|
+
...message,
|
|
62
|
+
timestamp: message.timestamp.toISOString(),
|
|
63
|
+
},
|
|
58
64
|
}, null, 2));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// Display message
|
|
68
|
+
const tierInfo = options.verbose ? ` (via ${storage.getTierName()})` : '';
|
|
69
|
+
const encryptIcon = message.encrypted ? ' š' : '';
|
|
70
|
+
const typeLabel = message.type !== 'info' ? ` [${message.type.toUpperCase()}]` : '';
|
|
71
|
+
console.log(`\nš§ Message${tierInfo}\n`);
|
|
72
|
+
console.log('ā'.repeat(60));
|
|
73
|
+
console.log(`Subject: ${message.subject}${typeLabel}${encryptIcon}`);
|
|
74
|
+
console.log(`From: ${message.from}`);
|
|
75
|
+
console.log(`To: ${message.to}`);
|
|
76
|
+
console.log(`Date: ${formatTimestamp(message.timestamp)}`);
|
|
77
|
+
console.log(`ID: ${message.id}`);
|
|
78
|
+
if (message.branch) {
|
|
79
|
+
console.log(`Branch: ${message.branch}`);
|
|
59
80
|
}
|
|
60
|
-
|
|
61
|
-
console.log(
|
|
81
|
+
if (message.files && message.files.length > 0) {
|
|
82
|
+
console.log(`Files: ${message.files.join(', ')}`);
|
|
62
83
|
}
|
|
84
|
+
console.log('ā'.repeat(60));
|
|
85
|
+
console.log('');
|
|
86
|
+
console.log(message.body);
|
|
87
|
+
console.log('');
|
|
63
88
|
}
|
|
64
89
|
catch (error) {
|
|
65
|
-
console.error('ā Failed to read message
|
|
90
|
+
console.error('ā Failed to read message');
|
|
66
91
|
console.error(error.message || error);
|
|
67
92
|
process.exit(1);
|
|
68
93
|
}
|