greprag 5.40.1 → 5.41.0
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/dist/commands/email.js +158 -9
- package/dist/commands/email.js.map +1 -1
- package/dist/email-pull.d.ts +25 -3
- package/dist/email-pull.js +25 -5
- package/dist/email-pull.js.map +1 -1
- package/dist/email-send.d.ts +4 -0
- package/dist/email-send.js +2 -0
- package/dist/email-send.js.map +1 -1
- package/package.json +1 -1
- package/skill/greprag/SKILL.md +2 -2
- package/skill/greprag/docs/email.md +28 -4
package/dist/commands/email.js
CHANGED
|
@@ -114,8 +114,15 @@ const EMAIL_HELP = `greprag email — the agent's real mailbox: drain inbound, s
|
|
|
114
114
|
|
|
115
115
|
greprag email List pending front-desk email (envelope only).
|
|
116
116
|
greprag email pending Same — explicit list.
|
|
117
|
+
[--box <addr|domain|default>] Only one mailbox: a full address matches
|
|
118
|
+
exactly, a bare domain matches every box
|
|
119
|
+
on it, "default" = your greprag.com box
|
|
120
|
+
(incl. mail from before mailboxes).
|
|
121
|
+
greprag email boxes List your mailboxes with pending counts.
|
|
122
|
+
greprag email domains List your custom domains + verified status.
|
|
117
123
|
greprag email pull --id <record> Pull ONE record's attachments to disk.
|
|
118
124
|
greprag email pull --all-pending Pull EVERY pending record's attachments.
|
|
125
|
+
[--box <addr|domain|default>] Drain only one mailbox (with --all-pending).
|
|
119
126
|
[--to <dir>] Save directory. Default resolution:
|
|
120
127
|
--to > $GREPRAG_EMAIL_DIR > per-project
|
|
121
128
|
anchor (email_dir) > ~/.greprag/email/<project>
|
|
@@ -126,6 +133,8 @@ const EMAIL_HELP = `greprag email — the agent's real mailbox: drain inbound, s
|
|
|
126
133
|
[--attach <path>] Attach a local file (repeatable).
|
|
127
134
|
[--cc <addr>] [--bcc <addr>] Extra recipients (repeatable / comma-sep).
|
|
128
135
|
[--reply-to <addr>] Reply-To header.
|
|
136
|
+
[--from-name "<name>"] Display name on the From ("Travis Steward").
|
|
137
|
+
Falls back to the domain default.
|
|
129
138
|
[--from <handle>] Send AS one of YOUR OWN greprag handles
|
|
130
139
|
(default: your tenant's address). The
|
|
131
140
|
server rejects any address that isn't
|
|
@@ -133,6 +142,12 @@ const EMAIL_HELP = `greprag email — the agent's real mailbox: drain inbound, s
|
|
|
133
142
|
Send a real email FROM your travis@greprag.com address TO any recipient.
|
|
134
143
|
--body-file - reads the body from stdin.
|
|
135
144
|
|
|
145
|
+
greprag email domain add <domain> Register a custom sending domain;
|
|
146
|
+
prints the DNS records to set.
|
|
147
|
+
greprag email domain verify <domain> Check the records are live; flips the
|
|
148
|
+
domain verified when all resolve.
|
|
149
|
+
greprag email domain remove <domain> Release the domain.
|
|
150
|
+
|
|
136
151
|
Attachments (pull) are saved as <subject-slug>-<index>.<ext>. Re-pulls are
|
|
137
152
|
idempotent. Tier-3 junk images triage dropped are not fetchable.
|
|
138
153
|
|
|
@@ -150,8 +165,18 @@ async function runEmail(args) {
|
|
|
150
165
|
console.error('Not configured. Run: greprag init');
|
|
151
166
|
process.exit(1);
|
|
152
167
|
}
|
|
153
|
-
|
|
154
|
-
|
|
168
|
+
// Bare `greprag email --box x` is the pending list too — flags imply it.
|
|
169
|
+
if (!sub || sub === 'pending' || sub.startsWith('--')) {
|
|
170
|
+
const rest = sub === 'pending' ? args.slice(1) : args;
|
|
171
|
+
await listPending(cfg, getFlag(rest, '--box') || null);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (sub === 'boxes') {
|
|
175
|
+
await listBoxes(cfg);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (sub === 'domains') {
|
|
179
|
+
await listDomains(cfg);
|
|
155
180
|
return;
|
|
156
181
|
}
|
|
157
182
|
if (sub === 'pull') {
|
|
@@ -162,16 +187,25 @@ async function runEmail(args) {
|
|
|
162
187
|
await runSend(args.slice(1), cfg);
|
|
163
188
|
return;
|
|
164
189
|
}
|
|
190
|
+
if (sub === 'domain') {
|
|
191
|
+
await runDomain(args.slice(1), cfg);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
165
194
|
console.error(`Unknown "email ${sub}". Run \`greprag email --help\`.`);
|
|
166
195
|
process.exit(1);
|
|
167
196
|
}
|
|
168
|
-
async function listPending(cfg) {
|
|
169
|
-
const pending = await (0, email_pull_1.fetchPending)(cfg.apiUrl, cfg.apiKey);
|
|
197
|
+
async function listPending(cfg, box) {
|
|
198
|
+
const pending = await (0, email_pull_1.fetchPending)(cfg.apiUrl, cfg.apiKey, 50, box);
|
|
170
199
|
if (pending.length === 0) {
|
|
171
|
-
console.log('No pending email.');
|
|
200
|
+
console.log(box ? `No pending email in box "${box}".` : 'No pending email.');
|
|
172
201
|
return;
|
|
173
202
|
}
|
|
174
|
-
|
|
203
|
+
// Show the mailbox column only when it disambiguates — more than one
|
|
204
|
+
// distinct box in the listing (legacy NULL counts as its own).
|
|
205
|
+
const distinctBoxes = new Set(pending.map(p => p.mailbox || '(default)'));
|
|
206
|
+
const showBox = distinctBoxes.size > 1;
|
|
207
|
+
const scope = box ? ` in box "${box}"` : '';
|
|
208
|
+
console.log(`${pending.length} pending email message(s)${scope}:\n`);
|
|
175
209
|
for (const p of pending) {
|
|
176
210
|
const from = p.from || '(unknown sender)';
|
|
177
211
|
const subject = p.subject || '(no subject)';
|
|
@@ -179,18 +213,50 @@ async function listPending(cfg) {
|
|
|
179
213
|
? ` · ${p.attachment_count} attachment${p.attachment_count === 1 ? '' : 's'}`
|
|
180
214
|
: '';
|
|
181
215
|
const verdict = p.trust_verdict ? ` · trust: ${p.trust_verdict}` : '';
|
|
216
|
+
const boxCol = showBox ? ` · box: ${p.mailbox || '(default)'}` : '';
|
|
182
217
|
const date = new Date(p.created_at).toLocaleString();
|
|
183
218
|
console.log(`[${from}] ${date} ${p.id.slice(0, 8)}`);
|
|
184
|
-
console.log(` "${subject}"${att}${verdict}`);
|
|
219
|
+
console.log(` "${subject}"${att}${verdict}${boxCol}`);
|
|
185
220
|
}
|
|
186
221
|
console.log(`\nPull attachments: greprag email pull --all-pending (or --id <record>)`);
|
|
187
222
|
}
|
|
223
|
+
async function listBoxes(cfg) {
|
|
224
|
+
const boxes = await (0, email_pull_1.fetchBoxes)(cfg.apiUrl, cfg.apiKey);
|
|
225
|
+
if (boxes.length === 0) {
|
|
226
|
+
console.log('No pending email in any mailbox.');
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
console.log(`${boxes.length} mailbox(es) with pending email:\n`);
|
|
230
|
+
for (const b of boxes) {
|
|
231
|
+
const def = b.is_default ? ' · default' : '';
|
|
232
|
+
console.log(` ${b.mailbox} ${b.pending} pending${def}`);
|
|
233
|
+
}
|
|
234
|
+
console.log(`\nRead one box: greprag email pending --box <addr|domain|default>`);
|
|
235
|
+
}
|
|
236
|
+
async function listDomains(cfg) {
|
|
237
|
+
const domains = await (0, email_pull_1.fetchDomains)(cfg.apiUrl, cfg.apiKey);
|
|
238
|
+
if (domains.length === 0) {
|
|
239
|
+
console.log('No custom domains registered.');
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
console.log(`${domains.length} custom domain(s):\n`);
|
|
243
|
+
for (const d of domains) {
|
|
244
|
+
const status = d.verified ? 'verified' : 'pending verification';
|
|
245
|
+
const fwd = d.forward_to ? ` · mirrors to ${d.forward_to}` : '';
|
|
246
|
+
console.log(` ${d.domain} · ${status}${fwd}`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
188
249
|
async function runPull(args, cfg) {
|
|
189
250
|
const id = getFlag(args, '--id');
|
|
190
251
|
const allPending = args.includes('--all-pending');
|
|
191
252
|
const quiet = args.includes('--quiet');
|
|
253
|
+
const box = getFlag(args, '--box') || null;
|
|
192
254
|
if (!id && !allPending) {
|
|
193
|
-
console.error('Usage: greprag email pull (--id <record> | --all-pending) [--to <dir>] [--quiet]');
|
|
255
|
+
console.error('Usage: greprag email pull (--id <record> | --all-pending) [--box <addr|domain|default>] [--to <dir>] [--quiet]');
|
|
256
|
+
process.exit(1);
|
|
257
|
+
}
|
|
258
|
+
if (box && !allPending) {
|
|
259
|
+
console.error('--box composes with --all-pending (a single --id record is already one mailbox).');
|
|
194
260
|
process.exit(1);
|
|
195
261
|
}
|
|
196
262
|
const anchor = (0, project_anchor_1.readAnchor)(process.cwd());
|
|
@@ -203,7 +269,7 @@ async function runPull(args, cfg) {
|
|
|
203
269
|
let saved;
|
|
204
270
|
let recordCount;
|
|
205
271
|
if (allPending) {
|
|
206
|
-
const r = await (0, email_pull_1.pullAllPending)(cfg.apiUrl, cfg.apiKey, dir);
|
|
272
|
+
const r = await (0, email_pull_1.pullAllPending)(cfg.apiUrl, cfg.apiKey, dir, box);
|
|
207
273
|
saved = r.saved;
|
|
208
274
|
recordCount = r.records;
|
|
209
275
|
}
|
|
@@ -283,6 +349,7 @@ async function runSend(args, cfg) {
|
|
|
283
349
|
bcc: getAll(args, '--bcc'),
|
|
284
350
|
replyTo: getFlag(args, '--reply-to') || null,
|
|
285
351
|
from: getFlag(args, '--from') || null,
|
|
352
|
+
fromName: getFlag(args, '--from-name') || null,
|
|
286
353
|
attachPaths,
|
|
287
354
|
};
|
|
288
355
|
let payload;
|
|
@@ -307,4 +374,86 @@ async function runSend(args, cfg) {
|
|
|
307
374
|
process.exit(1);
|
|
308
375
|
}
|
|
309
376
|
}
|
|
377
|
+
async function domainApi(cfg, method, path, body) {
|
|
378
|
+
const res = await fetch(`${cfg.apiUrl}${path}`, {
|
|
379
|
+
method,
|
|
380
|
+
headers: {
|
|
381
|
+
Authorization: `Bearer ${cfg.apiKey}`,
|
|
382
|
+
...(body ? { 'Content-Type': 'application/json' } : {}),
|
|
383
|
+
},
|
|
384
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
385
|
+
});
|
|
386
|
+
let json = {};
|
|
387
|
+
try {
|
|
388
|
+
json = await res.json();
|
|
389
|
+
}
|
|
390
|
+
catch { /* non-JSON error body */ }
|
|
391
|
+
return { status: res.status, json };
|
|
392
|
+
}
|
|
393
|
+
/** Print DNS records as an aligned type / name / value table. */
|
|
394
|
+
function printRecordsTable(records) {
|
|
395
|
+
const rows = [
|
|
396
|
+
['TYPE', 'NAME', 'VALUE'],
|
|
397
|
+
...records.map(r => [r.type, r.name, r.value]),
|
|
398
|
+
];
|
|
399
|
+
const w0 = Math.max(...rows.map(r => r[0].length));
|
|
400
|
+
const w1 = Math.max(...rows.map(r => r[1].length));
|
|
401
|
+
for (const [t, n, v] of rows) {
|
|
402
|
+
console.log(` ${t.padEnd(w0)} ${n.padEnd(w1)} ${v}`);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
async function runDomain(args, cfg) {
|
|
406
|
+
const verb = args[0];
|
|
407
|
+
const domain = args[1];
|
|
408
|
+
if (!verb || ['--help', '-h', 'help'].includes(verb)) {
|
|
409
|
+
console.log(EMAIL_HELP);
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
if (!domain) {
|
|
413
|
+
console.error(`Usage: greprag email domain <add|verify|remove> <domain>`);
|
|
414
|
+
process.exit(1);
|
|
415
|
+
}
|
|
416
|
+
if (verb === 'add') {
|
|
417
|
+
const { status, json } = await domainApi(cfg, 'POST', '/v1/email/domains', { domain });
|
|
418
|
+
if (status === 200 || status === 201) {
|
|
419
|
+
const records = json.records || [];
|
|
420
|
+
console.log(json.existing
|
|
421
|
+
? `${domain} is already registered to you (verified: ${json.verified ? 'yes' : 'no'}).`
|
|
422
|
+
: `Registered ${domain}. Add these DNS records at your DNS host:`);
|
|
423
|
+
if (records.length > 0)
|
|
424
|
+
printRecordsTable(records);
|
|
425
|
+
console.log(`\nThen run: greprag email domain verify ${domain}`);
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
console.error(`Add failed (${status}): ${json.error || 'unknown error'}`);
|
|
429
|
+
process.exit(1);
|
|
430
|
+
}
|
|
431
|
+
if (verb === 'verify') {
|
|
432
|
+
const { status, json } = await domainApi(cfg, 'POST', `/v1/email/domains/${encodeURIComponent(domain)}/verify`);
|
|
433
|
+
if (status === 200 && json.verified) {
|
|
434
|
+
console.log(`${domain} is verified. Send with: greprag email send --from <you>@${domain} ...`);
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
if (status === 200) {
|
|
438
|
+
const missing = json.missing || [];
|
|
439
|
+
console.log(`${domain} is NOT verified yet — ${missing.length} record(s) not live:`);
|
|
440
|
+
printRecordsTable(missing);
|
|
441
|
+
console.log(`\nDNS can take a while to propagate; re-run verify after it settles.`);
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
console.error(`Verify failed (${status}): ${json.error || 'unknown error'}`);
|
|
445
|
+
process.exit(1);
|
|
446
|
+
}
|
|
447
|
+
if (verb === 'remove') {
|
|
448
|
+
const { status, json } = await domainApi(cfg, 'DELETE', `/v1/email/domains/${encodeURIComponent(domain)}`);
|
|
449
|
+
if (status === 200) {
|
|
450
|
+
console.log(`Released ${domain}.`);
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
console.error(`Remove failed (${status}): ${json.error || 'unknown error'}`);
|
|
454
|
+
process.exit(1);
|
|
455
|
+
}
|
|
456
|
+
console.error(`Unknown "email domain ${verb}". Use add | verify | remove.`);
|
|
457
|
+
process.exit(1);
|
|
458
|
+
}
|
|
310
459
|
//# sourceMappingURL=email.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/commands/email.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/commands/email.ts"],"names":[],"mappings":"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"}
|
package/dist/email-pull.d.ts
CHANGED
|
@@ -40,6 +40,9 @@ export interface PendingRow {
|
|
|
40
40
|
subject: string | null;
|
|
41
41
|
trust_verdict: string | null;
|
|
42
42
|
attachment_count: number;
|
|
43
|
+
/** The address this mail arrived on (custom-domain mailboxes). NULL on
|
|
44
|
+
* legacy rows that predate the stamp — the tenant's default box. */
|
|
45
|
+
mailbox: string | null;
|
|
43
46
|
created_at: string;
|
|
44
47
|
}
|
|
45
48
|
/** One attachment's outcome from a pull. `skipped` = already on disk. */
|
|
@@ -68,14 +71,33 @@ export declare function resolveEmailDir(opts: {
|
|
|
68
71
|
anchorDir?: string | null;
|
|
69
72
|
projectName?: string | null;
|
|
70
73
|
}): string;
|
|
71
|
-
|
|
74
|
+
/** Build the /pending URL — pure, exported for unit tests. `box` narrows to
|
|
75
|
+
* one mailbox (address), a whole domain, or the literal `default`. */
|
|
76
|
+
export declare function pendingUrl(apiUrl: string, limit: number, box?: string | null): string;
|
|
77
|
+
export declare function fetchPending(apiUrl: string, apiKey: string, limit?: number, box?: string | null): Promise<PendingRow[]>;
|
|
78
|
+
export interface BoxRow {
|
|
79
|
+
mailbox: string;
|
|
80
|
+
pending: number;
|
|
81
|
+
is_default: boolean;
|
|
82
|
+
}
|
|
83
|
+
/** GET /v1/email/boxes — distinct mailboxes with pending counts. */
|
|
84
|
+
export declare function fetchBoxes(apiUrl: string, apiKey: string): Promise<BoxRow[]>;
|
|
85
|
+
export interface DomainRow {
|
|
86
|
+
domain: string;
|
|
87
|
+
verified: boolean;
|
|
88
|
+
forward_to: string | null;
|
|
89
|
+
created_at: string;
|
|
90
|
+
}
|
|
91
|
+
/** GET /v1/email/domains — the tenant's custom domains + verified status. */
|
|
92
|
+
export declare function fetchDomains(apiUrl: string, apiKey: string): Promise<DomainRow[]>;
|
|
72
93
|
export declare function fetchManifest(apiUrl: string, apiKey: string, recordId: string): Promise<RecordManifest>;
|
|
73
94
|
/** Pull one record's attachments into `dir`. Idempotent: already-saved
|
|
74
95
|
* attachments are reported `skipped`, never re-downloaded. Non-downloadable
|
|
75
96
|
* (dropped / no original) attachments are omitted from the result. */
|
|
76
97
|
export declare function pullRecord(apiUrl: string, apiKey: string, recordId: string, dir: string): Promise<SavedFile[]>;
|
|
77
|
-
/** Pull every pending record that carries attachments
|
|
78
|
-
|
|
98
|
+
/** Pull every pending record that carries attachments — optionally only one
|
|
99
|
+
* mailbox/domain (`box`, same grammar as fetchPending). */
|
|
100
|
+
export declare function pullAllPending(apiUrl: string, apiKey: string, dir: string, box?: string | null): Promise<{
|
|
79
101
|
records: number;
|
|
80
102
|
saved: SavedFile[];
|
|
81
103
|
}>;
|
package/dist/email-pull.js
CHANGED
|
@@ -50,7 +50,10 @@ exports.slugifySubject = slugifySubject;
|
|
|
50
50
|
exports.attachmentFilename = attachmentFilename;
|
|
51
51
|
exports.shouldPull = shouldPull;
|
|
52
52
|
exports.resolveEmailDir = resolveEmailDir;
|
|
53
|
+
exports.pendingUrl = pendingUrl;
|
|
53
54
|
exports.fetchPending = fetchPending;
|
|
55
|
+
exports.fetchBoxes = fetchBoxes;
|
|
56
|
+
exports.fetchDomains = fetchDomains;
|
|
54
57
|
exports.fetchManifest = fetchManifest;
|
|
55
58
|
exports.pullRecord = pullRecord;
|
|
56
59
|
exports.pullAllPending = pullAllPending;
|
|
@@ -110,10 +113,26 @@ async function getJson(url, apiKey) {
|
|
|
110
113
|
function base(apiUrl) {
|
|
111
114
|
return apiUrl.replace(/\/+$/, '');
|
|
112
115
|
}
|
|
113
|
-
|
|
114
|
-
|
|
116
|
+
/** Build the /pending URL — pure, exported for unit tests. `box` narrows to
|
|
117
|
+
* one mailbox (address), a whole domain, or the literal `default`. */
|
|
118
|
+
function pendingUrl(apiUrl, limit, box) {
|
|
119
|
+
const boxParam = box && box.trim() ? `&box=${encodeURIComponent(box.trim())}` : '';
|
|
120
|
+
return `${base(apiUrl)}/v1/email/pending?limit=${limit}${boxParam}`;
|
|
121
|
+
}
|
|
122
|
+
async function fetchPending(apiUrl, apiKey, limit = 50, box) {
|
|
123
|
+
const data = await getJson(pendingUrl(apiUrl, limit, box), apiKey);
|
|
115
124
|
return data.pending || [];
|
|
116
125
|
}
|
|
126
|
+
/** GET /v1/email/boxes — distinct mailboxes with pending counts. */
|
|
127
|
+
async function fetchBoxes(apiUrl, apiKey) {
|
|
128
|
+
const data = await getJson(`${base(apiUrl)}/v1/email/boxes`, apiKey);
|
|
129
|
+
return data.boxes || [];
|
|
130
|
+
}
|
|
131
|
+
/** GET /v1/email/domains — the tenant's custom domains + verified status. */
|
|
132
|
+
async function fetchDomains(apiUrl, apiKey) {
|
|
133
|
+
const data = await getJson(`${base(apiUrl)}/v1/email/domains`, apiKey);
|
|
134
|
+
return data.domains || [];
|
|
135
|
+
}
|
|
117
136
|
async function fetchManifest(apiUrl, apiKey, recordId) {
|
|
118
137
|
const data = await getJson(`${base(apiUrl)}/v1/email/${encodeURIComponent(recordId)}/manifest`, apiKey);
|
|
119
138
|
return { id: data.id, subject: data.subject ?? null, attachments: data.attachments || [] };
|
|
@@ -176,9 +195,10 @@ async function pullRecord(apiUrl, apiKey, recordId, dir) {
|
|
|
176
195
|
}
|
|
177
196
|
return out;
|
|
178
197
|
}
|
|
179
|
-
/** Pull every pending record that carries attachments
|
|
180
|
-
|
|
181
|
-
|
|
198
|
+
/** Pull every pending record that carries attachments — optionally only one
|
|
199
|
+
* mailbox/domain (`box`, same grammar as fetchPending). */
|
|
200
|
+
async function pullAllPending(apiUrl, apiKey, dir, box) {
|
|
201
|
+
const pending = (await fetchPending(apiUrl, apiKey, 50, box)).filter(r => r.attachment_count > 0);
|
|
182
202
|
const saved = [];
|
|
183
203
|
for (const row of pending) {
|
|
184
204
|
try {
|
package/dist/email-pull.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-pull.js","sourceRoot":"","sources":["../src/email-pull.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"email-pull.js","sourceRoot":"","sources":["../src/email-pull.ts"],"names":[],"mappings":"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"}
|
package/dist/email-send.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export interface SendPayload {
|
|
|
25
25
|
bcc?: string[];
|
|
26
26
|
reply_to?: string;
|
|
27
27
|
from?: string;
|
|
28
|
+
from_name?: string;
|
|
28
29
|
attachments?: SendAttachmentInput[];
|
|
29
30
|
}
|
|
30
31
|
export interface SendOptions {
|
|
@@ -36,6 +37,9 @@ export interface SendOptions {
|
|
|
36
37
|
bcc?: string[];
|
|
37
38
|
replyTo?: string | null;
|
|
38
39
|
from?: string | null;
|
|
40
|
+
/** Display name for the From header ("Travis Steward"). Overrides the
|
|
41
|
+
* domain default; null falls back to it server-side. */
|
|
42
|
+
fromName?: string | null;
|
|
39
43
|
/** Local file paths to attach — read + base64'd by buildSendPayload. */
|
|
40
44
|
attachPaths?: string[];
|
|
41
45
|
}
|
package/dist/email-send.js
CHANGED
|
@@ -98,6 +98,8 @@ function buildSendPayload(opts) {
|
|
|
98
98
|
payload.reply_to = opts.replyTo;
|
|
99
99
|
if (opts.from)
|
|
100
100
|
payload.from = opts.from;
|
|
101
|
+
if (opts.fromName)
|
|
102
|
+
payload.from_name = opts.fromName;
|
|
101
103
|
const atts = (opts.attachPaths || []).map(fileToAttachment);
|
|
102
104
|
if (atts.length)
|
|
103
105
|
payload.attachments = atts;
|
package/dist/email-send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-send.js","sourceRoot":"","sources":["../src/email-send.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"email-send.js","sourceRoot":"","sources":["../src/email-send.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skill/greprag/SKILL.md
CHANGED
|
@@ -127,7 +127,7 @@ Aliases (silent back-compat): `greprag memory briefing` → `recap` (renamed v5.
|
|
|
127
127
|
|
|
128
128
|
**ABOUT TO `greprag send` TO A `@gmail.com` / `@anthropic.com` / REAL EMAIL ADDRESS? STOP — for `inbox`/`send` (internal cross-session messaging), `users.email` IS NEVER A ROUTING ADDRESS.** Use the numeric handle (`1834729@greprag.com`) or claimed vanity alias (`travis@greprag.com`). If you don't know the recipient's handle, ASK — don't guess from their email. adr: adr/numeric-handles.md. Full grammar: `docs/inbox.md § address`.
|
|
129
129
|
|
|
130
|
-
**BUT IF THE USER SAYS "EMAIL X" / "SEND A REAL EMAIL" — USE `greprag email send`, NOT `greprag send`.** `greprag email send --to <real-addr> --from <
|
|
130
|
+
**BUT IF THE USER SAYS "EMAIL X" / "SEND A REAL EMAIL" — USE `greprag email send`, NOT `greprag send`.** `greprag email send --to <real-addr> --from <addr> --subject "s" (--body "t" | --body-file <f|->)` is the agent's REAL outbound SMTP mailbox — it delivers to actual inboxes (gmail, etc.), with `--attach`/`--cc`/`--bcc`/`--html-file`. `--from` accepts your greprag handle OR any address on a custom domain your tenant has verified (`greprag email domains`). `greprag send` is internal-only and never leaves greprag. The two read identically — this collision is a known trap. Inbound is SEGREGATED INTO MAILBOXES: `email boxes` lists them, `email pending --box <addr|domain|default>` reads one; reply FROM the box the mail arrived in. Attach a domain: `email domain add/verify`. Full reference: `docs/email.md`.
|
|
131
131
|
|
|
132
132
|
## Reference index
|
|
133
133
|
|
|
@@ -135,7 +135,7 @@ Aliases (silent back-compat): `greprag memory briefing` → `recap` (renamed v5.
|
|
|
135
135
|
- `docs/platforms.md` — exact platform paths for Claude Code · Codex · OpenCode
|
|
136
136
|
- `docs/per-project-flags.md` — flip `memory_capture` / `session_start_recap` / `inbox_notify`
|
|
137
137
|
- `docs/inbox.md` — `greprag send`, `greprag inbox`, address grammar, retract (internal messaging)
|
|
138
|
-
- `docs/email.md` — `greprag email send`/`pending`/`pull` — REAL
|
|
138
|
+
- `docs/email.md` — `greprag email send`/`pending`/`pull`/`boxes`/`domain` — REAL SMTP: send-as custom domains, segregated mailboxes (distinct from `send`)
|
|
139
139
|
- `docs/inbox-watch.md` — SSE watcher patterns, liveness model, parent-side / post-send patterns
|
|
140
140
|
- `docs/doctor.md` — `greprag doctor` (identity drift, orphan consolidation)
|
|
141
141
|
- `docs/corpus.md` — upload + search arbitrary text (books, codebases, voice samples)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# greprag email — the agent's real SMTP mailbox
|
|
2
2
|
|
|
3
|
-
`greprag email` is **real outbound + inbound email** from your greprag address (e.g. `travis@greprag.com`). This is distinct from `greprag send` / `greprag inbox`, which is internal cross-session messaging that never leaves greprag.
|
|
3
|
+
`greprag email` is **real outbound + inbound email** from your greprag address (e.g. `travis@greprag.com`) — and, once attached, from **your own custom domain** (e.g. `travis@suppliersift.com`). This is distinct from `greprag send` / `greprag inbox`, which is internal cross-session messaging that never leaves greprag.
|
|
4
4
|
|
|
5
5
|
**The trap:** "email me" and "send X" sound identical. Only `greprag email send` produces an actual email in a real inbox. `greprag send --to travis@greprag.com` lands on a greprag front desk, NOT in gmail.
|
|
6
6
|
|
|
@@ -14,7 +14,8 @@ greprag email send --to <real-addr> \
|
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
Flags:
|
|
17
|
-
- `--from <
|
|
17
|
+
- `--from <addr>` — send AS one of YOUR OWN addresses: a greprag handle (`<handle>@greprag.com`) or **any local-part on a custom domain your tenant has verified** (`anyone@yourdomain.com`). The server rejects any address that isn't yours — you cannot forge a From. Defaults to your tenant address if omitted.
|
|
18
|
+
- `--from-name "<name>"` — display name on the From header (`Travis Steward <travis@suppliersift.com>`). A bare address reads as machine-sent; a name reads as a person. Falls back to the domain's default display name (set per custom domain) when omitted.
|
|
18
19
|
- `--body-file <f>` — read body from a file; `--body-file -` reads from stdin (best for long/multiline bodies — avoids shell-quoting pain).
|
|
19
20
|
- `--html-file <f>` — HTML alternative body.
|
|
20
21
|
- `--attach <path>` — attach a local file (repeatable). Gmail's combined limit is 25 MB; larger → Drive link.
|
|
@@ -23,6 +24,8 @@ Flags:
|
|
|
23
24
|
|
|
24
25
|
Returns a `message-id` and writes an egress audit `.eml` on success.
|
|
25
26
|
|
|
27
|
+
**Body rendering:** the body is plain text or lightweight markdown. When you don't pass `--html-file`, an HTML version is auto-rendered so the email shows real paragraph spacing (blank line = new paragraph, single newline = line break) plus `**bold**`, `*italic*`, `[text](url)`, and `-`/`1.` lists. Write the body the way it should read — blank lines BETWEEN paragraphs — and it renders correctly. Don't cram everything line-by-line.
|
|
28
|
+
|
|
26
29
|
### Long body via heredoc (the reliable pattern)
|
|
27
30
|
|
|
28
31
|
```bash
|
|
@@ -34,13 +37,34 @@ greprag email send --to someone@gmail.com --from travis@greprag.com \
|
|
|
34
37
|
--subject "Subject" --body-file /tmp/body.txt
|
|
35
38
|
```
|
|
36
39
|
|
|
37
|
-
## Inbound
|
|
40
|
+
## Inbound + mailboxes (segregated boxes, one front desk)
|
|
41
|
+
|
|
42
|
+
Every inbound email carries a **mailbox label** — the address it was FOR. Mail to your greprag handle and mail to each custom-domain address stay segregated as separate boxes you read independently. A box is a filter, not a separate inbox: trust gate, attachments, and pull all work identically in every box.
|
|
38
43
|
|
|
39
44
|
- `greprag email` or `greprag email pending` — list pending front-desk email (envelope only).
|
|
45
|
+
- `greprag email boxes` — list mailboxes that have pending email, with counts.
|
|
46
|
+
- `greprag email pending --box <addr|domain|default>` — read ONE box (exact address, whole domain, or `default` for your greprag.com box).
|
|
40
47
|
- `greprag email pull --id <record>` — pull ONE record's attachments to disk.
|
|
41
|
-
- `greprag email pull --all-pending [--to <dir>]` — pull
|
|
48
|
+
- `greprag email pull --all-pending [--box <b>] [--to <dir>]` — pull pending attachments (optionally box-scoped). Save dir resolves: `--to` > `$GREPRAG_EMAIL_DIR` > per-project anchor `email_dir` > `~/.greprag/email/<project>`.
|
|
42
49
|
- Auto-save: set `email_autosave=true` in `.greprag/project.json` (optionally `email_dir`) — the per-turn mail hook auto-pulls new attachments each turn.
|
|
43
50
|
|
|
51
|
+
**Reply discipline:** when replying to mail that arrived in a custom-domain box, send `--from` that same box address — the counterparty wrote to `you@yourdomain.com` and the reply should come from it, not your greprag handle.
|
|
52
|
+
|
|
53
|
+
## Custom domains (send + receive as your own domain)
|
|
54
|
+
|
|
55
|
+
Attach a domain you own; once verified, you can send as ANY address on it and inbound mail to it lands in its own box.
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
greprag email domain add <domain> → registers; prints the DNS records to set at your DNS host
|
|
59
|
+
greprag email domain verify <domain> → checks the records are live (DNS fact, not an assertion); flips the domain active
|
|
60
|
+
greprag email domain remove <domain> → releases it
|
|
61
|
+
greprag email domains → list your domains + verified status
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
- A domain belongs to exactly ONE tenant — verification is what grants rights (send-as + box labels). A registered-but-unverified domain confers nothing.
|
|
65
|
+
- **Inbound ingress is forwarding-first:** at your email provider, forward `you@yourdomain.com` → your greprag address (`<handle>@greprag.com`). The worker recovers the original address from the message and stamps the box — only for domains you've verified, so labels can't be forged.
|
|
66
|
+
- Unverified/foreign domains in a forwarded To never block delivery — the mail still lands on your front desk, just without the custom box label.
|
|
67
|
+
|
|
44
68
|
## Sending rule
|
|
45
69
|
|
|
46
70
|
Sending email is an outward-facing action — confirm with the user before sending unless they've explicitly asked for it in this turn. (Here they asked → send.)
|