@wenathlan/extension 1.1.42 → 1.1.44
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 +6 -4
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1451 -14
- package/dist/index.js.map +4 -4
- package/dist/memory.d.ts +76 -5
- package/dist/memory.d.ts.map +1 -1
- package/dist/netauth.d.ts +46 -0
- package/dist/netauth.d.ts.map +1 -0
- package/dist/netcontrol.d.ts +96 -0
- package/dist/netcontrol.d.ts.map +1 -0
- package/dist/netwatch.d.ts +92 -0
- package/dist/netwatch.d.ts.map +1 -0
- package/dist/policy.d.ts +31 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/protocol.d.ts +59 -3
- package/dist/protocol.d.ts.map +1 -1
- package/dist/socketbus.d.ts +134 -0
- package/dist/socketbus.d.ts.map +1 -0
- package/dist/types.d.ts +338 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/extension/dist/background.js +2890 -630
- package/extension/dist/background.js.map +4 -4
- package/extension/dist/manifest.json +1 -1
- package/extension/dist/pagebridge.js +41 -4
- package/extension/dist/pagebridge.js.map +2 -2
- package/extension/dist/popup.html +1 -1
- package/extension/dist/popup.js +20 -3
- package/extension/dist/popup.js.map +2 -2
- package/extension/dist/sidepanel.html +1 -1
- package/extension/dist/sidepanel.js +212 -3
- package/extension/dist/sidepanel.js.map +2 -2
- package/extension/dist/style.css +1 -0
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
package/dist/protocol.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { protocolversion, type agentplan, type bannerreport, type callrecord, type clickablemap, type dataset, type downloadrecord, type errorreport, type extractsession, type focusevent, type formreport, type imagebatch, type keyholdstate, type mediarecord, type mutationevent, type navstate, type netlogrecord, type observation, type pagesignals, type planproposal, type proposalrequest, type provenancerecord, type quarantineentry, type resolvedtarget, type safetyverdict, type selectorcandidate, type shotpair, type shotrecord, type snapshotdiff, type stepoutcome, type tablayout, type tabreport, type trailentry, type transformrule, type typeaheadpick, type wizardstate } from "./types.js";
|
|
1
|
+
import { protocolversion, type agentplan, type apimapentry, type bannerreport, type blockrule, type callrecord, type channelrecord, type clickablemap, type cookieoperation, type dataset, type downloadrecord, type errorreport, type eventsubscription, type exchangerecord, type extractsession, type focusevent, type formreport, type headerule, type imagebatch, type keyholdstate, type mediarecord, type mockspec, type mutationevent, type navstate, type netlogrecord, type observation, type pagesignals, type planproposal, type proposalrequest, type provenancerecord, type proxyroute, type quarantineentry, type ratelimitread, type resolvedtarget, type safetyverdict, type selectorcandidate, type shotpair, type shotrecord, type snapshotdiff, type stepoutcome, type tablayout, type tabreport, type tokenrecord, type trailentry, type transformrule, type typeaheadpick, type wizardstate } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Reviewed options grammar shared by every step kind.
|
|
4
4
|
*
|
|
@@ -32,15 +32,19 @@ import { protocolversion, type agentplan, type bannerreport, type callrecord, ty
|
|
|
32
32
|
* - the media capture part two family adds its parameter grammar: `capturepdf` carries reviewed `pdf` options of `paperwidth` and `paperheight` inches (positive, never capped in code), `margins` of `top`, `right`, `bottom` and `left` inches (negative margins are refused), a positive `scale`, `landscape` and `paginate` flags, optional reviewed break point `selectors` and an `exporttarget` of memory or download; `recordscreen` and `captureaudio` carry reviewed `recording` options of `scope` (`tab` or `run`), positive `fps` and `bitrate` values with no code ceilings, an `audio` flag, a positive `duration` window and a reviewed `consentref` of an approved recording consent prompt; `captureframe` addresses a video element through the step target with an optional `timestamp` in seconds and a `poster` flag; `downloadimages` carries a reviewed `imagefilter` of `selector` scope, `minwidth` and `minheight` thresholds and a `formats` list plus an optional `naming` rule; `shotcanvas` addresses a canvas element through the step target with reviewed capture options; `probestream` carries an optional scope `selector`; `readmedia` and `readassets` carry no parameters; `timelapse` carries a reviewed `lapse` plan of positive `interval` and `duration` windows with a `format` and the lapse duration kept inside the reviewed `wait` budget; `convertimage` carries reviewed `capture` or `captures` ids plus a `convert` directive of `source`, `target` (png, jpeg or webp) and `quality`; and `makethumbs` carries the same capture ids plus a `thumb` directive of positive `size`, `fit` (cover or contain) and `suffix`.
|
|
33
33
|
* - media steps attach structured evidence to step details: pdf records with page count, paper size, margins and byte size, recording records with ids, durations, frame counts and file refs, image batches with filter match counts and deduplicated url lists, frame records with source, timestamp and poster flag, canvas records with context kind, stream probe results with track details, asset lists and ordered lapse frame ids; the response envelope gains a media block with the record id, kind and byte size, and the media report carries every stored media record and image batch.
|
|
34
34
|
* - the network observation family adds its parameter grammar: `fetchurl` carries a reviewed `fetch` request of `url`, `method` (a known HTTP verb), a custom header `allowlist` object whose names must be non-empty (empty header names are refused), an optional string `body` and a `mode` of `cors`, `no-cors` or `same-origin`, plus a reviewed `fetchoptions` object of `timeout`, `retries`, `backoff` and the redirect `follow` limit (every bound a user choice with no code ceiling) whose worst case must fit the reviewed `wait` budget, an optional `stream` window with its byte `budget` ceiling and a reviewed `consentref` required before any custom header leaves the extension; `parsejson` carries a reviewed stored `call` id and `fields` json path rules of `{ name, path, kind, default }` with dotted paths of non-empty segments; `parsehtml` carries the same `call` id and `queries` of `{ selector, attribute, multi }`; `callrest` carries a reviewed typed `endpoint` name, an optional `payload` object, an optional method `override` and a reviewed `success` status list; `callgraphql` carries the same `endpoint` name and a reviewed `graphql` request of `query` text, `operationkind` (`query` or `mutation`, unknown kinds are refused), optional `variables` and `operationname`; both typed calls accept reviewed `apikeys` references to stored key records.
|
|
35
|
+
* - the network observation part two family adds its parameter grammar: `opensocket` carries a reviewed `socket` of `url` (wss for websockets, https for streams), optional `protocols`, an integer `reconnect` budget, a `backoff` base, a `backoffceiling` where exponential growth stops and an optional `lifetime` window (every bound a user choice with no code ceiling); `sendmessage` carries a reviewed `message` of the open `channel` id, an optional named `stream` and the reviewed `payload` string; `waitmessage` carries a reviewed `filter` of `stream`, a dotted json `path` and the `limit` match count plus the `wait` budget it stops on; `subscribesse` carries a reviewed `subscription` of the event stream `url`, an optional resume `lasteventid`, an optional `lifetime` and the required `cancel` cancellation path; `longpoll` carries a reviewed `poll` cursor of `url`, `cursorfield`, positive `interval`, the required `stop` condition of `{ field, equals }`, an optional `maxpolls` ceiling and the cursor `param` name, with the interval kept inside the reviewed `wait` budget; `watchrequests` carries an optional `watch` window and a user configured match `limit`; `readheaders` carries a reviewed `headers` filter whose `allow` allowlist and `redact` redaction list are both required non-empty before any header value is stored; `capturebodies` carries a reviewed `body` filter of `urlpattern`, `mimes` and the byte `ceiling`; `mapapi` carries an optional match `limit`; and `extractapi` carries a reviewed `replay` spec of the captured `endpoint`, the replay `verb`, parameter `overrides` and dotted extraction `paths`.
|
|
36
|
+
* - network observation part two steps attach structured evidence to step details: the network block with the exchange count and channel state, matched message envelopes with their channel scoped sequence numbers and event counts of stream subscriptions, poll loop iterations with cursor values and stop reasons, observed exchanges with correlation ids, request lifecycle timings and error classes, redacted header views, captured body records with mime types and byte sizes inside the reviewed ceiling, ranked api map entries with frequency, json share and payload stability, and replayed endpoint fields mapped onto extraction paths; the response envelope gains a network block, and the exchanges report carries every exchange, channel, subscription and api map entry of the run.
|
|
35
37
|
* - http steps attach structured evidence to step details: the transport block with status, response header names, byte size and duration, retry counts and stream byte counts, parsedfield values extracted by dotted paths with miss flags, html query results with attribute values, text and element counts, the endpoint name of rest and graphql results, structured json error bodies and every graphql error mapped beside the step that produced it; the response envelope gains a transport block, and the calls report carries every stored call record with the bodies held back.
|
|
38
|
+
* - the network control family adds its parameter grammar: `blockrequest` carries a reviewed `block` rule of an https origin `urlpattern` (patterns without a named origin are refused), an optional `resourcetypes` list and the explicit `reviewed` flag behind the blockgate; `mockresponse` carries a reviewed `mock` fixture of the same origin `urlpattern`, an integer `status`, optional `headers` and either the full `body` reviewed through the explicit `reviewed` flag or a `bodyref` of a captured body of the 1.1.43 body store the fixture replays; `rewriteheaders` carries reviewed `rules` of `{ urlpattern, name, operation, value }` where every pattern names its origin explicitly and the operation is `set`, `append` or `remove`; `setcookies` carries reviewed `cookies` records of `{ name, domain, path, value, expiresat }` scoped to granted domains by the cookiegate; `readcookies` carries an optional `domain`; `clearcookies` carries a reviewed `domain` with an optional `names` list; `authflow` carries a reviewed `oauth` flow of `provider`, https `authorizeurl` and `tokenurl`, `scopes` and the granted `redirectorigin` plus the reviewed provider `consentref`; `saveapikey` carries a reviewed `key` entry of `name`, https origin `origins` scopes, the attaching `header` and the secret `value` behind the explicit `consentref`; `routeproxy` carries a reviewed `proxy` route of `scheme` (http, https, socks4 or socks5), `host`, `port` and the required non-empty `bypass` origin list behind the reviewed `consentref` of the proxygate; `postform` carries a reviewed `form` payload of the https `url` and its `fields`; and `postfiles` carries a reviewed `upload` payload of the https `url`, `fields` and `files` where every file carries the explicit `reviewed` flag before any multipart upload includes it.
|
|
39
|
+
* - network control steps attach structured evidence to step details: the control block with the applied, blocked and mocked rule counts of the run, blocked counts per rule, applied header rewrite rules with their provenance, redacted cookie views without values, oauth flow state with provider and scopes while token values never appear, api key entries with last use timestamps and no key material, proxy route state with apply and revert times, rate limit waits with reset times, urlencoded form encodings and streamed multipart upload progress; the response envelope gains a control block, and the auth report carries token metadata per provider with scopes and expiry windows but no token values.
|
|
36
40
|
*
|
|
37
41
|
* Ambiguous text, aria or name resolutions are refused at execution time with the candidate list so the user can choose.
|
|
38
42
|
*/
|
|
39
|
-
/** Validates agent output before it becomes a locally reviewable plan. Plans may carry any number of steps. Fetch requests must target granted origins and header allowlists must carry non-empty names. */
|
|
43
|
+
/** Validates agent output before it becomes a locally reviewable plan. Plans may carry any number of steps. Fetch requests must target granted origins, channel urls must target granted origins with cancellation paths and bounded lifetimes, and header allowlists must carry non-empty names. */
|
|
40
44
|
export declare function parseproposal(value: unknown, origin: string, grants?: string[]): planproposal;
|
|
41
45
|
/** Shapes the only data that may be sent to a user-configured agent endpoint. */
|
|
42
46
|
export declare function requestbody(input: proposalrequest): string;
|
|
43
|
-
/** Wraps one executed step outcome in the versioned response envelope for callers, attaching the matched element summary, the capture block of capture steps, the media block of media steps
|
|
47
|
+
/** Wraps one executed step outcome in the versioned response envelope for callers, attaching the matched element summary, the capture block of capture steps, the media block of media steps, the transport block of outbound calls, the network block of observed exchanges and channels and the control block of applied traffic rules for review. */
|
|
44
48
|
export declare function outcomeresponse(input: {
|
|
45
49
|
outcome: stepoutcome;
|
|
46
50
|
plan: agentplan;
|
|
@@ -61,6 +65,16 @@ export declare function outcomeresponse(input: {
|
|
|
61
65
|
bytes: number;
|
|
62
66
|
duration: number;
|
|
63
67
|
};
|
|
68
|
+
network?: {
|
|
69
|
+
exchanges: number;
|
|
70
|
+
channelstate: string;
|
|
71
|
+
messages: number;
|
|
72
|
+
};
|
|
73
|
+
control?: {
|
|
74
|
+
applied: number;
|
|
75
|
+
blocked: number;
|
|
76
|
+
mocked: number;
|
|
77
|
+
};
|
|
64
78
|
}): string;
|
|
65
79
|
/** Wraps a clickable map payload with numbered entries in the versioned response envelope. */
|
|
66
80
|
export declare function mapresponse(input: {
|
|
@@ -226,4 +240,46 @@ export declare function callsreport(input: {
|
|
|
226
240
|
body?: undefined;
|
|
227
241
|
}>;
|
|
228
242
|
};
|
|
243
|
+
/** Carries every observed exchange, channel, stream subscription and api map entry of the run in the session context envelope with correlation ids kept and captured body bytes held back. */
|
|
244
|
+
export declare function exchangesreport(input: {
|
|
245
|
+
exchanges: exchangerecord[];
|
|
246
|
+
channels: channelrecord[];
|
|
247
|
+
subscriptions: eventsubscription[];
|
|
248
|
+
apimap: apimapentry[];
|
|
249
|
+
}): {
|
|
250
|
+
version: typeof protocolversion;
|
|
251
|
+
exchanges: exchangerecord[];
|
|
252
|
+
channels: channelrecord[];
|
|
253
|
+
subscriptions: eventsubscription[];
|
|
254
|
+
apimap: apimapentry[];
|
|
255
|
+
};
|
|
256
|
+
/** Carries every stored token record per provider in the session context envelope with scopes, origin scope and expiry windows; token values and their storage ids never appear because the material stays behind the storage seam. */
|
|
257
|
+
export declare function authreport(input: {
|
|
258
|
+
tokens: tokenrecord[];
|
|
259
|
+
}): {
|
|
260
|
+
version: typeof protocolversion;
|
|
261
|
+
tokens: Array<Omit<tokenrecord, "accessstorageid" | "refreshstorageid"> & {
|
|
262
|
+
accessstorageid?: undefined;
|
|
263
|
+
refreshstorageid?: undefined;
|
|
264
|
+
}>;
|
|
265
|
+
};
|
|
266
|
+
/** Carries the traffic control state of the run in the session context envelope: the active block, mock and rewrite rule sets with hit counts, the cookie operations with values redacted, the proxy route history with apply and revert times and the rate limit states with reset windows. */
|
|
267
|
+
export declare function controlreport(input: {
|
|
268
|
+
blocks: blockrule[];
|
|
269
|
+
mocks: mockspec[];
|
|
270
|
+
rewrites: headerule[];
|
|
271
|
+
cookies: cookieoperation[];
|
|
272
|
+
proxies: proxyroute[];
|
|
273
|
+
ratelimits: ratelimitread[];
|
|
274
|
+
}): {
|
|
275
|
+
version: typeof protocolversion;
|
|
276
|
+
blocks: blockrule[];
|
|
277
|
+
mocks: Array<Omit<mockspec, "body"> & {
|
|
278
|
+
body?: undefined;
|
|
279
|
+
}>;
|
|
280
|
+
rewrites: headerule[];
|
|
281
|
+
cookies: cookieoperation[];
|
|
282
|
+
proxies: proxyroute[];
|
|
283
|
+
ratelimits: ratelimitread[];
|
|
284
|
+
};
|
|
229
285
|
//# sourceMappingURL=protocol.d.ts.map
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../protocol.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../protocol.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAiB,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAYr5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,qSAAqS;AACrS,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAoF7F;AAiBD,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAE1D;AAED,wVAAwV;AACxV,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,CAEpc;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAEjF;AAED,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAE5J;AAED,yIAAyI;AACzI,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAEhG;AAED,gIAAgI;AAChI,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC,aAAa,GAAG,UAAU,GAAG,YAAY,CAAC,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAE1H;AAED,6IAA6I;AAC7I,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAEnF;AAED,qHAAqH;AACrH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASlL;AAED,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAEpG;AAED,4HAA4H;AAC5H,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAEvF;AAED,6HAA6H;AAC7H,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAE5J;AAED,gHAAgH;AAChH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAE5F;AAED,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAEvF;AAED,+GAA+G;AAC/G,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,CAEvH;AAED,+HAA+H;AAC/H,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAEzF;AAED,iIAAiI;AACjI,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAE3F;AAED,0HAA0H;AAC1H,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,CAEnN;AAED,iHAAiH;AACjH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAIrG;AAED,yIAAyI;AACzI,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,CAEvI;AAED,uJAAuJ;AACvJ,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAEzI;AAED,8GAA8G;AAC9G,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAE/D;AAED,4HAA4H;AAC5H,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,cAAc,EAAE,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,CAE9F;AAED,gIAAgI;AAChI,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAE7H;AAED,gHAAgH;AAChH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,CAEvI;AAED,2IAA2I;AAC3I,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CAEhK;AAED,oLAAoL;AACpL,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CAEtK;AAED,kMAAkM;AAClM,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;CAAE,CAO9J;AAED,8LAA8L;AAC9L,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,SAAS,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAEpT;AAED,uOAAuO;AACvO,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,SAAS,CAAC;QAAC,gBAAgB,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;CAAE,CAQ1O;AAED,gSAAgS;AAChS,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,eAAe,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,aAAa,EAAE,CAAA;CAAE,CAOpZ"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { channelrecord, messageenvelope, messagefilter, pollcursor, socketoptions } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Network observation part two socket logics for the 1.1.43 family.
|
|
4
|
+
* Every correlated rule for the websocket channel lifecycle with reconnection backoff, the multiplexing of named message streams over one channel with channel scoped sequence numbers, the message filter matching of waitmessage steps, the server sent events parsing with last event id resume and the long polling cursor loop with its stop conditions lives in this file.
|
|
5
|
+
* Message payloads are opaque reviewed text; no payload value enters any audit summary built from these results.
|
|
6
|
+
*/
|
|
7
|
+
/** The socket and stream kinds, listed among the available capabilities of every proposal request. */
|
|
8
|
+
export declare const socketkinds: string[];
|
|
9
|
+
/** Connect seam signature: one reviewed channel url with its protocols; the extension executor wires the browser websocket, tests wire plain fixtures. */
|
|
10
|
+
export type socketconnect = (url: string, protocols: string[]) => Promise<{
|
|
11
|
+
open: boolean;
|
|
12
|
+
code?: number;
|
|
13
|
+
error?: string;
|
|
14
|
+
}>;
|
|
15
|
+
/** Resolves the reviewed https origin behind a channel url: wss channels map onto their https origin so the origin grants cover both. */
|
|
16
|
+
export declare function channelorigin(url: string): string;
|
|
17
|
+
/** Normalizes reviewed channel open options: url plus the socket options of protocols, reconnect budget, backoff base and backoff ceiling; every bound stays a user choice with no code ceiling. */
|
|
18
|
+
export declare function channeloptionsof(value: unknown): {
|
|
19
|
+
url: string;
|
|
20
|
+
options: socketoptions;
|
|
21
|
+
} | undefined;
|
|
22
|
+
/** Creates one channel record in the connecting state with its origin, protocols and zeroed message counters. */
|
|
23
|
+
export declare function newchannel(input: {
|
|
24
|
+
id: string;
|
|
25
|
+
runid: string;
|
|
26
|
+
stepid: string;
|
|
27
|
+
kind: "websocket" | "sse";
|
|
28
|
+
url: string;
|
|
29
|
+
protocols?: string[];
|
|
30
|
+
at: number;
|
|
31
|
+
}): channelrecord;
|
|
32
|
+
/** Builds the exponential backoff waits of the reviewed reconnect budget: each wait doubles the base and growth stops at the user configured ceiling, so the budget bounds the growth and no code ceiling exists. */
|
|
33
|
+
export declare function reconnectwaits(attempts: number, base: number, ceiling: number | undefined): number[];
|
|
34
|
+
/**
|
|
35
|
+
* Opens one reviewed channel through the connect seam with the reviewed reconnect budget and backoff: failed attempts wait the exponential backoff before the retry, the channel opens on the first success and a budget exhausted without a connection fails the channel with the last error class.
|
|
36
|
+
*/
|
|
37
|
+
export declare function openchannel(input: {
|
|
38
|
+
record: channelrecord;
|
|
39
|
+
options: socketoptions;
|
|
40
|
+
connect: socketconnect;
|
|
41
|
+
sleep?: (milliseconds: number) => Promise<void>;
|
|
42
|
+
now?: () => number;
|
|
43
|
+
}): Promise<channelrecord>;
|
|
44
|
+
/** Closes one channel record cleanly with its close time and an optional error class, keeping every counter for the audit trail. */
|
|
45
|
+
export declare function closechannel(record: channelrecord, at: number, error?: string): channelrecord;
|
|
46
|
+
/** Live multiplexing state of one run: the per channel sequence counters and the inbound message queue. */
|
|
47
|
+
export interface busstate {
|
|
48
|
+
sequences: Record<string, number>;
|
|
49
|
+
queue: messageenvelope[];
|
|
50
|
+
}
|
|
51
|
+
/** Publishes one reviewed payload on a named stream of an open channel and returns the tagged envelope. */
|
|
52
|
+
export declare function publishmessage(state: busstate, channelid: string, stream: string, payload: string, at: number): {
|
|
53
|
+
state: busstate;
|
|
54
|
+
envelope: messageenvelope;
|
|
55
|
+
};
|
|
56
|
+
/** Receives one inbound channel message on a named stream, tags it with the next channel sequence and queues it for the waitmessage matchers. */
|
|
57
|
+
export declare function receivemessage(state: busstate, channelid: string, stream: string, payload: string, at: number): {
|
|
58
|
+
state: busstate;
|
|
59
|
+
envelope: messageenvelope;
|
|
60
|
+
};
|
|
61
|
+
/** True when one message envelope matches the reviewed filter: the stream name when reviewed, the dotted json path when reviewed and always the sequence integrity of the channel. */
|
|
62
|
+
export declare function matchmessage(filter: messagefilter | undefined, envelope: messageenvelope): boolean;
|
|
63
|
+
/** Collects the queued messages of one channel matching the reviewed filter up to the reviewed match limit, removing the matched envelopes from the queue. */
|
|
64
|
+
export declare function collectmessages(state: busstate, channelid: string, filter: messagefilter | undefined): {
|
|
65
|
+
state: busstate;
|
|
66
|
+
matched: messageenvelope[];
|
|
67
|
+
};
|
|
68
|
+
/** Verifies the sequence integrity of a message stream: per channel the sequences must form one strictly increasing run from one with no gaps. */
|
|
69
|
+
export declare function sequenceintegrity(envelopes: messageenvelope[]): {
|
|
70
|
+
ok: boolean;
|
|
71
|
+
gaps: Array<{
|
|
72
|
+
channelid: string;
|
|
73
|
+
expected: number;
|
|
74
|
+
found: number;
|
|
75
|
+
}>;
|
|
76
|
+
};
|
|
77
|
+
/** Normalizes a reviewed message filter: stream name, dotted json path and the reviewed match limit with no code ceiling. */
|
|
78
|
+
export declare function messagefilterof(value: unknown): messagefilter;
|
|
79
|
+
/** One parsed server sent event: id, event name, joined data lines and the reviewed retry hint. */
|
|
80
|
+
export interface sseevent {
|
|
81
|
+
id?: string;
|
|
82
|
+
event?: string;
|
|
83
|
+
data: string;
|
|
84
|
+
retry?: number;
|
|
85
|
+
}
|
|
86
|
+
/** Parses one server sent events text chunk into complete events with id, event name, data and retry fields, returning the incomplete trailing block as the rest buffer; comment lines stay ignored. */
|
|
87
|
+
export declare function parsessetext(text: string): {
|
|
88
|
+
events: sseevent[];
|
|
89
|
+
rest: string;
|
|
90
|
+
};
|
|
91
|
+
/** Builds the request headers of one server sent events subscription, resuming from the last event id after a reconnect. */
|
|
92
|
+
export declare function sserequestheaders(record: {
|
|
93
|
+
lasteventid?: string;
|
|
94
|
+
}): Record<string, string>;
|
|
95
|
+
/** Normalizes reviewed subscription options: the event stream url, the lifetime window, the resume point and the reviewed cancellation path. */
|
|
96
|
+
export declare function subscriptionoptionsof(value: unknown): {
|
|
97
|
+
url: string;
|
|
98
|
+
lifetime?: number;
|
|
99
|
+
lasteventid?: string;
|
|
100
|
+
cancel: {
|
|
101
|
+
kind: "stop" | "lifetime";
|
|
102
|
+
value: string | number;
|
|
103
|
+
};
|
|
104
|
+
} | undefined;
|
|
105
|
+
/** Normalizes a reviewed long poll cursor: url, cursor field, interval, stop condition, optional poll ceiling and the cursor query parameter; every bound stays a user choice with no code ceiling. */
|
|
106
|
+
export declare function pollcursorof(value: unknown): pollcursor | undefined;
|
|
107
|
+
/** Reads one cursor value from a polled response body by its dotted field path. */
|
|
108
|
+
export declare function cursorfrom(response: unknown, field: string): string | undefined;
|
|
109
|
+
/** Builds the next poll url of a cursor loop: the cursor rides the reviewed query parameter when one is set and posts inside the request body otherwise. */
|
|
110
|
+
export declare function pollurl(cursor: pollcursor, value: string | undefined): {
|
|
111
|
+
url: string;
|
|
112
|
+
body?: string;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Decides one long poll iteration: the loop stops on the reviewed stop condition, the cancellation flag, the plan expiry or the reviewed poll ceiling, and otherwise returns the next poll url with the reviewed interval wait.
|
|
116
|
+
*/
|
|
117
|
+
export declare function polldecision(input: {
|
|
118
|
+
cursor: pollcursor;
|
|
119
|
+
polls: number;
|
|
120
|
+
response: unknown;
|
|
121
|
+
cancelled?: () => boolean;
|
|
122
|
+
expiresat?: number;
|
|
123
|
+
now: number;
|
|
124
|
+
}): {
|
|
125
|
+
continue: boolean;
|
|
126
|
+
reason: string;
|
|
127
|
+
cursor?: string;
|
|
128
|
+
next?: {
|
|
129
|
+
url: string;
|
|
130
|
+
body?: string;
|
|
131
|
+
wait: number;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=socketbus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socketbus.d.ts","sourceRoot":"","sources":["../socketbus.ts"],"names":[],"mappings":"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"}
|