Files
BrowserSkill/crates/bsk-protocol/schema/tool_network_entry.json
T
hjxccc 259b4826b7 feat: add bsk network read-only command
Add `bsk network` as a sibling of the `console` command from #7,
reading the buffered network responses / failures for a tab. Fills the
remaining half of the request in #2 (console landed in #7; network did
not).

Mirrors the console command's conventions exactly:

  bsk network --session <id> [--tab-id N] [--since C]
                             [--limit N] [--max-text-chars N]

The extension enables `Network` on attach (best-effort) and buffers
`responseReceived` / `loadingFailed` events per tab with a monotonic
sequence, correlating them to `requestWillBeSent` for method/URL. Reads
are cursor-paginated (`since` -> `next_since`) and bounded (`limit`,
`max_text_chars`) for agent-context safety, same as console. Entries
carry the real HTTP status code (response) or the CDP failure reason
(failure) — things `performance.getEntriesByType('resource')` can't
give.

Classified read-only (pass-through under the pending-interrupt gate);
defaults to the Agent Window's active tab.

Wires bsk-protocol (Method + params/result/entry structs + schema),
bsk-cli (network subcommand + daemon dispatch allow-list) and the
extension (handler + dispatcher route), with unit / parse / IPC tests
paralleling the console command.

Refs #2.
2026-07-18 22:37:57 +08:00

95 lines
1.7 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "NetworkEntry",
"type": "object",
"required": [
"kind",
"sequence",
"url"
],
"properties": {
"error_text": {
"description": "CDP failure reason (`failure` entries only).",
"type": [
"string",
"null"
]
},
"kind": {
"$ref": "#/definitions/NetworkEntryKind"
},
"method": {
"type": [
"string",
"null"
]
},
"mime_type": {
"type": [
"string",
"null"
]
},
"resource_type": {
"type": [
"string",
"null"
]
},
"sequence": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"status": {
"description": "HTTP status code (`response` entries only).",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"status_text": {
"type": [
"string",
"null"
]
},
"timestamp": {
"type": [
"number",
"null"
],
"format": "double"
},
"truncated": {
"default": false,
"type": "boolean"
},
"url": {
"type": "string"
}
},
"definitions": {
"NetworkEntryKind": {
"oneOf": [
{
"description": "A response was received (`Network.responseReceived`).",
"type": "string",
"enum": [
"response"
]
},
{
"description": "The request failed before completing (`Network.loadingFailed`).",
"type": "string",
"enum": [
"failure"
]
}
]
}
}
}