humanish 0.93.1 → 0.95.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/README.md +26 -3
- package/dist/automatic-analysis-completion.d.ts +1 -1
- package/dist/automatic-analysis-completion.js +2 -2
- package/dist/automatic-analysis-completion.js.map +1 -1
- package/dist/automatic-analysis-config.d.ts +3 -0
- package/dist/automatic-analysis-config.js +6 -3
- package/dist/automatic-analysis-config.js.map +1 -1
- package/dist/automatic-study-analysis.d.ts +2 -0
- package/dist/automatic-study-analysis.js +8 -2
- package/dist/automatic-study-analysis.js.map +1 -1
- package/dist/comms-catch-host.js +33 -4
- package/dist/comms-catch-host.js.map +1 -1
- package/dist/comms-connections.d.ts +50 -0
- package/dist/comms-connections.js +123 -0
- package/dist/comms-connections.js.map +1 -0
- package/dist/comms-email-catch.d.ts +2 -1
- package/dist/comms-email-catch.js +5 -2
- package/dist/comms-email-catch.js.map +1 -1
- package/dist/comms-fake-inbox.d.ts +1 -1
- package/dist/comms-fake-inbox.js +15 -12
- package/dist/comms-fake-inbox.js.map +1 -1
- package/dist/comms-images.d.ts +7 -0
- package/dist/comms-images.js +39 -0
- package/dist/comms-images.js.map +1 -0
- package/dist/comms-inbox.d.ts +7 -1
- package/dist/comms-inbox.js +120 -21
- package/dist/comms-inbox.js.map +1 -1
- package/dist/comms-sandbox-catch.d.ts +1 -1
- package/dist/comms-sandbox-catch.js +60 -11
- package/dist/comms-sandbox-catch.js.map +1 -1
- package/dist/comms-types.d.ts +9 -0
- package/dist/concurrent-shared-world-lab.js +6 -3
- package/dist/concurrent-shared-world-lab.js.map +1 -1
- package/dist/cua-actor-lab.js +25 -12
- package/dist/cua-actor-lab.js.map +1 -1
- package/dist/doctor-lab.d.ts +23 -0
- package/dist/doctor-lab.js +70 -0
- package/dist/doctor-lab.js.map +1 -0
- package/dist/e2b-terminal-lab.js +5 -2
- package/dist/e2b-terminal-lab.js.map +1 -1
- package/dist/export.js +35 -18
- package/dist/export.js.map +1 -1
- package/dist/first-run-path.js +5 -4
- package/dist/first-run-path.js.map +1 -1
- package/dist/init.js +5 -7
- package/dist/init.js.map +1 -1
- package/dist/key-resolution.d.ts +1 -1
- package/dist/key-resolution.js +6 -4
- package/dist/key-resolution.js.map +1 -1
- package/dist/lab-config.d.ts +8 -3
- package/dist/lab-config.js +36 -8
- package/dist/lab-config.js.map +1 -1
- package/dist/lab-preflight.js +1 -1
- package/dist/lab-preflight.js.map +1 -1
- package/dist/lab-summary.d.ts +2 -2
- package/dist/lab-summary.js +11 -7
- package/dist/lab-summary.js.map +1 -1
- package/dist/local-agent-cli.d.ts +7 -3
- package/dist/local-agent-cli.js +75 -16
- package/dist/local-agent-cli.js.map +1 -1
- package/dist/observer-app.html +6 -6
- package/dist/observer.d.ts +6 -0
- package/dist/observer.js +11 -2
- package/dist/observer.js.map +1 -1
- package/dist/program.d.ts +2 -0
- package/dist/program.js +148 -82
- package/dist/program.js.map +1 -1
- package/dist/run.d.ts +6 -1
- package/dist/run.js +33 -19
- package/dist/run.js.map +1 -1
- package/dist/scripted-browser-lab.js +5 -2
- package/dist/scripted-browser-lab.js.map +1 -1
- package/dist/secret-prompt.d.ts +2 -0
- package/dist/secret-prompt.js +36 -0
- package/dist/secret-prompt.js.map +1 -0
- package/dist/shared-world-lab.js +5 -2
- package/dist/shared-world-lab.js.map +1 -1
- package/dist/study-analysis-engine.d.ts +5 -0
- package/dist/study-analysis-engine.js +11 -2
- package/dist/study-analysis-engine.js.map +1 -1
- package/dist/study-analysis-provider.d.ts +1 -1
- package/dist/study-analysis-provider.js +33 -3
- package/dist/study-analysis-provider.js.map +1 -1
- package/dist/study-analysis-service.d.ts +2 -0
- package/dist/study-analysis-service.js +4 -2
- package/dist/study-analysis-service.js.map +1 -1
- package/dist/tui-app.js +121 -121
- package/dist/tui-contract.d.ts +13 -1
- package/dist/tui-contract.js.map +1 -1
- package/docs/architecture/comms-inbox.md +78 -0
- package/docs/contracts/schemas.md +33 -5
- package/docs/contracts/study-analysis.md +11 -1
- package/docs/goals/current.md +6 -6
- package/docs/product/automatic-analysis.md +13 -4
- package/docs/ramp/README.md +14 -3
- package/docs/release/0.94.0-reliability.md +48 -0
- package/docs/release/0.95.0-connections-setup.md +38 -0
- package/package.json +6 -2
- package/skills/humanish/SKILL.md +28 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comms-email-catch.js","sourceRoot":"","sources":["../src/comms-email-catch.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,sGAAsG;AACtG,oGAAoG;AACpG,2FAA2F;AAC3F,8FAA8F;AAC9F,qGAAqG;AACrG,mGAAmG;AACnG,gFAAgF;AAChF,EAAE;AACF,2EAA2E;AAE3E,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"comms-email-catch.js","sourceRoot":"","sources":["../src/comms-email-catch.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export declare class FakeInbox implements CommsChannel {
|
|
|
30
30
|
/**
|
|
31
31
|
* Provision an inbox for `actorId` at an EXPLICIT address (a lab-declared recipient), so the
|
|
32
32
|
* app-under-test's send to that literal address resolves in `deliverRaw` (which drops recipients
|
|
33
|
-
* with no provisioned inbox).
|
|
33
|
+
* with no provisioned inbox). Declaring the same address intentionally shares its inbox; if `actorId` already held
|
|
34
34
|
* a different auto-generated address, the declared address supersedes it (the lab's declaration
|
|
35
35
|
* wins). Idempotent: re-declaring the same address returns the existing inbox without clearing it.
|
|
36
36
|
*/
|
package/dist/comms-fake-inbox.js
CHANGED
|
@@ -95,14 +95,16 @@ export class FakeInbox {
|
|
|
95
95
|
const existing = this.byActor.get(actorId);
|
|
96
96
|
if (existing)
|
|
97
97
|
return existing;
|
|
98
|
-
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
let value = this.channel === "sms" ? smsAddressFor(actorId) : `${sanitizeLocalPart(actorId)}@${this.domain}`;
|
|
99
|
+
// Minted identities must stay distinct. Explicit duplicate addresses below
|
|
100
|
+
// are the intentional shared-mailbox path.
|
|
101
|
+
if (this.byValue.has(value.toLowerCase())) {
|
|
102
|
+
if (this.channel === "sms")
|
|
103
|
+
throw new Error("Generated inbox identity collision; declare distinct addresses");
|
|
104
|
+
let attempt = 0;
|
|
105
|
+
do {
|
|
106
|
+
value = `${sanitizeLocalPart(actorId)}-${digestText(`${actorId}:${attempt++}`, 16)}@${this.domain}`;
|
|
107
|
+
} while (this.byValue.has(value.toLowerCase()));
|
|
106
108
|
}
|
|
107
109
|
const address = { channel: this.channel, actorId, value, digest: digestText(value, 16) };
|
|
108
110
|
this.byActor.set(actorId, address);
|
|
@@ -113,7 +115,7 @@ export class FakeInbox {
|
|
|
113
115
|
/**
|
|
114
116
|
* Provision an inbox for `actorId` at an EXPLICIT address (a lab-declared recipient), so the
|
|
115
117
|
* app-under-test's send to that literal address resolves in `deliverRaw` (which drops recipients
|
|
116
|
-
* with no provisioned inbox).
|
|
118
|
+
* with no provisioned inbox). Declaring the same address intentionally shares its inbox; if `actorId` already held
|
|
117
119
|
* a different auto-generated address, the declared address supersedes it (the lab's declaration
|
|
118
120
|
* wins). Idempotent: re-declaring the same address returns the existing inbox without clearing it.
|
|
119
121
|
*/
|
|
@@ -131,7 +133,7 @@ export class FakeInbox {
|
|
|
131
133
|
this.queues.set(key, []);
|
|
132
134
|
return address;
|
|
133
135
|
}
|
|
134
|
-
route(from, to, subject, body) {
|
|
136
|
+
route(from, to, subject, body, inlineImages) {
|
|
135
137
|
const at = this.clock();
|
|
136
138
|
const message = {
|
|
137
139
|
id: `comms-${(this.counter += 1).toString().padStart(4, "0")}`,
|
|
@@ -140,6 +142,7 @@ export class FakeInbox {
|
|
|
140
142
|
to,
|
|
141
143
|
...(subject === undefined ? {} : { subject }),
|
|
142
144
|
body,
|
|
145
|
+
...(inlineImages?.length ? { inlineImages } : {}),
|
|
143
146
|
links: extractLinks(body),
|
|
144
147
|
codes: extractOtpCodes(body),
|
|
145
148
|
sentAt: at,
|
|
@@ -153,7 +156,7 @@ export class FakeInbox {
|
|
|
153
156
|
return message;
|
|
154
157
|
}
|
|
155
158
|
async send(message) {
|
|
156
|
-
return this.route(message.from.value, message.to, message.subject, message.body);
|
|
159
|
+
return this.route(message.from.value, message.to, message.subject, message.body, message.inlineImages);
|
|
157
160
|
}
|
|
158
161
|
async deliverRaw(inbound) {
|
|
159
162
|
const to = (inbound.to ?? [])
|
|
@@ -161,7 +164,7 @@ export class FakeInbox {
|
|
|
161
164
|
.filter((address) => address !== undefined);
|
|
162
165
|
if (to.length === 0)
|
|
163
166
|
return []; // no provisioned inbox matched → nothing to deliver to
|
|
164
|
-
return [this.route(inbound.from, to, inbound.subject, inbound.body)];
|
|
167
|
+
return [this.route(inbound.from, to, inbound.subject, inbound.body, inbound.inlineImages)];
|
|
165
168
|
}
|
|
166
169
|
async poll(address, since = 0) {
|
|
167
170
|
const queue = this.queues.get(address.value.toLowerCase()) ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comms-fake-inbox.js","sourceRoot":"","sources":["../src/comms-fake-inbox.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,sGAAsG;AACtG,oGAAoG;AACpG,iBAAiB;AACjB,0GAA0G;AAC1G,iGAAiG;AACjG,sGAAsG;AAEtG,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"comms-fake-inbox.js","sourceRoot":"","sources":["../src/comms-fake-inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CommsInlineImage } from "./comms-types.js";
|
|
2
|
+
export declare const MAX_INLINE_IMAGE_BYTES: number;
|
|
3
|
+
export declare const MAX_INLINE_IMAGES_BYTES: number;
|
|
4
|
+
export declare const MAX_INLINE_IMAGES = 12;
|
|
5
|
+
/** Captured bytes only. Never dereference attachment URLs or local paths. */
|
|
6
|
+
export declare function inlineImageData(image: CommsInlineImage): string | undefined;
|
|
7
|
+
export declare function capturedInlineImages(value: unknown): CommsInlineImage[];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const MAX_INLINE_IMAGE_BYTES = 1024 * 1024;
|
|
2
|
+
export const MAX_INLINE_IMAGES_BYTES = 2 * 1024 * 1024;
|
|
3
|
+
export const MAX_INLINE_IMAGES = 12;
|
|
4
|
+
/** Captured bytes only. Never dereference attachment URLs or local paths. */
|
|
5
|
+
export function inlineImageData(image) {
|
|
6
|
+
const { contentType, base64 } = image;
|
|
7
|
+
if (base64.length > Math.ceil(MAX_INLINE_IMAGE_BYTES / 3) * 4 || base64.length % 4 !== 0 || !/^[A-Za-z0-9+/]+={0,2}$/.test(base64))
|
|
8
|
+
return undefined;
|
|
9
|
+
const bytes = Buffer.from(base64, "base64");
|
|
10
|
+
if (!bytes.length || bytes.length > MAX_INLINE_IMAGE_BYTES || bytes.toString("base64") !== base64)
|
|
11
|
+
return undefined;
|
|
12
|
+
const valid = contentType === "image/png" ? bytes.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]))
|
|
13
|
+
: contentType === "image/jpeg" ? bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255
|
|
14
|
+
: contentType === "image/gif" ? /^GIF8[79]a$/.test(bytes.subarray(0, 6).toString("ascii"))
|
|
15
|
+
: contentType === "image/webp" && bytes.subarray(0, 4).toString("ascii") === "RIFF" && bytes.subarray(8, 12).toString("ascii") === "WEBP";
|
|
16
|
+
return valid ? `data:${contentType};base64,${base64}` : undefined;
|
|
17
|
+
}
|
|
18
|
+
export function capturedInlineImages(value) {
|
|
19
|
+
if (!Array.isArray(value))
|
|
20
|
+
return [];
|
|
21
|
+
const images = [];
|
|
22
|
+
let total = 0;
|
|
23
|
+
for (const item of value.slice(0, MAX_INLINE_IMAGES)) {
|
|
24
|
+
if (typeof item !== "object" || item === null)
|
|
25
|
+
continue;
|
|
26
|
+
const raw = item;
|
|
27
|
+
if (typeof raw.contentId !== "string" || !raw.contentId.trim() || raw.contentId.length > 256 || typeof raw.contentType !== "string" || typeof raw.base64 !== "string")
|
|
28
|
+
continue;
|
|
29
|
+
const image = { contentId: raw.contentId.trim().replace(/^<|>$/g, ""), contentType: raw.contentType.toLowerCase(), base64: raw.base64 };
|
|
30
|
+
if (!inlineImageData(image))
|
|
31
|
+
continue;
|
|
32
|
+
total += Buffer.byteLength(image.base64, "base64");
|
|
33
|
+
if (total > MAX_INLINE_IMAGES_BYTES)
|
|
34
|
+
break;
|
|
35
|
+
images.push(image);
|
|
36
|
+
}
|
|
37
|
+
return images;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=comms-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comms-images.js","sourceRoot":"","sources":["../src/comms-images.ts"],"names":[],"mappings":"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"}
|
package/dist/comms-inbox.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ import type { CommsMessage } from "./comms-types.js";
|
|
|
4
4
|
export type OriginMap = Array<[string, string]>;
|
|
5
5
|
export interface InboxRenderOptions {
|
|
6
6
|
originMap?: OriginMap;
|
|
7
|
+
/** Runtime recipient for this view; omission deliberately renders the operator's shared inbox. */
|
|
8
|
+
recipient?: string;
|
|
9
|
+
/** Declared addresses also receive empty scopes before the first delivery. */
|
|
10
|
+
recipients?: string[];
|
|
7
11
|
}
|
|
8
12
|
/** One served file: a route path (no leading slash) + its body + content type. The host writes each to
|
|
9
13
|
* `<servedDir>/<path>`; the catch serves `<servedDir>/<pathname>` verbatim. */
|
|
@@ -12,6 +16,8 @@ export interface InboxSurfaceFile {
|
|
|
12
16
|
contentType: "text/html; charset=utf-8" | "application/json; charset=utf-8";
|
|
13
17
|
body: string;
|
|
14
18
|
}
|
|
19
|
+
export declare function inboxRecipientScope(address: string): string;
|
|
20
|
+
export declare function recipientInboxUrl(inboxUrl: string, address: string): string;
|
|
15
21
|
/** Rewrite a URL's origin per the map (origins are exact strings the harness minted). Leaves
|
|
16
22
|
* non-matching URLs — including sibling origins sharing a prefix — untouched. */
|
|
17
23
|
export declare function rewriteOrigin(url: string, originMap?: OriginMap): string;
|
|
@@ -39,7 +45,7 @@ export declare function pickVerifyUrl(links: string[]): string | undefined;
|
|
|
39
45
|
* Set BOTH as a page() meta (covers direct render use) and as a catch response header (covers serving). */
|
|
40
46
|
export declare const INBOX_SURFACE_CSP = "default-src 'self'; script-src 'none'; object-src 'none'; base-uri 'none'; frame-src 'none'; img-src * data:; style-src 'unsafe-inline'; font-src * data:";
|
|
41
47
|
/** The inbox LIST page (semantic table; each row links to its message). */
|
|
42
|
-
export declare function renderInboxList(messages: CommsMessage[]): string;
|
|
48
|
+
export declare function renderInboxList(messages: CommsMessage[], options?: InboxRenderOptions): string;
|
|
43
49
|
/** One message, DEFAULT view: the app's real captured email in a minimal high-contrast shell. */
|
|
44
50
|
export declare function renderInboxMessage(message: CommsMessage, options?: InboxRenderOptions): string;
|
|
45
51
|
/** One message, SYNTHESIZED view: a guaranteed-legible reading pane (big verify button + big OTP). The
|
package/dist/comms-inbox.js
CHANGED
|
@@ -16,6 +16,22 @@
|
|
|
16
16
|
// drain/route path produces (links + codes already extracted), and emits the route→content files the
|
|
17
17
|
// in-sandbox catch serves statically. Raw content here is runtime-only (rendered in-sandbox, served to
|
|
18
18
|
// the in-sandbox browser); it is never persisted — the persisted evidence stays digest-only.
|
|
19
|
+
import { createHash } from "node:crypto";
|
|
20
|
+
import { capturedInlineImages, inlineImageData } from "./comms-images.js";
|
|
21
|
+
export function inboxRecipientScope(address) {
|
|
22
|
+
const normalized = address.trim().toLowerCase();
|
|
23
|
+
if (!normalized)
|
|
24
|
+
throw new Error("Inbox recipient must not be empty");
|
|
25
|
+
return createHash("sha256").update(normalized).digest("hex");
|
|
26
|
+
}
|
|
27
|
+
export function recipientInboxUrl(inboxUrl, address) {
|
|
28
|
+
const url = new URL(inboxUrl);
|
|
29
|
+
url.pathname = `${url.pathname.replace(/\/$/, "")}/for/${inboxRecipientScope(address)}`;
|
|
30
|
+
return url.toString();
|
|
31
|
+
}
|
|
32
|
+
function inboxPath(options) {
|
|
33
|
+
return options.recipient === undefined ? "/inbox" : `/inbox/for/${inboxRecipientScope(options.recipient)}`;
|
|
34
|
+
}
|
|
19
35
|
const VERIFY_HINT = /verify|confirm|activate|validate|magic|token|account|sign[\s-]?up/i;
|
|
20
36
|
/** Replace `from` with `to` everywhere it ends on an ORIGIN BOUNDARY — end-of-string or one of the URL
|
|
21
37
|
* delimiters `/ ? # " ' <space> > \`. A bare prefix replace would mangle a sibling origin that shares
|
|
@@ -132,19 +148,88 @@ function neutralizeEmailHtml(html, originMap) {
|
|
|
132
148
|
out = replaceOriginBoundary(out, from, to);
|
|
133
149
|
return out;
|
|
134
150
|
}
|
|
151
|
+
function decodeAttribute(value) {
|
|
152
|
+
return value.replace(/&(#x[0-9a-f]+|#[0-9]+|amp|quot|apos|lt|gt|colon);?/gi, (match, entity) => {
|
|
153
|
+
const named = { amp: "&", quot: '"', apos: "'", lt: "<", gt: ">", colon: ":" };
|
|
154
|
+
if (!entity.startsWith("#"))
|
|
155
|
+
return named[entity.toLowerCase()] ?? match;
|
|
156
|
+
const point = entity[1]?.toLowerCase() === "x" ? parseInt(entity.slice(2), 16) : Number(entity.slice(1));
|
|
157
|
+
return point > 0 && point <= 0x10ffff ? String.fromCodePoint(point) : "�";
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
function renderEmailImages(html, message, originMap) {
|
|
161
|
+
const images = capturedInlineImages(message.inlineImages);
|
|
162
|
+
// A source/srcset can otherwise override the validated primary image source.
|
|
163
|
+
return html.replace(/<source\b(?:[^"'<>]|"[^"]*"|'[^']*')*>/gi, "")
|
|
164
|
+
.replace(/<img\b(?:[^"'<>]|"[^"]*"|'[^']*')*>/gi, (tag) => {
|
|
165
|
+
const attributes = new Map();
|
|
166
|
+
const matcher = /([^\s/=]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>]+))/g;
|
|
167
|
+
for (const match of tag.slice(4, -1).matchAll(matcher)) {
|
|
168
|
+
const name = match[1].toLowerCase();
|
|
169
|
+
if (!attributes.has(name))
|
|
170
|
+
attributes.set(name, decodeAttribute(match[2] ?? match[3] ?? match[4] ?? ""));
|
|
171
|
+
}
|
|
172
|
+
const source = (attributes.get("src") ?? "").trim();
|
|
173
|
+
const alt = attributes.get("alt") ?? "Email image";
|
|
174
|
+
let src;
|
|
175
|
+
let unavailable = "Image unavailable: unsupported or missing source.";
|
|
176
|
+
if (/^cid:/i.test(source)) {
|
|
177
|
+
let cid = source.slice(4);
|
|
178
|
+
try {
|
|
179
|
+
cid = decodeURIComponent(cid);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
cid = "";
|
|
183
|
+
}
|
|
184
|
+
const matches = images.filter((image) => image.contentId === cid);
|
|
185
|
+
if (matches.length === 1)
|
|
186
|
+
src = inlineImageData(matches[0]);
|
|
187
|
+
unavailable = "Image unavailable: this embedded attachment was missing, unsupported, ambiguous, or exceeded the capture limit.";
|
|
188
|
+
}
|
|
189
|
+
else if (/^data:/i.test(source)) {
|
|
190
|
+
const match = /^data:(image\/[a-z]+);base64,([A-Za-z0-9+/=]+)$/i.exec(source);
|
|
191
|
+
if (match)
|
|
192
|
+
src = inlineImageData({ contentId: "inline", contentType: match[1].toLowerCase(), base64: match[2] });
|
|
193
|
+
unavailable = "Image unavailable: unsupported or oversized inline image.";
|
|
194
|
+
}
|
|
195
|
+
else if (source && source !== "#") {
|
|
196
|
+
try {
|
|
197
|
+
const base = originMap[0]?.[1];
|
|
198
|
+
const url = new URL(source, source.startsWith("//") && !base ? "https://image-origin.invalid" : base);
|
|
199
|
+
if ((url.protocol === "http:" || url.protocol === "https:") && !url.username && !url.password)
|
|
200
|
+
src = rewriteOrigin(url.href, originMap);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
unavailable = "Image unavailable: relative URL without a declared app origin.";
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
if (!src)
|
|
207
|
+
return `<span class="email-image-unavailable" role="img" aria-label="${esc(alt || "Email image")}">${esc(alt ? `${alt} — ${unavailable}` : unavailable)}</span>`;
|
|
208
|
+
const sizing = ["width", "height"].map((name) => {
|
|
209
|
+
const value = attributes.get(name);
|
|
210
|
+
return value && /^\d{1,4}(?:%)?$/.test(value) ? ` ${name}="${value}"` : "";
|
|
211
|
+
}).join("");
|
|
212
|
+
const style = attributes.get("style");
|
|
213
|
+
return `<img src="${esc(src)}" alt="${esc(alt)}" referrerpolicy="no-referrer"${sizing}${style ? ` style="${esc(style)}"` : ""}>`;
|
|
214
|
+
});
|
|
215
|
+
}
|
|
135
216
|
const PAGE_CSS = "body{font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#111;background:#fff;margin:0}" +
|
|
136
217
|
"a{color:#0645ad}" +
|
|
218
|
+
".bar,.hdr{overflow-wrap:anywhere}" +
|
|
137
219
|
".bar{padding:10px 20px;background:#f4f4f4;border-bottom:1px solid #ccc;font-size:14px}" +
|
|
138
220
|
".hdr{padding:16px 20px;border-bottom:3px solid #111}" +
|
|
139
221
|
".hdr div{margin:2px 0}.hdr b{display:inline-block;min-width:72px;color:#444;font-weight:600}" +
|
|
140
|
-
".body{padding:20px;max-width:820px}" +
|
|
222
|
+
".body{padding:20px;max-width:820px;overflow-wrap:anywhere}img{max-width:100%;height:auto}.email-image-unavailable{display:inline-block;padding:8px;border:1px solid #aaa;color:#555;font:13px/1.4 system-ui}" +
|
|
141
223
|
"table{border-collapse:collapse;width:100%;max-width:900px}" +
|
|
142
224
|
"th,td{text-align:left;padding:12px 16px;border-bottom:1px solid #ddd;font-size:16px}" +
|
|
143
225
|
"th{border-bottom:2px solid #111}" +
|
|
144
226
|
"tr:hover{background:#f7f7f7}" +
|
|
145
227
|
".verify{display:inline-block;padding:16px 32px;background:#111;color:#fff;text-decoration:none;font-size:18px;font-weight:600;border-radius:6px}" +
|
|
146
228
|
".otp{font:32px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:8px;background:#f0f0f0;padding:12px 18px;display:inline-block;border-radius:6px}" +
|
|
147
|
-
".muted{color:#666;font-size:13px}"
|
|
229
|
+
".muted{color:#666;font-size:13px}" +
|
|
230
|
+
"@media(max-width:560px){.inbox-list thead{display:none}.inbox-list,.inbox-list tbody,.inbox-list tr,.inbox-list td{display:block}" +
|
|
231
|
+
".inbox-list tr{padding:12px 0;border-bottom:1px solid #ddd}.inbox-list td{padding:3px 0;border:0}" +
|
|
232
|
+
".inbox-list td:first-child a{display:block;min-height:32px;font-weight:600}.inbox-list td[data-label]::before{content:attr(data-label) ': ';font-size:13px;color:#666}}";
|
|
148
233
|
/** The surface CSP — the browser-enforced, load-bearing protection against the app-authored email running
|
|
149
234
|
* script or hijacking navigation on the surface page. `script-src 'none'` blocks inline handlers,
|
|
150
235
|
* `javascript:` URLs, and any injected <script>; `object-src`/`frame-src 'none'` block plugins/frames;
|
|
@@ -154,6 +239,7 @@ export const INBOX_SURFACE_CSP = "default-src 'self'; script-src 'none'; object-
|
|
|
154
239
|
function page(title, inner) {
|
|
155
240
|
return ("<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\">" +
|
|
156
241
|
"<meta http-equiv=\"Content-Security-Policy\" content=\"" + INBOX_SURFACE_CSP + "\">" +
|
|
242
|
+
"<meta name=\"referrer\" content=\"no-referrer\">" +
|
|
157
243
|
"<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">" +
|
|
158
244
|
"<title>" + esc(title) + "</title><style>" + PAGE_CSS + "</style></head><body>" +
|
|
159
245
|
inner +
|
|
@@ -171,24 +257,26 @@ function toValues(message) {
|
|
|
171
257
|
return message.to.map((address) => address.value);
|
|
172
258
|
}
|
|
173
259
|
/** The inbox LIST page (semantic table; each row links to its message). */
|
|
174
|
-
export function renderInboxList(messages) {
|
|
260
|
+
export function renderInboxList(messages, options = {}) {
|
|
261
|
+
const base = inboxPath(options);
|
|
175
262
|
const rows = messages
|
|
176
|
-
.map((message) => "<tr><td><a href=\"/
|
|
177
|
-
"<td>" + esc(message.from) + "</td>" +
|
|
178
|
-
"<td>" + esc(toValues(message).join(", ")) + "</td>" +
|
|
179
|
-
"<td class=\"muted\">" + esc(fmtTime(message.deliveredAt)) + "</td></tr>")
|
|
263
|
+
.map((message) => "<tr><td><a href=\"" + base + "/" + esc(message.id) + "\">" + esc(message.subject ?? "(no subject)") + "</a></td>" +
|
|
264
|
+
"<td data-label=\"From\">" + esc(message.from) + "</td>" +
|
|
265
|
+
"<td data-label=\"To\">" + esc(toValues(message).join(", ")) + "</td>" +
|
|
266
|
+
"<td data-label=\"Received\" class=\"muted\">" + esc(fmtTime(message.deliveredAt)) + "</td></tr>")
|
|
180
267
|
.join("");
|
|
181
|
-
const body = "<div class=\"bar\">Inbox — " + messages.length + " message" + (messages.length === 1 ? "" : "s") + "</div>" +
|
|
182
|
-
"<main class=\"body\"><table><thead><tr><th>Subject</th><th>From</th><th>To</th><th>Received</th></tr></thead>" +
|
|
268
|
+
const body = (options.recipient ? "<div class=\"bar\">Inbox for " + esc(options.recipient) + " — " : "<div class=\"bar\">Shared operator inbox — all captured recipients — ") + messages.length + " message" + (messages.length === 1 ? "" : "s") + "</div>" +
|
|
269
|
+
"<main class=\"body\"><table class=\"inbox-list\"><thead><tr><th>Subject</th><th>From</th><th>To</th><th>Received</th></tr></thead>" +
|
|
183
270
|
"<tbody>" + (rows || "<tr><td colspan=\"4\" class=\"muted\">No messages yet.</td></tr>") + "</tbody></table></main>";
|
|
184
271
|
return page("Inbox", body);
|
|
185
272
|
}
|
|
186
273
|
/** One message, DEFAULT view: the app's real captured email in a minimal high-contrast shell. */
|
|
187
274
|
export function renderInboxMessage(message, options = {}) {
|
|
188
275
|
const originMap = options.originMap ?? [];
|
|
189
|
-
const
|
|
276
|
+
const base = inboxPath(options);
|
|
277
|
+
const realHtml = message.body ? renderEmailImages(neutralizeEmailHtml(message.body, originMap), message, originMap) : "";
|
|
190
278
|
const fallback = realHtml.trim().length > 0 ? realHtml : "<p class=\"muted\">(this message had no HTML body)</p>";
|
|
191
|
-
const body = "<div class=\"bar\"><a href=\"
|
|
279
|
+
const body = "<div class=\"bar\"><a href=\"" + base + "\">← Inbox</a> · <a href=\"" + base + "/" + esc(message.id) + "/synth\">plain view</a></div>" +
|
|
192
280
|
"<div class=\"hdr\"><div><b>To</b> " + esc(toValues(message).join(", ")) + "</div>" +
|
|
193
281
|
"<div><b>From</b> " + esc(message.from) + "</div>" +
|
|
194
282
|
"<div><b>Subject</b> " + esc(message.subject ?? "(no subject)") + "</div></div>" +
|
|
@@ -199,11 +287,12 @@ export function renderInboxMessage(message, options = {}) {
|
|
|
199
287
|
* reliability fallback when the app's real email is a vision minefield; opt-in, never the default. */
|
|
200
288
|
export function renderInboxMessageSynth(message, options = {}) {
|
|
201
289
|
const originMap = options.originMap ?? [];
|
|
290
|
+
const base = inboxPath(options);
|
|
202
291
|
const verify = pickVerifyUrl(message.links);
|
|
203
292
|
const verifyRewritten = verify ? rewriteOrigin(verify, originMap) : undefined;
|
|
204
293
|
const otp = message.codes[0];
|
|
205
294
|
const parts = [
|
|
206
|
-
"<div class=\"bar\"><a href=\"
|
|
295
|
+
"<div class=\"bar\"><a href=\"" + base + "\">← Inbox</a> · <a href=\"" + base + "/" + esc(message.id) + "\">real email</a></div>",
|
|
207
296
|
"<div class=\"hdr\"><div><b>From</b> " + esc(message.from) + "</div>" +
|
|
208
297
|
"<div><b>To</b> " + esc(toValues(message).join(", ")) + "</div>" +
|
|
209
298
|
"<div><b>Subject</b> " + esc(message.subject ?? "(no subject)") + "</div></div>",
|
|
@@ -216,7 +305,7 @@ export function renderInboxMessageSynth(message, options = {}) {
|
|
|
216
305
|
parts.push("<p>Your code:</p><p><span class=\"otp\">" + esc(otp) + "</span></p>");
|
|
217
306
|
}
|
|
218
307
|
if (!verifyRewritten && !otp) {
|
|
219
|
-
parts.push("<p class=\"muted\">No verification link or code was found in this message. Open the <a href=\"/
|
|
308
|
+
parts.push("<p class=\"muted\">No verification link or code was found in this message. Open the <a href=\"" + base + "/" + esc(message.id) + "\">real email</a>.</p>");
|
|
220
309
|
}
|
|
221
310
|
parts.push("</main>");
|
|
222
311
|
return page(message.subject ?? "Message", parts.join(""));
|
|
@@ -270,20 +359,30 @@ export function buildInboxSurface(messages, options = {}) {
|
|
|
270
359
|
contentType: "application/json; charset=utf-8",
|
|
271
360
|
body: JSON.stringify(value, null, 2)
|
|
272
361
|
});
|
|
362
|
+
const base = inboxPath(options).slice(1);
|
|
363
|
+
if (messages.some((message) => !/^comms-[0-9]+$/.test(message.id)))
|
|
364
|
+
throw new Error("Invalid inbox message identity");
|
|
365
|
+
if (options.recipient !== undefined)
|
|
366
|
+
messages = messages.filter((message) => message.to.some((address) => address.value.trim().toLowerCase() === options.recipient.trim().toLowerCase()));
|
|
273
367
|
const files = [
|
|
274
|
-
html("
|
|
275
|
-
json("api/
|
|
368
|
+
html(base + "/index", renderInboxList(messages, options)),
|
|
369
|
+
json("api/" + base + "/index", inboxListJson(messages, options))
|
|
276
370
|
];
|
|
277
371
|
const latest = messages[messages.length - 1];
|
|
278
372
|
for (const message of messages) {
|
|
279
|
-
files.push(html("
|
|
280
|
-
files.push(html("
|
|
281
|
-
files.push(json("api/
|
|
373
|
+
files.push(html(base + "/" + message.id + "/index", renderInboxMessage(message, options)));
|
|
374
|
+
files.push(html(base + "/" + message.id + "/synth", renderInboxMessageSynth(message, options)));
|
|
375
|
+
files.push(json("api/" + base + "/" + message.id, inboxMessageJson(message, options)));
|
|
282
376
|
}
|
|
283
377
|
if (latest) {
|
|
284
|
-
files.push(html("
|
|
285
|
-
files.push(html("
|
|
286
|
-
files.push(json("api/
|
|
378
|
+
files.push(html(base + "/latest/index", renderInboxMessage(latest, options)));
|
|
379
|
+
files.push(html(base + "/latest/synth", renderInboxMessageSynth(latest, options)));
|
|
380
|
+
files.push(json("api/" + base + "/latest", inboxMessageJson(latest, options)));
|
|
381
|
+
}
|
|
382
|
+
if (options.recipient === undefined) {
|
|
383
|
+
const recipients = new Set([...(options.recipients ?? []), ...messages.flatMap((message) => message.to.map((address) => address.value))].map((address) => address.trim().toLowerCase()).filter(Boolean));
|
|
384
|
+
for (const recipient of recipients)
|
|
385
|
+
files.push(...buildInboxSurface(messages, { ...options, recipient }));
|
|
287
386
|
}
|
|
288
387
|
return files;
|
|
289
388
|
}
|
package/dist/comms-inbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comms-inbox.js","sourceRoot":"","sources":["../src/comms-inbox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"comms-inbox.js","sourceRoot":"","sources":["../src/comms-inbox.ts"],"names":[],"mappings":"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"}
|