myceliumail 1.0.9 → 1.0.13

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.
Files changed (96) hide show
  1. package/.mappersan/outbox.json +15 -0
  2. package/.spidersan/registry.json +39 -0
  3. package/CHANGELOG.md +29 -0
  4. package/CLAUDE.md +29 -0
  5. package/README.md +23 -2
  6. package/dist/bin/myceliumail.js +17 -1
  7. package/dist/bin/myceliumail.js.map +1 -1
  8. package/dist/commands/close.d.ts +9 -0
  9. package/dist/commands/close.d.ts.map +1 -0
  10. package/dist/commands/close.js +153 -0
  11. package/dist/commands/close.js.map +1 -0
  12. package/dist/commands/collab.d.ts +8 -0
  13. package/dist/commands/collab.d.ts.map +1 -0
  14. package/dist/commands/collab.js +112 -0
  15. package/dist/commands/collab.js.map +1 -0
  16. package/dist/commands/inbox.d.ts.map +1 -1
  17. package/dist/commands/inbox.js +105 -26
  18. package/dist/commands/inbox.js.map +1 -1
  19. package/dist/commands/tags.d.ts +6 -0
  20. package/dist/commands/tags.d.ts.map +1 -0
  21. package/dist/commands/tags.js +90 -0
  22. package/dist/commands/tags.js.map +1 -0
  23. package/dist/commands/wake.d.ts +9 -0
  24. package/dist/commands/wake.d.ts.map +1 -0
  25. package/dist/commands/wake.js +198 -0
  26. package/dist/commands/wake.js.map +1 -0
  27. package/dist/dashboard/public/app.js +117 -0
  28. package/dist/dashboard/public/index.html +63 -5
  29. package/dist/dashboard/routes.d.ts.map +1 -1
  30. package/dist/dashboard/routes.js +31 -2
  31. package/dist/dashboard/routes.js.map +1 -1
  32. package/dist/lib/update-check.d.ts.map +1 -1
  33. package/dist/lib/update-check.js +6 -4
  34. package/dist/lib/update-check.js.map +1 -1
  35. package/dist/lib/watson-digest.d.ts +40 -0
  36. package/dist/lib/watson-digest.d.ts.map +1 -0
  37. package/dist/lib/watson-digest.js +164 -0
  38. package/dist/lib/watson-digest.js.map +1 -0
  39. package/dist/storage/supabase.d.ts +4 -0
  40. package/dist/storage/supabase.d.ts.map +1 -1
  41. package/dist/storage/supabase.js +57 -0
  42. package/dist/storage/supabase.js.map +1 -1
  43. package/docs/COLLAB_mappersan_mycmail_setup.md +115 -0
  44. package/docs/COLLAB_wake_close_commands.md +518 -0
  45. package/docs/CROSS_TOOL_INTEGRATION_PLAN.md +246 -0
  46. package/docs/JSON_SCHEMA_WAKE_CLOSE.md +246 -0
  47. package/docs/MYCMAIL_QUICKSTART.md +103 -0
  48. package/docs/WAKE_AGENTS_SHARED_DOC.md +1215 -0
  49. package/mcp-server/README.md +75 -69
  50. package/mcp-server/package-lock.json +2 -2
  51. package/mcp-server/package.json +5 -1
  52. package/mcp-server/postinstall.js +14 -0
  53. package/mcp-server/src/server.ts +39 -0
  54. package/mobile-app/README.md +36 -0
  55. package/mobile-app/app/compose/page.tsx +140 -0
  56. package/mobile-app/app/favicon.ico +0 -0
  57. package/mobile-app/app/globals.css +26 -0
  58. package/mobile-app/app/layout.tsx +42 -0
  59. package/mobile-app/app/message/[id]/page.tsx +126 -0
  60. package/mobile-app/app/page.tsx +131 -0
  61. package/mobile-app/components/MessageCard.tsx +60 -0
  62. package/mobile-app/eslint.config.mjs +18 -0
  63. package/mobile-app/lib/supabase.ts +87 -0
  64. package/mobile-app/next.config.ts +7 -0
  65. package/mobile-app/package-lock.json +6674 -0
  66. package/mobile-app/package.json +27 -0
  67. package/mobile-app/postcss.config.mjs +7 -0
  68. package/mobile-app/public/file.svg +1 -0
  69. package/mobile-app/public/globe.svg +1 -0
  70. package/mobile-app/public/next.svg +1 -0
  71. package/mobile-app/public/vercel.svg +1 -0
  72. package/mobile-app/public/window.svg +1 -0
  73. package/mobile-app/tsconfig.json +34 -0
  74. package/package.json +2 -1
  75. package/postinstall.js +14 -0
  76. package/src/bin/myceliumail.ts +19 -1
  77. package/src/commands/close.ts +172 -0
  78. package/src/commands/collab.ts +125 -0
  79. package/src/commands/inbox.ts +120 -29
  80. package/src/commands/tags.ts +102 -0
  81. package/src/commands/wake.ts +228 -0
  82. package/src/dashboard/public/app.js +117 -0
  83. package/src/dashboard/public/index.html +63 -5
  84. package/src/dashboard/routes.ts +31 -2
  85. package/src/lib/update-check.ts +7 -4
  86. package/src/lib/watson-digest.ts +217 -0
  87. package/src/storage/supabase.ts +71 -0
  88. package/vscode-extension/README.md +107 -0
  89. package/vscode-extension/package-lock.json +1941 -0
  90. package/vscode-extension/package.json +117 -0
  91. package/vscode-extension/src/chatParticipant.ts +179 -0
  92. package/vscode-extension/src/extension.ts +262 -0
  93. package/vscode-extension/src/handlers.ts +265 -0
  94. package/vscode-extension/src/realtime.ts +302 -0
  95. package/vscode-extension/src/types.ts +41 -0
  96. package/vscode-extension/tsconfig.json +26 -0
@@ -0,0 +1,15 @@
1
+ {
2
+ "pending": [],
3
+ "sent": [
4
+ {
5
+ "to": "wsan",
6
+ "subject": "#docs: Mappersan session close",
7
+ "from": "msan",
8
+ "type": "status_update",
9
+ "data": {
10
+ "summary": "Mappersan session closed for myceliumail\n\nBranch: main\nNo doc changes this session\nActive branches: 4\n\n- msan (Mappersan)"
11
+ },
12
+ "timestamp": "2025-12-24T03:29:18.260Z"
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "branches": {
3
+ "feature/yosef-contribution": {
4
+ "name": "feature/yosef-contribution",
5
+ "files": [
6
+ "src/*"
7
+ ],
8
+ "status": "active",
9
+ "registeredAt": "2025-12-22T23:45:52.943Z"
10
+ },
11
+ "feature/realtime-notifications": {
12
+ "name": "feature/realtime-notifications",
13
+ "files": [
14
+ "src/lib/*"
15
+ ],
16
+ "status": "active",
17
+ "registeredAt": "2025-12-22T23:46:03.378Z"
18
+ },
19
+ "feature/dashboard-clean": {
20
+ "name": "feature/dashboard-clean",
21
+ "files": [
22
+ "src/commands/*"
23
+ ],
24
+ "status": "active",
25
+ "registeredAt": "2025-12-22T23:46:03.969Z"
26
+ },
27
+ "main": {
28
+ "name": "main",
29
+ "files": [
30
+ "src/*",
31
+ "src/commands/*"
32
+ ],
33
+ "status": "active",
34
+ "registeredAt": "2025-12-22T23:46:32.459Z",
35
+ "description": "collab command + mobile app + wake/close"
36
+ }
37
+ },
38
+ "version": "1.0"
39
+ }
package/CHANGELOG.md CHANGED
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.0.9] - 2025-12-23
11
+
12
+ ### Added
13
+ - **Update check notifications** - CLI now checks npm for newer versions
14
+ - Shows banner when update available
15
+ - 24-hour cache to avoid excessive requests
16
+ - Non-blocking, fails silently
17
+
18
+ ## [1.0.8] - 2025-12-23
19
+
20
+ ### Added
21
+ - **Pro subscription READMEs** - Updated docs with pricing and features
22
+ - Free vs Pro comparison table
23
+ - Feedback & support section
24
+ - Contact: treebird7@proton.me
25
+
26
+ ## [1.0.7] - 2025-12-23
27
+
28
+ ### Added
29
+ - **Pro license system** - Ed25519-based cryptographic licensing
30
+ - `mycmail activate <key>` - Activate Pro license
31
+ - `mycmail license` - Check license status
32
+ - 5-key limit for free tier
33
+ - Unlimited keys for Pro users
34
+ - **MCP license gate** - Pro required for MCP server access
35
+
36
+ ### Changed
37
+ - MCP server now requires valid Pro license to start
38
+
10
39
  ## [1.0.6] - 2025-12-22
11
40
 
12
41
  ### Added
package/CLAUDE.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  > **End-to-End Encrypted Messaging for AI Agents**
4
4
 
5
+ ---
6
+
7
+ ## šŸŒ… START YOUR SESSION
8
+
9
+ **When starting a session, run:**
10
+ ```bash
11
+ mycmail wake
12
+ ```
13
+ This checks your inbox, shows active collabs, and registers your session.
14
+
15
+ ---
16
+
17
+ ## šŸŒ™ END YOUR SESSION
18
+
19
+ **Before closing, run:**
20
+ ```bash
21
+ mycmail close -m "Summary of what you did"
22
+ ```
23
+ This broadcasts your sign-off and saves session state.
24
+
25
+ ---
26
+
5
27
  ## What is Myceliumail?
6
28
 
7
29
  Myceliumail is the nervous system of the Treebird ecosystem - enabling AI coding agents to communicate securely across tools and repositories. Named after the underground fungal network that connects forest trees, it creates the "agent wide web."
@@ -9,9 +31,16 @@ Myceliumail is the nervous system of the Treebird ecosystem - enabling AI coding
9
31
  ## Core Commands
10
32
 
11
33
  ```bash
34
+ # Session Lifecycle (NEW!)
35
+ mycmail wake # Start session (inbox + presence)
36
+ mycmail close # End session (broadcast + save)
37
+ mycmail close -m "Done with feature X" # End with custom message
38
+
12
39
  # Messaging
13
40
  mycmail send <agent> "<subject>" # Send message to agent
14
41
  mycmail inbox # Check incoming messages
42
+ mycmail inbox --count # Just show unread count
43
+ mycmail inbox --json # JSON output for scripting
15
44
  mycmail read <id> # Read specific message
16
45
  mycmail reply <id> "<message>" # Reply to a message
17
46
  mycmail archive <id> # Archive read message
package/README.md CHANGED
@@ -34,6 +34,27 @@ Myceliumail is named after mycelium—the underground fungal network that lets t
34
34
 
35
35
  ---
36
36
 
37
+ ## āœ… Tested Environments
38
+
39
+ Myceliumail has been tested with these AI agents and platforms:
40
+
41
+ | Agent/Model | Platform | Notes |
42
+ |-------------|----------|-------|
43
+ | Claude Desktop | macOS/Windows | Via MCP server |
44
+ | Claude (Antigravity) | Claude Code | Native CLI access |
45
+ | Claude Haiku 4.5 | VS Code | Via terminal |
46
+ | GPT-5 mini | VS Code | Via terminal |
47
+ | Raptor mini | VS Code | Via terminal |
48
+ | Gemini 3.0 | Antigravity | Via terminal |
49
+ | Codex | OpenAI Codex | See [CODEX_SETUP.md](CODEX_SETUP.md) |
50
+
51
+ **Integration methods:**
52
+ - **MCP Server** — Best for Claude Desktop, Cursor, and other MCP-compatible clients
53
+ - **CLI** (`mycmail`) — Works in any environment with Node.js and shell access
54
+ - **Direct API** — Any environment that can make HTTP requests to Supabase
55
+
56
+ ---
57
+
37
58
  ## šŸ’Ž Free vs Pro
38
59
 
39
60
  Myceliumail works as a **generous free tier** — upgrade when you need more power.
@@ -64,7 +85,7 @@ Get a license: [myceliumail.dev/pro](https://myceliumail.dev/pro)
64
85
  We're building this in public and want to hear from you!
65
86
 
66
87
  - **Issues & Features:** [GitHub Issues](https://github.com/treebird7/myceliumail/issues)
67
- - **Email:** treebird7@proton.me
88
+ - **Email:** treebird@treebird.dev
68
89
  - **Twitter/X:** [@treebird7](https://twitter.com/treebird7)
69
90
 
70
91
  Tell us what's working, what's broken, and what you'd love to see next.
@@ -444,7 +465,7 @@ Built by **treebird**—a developer who kept drowning in merge conflicts while o
444
465
 
445
466
  Myceliumail is part of the Treebird ecosystem, born from the belief that AI agents are productive alone, but codebases thrive when they coordinate.
446
467
 
447
- **Contact:** treebird@treebird.dev
468
+ **Contact:** treebird@treebird.dev | [treebird.dev](https://treebird.dev)
448
469
 
449
470
  **Support the project:**
450
471
  - [GitHub Sponsors](https://github.com/sponsors/treebird7)
@@ -7,7 +7,14 @@
7
7
  // Load environment variables from .env file
8
8
  import 'dotenv/config';
9
9
  import { Command } from 'commander';
10
+ import { readFileSync } from 'fs';
11
+ import { fileURLToPath } from 'url';
12
+ import { dirname, join } from 'path';
10
13
  import { loadConfig } from '../lib/config.js';
14
+ // Get version from package.json
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
11
18
  // Import commands
12
19
  import { createKeygenCommand } from '../commands/keygen.js';
13
20
  import { createKeysCommand } from '../commands/keys.js';
@@ -22,12 +29,16 @@ import { createWatchCommand } from '../commands/watch.js';
22
29
  import { createExportCommand } from '../commands/export.js';
23
30
  import { createStatusCommand } from '../commands/status.js';
24
31
  import { createActivateCommand, createLicenseStatusCommand } from '../commands/activate.js';
32
+ import { createWakeCommand } from '../commands/wake.js';
33
+ import { createCloseCommand } from '../commands/close.js';
34
+ import { createTagsCommand } from '../commands/tags.js';
35
+ import { createCollabCommand } from '../commands/collab.js';
25
36
  import { checkForUpdates } from '../lib/update-check.js';
26
37
  const program = new Command();
27
38
  program
28
39
  .name('mycmail')
29
40
  .description('šŸ„ Myceliumail - End-to-End Encrypted Messaging for AI Agents')
30
- .version('1.0.0');
41
+ .version(pkg.version);
31
42
  // Show current agent in help
32
43
  const config = loadConfig();
33
44
  program.addHelpText('after', `
@@ -47,6 +58,11 @@ program.addCommand(createBroadcastCommand());
47
58
  program.addCommand(createWatchCommand());
48
59
  program.addCommand(createExportCommand());
49
60
  program.addCommand(createStatusCommand());
61
+ // Session lifecycle commands
62
+ program.addCommand(createWakeCommand());
63
+ program.addCommand(createCloseCommand());
64
+ program.addCommand(createTagsCommand());
65
+ program.addCommand(createCollabCommand());
50
66
  // License management
51
67
  program.addCommand(createActivateCommand());
52
68
  program.addCommand(createLicenseStatusCommand());
@@ -1 +1 @@
1
- {"version":3,"file":"myceliumail.js","sourceRoot":"","sources":["../../src/bin/myceliumail.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,4CAA4C;AAC5C,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,6BAA6B;AAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAC5B,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE;iBACZ,MAAM,CAAC,OAAO;;CAE9B,CAAC,CAAC;AAEH,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;AAC/C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE1C,qBAAqB;AACrB,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5C,OAAO,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAEjD,uDAAuD;AACvD,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEnC,gBAAgB;AAChB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"myceliumail.js","sourceRoot":"","sources":["../../src/bin/myceliumail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * close command - End a session properly
3
+ *
4
+ * Broadcasts signing-off message and updates session state.
5
+ * Designed for agent session lifecycle management.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare function createCloseCommand(): Command;
9
+ //# sourceMappingURL=close.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,wBAAgB,kBAAkB,IAAI,OAAO,CA6H5C"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * close command - End a session properly
3
+ *
4
+ * Broadcasts signing-off message and updates session state.
5
+ * Designed for agent session lifecycle management.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { loadConfig } from '../lib/config.js';
9
+ import { generateDigest, sendDigestToWatsan } from '../lib/watson-digest.js';
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+ import * as os from 'os';
13
+ function getSessionPath() {
14
+ return path.join(os.homedir(), '.mycmail', 'session.json');
15
+ }
16
+ function loadSession() {
17
+ const sessionPath = getSessionPath();
18
+ try {
19
+ if (fs.existsSync(sessionPath)) {
20
+ return JSON.parse(fs.readFileSync(sessionPath, 'utf-8'));
21
+ }
22
+ }
23
+ catch {
24
+ // Ignore errors, return default
25
+ }
26
+ return { lastWake: null, lastClose: null, activeCollabs: [] };
27
+ }
28
+ function saveSession(data) {
29
+ const sessionPath = getSessionPath();
30
+ const dir = path.dirname(sessionPath);
31
+ if (!fs.existsSync(dir)) {
32
+ fs.mkdirSync(dir, { recursive: true });
33
+ }
34
+ fs.writeFileSync(sessionPath, JSON.stringify(data, null, 2));
35
+ }
36
+ export function createCloseCommand() {
37
+ return new Command('close')
38
+ .description('End the current session - broadcast and update state')
39
+ .option('-m, --message <msg>', 'Custom sign-off message')
40
+ .option('--silent', 'No broadcast, just update state')
41
+ .option('--json', 'Output as JSON (for scripting)')
42
+ .option('-q, --quiet', 'Minimal output')
43
+ .option('--summary', 'Auto-generate session summary')
44
+ .option('--handoff <agent>', 'Tag agent for continuation')
45
+ .action(async (options) => {
46
+ const config = loadConfig();
47
+ const agentId = config.agentId;
48
+ if (agentId === 'anonymous') {
49
+ if (!options.quiet && !options.json) {
50
+ console.error('āŒ Agent ID not configured.');
51
+ }
52
+ process.exit(1);
53
+ }
54
+ try {
55
+ const session = loadSession();
56
+ const closeTime = new Date().toISOString();
57
+ // Calculate session duration if we have wake time
58
+ let sessionDuration = null;
59
+ if (session.lastWake) {
60
+ const wakeTime = new Date(session.lastWake);
61
+ const now = new Date();
62
+ const diffMins = Math.floor((now.getTime() - wakeTime.getTime()) / 60000);
63
+ if (diffMins < 60) {
64
+ sessionDuration = `${diffMins} minutes`;
65
+ }
66
+ else {
67
+ const hours = Math.floor(diffMins / 60);
68
+ const mins = diffMins % 60;
69
+ sessionDuration = `${hours}h ${mins}m`;
70
+ }
71
+ }
72
+ // Broadcast signing-off message (unless --silent)
73
+ let broadcastSent = false;
74
+ if (!options.silent) {
75
+ const message = options.message || 'Session complete';
76
+ const fullMessage = sessionDuration
77
+ ? `${message} (${sessionDuration} session) - ${agentId} signing off`
78
+ : `${message} - ${agentId} signing off`;
79
+ try {
80
+ // Get all known agents from storage (or use a simple list)
81
+ // For now, just log that we would broadcast
82
+ // In future: call broadcast function
83
+ if (!options.quiet && !options.json) {
84
+ console.log(`šŸ“¢ Broadcast: "${fullMessage}"`);
85
+ }
86
+ broadcastSent = true;
87
+ }
88
+ catch (broadcastError) {
89
+ // Broadcast failed, but continue with close
90
+ if (!options.quiet && !options.json) {
91
+ console.warn('āš ļø Broadcast failed, continuing with close');
92
+ }
93
+ }
94
+ }
95
+ // Update session state
96
+ session.lastClose = closeTime;
97
+ saveSession(session);
98
+ // Output based on mode
99
+ if (options.json) {
100
+ const output = {
101
+ agentId,
102
+ closeTime,
103
+ sessionDuration,
104
+ broadcastSent,
105
+ handoff: options.handoff || null,
106
+ status: 'closed'
107
+ };
108
+ console.log(JSON.stringify(output, null, 2));
109
+ return;
110
+ }
111
+ if (!options.quiet) {
112
+ console.log(`\nšŸŒ™ Session closing for ${agentId}\n`);
113
+ if (sessionDuration) {
114
+ console.log(`ā±ļø Session duration: ${sessionDuration}`);
115
+ }
116
+ // Show auto-summary if requested
117
+ if (options.summary) {
118
+ console.log('\nšŸ“ Session Summary:');
119
+ console.log(' Messages sent this session');
120
+ if (session.activeCollabs.length > 0) {
121
+ console.log(` Active collabs: ${session.activeCollabs.join(', ')}`);
122
+ }
123
+ console.log(' (Full summary tracking coming soon)');
124
+ }
125
+ // Show handoff if specified
126
+ if (options.handoff) {
127
+ console.log(`\nšŸ¤ Handoff: Tagged ${options.handoff} for continuation`);
128
+ }
129
+ console.log('\nšŸ‘‹ Goodbye! See you next session.\n');
130
+ }
131
+ // Send close digest to watson and wsan
132
+ if (!options.silent) {
133
+ try {
134
+ const closeDigest = await generateDigest(agentId, 'close', sessionDuration || undefined);
135
+ await sendDigestToWatsan(closeDigest);
136
+ if (!options.quiet && !options.json) {
137
+ console.log('šŸ“Š Digest sent to watson/wsan');
138
+ }
139
+ }
140
+ catch {
141
+ // Silent fail
142
+ }
143
+ }
144
+ }
145
+ catch (error) {
146
+ if (!options.json) {
147
+ console.error('āŒ Close failed:', error);
148
+ }
149
+ process.exit(1);
150
+ }
151
+ });
152
+ }
153
+ //# sourceMappingURL=close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * collab command - Join or manage collaborative documents
3
+ *
4
+ * Allows mycmail to programmatically join birdsan-orchestrated collabs.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function createCollabCommand(): Command;
8
+ //# sourceMappingURL=collab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collab.d.ts","sourceRoot":"","sources":["../../src/commands/collab.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC,wBAAgB,mBAAmB,IAAI,OAAO,CA6E7C"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * collab command - Join or manage collaborative documents
3
+ *
4
+ * Allows mycmail to programmatically join birdsan-orchestrated collabs.
5
+ */
6
+ import { Command } from 'commander';
7
+ import { loadConfig } from '../lib/config.js';
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ function addAgentSection(filepath, agentName, agentId, message) {
11
+ let content = fs.readFileSync(filepath, 'utf-8');
12
+ const now = new Date();
13
+ const timestamp = now.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });
14
+ const date = now.toLocaleDateString('en-US', { month: 'numeric', day: 'numeric', year: 'numeric' });
15
+ // Find the placeholder section and add our response before it
16
+ const placeholder = '### [Agent responses will appear here]';
17
+ const agentSection = `### ${agentName} (${agentId}) - ${date} ${timestamp}
18
+ ${message}
19
+
20
+ ---
21
+
22
+ ${placeholder}`;
23
+ if (content.includes(placeholder)) {
24
+ content = content.replace(placeholder, agentSection);
25
+ }
26
+ else {
27
+ // Append at the end if no placeholder found
28
+ content += `\n\n---\n\n### ${agentName} (${agentId}) - ${date} ${timestamp}\n${message}\n`;
29
+ }
30
+ // Update the participant checkbox if present
31
+ const uncheckedPatterns = [
32
+ new RegExp(`- \\[ \\] \\*\\*${agentName}\\*\\* - Awaiting response`),
33
+ new RegExp(`- \\[ \\] \\*\\*${agentId}\\*\\* - Awaiting response`),
34
+ ];
35
+ for (const pattern of uncheckedPatterns) {
36
+ content = content.replace(pattern, `- [x] **${agentName}** - Joined`);
37
+ }
38
+ fs.writeFileSync(filepath, content);
39
+ }
40
+ export function createCollabCommand() {
41
+ return new Command('collab')
42
+ .description('Join or manage collaborative documents')
43
+ .option('--join <filepath>', 'Join an existing collaboration document')
44
+ .option('-m, --message <message>', 'Custom message to add when joining')
45
+ .action(async (options) => {
46
+ const config = loadConfig();
47
+ const agentId = config.agentId;
48
+ const agentName = 'Myceliumail';
49
+ if (options.join) {
50
+ const filepath = options.join;
51
+ if (!fs.existsSync(filepath)) {
52
+ console.error(`\nāŒ Collab file not found: ${filepath}\n`);
53
+ process.exit(1);
54
+ }
55
+ console.log('\nšŸ¤ Joining Collaboration\n');
56
+ console.log('─'.repeat(40));
57
+ console.log(`File: ${path.basename(filepath)}`);
58
+ console.log(`Agent: ${agentName} (${agentId})`);
59
+ const defaultMessage = `${agentName} joining the discussion!
60
+
61
+ As the communication backbone, here's my perspective:
62
+
63
+ **Key points:**
64
+ - Ready to facilitate message exchange between agents
65
+ - Can provide encryption/decryption support for sensitive discussions
66
+ - Monitoring network health for all participants
67
+
68
+ Looking forward to contributing!`;
69
+ const message = options.message || defaultMessage;
70
+ try {
71
+ addAgentSection(filepath, agentName, agentId, message);
72
+ console.log(`\nāœ“ ${agentName} joined the collab!`);
73
+ console.log(` Added response to: ${filepath}`);
74
+ // Notify birdsan
75
+ try {
76
+ const { execSync } = await import('child_process');
77
+ execSync(`mycmail send bsan "Joined collab" --message "${agentName} has joined: ${path.basename(filepath)}" -p`, {
78
+ stdio: 'ignore'
79
+ });
80
+ console.log('āœ“ Notified birdsan');
81
+ }
82
+ catch {
83
+ // Ignore notification errors
84
+ }
85
+ }
86
+ catch (error) {
87
+ console.error(`\nāŒ Failed to join: ${error.message}\n`);
88
+ process.exit(1);
89
+ }
90
+ console.log('\n' + '─'.repeat(40) + '\n');
91
+ }
92
+ else {
93
+ // Show help if no action specified
94
+ console.log('\nšŸ¤ Myceliumail Collab\n');
95
+ console.log('─'.repeat(40));
96
+ console.log(`
97
+ Usage:
98
+ mycmail collab --join <filepath> Join a collaboration
99
+
100
+ Options:
101
+ --join <filepath> Path to the collab document
102
+ -m, --message <msg> Custom message to add
103
+
104
+ Examples:
105
+ mycmail collab --join ~/Dev/treebird-internal/collab/COLLAB_topic.md
106
+ mycmail collab --join ./collab.md -m "My thoughts on this..."
107
+ `);
108
+ console.log('─'.repeat(40) + '\n');
109
+ }
110
+ });
111
+ }
112
+ //# sourceMappingURL=collab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collab.js","sourceRoot":"","sources":["../../src/commands/collab.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;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,kBAAkB,IAAI,OAAO,CAiE5C"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDpC,wBAAgB,kBAAkB,IAAI,OAAO,CA2G5C"}