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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msg-read.js","sourceRoot":"","sources":["../../src/commands/msg-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"msg-read.js","sourceRoot":"","sources":["../../src/commands/msg-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/commands/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/commands/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,eAAe,SAwDtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/commands/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/commands/semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,eAAO,MAAM,WAAW,SAiGlB,CAAC"}
|
package/dist/commands/send.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { execSync
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { getMessageStorage, parseTierOption } from '../storage/message-factory.js';
|
|
3
4
|
// Security: Input validation
|
|
4
5
|
const VALID_AGENT_ID = /^[a-z0-9][a-z0-9_-]{0,30}$/i;
|
|
5
6
|
function validateAgentId(agentId) {
|
|
@@ -8,10 +9,6 @@ function validateAgentId(agentId) {
|
|
|
8
9
|
}
|
|
9
10
|
return agentId;
|
|
10
11
|
}
|
|
11
|
-
function sanitizeText(text) {
|
|
12
|
-
// Remove shell metacharacters but allow normal text
|
|
13
|
-
return text.replace(/[`$(){}[\]|;&<>]/g, '');
|
|
14
|
-
}
|
|
15
12
|
function getMessageFromStdin() {
|
|
16
13
|
return new Promise((resolve, reject) => {
|
|
17
14
|
const chunks = [];
|
|
@@ -29,7 +26,7 @@ function getCurrentBranch() {
|
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
28
|
export const sendCommand = new Command('send')
|
|
32
|
-
.description('Send a message to another agent (
|
|
29
|
+
.description('Send a message to another agent (tiered fallback)')
|
|
33
30
|
.argument('<to>', 'Recipient agent identifier')
|
|
34
31
|
.argument('<subject>', 'Message subject')
|
|
35
32
|
.option('-m, --message <text>', 'Message body (or reads from stdin)')
|
|
@@ -37,11 +34,21 @@ export const sendCommand = new Command('send')
|
|
|
37
34
|
.option('-f, --from <agent>', 'Sender identifier (default: current agent)')
|
|
38
35
|
.option('-b, --branch <name>', 'Related branch name')
|
|
39
36
|
.option('--files <files>', 'Comma-separated list of related files')
|
|
40
|
-
.option('--reply-to <id>', 'Message ID this is replying to
|
|
41
|
-
.option('--encrypt', 'Encrypt the message')
|
|
37
|
+
.option('--reply-to <id>', 'Message ID this is replying to')
|
|
38
|
+
.option('--encrypt', 'Encrypt the message (Tier 1 only)')
|
|
39
|
+
.option('--tier <n>', 'Force specific tier (1, 2, or 3)')
|
|
40
|
+
.option('-v, --verbose', 'Show which tier is being used')
|
|
42
41
|
.option('--json', 'Output as JSON')
|
|
43
42
|
.action(async (to, subject, options) => {
|
|
44
|
-
// 1.
|
|
43
|
+
// 1. Validate recipient
|
|
44
|
+
try {
|
|
45
|
+
validateAgentId(to);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error(`β ${error.message}`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
// 2. Get message body
|
|
45
52
|
let messageBody = options.message;
|
|
46
53
|
if (!messageBody) {
|
|
47
54
|
if (process.stdin.isTTY) {
|
|
@@ -54,79 +61,59 @@ export const sendCommand = new Command('send')
|
|
|
54
61
|
console.error('β Message body empty');
|
|
55
62
|
process.exit(1);
|
|
56
63
|
}
|
|
57
|
-
//
|
|
64
|
+
// 3. Prepare context
|
|
58
65
|
const branch = options.branch || getCurrentBranch();
|
|
59
66
|
const type = options.type || 'info';
|
|
60
67
|
const files = options.files ? options.files.split(',') : [];
|
|
61
|
-
// 3. Format message with Spidersan context (until mycmail supports metadata)
|
|
62
|
-
let contextHeader = '';
|
|
63
|
-
if (type !== 'info')
|
|
64
|
-
contextHeader += `Type: ${type}\n`;
|
|
65
|
-
if (branch)
|
|
66
|
-
contextHeader += `Branch: ${branch}\n`;
|
|
67
|
-
if (files.length > 0)
|
|
68
|
-
contextHeader += `Files: ${files.join(', ')}\n`;
|
|
69
|
-
const fullMessage = contextHeader ? `${contextHeader}\n${messageBody}` : messageBody;
|
|
70
|
-
// 4. Construct mycmail command
|
|
71
|
-
// Note: We use the sender identity for MYCELIUMAIL_AGENT_ID env var
|
|
72
68
|
const sender = options.from || process.env.SPIDERSAN_AGENT || 'cli-agent';
|
|
69
|
+
// 4. Get message storage adapter
|
|
70
|
+
const forceTier = parseTierOption(options.tier);
|
|
73
71
|
try {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
console.error('β Myceliumail (mycmail) not found.');
|
|
79
|
-
console.error(' Please install it: npm install -g myceliumail');
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
const cmdParts = [
|
|
83
|
-
`MYCELIUMAIL_AGENT_ID=${sender}`,
|
|
84
|
-
'mycmail',
|
|
85
|
-
'send',
|
|
86
|
-
to,
|
|
87
|
-
`"${subject}"`, // Subject needs quotes
|
|
88
|
-
'--message',
|
|
89
|
-
`"${fullMessage.replace(/"/g, '\\"')}"` // Escape quotes in message
|
|
90
|
-
];
|
|
91
|
-
if (options.encrypt) {
|
|
92
|
-
cmdParts.push('--encrypt');
|
|
93
|
-
}
|
|
94
|
-
// Execute
|
|
95
|
-
// Execute using execFileSync with argument array (prevents shell injection)
|
|
96
|
-
try {
|
|
97
|
-
// Security: Validate and sanitize inputs
|
|
98
|
-
const safeTo = validateAgentId(to);
|
|
99
|
-
const safeSubject = sanitizeText(subject);
|
|
100
|
-
const safeMessage = sanitizeText(fullMessage);
|
|
101
|
-
const args = ['send', safeTo, safeSubject, '--message', safeMessage];
|
|
102
|
-
if (options.encrypt) {
|
|
103
|
-
args.push('--encrypt');
|
|
104
|
-
}
|
|
105
|
-
const result = spawnSync('mycmail', args, {
|
|
106
|
-
encoding: 'utf-8',
|
|
107
|
-
env: { ...process.env, MYCELIUMAIL_AGENT_ID: sender }
|
|
72
|
+
const storage = await getMessageStorage({
|
|
73
|
+
forceTier,
|
|
74
|
+
agentId: sender,
|
|
75
|
+
verbose: options.verbose,
|
|
108
76
|
});
|
|
109
|
-
if
|
|
110
|
-
|
|
77
|
+
// Warn if encryption requested but not on Tier 1
|
|
78
|
+
if (options.encrypt && storage.getTier() !== 1) {
|
|
79
|
+
console.error('β οΈ Encryption only supported on Tier 1 (mycmail). Message will be sent unencrypted.');
|
|
111
80
|
}
|
|
112
|
-
|
|
81
|
+
// 5. Send message
|
|
82
|
+
const message = await storage.send({
|
|
83
|
+
from: sender,
|
|
84
|
+
to,
|
|
85
|
+
subject,
|
|
86
|
+
body: messageBody,
|
|
87
|
+
type,
|
|
88
|
+
encrypted: options.encrypt && storage.getTier() === 1,
|
|
89
|
+
branch: branch || undefined,
|
|
90
|
+
files: files.length > 0 ? files : undefined,
|
|
91
|
+
});
|
|
113
92
|
if (options.json) {
|
|
114
|
-
// Try to parse mycmail output or create synthetic JSON
|
|
115
|
-
// mycmail 1.0.0 output is text. 1.1.0 might have --json
|
|
116
93
|
console.log(JSON.stringify({
|
|
117
94
|
status: 'sent',
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
95
|
+
tier: storage.getTier(),
|
|
96
|
+
tierName: storage.getTierName(),
|
|
97
|
+
message: {
|
|
98
|
+
id: message.id,
|
|
99
|
+
to: message.to,
|
|
100
|
+
subject: message.subject,
|
|
101
|
+
encrypted: message.encrypted,
|
|
102
|
+
timestamp: message.timestamp.toISOString(),
|
|
103
|
+
},
|
|
122
104
|
}, null, 2));
|
|
123
105
|
}
|
|
124
106
|
else {
|
|
125
|
-
|
|
107
|
+
const tierInfo = options.verbose ? ` via ${storage.getTierName()}` : '';
|
|
108
|
+
console.log(`β
Message sent to ${to}${tierInfo}`);
|
|
109
|
+
if (options.verbose) {
|
|
110
|
+
console.log(` ID: ${message.id}`);
|
|
111
|
+
console.log(` Subject: ${subject}`);
|
|
112
|
+
}
|
|
126
113
|
}
|
|
127
114
|
}
|
|
128
115
|
catch (error) {
|
|
129
|
-
console.error('β Failed to send message
|
|
116
|
+
console.error('β Failed to send message');
|
|
130
117
|
console.error(error.message || error);
|
|
131
118
|
process.exit(1);
|
|
132
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsGpC,eAAO,MAAM,cAAc,SAIrB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
// ANSI color codes for terminal output
|
|
5
|
+
const colors = {
|
|
6
|
+
reset: '\x1b[0m',
|
|
7
|
+
bright: '\x1b[1m',
|
|
8
|
+
dim: '\x1b[2m',
|
|
9
|
+
red: '\x1b[31m',
|
|
10
|
+
green: '\x1b[32m',
|
|
11
|
+
yellow: '\x1b[33m',
|
|
12
|
+
blue: '\x1b[34m',
|
|
13
|
+
magenta: '\x1b[35m',
|
|
14
|
+
cyan: '\x1b[36m',
|
|
15
|
+
};
|
|
16
|
+
const c = colors;
|
|
17
|
+
function sleep(ms) {
|
|
18
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
19
|
+
}
|
|
20
|
+
async function runWelcome() {
|
|
21
|
+
// The grand entrance
|
|
22
|
+
console.log(`
|
|
23
|
+
${c.bright}${c.magenta}π·οΈ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
24
|
+
${c.bright}${c.magenta} SPIDERSAN WELCOMES YOU TO THE WEB${c.reset}
|
|
25
|
+
${c.bright}${c.magenta}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
26
|
+
`);
|
|
27
|
+
await sleep(800);
|
|
28
|
+
console.log(`${c.cyan} You are not alone in this codebase.${c.reset}`);
|
|
29
|
+
await sleep(600);
|
|
30
|
+
console.log(`${c.cyan} Other agents weave alongside you.${c.reset}`);
|
|
31
|
+
await sleep(600);
|
|
32
|
+
console.log(`${c.cyan} The web keeps you from colliding.${c.reset}`);
|
|
33
|
+
await sleep(1000);
|
|
34
|
+
console.log(`
|
|
35
|
+
${c.dim}βββββββββββββββββββββββββββββββββββ${c.reset}
|
|
36
|
+
${c.dim}β${c.reset} ${c.bright}${c.yellow}"Claim your threads${c.reset} ${c.dim}β${c.reset}
|
|
37
|
+
${c.dim}β${c.reset} ${c.bright}${c.yellow}before you weave."${c.reset} ${c.dim}β${c.reset}
|
|
38
|
+
${c.dim}βββββββββββββββββββββββββββββββββββ${c.reset}
|
|
39
|
+
`);
|
|
40
|
+
await sleep(1200);
|
|
41
|
+
// Check initialization status
|
|
42
|
+
const initialized = existsSync(join(process.cwd(), '.spidersan', 'registry.json'));
|
|
43
|
+
if (!initialized) {
|
|
44
|
+
console.log(`${c.yellow}πΈοΈ FIRST TIME HERE?${c.reset}`);
|
|
45
|
+
console.log(`
|
|
46
|
+
${c.bright}Step 1:${c.reset} Initialize the web in your project
|
|
47
|
+
${c.green}$ spidersan init${c.reset}
|
|
48
|
+
`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log(`${c.green}β Web initialized in this project${c.reset}
|
|
52
|
+
`);
|
|
53
|
+
}
|
|
54
|
+
console.log(`${c.cyan}πΈοΈ QUICK SETUP:${c.reset}
|
|
55
|
+
|
|
56
|
+
${c.bright}Register your branch:${c.reset}
|
|
57
|
+
${c.green}$ spidersan register --files "src/myfile.ts" --agent myname${c.reset}
|
|
58
|
+
|
|
59
|
+
${c.bright}Check for conflicts:${c.reset}
|
|
60
|
+
${c.green}$ spidersan conflicts${c.reset}
|
|
61
|
+
|
|
62
|
+
${c.bright}When done:${c.reset}
|
|
63
|
+
${c.green}$ spidersan merged${c.reset}
|
|
64
|
+
`);
|
|
65
|
+
await sleep(800);
|
|
66
|
+
console.log(`${c.bright}${c.blue}β‘ OR: AUTO-MODE${c.reset}
|
|
67
|
+
|
|
68
|
+
Let Spidersan watch your files automatically:
|
|
69
|
+
${c.green}$ spidersan watch --agent myname${c.reset}
|
|
70
|
+
|
|
71
|
+
${c.dim}Files tracked as you edit. Conflicts caught in real-time.${c.reset}
|
|
72
|
+
`);
|
|
73
|
+
await sleep(1000);
|
|
74
|
+
console.log(`${c.magenta}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
75
|
+
|
|
76
|
+
${c.bright}π¬ WANT TO SEE THE WEB'S POWER?${c.reset}
|
|
77
|
+
|
|
78
|
+
${c.cyan}$ spidersan demo${c.reset}
|
|
79
|
+
|
|
80
|
+
${c.dim}Watch a simulated multi-agent conflict get caught!${c.reset}
|
|
81
|
+
|
|
82
|
+
${c.magenta}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
83
|
+
${c.bright}${c.magenta} The web sees all. The web protects all.${c.reset}
|
|
84
|
+
${c.bright}${c.magenta}π·οΈ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
85
|
+
`);
|
|
86
|
+
}
|
|
87
|
+
export const welcomeCommand = new Command('welcome')
|
|
88
|
+
.description('π·οΈ Welcome ritual - start here if you are new')
|
|
89
|
+
.action(async () => {
|
|
90
|
+
await runWelcome();
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=welcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Coordination Branch Message Storage Adapter (Tier 2)
|
|
3
|
+
*
|
|
4
|
+
* Stores messages in an orphan branch: spidersan/messages
|
|
5
|
+
* Structure:
|
|
6
|
+
* inbox/<agent-id>/<timestamp>_<from>_<subject-slug>.json
|
|
7
|
+
* outbox/<agent-id>/<timestamp>_<to>_<subject-slug>.json
|
|
8
|
+
*
|
|
9
|
+
* Near-real-time coordination on pull. Works across machines with git remote.
|
|
10
|
+
*/
|
|
11
|
+
import type { MessageStorageAdapter, Message, SendMessageInput, InboxOptions, TierStatus } from './message-adapter.js';
|
|
12
|
+
export declare class GitMessagesAdapter implements MessageStorageAdapter {
|
|
13
|
+
private basePath;
|
|
14
|
+
private branchInitialized;
|
|
15
|
+
constructor(basePath?: string);
|
|
16
|
+
getTier(): number;
|
|
17
|
+
getTierName(): string;
|
|
18
|
+
isAvailable(): Promise<boolean>;
|
|
19
|
+
getStatus(): Promise<TierStatus>;
|
|
20
|
+
/**
|
|
21
|
+
* Check if the messages branch exists
|
|
22
|
+
*/
|
|
23
|
+
private branchExists;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the orphan branch if it doesn't exist
|
|
26
|
+
*/
|
|
27
|
+
private ensureBranch;
|
|
28
|
+
/**
|
|
29
|
+
* Generate filename for a message
|
|
30
|
+
*/
|
|
31
|
+
private generateFilename;
|
|
32
|
+
/**
|
|
33
|
+
* Read a file from the messages branch without checkout
|
|
34
|
+
*/
|
|
35
|
+
private readFromBranch;
|
|
36
|
+
/**
|
|
37
|
+
* List files in a directory on the messages branch
|
|
38
|
+
*/
|
|
39
|
+
private listFromBranch;
|
|
40
|
+
/**
|
|
41
|
+
* Write a file to the messages branch
|
|
42
|
+
*/
|
|
43
|
+
private writeToBranch;
|
|
44
|
+
/**
|
|
45
|
+
* Update a file on the messages branch (for marking read)
|
|
46
|
+
*/
|
|
47
|
+
private updateOnBranch;
|
|
48
|
+
send(input: SendMessageInput): Promise<Message>;
|
|
49
|
+
inbox(agentId: string, options?: InboxOptions): Promise<Message[]>;
|
|
50
|
+
read(messageId: string): Promise<Message | null>;
|
|
51
|
+
markRead(messageId: string): Promise<boolean>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=git-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-messages.d.ts","sourceRoot":"","sources":["../../src/storage/git-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACR,qBAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACb,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,kBAAmB,YAAW,qBAAqB;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAwB;gBAErC,QAAQ,GAAE,MAAsB;IAI5C,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAYtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,YAAY;IAsE1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;YACW,aAAa;IAwF3B;;OAEG;YACW,cAAc;IAOtB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8CtE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAwChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWtD"}
|