@wenathlan/extension 1.1.60 → 1.1.62

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 (48) hide show
  1. package/README.md +5 -3
  2. package/dist/confirmgates.d.ts +60 -0
  3. package/dist/confirmgates.d.ts.map +1 -0
  4. package/dist/immutablelog.d.ts +73 -0
  5. package/dist/immutablelog.d.ts.map +1 -0
  6. package/dist/inboundguard.d.ts +86 -0
  7. package/dist/inboundguard.d.ts.map +1 -0
  8. package/dist/index.d.ts +10 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1278 -1
  11. package/dist/index.js.map +4 -4
  12. package/dist/maskinputs.d.ts +52 -0
  13. package/dist/maskinputs.d.ts.map +1 -0
  14. package/dist/memory.d.ts +153 -1
  15. package/dist/memory.d.ts.map +1 -1
  16. package/dist/originpolicy.d.ts +160 -0
  17. package/dist/originpolicy.d.ts.map +1 -0
  18. package/dist/phishguard.d.ts +24 -0
  19. package/dist/phishguard.d.ts.map +1 -0
  20. package/dist/policy.d.ts +123 -1
  21. package/dist/policy.d.ts.map +1 -1
  22. package/dist/protocol.d.ts +164 -1
  23. package/dist/protocol.d.ts.map +1 -1
  24. package/dist/redactshots.d.ts +54 -0
  25. package/dist/redactshots.d.ts.map +1 -0
  26. package/dist/secretvault.d.ts +89 -0
  27. package/dist/secretvault.d.ts.map +1 -0
  28. package/dist/transparency.d.ts +46 -0
  29. package/dist/transparency.d.ts.map +1 -0
  30. package/dist/types.d.ts +316 -2
  31. package/dist/types.d.ts.map +1 -1
  32. package/dist/version.d.ts +1 -1
  33. package/extension/dist/background.js +1650 -56
  34. package/extension/dist/background.js.map +4 -4
  35. package/extension/dist/manifest.json +5 -1
  36. package/extension/dist/pagebridge.js +91 -28
  37. package/extension/dist/pagebridge.js.map +3 -3
  38. package/extension/dist/popup.html +1 -1
  39. package/extension/dist/popup.js +54 -0
  40. package/extension/dist/popup.js.map +2 -2
  41. package/extension/dist/sidepanel.html +1 -1
  42. package/extension/dist/sidepanel.js +331 -0
  43. package/extension/dist/sidepanel.js.map +4 -4
  44. package/extension/dist/transparencypage.html +24 -0
  45. package/extension/dist/transparencypage.js +156 -0
  46. package/extension/dist/transparencypage.js.map +7 -0
  47. package/extension/manifest.json +5 -1
  48. package/package.json +1 -1
@@ -0,0 +1,54 @@
1
+ import type { capturesurface, redactregion, toolstep } from "./types.js";
2
+ /**
3
+ * Redactshots logic of the 1.1.62 family.
4
+ * The capture masking rules live here: sensitive regions of the capture surface — derived from the field shapes the recognizer masks or drawn by the user — cover viewport, element and stitched captures alike, so the stored bytes never carry the sensitive regions while the record keeps the redaction evidence and the reason.
5
+ * The regions scope to one origin and one page template, and no geometry, region count or shape list is ever hardcoded: every region stays the user's knowledge, mirroring the maskinputs posture.
6
+ */
7
+ /** Builds one redact region with its geometry in css pixels, its plain language reason and its source; the geometry stays finite and positive so the capture seam draws a real rectangle. */
8
+ export declare function regionof(input: {
9
+ origin: string;
10
+ template: string;
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ reason: string;
16
+ source: "fieldshape" | "userdrawn";
17
+ now: number;
18
+ id?: string;
19
+ }): redactregion;
20
+ /** Reads whether one region keeps finite, positive geometry the capture seam can draw. */
21
+ export declare function regionvalid(region: redactregion): boolean;
22
+ /** Reads the regions of one origin and page template: the regions bind to the page they were drawn on and never leak onto another origin or template. */
23
+ export declare function regionsfor(regions: redactregion[], origin: string, template: string): redactregion[];
24
+ /** Derives redact regions from the sensitive field shapes of one form layout: every field whose name matches a masked shape contributes its rectangle, so the capture masks exactly what the recognizer would mask. */
25
+ export declare function fieldshaperegions(input: {
26
+ origin: string;
27
+ template: string;
28
+ fields: Array<{
29
+ name: string;
30
+ rect: {
31
+ x: number;
32
+ y: number;
33
+ width: number;
34
+ height: number;
35
+ };
36
+ }>;
37
+ now: number;
38
+ }): redactregion[];
39
+ /** Merges drawn regions into the stored set: a region of the same origin, template and geometry keeps its first record while a new geometry joins the list. */
40
+ export declare function mergeregions(existing: redactregion[], added: redactregion[]): redactregion[];
41
+ /** Maps one capture kind to its redactshots surface: viewport captures, element captures and stitched captures all carry the same region grammar. */
42
+ export declare function capturesurfaceof(kind: string): capturesurface;
43
+ /** Reads the template name of one capture step: the reviewed option template the user named, or the step kind itself as the page template baseline. */
44
+ export declare function templateof(step: Pick<toolstep, "kind" | "options">): string;
45
+ /** Applies the redact regions to one stored capture record: the record keeps the redaction evidence — the flag and the region count — while the capture seam draws the opaque rectangles before the bytes reach storage, across every capture kind. */
46
+ export declare function redactedshot<T extends {
47
+ kind: string;
48
+ }>(record: T, regions: redactregion[]): T & {
49
+ redacted?: boolean;
50
+ redactedregions?: number;
51
+ };
52
+ /** Builds the redaction evidence summary the audit trail records: the surface, the region count and the reason of every region. */
53
+ export declare function redactionsummary(regions: redactregion[]): string;
54
+ //# sourceMappingURL=redactshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactshots.d.ts","sourceRoot":"","sources":["../redactshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIzE;;;;GAIG;AAEH,6LAA6L;AAC7L,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAQrN;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEzD;AAED,yJAAyJ;AACzJ,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAEpG;AAED,uNAAuN;AACvN,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,EAAE,CAO1M;AAED,+JAA+J;AAC/J,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAO5F;AAED,qJAAqJ;AACrJ,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAI7D;AAED,uJAAuJ;AACvJ,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAW3E;AAED,uPAAuP;AACvP,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAGjJ;AAED,mIAAmI;AACnI,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAKhE"}
@@ -0,0 +1,89 @@
1
+ import type { secretvaultentry, toolstep } from "./types.js";
2
+ /**
3
+ * Secret vault logic of the 1.1.62 family.
4
+ * The vault seam lives here: secrets enter through put and leave through fetch at the last possible moment before a credential field, while the persisted records carry only the label, the exact origin scope, the profile workspace, the provenance and the sha-256 verification digest — no plaintext value ever reaches a storage writer, a log entry, a memory record or an export path.
5
+ * The scan paths refuse secrets in plain sight: a step option, a variable or a plan text whose value digests to a stored vault entry is a leak that refuses the plan, and a raw typed value behind a masked field shape never rides a step at all.
6
+ * Honest limit: the browser offers no vault hardware, so the seam rides the session storage area the background wires, which keeps values in memory only and never persists them to disk; the persistence layer stores metadata alone, mirroring the immutablelog seam honesty.
7
+ */
8
+ /** The digest prefix every stored vault digest carries so raw values never persist anywhere. */
9
+ export declare const vaultdigestprefix = "sha256:";
10
+ /** Derives the sha-256 verification digest of one secret value through the platform crypto seam; the digest persists while the value never does. */
11
+ export declare function vaultdigestof(value: string): Promise<string>;
12
+ /** Builds one vault record from its metadata: the label, the exact origin scope, the profile workspace and the provenance; the digest verifies the value behind the seam without ever carrying it. */
13
+ export declare function vaultentryof(input: {
14
+ label: string;
15
+ scope: string;
16
+ profileid: string;
17
+ provenance: "user" | "session";
18
+ digest: string;
19
+ now: number;
20
+ vaultid?: string;
21
+ }): secretvaultentry;
22
+ /** Creates an in memory vault seam: values live in the map only, which is the honest fallback the background wraps with the session storage area that never persists to disk. */
23
+ export declare function inmemoryvault(): {
24
+ put(vaultid: string, value: string): Promise<void>;
25
+ fetch(vaultid: string): Promise<string | undefined>;
26
+ drop(vaultid: string): Promise<void>;
27
+ };
28
+ /** Stores one secret behind the vault seam and returns its metadata record alone: the value enters the seam and no return path carries it. */
29
+ export declare function vaultstore(input: {
30
+ seam: {
31
+ put(vaultid: string, value: string): Promise<void>;
32
+ };
33
+ label: string;
34
+ scope: string;
35
+ profileid: string;
36
+ provenance: "user" | "session";
37
+ value: string;
38
+ now: number;
39
+ }): Promise<secretvaultentry>;
40
+ /** Reads one secret from the vault seam at the last possible moment before its credential field: the value returns to the dispatching caller only, never to a log writer, and the record stamps its last use. */
41
+ export declare function vaultvaluefor(input: {
42
+ seam: {
43
+ fetch(vaultid: string): Promise<string | undefined>;
44
+ };
45
+ entry: secretvaultentry;
46
+ }): Promise<{
47
+ ok: boolean;
48
+ value?: string;
49
+ reason: string;
50
+ used?: secretvaultentry;
51
+ }>;
52
+ /** Drops one secret from the vault seam; the metadata record leaves with it because a deleted secret leaves no trace a surface could read. */
53
+ export declare function vaultdelete(input: {
54
+ seam: {
55
+ drop(vaultid: string): Promise<void>;
56
+ };
57
+ entry: secretvaultentry;
58
+ }): Promise<{
59
+ dropped: boolean;
60
+ label: string;
61
+ reason: string;
62
+ }>;
63
+ /** Reads whether one vault record covers an origin: the scope binds to exactly one origin, so a secret of one site never rides another site. */
64
+ export declare function vaultcovers(entry: secretvaultentry, origin: string): boolean;
65
+ /** Scans candidate step values, variables and plan texts for leaked secrets: a candidate whose sha-256 digest matches a stored vault digest is a leak the plan refuses, because a plaintext secret outside the vault never rides a step, a variable or a plan. */
66
+ export declare function secretleakscan(input: {
67
+ candidates: string[];
68
+ entries: secretvaultentry[];
69
+ }): Promise<{
70
+ leaks: string[];
71
+ reason: string;
72
+ }>;
73
+ /** Reads whether one step carries a raw typed value behind a masked field shape: a credential step names its vault label instead, because a raw password or token value never rides a step option. */
74
+ export declare function secretshapecarrying(step: Pick<toolstep, "kind" | "target" | "value" | "options">): {
75
+ carries: boolean;
76
+ reason: string;
77
+ };
78
+ /** Builds the vault view the surfaces render: the labels, scopes, provenance and last use times only, because no surface ever displays or exports a secret value. */
79
+ export declare function vaultview(entries: secretvaultentry[]): Array<{
80
+ vaultid: string;
81
+ label: string;
82
+ scope: string;
83
+ provenance: string;
84
+ createdat: number;
85
+ lastusedat?: number;
86
+ }>;
87
+ /** Builds the plain language prompt of one credential step: the label the vault carries, never the value. */
88
+ export declare function vaultprompttext(entry: secretvaultentry, origin: string): string;
89
+ //# sourceMappingURL=secretvault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretvault.d.ts","sourceRoot":"","sources":["../secretvault.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { automationallowlistentry, connectallowentry, consentwindow, originprofile, permdiffrecord, transparencygrant } from "./types.js";
2
+ /**
3
+ * Transparency logic of the 1.1.62 family.
4
+ * The transparencypage grammar lives here: every active grant reads as one row with its origin, scope and boundary, every consent window ever granted stays listed with its expiry even after it closed, the connectallow entries list with their senders, and the permdiff of each installed update records the added and removed permissions between two versions.
5
+ * The revoke actions stay one descriptor per grant row, because every listed grant revokes from the same page that shows it.
6
+ */
7
+ /** Computes the permdiff between two permission versions: the permissions the new version added, the permissions it removed and the computed time; an unchanged set carries empty lists while the record still lands for the audit trail. */
8
+ export declare function permissiondiff(input: {
9
+ from: string[];
10
+ to: string[];
11
+ fromversion: string;
12
+ toversion: string;
13
+ now: number;
14
+ }): permdiffrecord;
15
+ /** Reads whether one permdiff record reports a change between its versions; an unchanged permission set still records for the audit trail. */
16
+ export declare function permdiffchanged(diff: permdiffrecord): boolean;
17
+ /** Builds the plain language summary of one permdiff record for the transparencypage. */
18
+ export declare function permdiffsummary(diff: permdiffrecord): string;
19
+ /** Builds the transparency grant rows of every active grant: each allowlist origin carries its profile workspace scope and its grant time, and each originprofile carries its per kind scope. */
20
+ export declare function transparencygrants(input: {
21
+ allowlist: automationallowlistentry[];
22
+ profiles: originprofile[];
23
+ }): transparencygrant[];
24
+ /** Builds the revoke action descriptor of one transparency grant row: every listed grant revokes from the same page that shows it. */
25
+ export declare function revokeaction(grant: transparencygrant): {
26
+ action: "revoke";
27
+ origin: string;
28
+ scope: string;
29
+ };
30
+ /** Lists every consent window ever granted with its expiry: closed windows stay listed beside the active ones because the transparency page shows the whole grant history. */
31
+ export declare function windowhistory(windows: consentwindow[]): Array<{
32
+ id: string;
33
+ origin: string;
34
+ state: string;
35
+ boundary: string;
36
+ startedat: number;
37
+ expiresat: number;
38
+ }>;
39
+ /** Lists the connectallow entries with their senders: the display names, the sender ids and the origin scopes the user allowed. */
40
+ export declare function connectallowlist(entries: connectallowentry[]): Array<{
41
+ senderid: string;
42
+ displayname: string;
43
+ origin?: string;
44
+ addedat: number;
45
+ }>;
46
+ //# sourceMappingURL=transparency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transparency.d.ts","sourceRoot":"","sources":["../transparency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/I;;;;GAIG;AAEH,6OAA6O;AAC7O,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAK3I;AAED,8IAA8I;AAC9I,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAE7D;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAM5D;AAED,iMAAiM;AACjM,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,iBAAiB,EAAE,CAMnI;AAED,sIAAsI;AACtI,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAE1G;AAED,8KAA8K;AAC9K,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAEpK;AAED,mIAAmI;AACnI,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAEjJ"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export declare const protocolversion: "1.1.60";
1
+ export declare const protocolversion: "1.1.62";
2
2
  /** Every reviewed action kind. Read kinds observe, interaction kinds move focus, sensitive kinds change page or browser state. */
3
3
  export type actionkind = "observe" | "inspect" | "extract" | "wait" | "waitfor" | "waittext" | "readattribute" | "readstyle" | "readgeometry" | "readvalue" | "readtext" | "readhtml" | "countelements" | "readtable" | "readlinks" | "readimages" | "readmeta" | "readforms" | "readstorage" | "highlight" | "tablist" | "windowlist" | "tabsnapshot" | "focus" | "scroll" | "hover" | "clickdeep" | "rightclick" | "doubleclick" | "scrollpage" | "scrollby" | "scrollend" | "scrolltop" | "fullscreen" | "zoomset" | "click" | "type" | "navigate" | "select" | "presskey" | "drag" | "drop" | "upload" | "clear" | "check" | "uncheck" | "toggle" | "submit" | "reload" | "back" | "forward" | "writestorage" | "setattribute" | "removeattribute" | "evaluate" | "tabcreate" | "tabactivate" | "tabclose" | "tabreload" | "windowcreate" | "windowclose" | "windowresize" | "downloadfile" | "movepointer" | "clickpoint" | "shiftclick" | "clicktext" | "clickaria" | "clickname" | "resolvexpath" | "typetime" | "appendtext" | "setvalue" | "typeedit" | "keyhold" | "keyrelease" | "submitsearch" | "selectmulti" | "chooseradio" | "setslider" | "setdate" | "setcolor" | "expanddetails" | "dismissdialog" | "pierceshadow" | "enterframe" | "retryaction" | "mapclicks" | "verifyvisible" | "verifyenabled" | "a11ytree" | "readvisible" | "readertree" | "detectlists" | "detecttables" | "readjson" | "watchmutate" | "waitquiet" | "watchbanner" | "detectinfinitescroll" | "detectvirtual" | "detectlazy" | "readscrollpos" | "readlang" | "readoutline" | "countpages" | "listshadow" | "listframes" | "classifypage" | "fingerprintsection" | "diffsnapshots" | "readselection" | "watchfocus" | "detectsticky" | "detectscrolllock" | "readopengraph" | "detectlanguage" | "deriveselector" | "openlink" | "openprivate" | "reloadcache" | "stopnav" | "waitload" | "waiturl" | "followlink" | "spanav" | "spawait" | "rewritequery" | "setfragment" | "navlist" | "navprofile" | "detecthttp" | "readredirects" | "readfinalurl" | "handleauth" | "printpdf" | "prefetch" | "preconnect" | "deeplink" | "reopentab" | "trailaudit" | "pausenav" | "navintent" | "navrate" | "openclipboard" | "checksafe" | "batchopen" | "querytabs" | "duplicatetab" | "closepattern" | "pintab" | "mutetab" | "movetab" | "movetabwindow" | "grouptabs" | "colorgroup" | "collapsegroup" | "discardtab" | "reloadtabs" | "zoomin" | "zoomout" | "watchtab" | "switchtab" | "maximizewindow" | "minimizewindow" | "restorewindow" | "focuswindow" | "scratchwindow" | "incognitowindow" | "restoretab" | "savelayout" | "restorelayout" | "findclones" | "searchtabs" | "badgetab" | "attachmeta" | "listaudio" | "reopenrun" | "snapshotsession" | "fillform" | "filllabel" | "fillplaceholder" | "detectfields" | "generatevalues" | "saveprofiles" | "asksubmit" | "submitform" | "readerrors" | "retryform" | "runwizard" | "selectchain" | "picktypeahead" | "pickdate" | "attachfile" | "handoffcaptcha" | "fillcard" | "fillcode" | "consentpassword" | "skiphoneypot" | "detectlogin" | "detecttemplate" | "scrapetable" | "exportcsv" | "exportjson" | "exportexcel" | "copytable" | "pushsheets" | "importcsv" | "looprows" | "transformvalues" | "deduperows" | "paginateextract" | "mergepages" | "stamplerows" | "previewgrid" | "streamdisk" | "resumeextract" | "logprovenance" | "batchdownload" | "pausedownload" | "resumedownload" | "verifydownload" | "interceptmime" | "exportnetlog" | "readclipboard" | "writeclipboard" | "copyscreen" | "quarantinedownload" | "scanvirus" | "namecaptures" | "cleanupartifacts" | "shotview" | "shotfullpage" | "shotelement" | "shotregion" | "contactsheet" | "capturepdf" | "recordscreen" | "captureaudio" | "captureframe" | "downloadimages" | "shotcanvas" | "probestream" | "readmedia" | "readassets" | "timelapse" | "convertimage" | "makethumbs" | "fetchurl" | "parsejson" | "parsehtml" | "callrest" | "callgraphql" | "opensocket" | "sendmessage" | "waitmessage" | "watchrequests" | "readheaders" | "capturebodies" | "subscribesse" | "longpoll" | "mapapi" | "extractapi" | "blockrequest" | "mockresponse" | "rewriteheaders" | "setcookies" | "readcookies" | "clearcookies" | "authflow" | "saveapikey" | "routeproxy" | "postform" | "postfiles" | "watchconsole" | "watcherrors" | "watchtasks" | "attachcdp" | "detachcdp" | "cdpcmd" | "watchcdp" | "setbreakpoint" | "stepcode" | "watchexpr" | "overridescript" | "measureflow" | "heapshot" | "trackmemory" | "profilecpu" | "watchshifts" | "traceload" | "annotatetrace" | "replaytrace" | "capturesourcemaps" | "emulatedevice" | "emulatenetwork" | "emulatelocate" | "setuseragent" | "overridepermission" | "blackboxscripts" | "persiststate" | "capturesession" | "restoresession" | "namedsessions" | "diffsessions" | "searchsessions" | "exportsessions" | "importsessions" | "composeworkflow" | "savetemplate" | "runworkflow" | "dryrun" | "delay" | "waitelement" | "compute" | "extractvars" | "listruns" | "condition" | "branch" | "loop" | "repeatuntil" | "whileloop" | "foreach" | "parallel" | "trycatch" | "visitrule" | "urlrule" | "menurule" | "keyrule" | "buttonrule" | "cronrule" | "intervalrule" | "urllistrule" | "webhookrule" | "eventrule";
4
4
  export type actionrisk = "read" | "interaction" | "sensitive";
5
5
  export type planstate = "draft" | "pending" | "approved" | "rejected" | "expired" | "completed" | "cancelled";
6
- export type auditkind = "configure" | "session" | "observe" | "proposal" | "approval" | "action" | "error" | "stop" | "pause" | "resume" | "complete" | "capability" | "tab" | "window" | "download" | "pointer" | "dialog" | "hold" | "retry" | "observation" | "watch" | "diff" | "navigation" | "redirect" | "auth" | "prefetch" | "rate" | "group" | "layout" | "discard" | "badge" | "fill" | "submit" | "consent" | "handoff" | "scrape" | "export" | "stream" | "provenance" | "resume" | "intercept" | "clipboard" | "quarantine" | "cleanup" | "capture" | "media" | "call" | "socket" | "replay" | "control" | "timeline" | "debugger" | "profile" | "emulation" | "workflow" | "trigger" | "protocol" | "tool" | "model" | "swarm" | "environment" | "worker" | "sandbox";
6
+ export type auditkind = "configure" | "session" | "observe" | "proposal" | "approval" | "action" | "error" | "stop" | "pause" | "resume" | "complete" | "capability" | "tab" | "window" | "download" | "pointer" | "dialog" | "hold" | "retry" | "observation" | "watch" | "diff" | "navigation" | "redirect" | "auth" | "prefetch" | "rate" | "group" | "layout" | "discard" | "badge" | "fill" | "submit" | "consent" | "handoff" | "scrape" | "export" | "stream" | "provenance" | "resume" | "intercept" | "clipboard" | "quarantine" | "cleanup" | "capture" | "media" | "call" | "socket" | "replay" | "control" | "timeline" | "debugger" | "profile" | "emulation" | "workflow" | "trigger" | "protocol" | "tool" | "model" | "swarm" | "environment" | "worker" | "sandbox" | "grant" | "expiry" | "revoke" | "deny" | "seal" | "mask" | "vault" | "gate" | "phish" | "defer" | "schema" | "inbound" | "transparency";
7
7
  /** Observation mode classes: passive capture, watched lifetimes and diffing passes. */
8
8
  export type observationmode = "passive" | "watching" | "diffing";
9
9
  export interface toolstep {
@@ -218,6 +218,16 @@ export interface runsettings {
218
218
  zombieintervals?: number;
219
219
  /** User configured byte ceiling for the stored run state; an absent value never prunes because the pressure response stays a user choice only. */
220
220
  runstatebytes?: number;
221
+ /** The consent window duration the consent prompt offers, in milliseconds; the prompt always names a boundary and never defaults to unlimited, and every window stays the user's choice. */
222
+ consentduration?: number;
223
+ /** Retention window for stored sealed run logs; an absent window keeps every sealed log while the chain verification summaries always survive. */
224
+ logretention?: number;
225
+ /** The phishguard lookalike distance threshold between zero and one the user chooses; a login origin whose distance to a granted origin crosses the threshold blocks the step. */
226
+ phishdistance?: number;
227
+ /** The freshness window of stored phishguard verdicts in milliseconds; an absent window keeps every verdict fresh while the records always survive for the audit trail. */
228
+ phishfreshness?: number;
229
+ /** User configured mask shapes for sensitive field shapes beyond the documented password, token, card and secret families; per origin mask rules extend this list. */
230
+ maskshapes?: string[];
221
231
  }
222
232
  export interface proposalrequest {
223
233
  objective: string;
@@ -244,6 +254,8 @@ export interface planprogress {
244
254
  environments?: Record<string, environmentkind>;
245
255
  /** The worker turnaround of every offloaded step by step id, in milliseconds. */
246
256
  turnarounds?: Record<string, number>;
257
+ /** The gate wait of every gated step by step id: the confirm gate the step waited at with its waited milliseconds. */
258
+ gatewaits?: Record<string, gatewaitevidence>;
247
259
  /** Prior progress snapshots preserved when a new plan replaces the tracked one. */
248
260
  prior?: planprogress[];
249
261
  updatedat: number;
@@ -1140,6 +1152,10 @@ export interface shotrecord {
1140
1152
  annotated?: boolean;
1141
1153
  exporttarget?: captureexport;
1142
1154
  target?: string;
1155
+ /** True when redactshot regions covered the capture before storage; the masked regions never reach the stored bytes. */
1156
+ redacted?: boolean;
1157
+ /** The count of redactshot regions the capture seam masked before storage. */
1158
+ redactedregions?: number;
1143
1159
  /** True once the retention window expired the bytes; the metadata stays for the audit trail. */
1144
1160
  bytesexpired?: boolean;
1145
1161
  }
@@ -4281,4 +4297,302 @@ export interface sealedrunstate {
4281
4297
  digest: string;
4282
4298
  sealedat: number;
4283
4299
  }
4300
+ /**
4301
+ * Security part one contracts of the 1.1.61 family.
4302
+ * The trust boundary hardens here: automation runs behind a per origin allowlist under a denydefault posture that refuses every ungranted origin, per site originprofiles grant and deny single action kinds, consentwindows bind every grant in time with a named boundary that never defaults to unlimited, revokerun halts a run mid step as a terminal session event, and every decision lands in an immutable append only run log whose loghash chain makes tampering detectable at read time while maskinputs keeps typed secrets out of every record.
4303
+ * The consent gates do not move: every security operation rides the same session, plan and origin review, and no security record ever bypasses the human review.
4304
+ */
4305
+ /** The sensitive classes of the 1.1.61 family: payment, credential, delete and publish steps each need one fresh consent prompt per class per origin. */
4306
+ export type sensitiveclass = "payment" | "credential" | "delete" | "publish";
4307
+ /** The event kinds of the immutable run log: step transitions, grants, window expiries, revocations, denials, suspensions, resumes and the completion seal. */
4308
+ export type logeventkind = "step" | "grant" | "expiry" | "revoke" | "deny" | "suspend" | "resume" | "seal" | "gate" | "phish" | "schema" | "inbound";
4309
+ /** The hash chain fields of one immutable log entry: the hash of its predecessor, the entry hash written at append time and the algorithm that derives both. */
4310
+ export interface loghash {
4311
+ previous: string;
4312
+ current: string;
4313
+ algorithm: "sha-256";
4314
+ }
4315
+ /** One append only immutable log entry: the run it belongs to, the event kind, the summary in plain language, the origin and step provenance, the time and the hash chain link written at append time with no later rewrite. */
4316
+ export interface immutablelogentry {
4317
+ id: string;
4318
+ runid: string;
4319
+ kind: logeventkind;
4320
+ summary: string;
4321
+ origin: string;
4322
+ /** The step the entry names when it records one step transition, denial or revocation halt. */
4323
+ stepid?: string;
4324
+ at: number;
4325
+ hash: loghash;
4326
+ }
4327
+ /** The sealed completion record of one run log: the entry count, the final hash that chains the seal to the last entry and the seal time; the seal closes the log with no later append. */
4328
+ export interface sealedlog {
4329
+ runid: string;
4330
+ entries: number;
4331
+ sealhash: loghash;
4332
+ sealedat: number;
4333
+ }
4334
+ /** The stored run log of one run: the append only entries beside the seal that closes them at completion; an unsealed log still accepts appends while a sealed log refuses them. */
4335
+ export interface storedrunlog {
4336
+ runid: string;
4337
+ sessionid: string;
4338
+ entries: immutablelogentry[];
4339
+ seal?: sealedlog;
4340
+ updatedat: number;
4341
+ }
4342
+ /** One per site origin profile: the exact origin, the action kinds the user granted and denied on it, and the review times; the profile consults before every sensitive kind. */
4343
+ export interface originprofile {
4344
+ profileid: string;
4345
+ origin: string;
4346
+ grants: actionkind[];
4347
+ denials: actionkind[];
4348
+ createdat: number;
4349
+ updatedat: number;
4350
+ }
4351
+ /** One allowlist entry of automation origins: the exact origin with no wildcard expansion, the profile workspace it belongs to and the grant time; the active tab grant counts as one explicit single origin entry. */
4352
+ export interface automationallowlistentry {
4353
+ origin: string;
4354
+ profileid: string;
4355
+ grantedat: number;
4356
+ }
4357
+ /** One consent window bound in time: the session and the exact origin it scopes, the user chosen duration with the boundary it names, the kinds it covers and the state; the window expires at its duration boundary and never defaults to unlimited. */
4358
+ export interface consentwindow {
4359
+ id: string;
4360
+ sessionid: string;
4361
+ origin: string;
4362
+ startedat: number;
4363
+ /** The user chosen duration in milliseconds; the boundary stays the user's choice with no engine default. */
4364
+ duration: number;
4365
+ expiresat: number;
4366
+ /** The named boundary in plain language such as the duration the prompt offered; the prompt never defaults to unlimited. */
4367
+ boundary: string;
4368
+ kinds: actionkind[];
4369
+ state: "active" | "closed";
4370
+ closedat?: number;
4371
+ }
4372
+ /** One consent scope grant naming the origin, the kinds and the boundary in a single record; the session start writes it into the immutable log. */
4373
+ export interface consentscope {
4374
+ origin: string;
4375
+ kinds: actionkind[];
4376
+ boundary: string;
4377
+ grantedat: number;
4378
+ }
4379
+ /** One mid run revocation: the terminal session event that halts the pending step and every queued step without executing them, the acting user and the reason. */
4380
+ export interface revokerunevent {
4381
+ id: string;
4382
+ sessionid: string;
4383
+ runid: string;
4384
+ haltedstepids: string[];
4385
+ actor: string;
4386
+ reason: string;
4387
+ at: number;
4388
+ }
4389
+ /** One fresh sensitive class consent per origin: the class the user consented to, the grant time and the optional expiry; each sensitive class needs its own fresh prompt per origin. */
4390
+ export interface classconsent {
4391
+ id: string;
4392
+ origin: string;
4393
+ sensitiveclass: sensitiveclass;
4394
+ grantedat: number;
4395
+ expiresat?: number;
4396
+ }
4397
+ /** One mask rule for sensitive field shapes: the documented password, token, card and secret families extended by the user, optionally scoped to one origin. */
4398
+ export interface maskrule {
4399
+ id: string;
4400
+ /** The origin the rule scopes to; an absent origin keeps the rule global. */
4401
+ origin?: string;
4402
+ shapes: string[];
4403
+ createdat: number;
4404
+ }
4405
+ /** One denied step evidence: the origin, the action kind and the deny reason in plain language, recorded without navigation. */
4406
+ export interface deniedevidence {
4407
+ origin: string;
4408
+ kind: string;
4409
+ reason: string;
4410
+ at: number;
4411
+ }
4412
+ /** One revocation evidence of the plan progress: the halted steps and the revoked step the run stopped at. */
4413
+ export interface revocationevidence {
4414
+ haltedstepids: string[];
4415
+ revokedstepid?: string;
4416
+ reason: string;
4417
+ at: number;
4418
+ }
4419
+ /** The security view of the 1.1.61 family served to the sidepanel and the popup: the automation allowlist, the per origin profiles, the active consent windows with their remaining time, the fresh class consents, the revocation history, the mask rules, the per run chain verification status with the seal hash and the denydefault posture notice. */
4420
+ export interface securityview {
4421
+ allowlist: automationallowlistentry[];
4422
+ profiles: originprofile[];
4423
+ windows: consentwindow[];
4424
+ consents: classconsent[];
4425
+ revocations: revokerunevent[];
4426
+ maskrules: maskrule[];
4427
+ chain: Array<{
4428
+ runid: string;
4429
+ valid: boolean;
4430
+ entries: number;
4431
+ brokenat?: number;
4432
+ reason: string;
4433
+ sealhash?: string;
4434
+ sealedat?: number;
4435
+ }>;
4436
+ posture: "denydefault";
4437
+ /** The open and resolved confirm gates of the 1.1.62 family with their payloads and human action provenance. */
4438
+ gates?: confirmgate[];
4439
+ /** The gate resolution events with their human action provenance. */
4440
+ resolutions?: gateresolution[];
4441
+ /** The deferred automation commands waiting for their ratelimit bucket reset. */
4442
+ deferred?: deferredevent[];
4443
+ /** The stored phishguard verdicts with their distance scores. */
4444
+ phishverdicts?: phishverdict[];
4445
+ /** The secretvault metadata with labels and scopes only; the values never leave the vault seam. */
4446
+ vault?: secretvaultentry[];
4447
+ /** The connectallow entries of external senders; the list ships empty by default. */
4448
+ connectallow?: connectallowentry[];
4449
+ /** The safedefaults applications with their first seen origins. */
4450
+ safedefaults?: safedefaultapplication[];
4451
+ /** The redactshot regions per origin and page template with their geometry and reason. */
4452
+ redactregions?: redactregion[];
4453
+ }
4454
+ /**
4455
+ * Security part two contracts of the 1.1.62 family.
4456
+ * The protections for secrets, messages and money live here: the secretvault keeps passwords and tokens behind a vault seam with only labels, scopes, provenance and digests persisting, redactshots mask sensitive capture regions across every capture kind, schemastrict rejects every inbound command field the grammar never declared, origincheck and connectallow guard every runtime message and port connection while dropping unknown senders, ratelimit buckets bound automation commands per origin and per session with deferral until the window resets, confirmpay, confirmdelete and confirmcreds put one distinct human action in front of payments, deletions and credential use with no batch approval and no timeout, phishguard watches login targets for lookalike origins against the granted origins under the user threshold, safedefaults profile unknown origins as reads only, and permdiff records every installed permission change for the transparencypage.
4457
+ * The consent gates do not move: every security operation rides the same session, plan and origin review, and no security record ever bypasses the human review.
4458
+ */
4459
+ /** The provenance of one secretvault record: the user typed the secret, or a reviewed session step stored it. */
4460
+ export type secretprovenance = "user" | "session";
4461
+ /** One secretvault record: the label, the exact origin scope, the profile workspace, the provenance and the sha-256 verification digest; the value itself lives behind the vault seam and never persists in any storage area, log or export. */
4462
+ export interface secretvaultentry {
4463
+ vaultid: string;
4464
+ label: string;
4465
+ scope: string;
4466
+ profileid: string;
4467
+ provenance: secretprovenance;
4468
+ algorithm: "sha-256";
4469
+ digest: string;
4470
+ createdat: number;
4471
+ lastusedat?: number;
4472
+ }
4473
+ /** The vault seam the background implements: values enter and leave through put, fetch and drop only, so no plaintext value ever reaches a storage writer, a log entry or an export path. */
4474
+ export interface vaultseam {
4475
+ put(vaultid: string, value: string): Promise<void>;
4476
+ fetch(vaultid: string): Promise<string | undefined>;
4477
+ drop(vaultid: string): Promise<void>;
4478
+ }
4479
+ /** One redactshot region: the geometry on the capture surface in css pixels, the plain language reason and whether the user drew it or a sensitive field shape derived it. */
4480
+ export interface redactregion {
4481
+ id: string;
4482
+ origin: string;
4483
+ template: string;
4484
+ x: number;
4485
+ y: number;
4486
+ width: number;
4487
+ height: number;
4488
+ reason: string;
4489
+ source: "fieldshape" | "userdrawn";
4490
+ createdat: number;
4491
+ }
4492
+ /** The capture surfaces redactshots covers: viewport, element and stitched captures alike. */
4493
+ export type capturesurface = "viewport" | "element" | "stitched";
4494
+ /** One schemastrict error: the path inside the command, the expected shape, the found shape and the reason in plain language; the error echoes no payload. */
4495
+ export interface schemaerror {
4496
+ path: string;
4497
+ expected: string;
4498
+ found: string;
4499
+ reason: string;
4500
+ }
4501
+ /** One origincheck verdict of an inbound runtime message or port connection: accepted, or dropped with the sender and its origin named. */
4502
+ export interface origincheckverdict {
4503
+ accepted: boolean;
4504
+ sender: string;
4505
+ origin: string;
4506
+ reason: string;
4507
+ }
4508
+ /** One connectallow entry: the external sender the user allowed with its display name and optional origin; the list ships empty by default and holds user managed entries only. */
4509
+ export interface connectallowentry {
4510
+ senderid: string;
4511
+ displayname: string;
4512
+ origin?: string;
4513
+ addedat: number;
4514
+ }
4515
+ /** One ratelimit bucket of automation commands per origin and per session: the user configured bound and window, the used count, the window start and the reset time. */
4516
+ export interface ratelimitbucket {
4517
+ origin: string;
4518
+ sessionid: string;
4519
+ limit: number;
4520
+ window: number;
4521
+ used: number;
4522
+ windowstartedat: number;
4523
+ resetsat: number;
4524
+ }
4525
+ /** One deferred command event: the step the bucket deferred, the reason and the reset time it waits for. */
4526
+ export interface deferredevent {
4527
+ id: string;
4528
+ stepid: string;
4529
+ kind: string;
4530
+ origin: string;
4531
+ reason: string;
4532
+ resetsat: number;
4533
+ at: number;
4534
+ }
4535
+ /** The gated step families of the 1.1.62 family: payments, destructive deletions and credential use each pause in front of a human. */
4536
+ export type gatekind = "confirmpay" | "confirmdelete" | "confirmcreds";
4537
+ /** One confirm gate: the step it holds, the payload the human reviews and the state only one explicit human action resolves; no timeout ever resolves a gate and no batch approval resolves two. */
4538
+ export interface confirmgate {
4539
+ gateid: string;
4540
+ kind: gatekind;
4541
+ stepid: string;
4542
+ runid: string;
4543
+ origin: string;
4544
+ /** confirmpay carries the amount, the payee origin and the target element; confirmdelete carries the target, the scope and the irreversibility; confirmcreds carries the credential label only, never its value. */
4545
+ payload: Record<string, string>;
4546
+ state: "open" | "resolved" | "refused";
4547
+ openedat: number;
4548
+ resolvedat?: number;
4549
+ actor?: string;
4550
+ }
4551
+ /** One gate resolution event with its human action provenance: one gate, one decision, one acting user. */
4552
+ export interface gateresolution {
4553
+ gateid: string;
4554
+ kind: gatekind;
4555
+ stepid: string;
4556
+ decision: "resolved" | "refused";
4557
+ actor: string;
4558
+ at: number;
4559
+ }
4560
+ /** One gate wait evidence of the progress log: the gate the step waited at and the milliseconds it waited. */
4561
+ export interface gatewaitevidence {
4562
+ gateid: string;
4563
+ kind: string;
4564
+ openedat: number;
4565
+ resolvedat: number;
4566
+ waitedms: number;
4567
+ }
4568
+ /** One phishguard verdict: the login origin checked, the closest granted origin with the lookalike distance, the user threshold and the block decision that names the matched origin. */
4569
+ export interface phishverdict {
4570
+ origin: string;
4571
+ matchedorigin?: string;
4572
+ distance: number;
4573
+ threshold: number;
4574
+ blocked: boolean;
4575
+ reason: string;
4576
+ at: number;
4577
+ }
4578
+ /** One permdiff record between two installed permission versions: the added and removed permissions with the computed time. */
4579
+ export interface permdiffrecord {
4580
+ fromversion: string;
4581
+ toversion: string;
4582
+ added: string[];
4583
+ removed: string[];
4584
+ computedat: number;
4585
+ }
4586
+ /** One safedefaults application: the unknown origin that received the reads only profile with its first seen time. */
4587
+ export interface safedefaultapplication {
4588
+ origin: string;
4589
+ firstseenat: number;
4590
+ }
4591
+ /** One transparency grant row of the transparencypage: the origin, the scope, the boundary and the revoke action it offers. */
4592
+ export interface transparencygrant {
4593
+ origin: string;
4594
+ scope: string;
4595
+ boundary: string;
4596
+ grantedat: number;
4597
+ }
4284
4598
  //# sourceMappingURL=types.d.ts.map