[{"data":1,"prerenderedAt":1351},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fcli\u002Fact":3,"docs-nav":1239},{"id":4,"title":5,"body":6,"description":1231,"extension":1232,"meta":1233,"navigation":414,"order":1234,"path":1235,"seo":1236,"stem":1237,"__hash__":1238},"docs\u002Fdocs\u002F3.cli\u002F6.act.md","Act commands",{"type":7,"value":8,"toc":1228},"minimark",[9,18,50,81,242,249,871,881,891,896,899,1015,1041,1048,1210,1224],[10,11,12,13,17],"p",{},"Act commands change the page. Every one of them runs through the\ncompatibility bridge (a real, locally installed Chrome\u002FChromium driven\nheadlessly) — the first Act command on a tab promotes it, printing\n",[14,15,16],"code",{},"warning: tab promoted to bridge",". Once promoted, a tab stays on the\nbridge for the rest of its life.",[10,19,20,21,25,26,29,30,33,34,37,38,41,42,45,46,49],{},"Every Act command targets an element by ",[22,23,24],"strong",{},"ID"," (",[14,27,28],{},"jawb click 48","), or by\na fallback selector: ",[14,31,32],{},"--text \u003Cs>",", ",[14,35,36],{},"--role \u003Crole>[:\u003Cname>]",", or ",[14,39,40],{},"--css \u003Cselector>",". Exactly one is required. If a fallback matches more than\none element, jawb reports ",[14,43,44],{},"E_AMBIGUOUS"," with the candidate IDs; ",[14,47,48],{},"--nth \u003Ck>"," picks one (1-based).",[10,51,52,53,56,57,60,61,33,64,67,68,71,72,74,75,77,78,80],{},"Each command takes the positionals shown below and no more. An extra word\nis a usage error (",[14,54,55],{},"E_USAGE",", exit 2) and nothing is sent to the page, so\nquote a value or a name that contains spaces: ",[14,58,59],{},"jawb fill --role \"textbox:Full name\" \"Jane Doe\"",". ",[14,62,63],{},"type",[14,65,66],{},"select"," and ",[14,69,70],{},"upload"," are the\nexceptions: ",[14,73,63],{}," joins its words with spaces, ",[14,76,66],{}," takes several\nvalues and ",[14,79,70],{}," several files.",[82,83,84,97],"table",{},[85,86,87],"thead",{},[88,89,90,94],"tr",{},[91,92,93],"th",{},"Command",[91,95,96],{},"What it does",[98,99,100,111,121,131,141,155,172,182,192,208,222,232],"tbody",{},[88,101,102,108],{},[103,104,105],"td",{},[14,106,107],{},"click \u003Ctarget> [--button left|right|middle] [--double]",[103,109,110],{},"Clicks, after checking the element is visible, enabled, not covered, and stable (auto-waits up to 5s).",[88,112,113,118],{},[103,114,115],{},[14,116,117],{},"fill \u003Ctarget> \u003Cvalue> [--secret-from vault:\u003Cname>|env:\u003CNAME>|file:\u003CPATH>]",[103,119,120],{},"Replaces the field's value.",[88,122,123,128],{},[103,124,125],{},[14,126,127],{},"type \u003Ctarget> \u003Ctext> [--delay \u003Cms>]",[103,129,130],{},"Types key by key and appends.",[88,132,133,138],{},[103,134,135],{},[14,136,137],{},"select \u003Ctarget> \u003Cvalue...> [--by value|label]",[103,139,140],{},"Chooses an option.",[88,142,143,152],{},[103,144,145,148,149],{},[14,146,147],{},"check \u003Ctarget>"," \u002F ",[14,150,151],{},"uncheck \u003Ctarget>",[103,153,154],{},"Sets a checkbox\u002Fradio state.",[88,156,157,162],{},[103,158,159],{},[14,160,161],{},"press \u003Ckey> [\u003Ctarget>]",[103,163,164,165,33,168,171],{},"Sends a key (e.g. ",[14,166,167],{},"Enter",[14,169,170],{},"Control+A","). Without a target: the focused element.",[88,173,174,179],{},[103,175,176],{},[14,177,178],{},"hover \u003Ctarget>",[103,180,181],{},"Hovers.",[88,183,184,189],{},[103,185,186],{},[14,187,188],{},"scroll --to \u003Cid> | --by \u003Cpx>[,\u003Cpx>] | --top | --bottom",[103,190,191],{},"Scrolls the page or to an element.",[88,193,194,199],{},[103,195,196],{},[14,197,198],{},"upload \u003Ctarget> \u003Cfile...>",[103,200,201,202,207],{},"Uploads file bytes (never the path). Requires confirmation (see ",[203,204,206],"a",{"href":205},"\u002Fdocs\u002Fcli\u002Fpolicy","policy",").",[88,209,210,215],{},[103,211,212],{},[14,213,214],{},"download \u003Ctarget> [--to \u003Cdir>]",[103,216,217,218,221],{},"Triggers a download; ",[14,219,220],{},"--to"," makes the CLI fetch the saved bytes into a directory you choose.",[88,223,224,229],{},[103,225,226],{},[14,227,228],{},"submit [\u003Ctarget>]",[103,230,231],{},"Submits a form (target defaults to the focused element's form).",[88,233,234,239],{},[103,235,236],{},[14,237,238],{},"media play|pause \u003Ctarget>",[103,240,241],{},"Controls a media element.",[10,243,244,245,248],{},"Every Act command returns a ",[22,246,247],{},"diff"," (what changed since the previous\nrevision), not a full re-observation. Example from filling and submitting\na job application form:",[250,251,256],"pre",{"className":252,"code":253,"language":254,"meta":255,"style":255},"language-bash shiki shiki-themes github-light github-dark","$ jawb fill --role \"textbox:Full name\" \"Jane Doe\"\nfill [4] ok\n~ [14] state: [] -> [\"focused\"]; value: \"\" -> \"Jane Doe\"\n  re-rendered 10 element(s), new ids: 3→13, 4→14, 5→15, 6→16, 7→17, 8→18 (+4 more)\nrev 2 → 3 (bridge, 243ms)\n\n$ jawb select --role \"combobox:Team\" \"Browser engine\" --by label\nselect [28] ok: selected [\"browser\"]\n~ [36] state: [\"focused\"] -> []\n~ [38] state: [] -> [\"focused\"]; value: \"Backend\" -> \"Browser engine\"\n  re-rendered 10 element(s), new ids: 23→33, 24→34, 25→35, 26→36, 27→37, 28→38 (+4 more)\nrev 4 → 5 (bridge, 248ms)\n\n$ jawb upload --role textbox:Resume resume.txt\nerror: this upload action needs confirmation (E_CONFIRMATION_REQUIRED)\nconfirm token (upload): ct_c4wk43ztqc56vkq0cwzh\nhint: re-run the same command with --confirm-token \u003Ctoken> (or --yes)\n\n$ jawb upload --role textbox:Resume resume.txt --yes\nupload [40] ok: 1 file(s) sent as bytes\n~ [40] value: \"\" -> \"resume.txt\"\n~ [41] label: \"No file chosen\" -> \"Attached resume.txt (80 bytes)\"\nrev 5 → 6 (bridge, 194ms)\n\n$ jawb submit --role \"button:Send application\"\nsubmit [42] ok\n  navigated -> http:\u002F\u002F...\u002Fthanks.html?name=Jane+Doe&email=jane%40example.com&role=browser&resume=resume.txt (2 elements; run `jawb observe` for the page)\nrev 6 → 7 (bridge, 204ms)\n","bash","",[14,257,258,284,294,329,386,409,416,440,454,472,500,545,565,570,588,611,623,666,671,690,703,721,739,758,763,778,787,852],{"__ignoreMap":255},[259,260,263,267,271,274,278,281],"span",{"class":261,"line":262},"line",1,[259,264,266],{"class":265},"sScJk","$",[259,268,270],{"class":269},"sZZnC"," jawb",[259,272,273],{"class":269}," fill",[259,275,277],{"class":276},"sj4cs"," --role",[259,279,280],{"class":269}," \"textbox:Full name\"",[259,282,283],{"class":269}," \"Jane Doe\"\n",[259,285,287,290],{"class":261,"line":286},2,[259,288,289],{"class":265},"fill",[259,291,293],{"class":292},"sVt8B"," [4] ok\n",[259,295,297,301,304,307,310,313,316,319,322,325,327],{"class":261,"line":296},3,[259,298,300],{"class":299},"szBVR","~",[259,302,303],{"class":292}," [14] state: [] -",[259,305,306],{"class":299},">",[259,308,309],{"class":292}," [",[259,311,312],{"class":269},"\"focused\"",[259,314,315],{"class":292},"]; ",[259,317,318],{"class":265},"value:",[259,320,321],{"class":269}," \"\"",[259,323,324],{"class":292}," -",[259,326,306],{"class":299},[259,328,283],{"class":269},[259,330,332,335,338,341,344,347,350,353,356,359,362,365,368,371,374,377,380,383],{"class":261,"line":331},4,[259,333,334],{"class":265},"  re-rendered",[259,336,337],{"class":276}," 10",[259,339,340],{"class":269}," element",[259,342,343],{"class":292},"(",[259,345,346],{"class":265},"s",[259,348,349],{"class":292},")",[259,351,352],{"class":269},",",[259,354,355],{"class":269}," new",[259,357,358],{"class":269}," ids:",[259,360,361],{"class":269}," 3→13,",[259,363,364],{"class":269}," 4→14,",[259,366,367],{"class":269}," 5→15,",[259,369,370],{"class":269}," 6→16,",[259,372,373],{"class":269}," 7→17,",[259,375,376],{"class":269}," 8→18",[259,378,379],{"class":292}," (+4 ",[259,381,382],{"class":269},"more",[259,384,385],{"class":292},")\n",[259,387,389,392,395,398,401,404,407],{"class":261,"line":388},5,[259,390,391],{"class":265},"rev",[259,393,394],{"class":276}," 2",[259,396,397],{"class":269}," →",[259,399,400],{"class":276}," 3",[259,402,403],{"class":292}," (bridge, ",[259,405,406],{"class":269},"243ms",[259,408,385],{"class":292},[259,410,412],{"class":261,"line":411},6,[259,413,415],{"emptyLinePlaceholder":414},true,"\n",[259,417,419,421,423,426,428,431,434,437],{"class":261,"line":418},7,[259,420,266],{"class":265},[259,422,270],{"class":269},[259,424,425],{"class":269}," select",[259,427,277],{"class":276},[259,429,430],{"class":269}," \"combobox:Team\"",[259,432,433],{"class":269}," \"Browser engine\"",[259,435,436],{"class":276}," --by",[259,438,439],{"class":269}," label\n",[259,441,443,445,448,451],{"class":261,"line":442},8,[259,444,66],{"class":299},[259,446,447],{"class":292}," [28] ok: selected [",[259,449,450],{"class":269},"\"browser\"",[259,452,453],{"class":292},"]\n",[259,455,457,459,462,464,467,469],{"class":261,"line":456},9,[259,458,300],{"class":299},[259,460,461],{"class":292}," [36] state: [",[259,463,312],{"class":269},[259,465,466],{"class":292},"] -",[259,468,306],{"class":299},[259,470,471],{"class":292}," []\n",[259,473,475,477,480,482,484,486,488,490,493,495,497],{"class":261,"line":474},10,[259,476,300],{"class":299},[259,478,479],{"class":292}," [38] state: [] -",[259,481,306],{"class":299},[259,483,309],{"class":292},[259,485,312],{"class":269},[259,487,315],{"class":292},[259,489,318],{"class":265},[259,491,492],{"class":269}," \"Backend\"",[259,494,324],{"class":292},[259,496,306],{"class":299},[259,498,499],{"class":269}," \"Browser engine\"\n",[259,501,503,505,507,509,511,513,515,517,519,521,524,527,530,533,536,539,541,543],{"class":261,"line":502},11,[259,504,334],{"class":265},[259,506,337],{"class":276},[259,508,340],{"class":269},[259,510,343],{"class":292},[259,512,346],{"class":265},[259,514,349],{"class":292},[259,516,352],{"class":269},[259,518,355],{"class":269},[259,520,358],{"class":269},[259,522,523],{"class":269}," 23→33,",[259,525,526],{"class":269}," 24→34,",[259,528,529],{"class":269}," 25→35,",[259,531,532],{"class":269}," 26→36,",[259,534,535],{"class":269}," 27→37,",[259,537,538],{"class":269}," 28→38",[259,540,379],{"class":292},[259,542,382],{"class":269},[259,544,385],{"class":292},[259,546,548,550,553,555,558,560,563],{"class":261,"line":547},12,[259,549,391],{"class":265},[259,551,552],{"class":276}," 4",[259,554,397],{"class":269},[259,556,557],{"class":276}," 5",[259,559,403],{"class":292},[259,561,562],{"class":269},"248ms",[259,564,385],{"class":292},[259,566,568],{"class":261,"line":567},13,[259,569,415],{"emptyLinePlaceholder":414},[259,571,573,575,577,580,582,585],{"class":261,"line":572},14,[259,574,266],{"class":265},[259,576,270],{"class":269},[259,578,579],{"class":269}," upload",[259,581,277],{"class":276},[259,583,584],{"class":269}," textbox:Resume",[259,586,587],{"class":269}," resume.txt\n",[259,589,591,594,597,599,602,605,608],{"class":261,"line":590},15,[259,592,593],{"class":265},"error:",[259,595,596],{"class":269}," this",[259,598,579],{"class":269},[259,600,601],{"class":269}," action",[259,603,604],{"class":269}," needs",[259,606,607],{"class":269}," confirmation",[259,609,610],{"class":292}," (E_CONFIRMATION_REQUIRED)\n",[259,612,614,617,620],{"class":261,"line":613},16,[259,615,616],{"class":265},"confirm",[259,618,619],{"class":269}," token",[259,621,622],{"class":292}," (upload): ct_c4wk43ztqc56vkq0cwzh\n",[259,624,626,629,632,635,638,641,644,647,650,653,656,658,661,664],{"class":261,"line":625},17,[259,627,628],{"class":265},"hint:",[259,630,631],{"class":269}," re-run",[259,633,634],{"class":269}," the",[259,636,637],{"class":269}," same",[259,639,640],{"class":269}," command",[259,642,643],{"class":269}," with",[259,645,646],{"class":276}," --confirm-token",[259,648,649],{"class":299}," \u003C",[259,651,652],{"class":269},"toke",[259,654,655],{"class":292},"n",[259,657,306],{"class":299},[259,659,660],{"class":292}," (or ",[259,662,663],{"class":276},"--yes",[259,665,385],{"class":292},[259,667,669],{"class":261,"line":668},18,[259,670,415],{"emptyLinePlaceholder":414},[259,672,674,676,678,680,682,684,687],{"class":261,"line":673},19,[259,675,266],{"class":265},[259,677,270],{"class":269},[259,679,579],{"class":269},[259,681,277],{"class":276},[259,683,584],{"class":269},[259,685,686],{"class":269}," resume.txt",[259,688,689],{"class":276}," --yes\n",[259,691,693,695,698,700],{"class":261,"line":692},20,[259,694,70],{"class":265},[259,696,697],{"class":292}," [40] ok: 1 file(",[259,699,346],{"class":265},[259,701,702],{"class":292},") sent as bytes\n",[259,704,706,708,711,714,716,718],{"class":261,"line":705},21,[259,707,300],{"class":299},[259,709,710],{"class":292}," [40] value: ",[259,712,713],{"class":269},"\"\"",[259,715,324],{"class":292},[259,717,306],{"class":299},[259,719,720],{"class":269}," \"resume.txt\"\n",[259,722,724,726,729,732,734,736],{"class":261,"line":723},22,[259,725,300],{"class":299},[259,727,728],{"class":292}," [41] label: ",[259,730,731],{"class":269},"\"No file chosen\"",[259,733,324],{"class":292},[259,735,306],{"class":299},[259,737,738],{"class":269}," \"Attached resume.txt (80 bytes)\"\n",[259,740,742,744,746,748,751,753,756],{"class":261,"line":741},23,[259,743,391],{"class":265},[259,745,557],{"class":276},[259,747,397],{"class":269},[259,749,750],{"class":276}," 6",[259,752,403],{"class":292},[259,754,755],{"class":269},"194ms",[259,757,385],{"class":292},[259,759,761],{"class":261,"line":760},24,[259,762,415],{"emptyLinePlaceholder":414},[259,764,766,768,770,773,775],{"class":261,"line":765},25,[259,767,266],{"class":265},[259,769,270],{"class":269},[259,771,772],{"class":269}," submit",[259,774,277],{"class":276},[259,776,777],{"class":269}," \"button:Send application\"\n",[259,779,781,784],{"class":261,"line":780},26,[259,782,783],{"class":265},"submit",[259,785,786],{"class":292}," [42] ok\n",[259,788,790,793,795,797,800,803,806,809,812,814,817,820,822,825,828,831,834,837,840,843,846,849],{"class":261,"line":789},27,[259,791,792],{"class":265},"  navigated",[259,794,324],{"class":292},[259,796,306],{"class":299},[259,798,799],{"class":269}," http:\u002F\u002F...\u002Fthanks.html?name=Jane+Doe",[259,801,802],{"class":292},"&email",[259,804,805],{"class":299},"=",[259,807,808],{"class":269},"jane%40example.com",[259,810,811],{"class":292},"&role",[259,813,805],{"class":299},[259,815,816],{"class":269},"browser",[259,818,819],{"class":292},"&resume",[259,821,805],{"class":299},[259,823,824],{"class":269},"resume.txt",[259,826,827],{"class":265}," (2",[259,829,830],{"class":269}," elements",[259,832,833],{"class":292},"; ",[259,835,836],{"class":265},"run",[259,838,839],{"class":269}," `",[259,841,842],{"class":265},"jawb",[259,844,845],{"class":269}," observe`",[259,847,848],{"class":299}," for",[259,850,851],{"class":292}," the page)\n",[259,853,855,857,859,861,864,866,869],{"class":261,"line":854},28,[259,856,391],{"class":265},[259,858,750],{"class":276},[259,860,397],{"class":269},[259,862,863],{"class":276}," 7",[259,865,403],{"class":292},[259,867,868],{"class":269},"204ms",[259,870,385],{"class":292},[10,872,873,874,880],{},"Notice the page rebuilding its own DOM after each fill\u002Fselect (a\nReact-like form does this constantly) never invalidated the elements jawb\nhad already targeted — that's the ID-retargeting behavior described in\n",[203,875,877],{"href":876},"\u002Fdocs\u002Fcli\u002Fobserve",[14,878,879],{},"observe",".",[10,882,883,884,887,888,890],{},"A page with a payment or password field, or a control whose label looks\nlike a purchase action (buy, pay, place order, subscribe), triggers a\nstricter confirmation flow than the upload above — see\n",[203,885,886],{"href":205},"policy and confirmation",", which is not something ",[14,889,663],{},"\ncan bypass.",[892,893,895],"h2",{"id":894},"secrets","Secrets",[10,897,898],{},"Store a password or token once, then fill it by name. jawbd keeps it\nencrypted with the profile's key and resolves it itself, so the value\nnever passes through the CLI, your shell history, the envelope or the\ntrace:",[250,900,902],{"className":252,"code":901,"language":254,"meta":255,"style":255},"$ printf %s \"$SITE_PASSWORD\" | jawb secret set site-pw   # value from stdin, never argv\nstored secret site-pw in profile default\n$ jawb fill --role \"textbox:Password\" --secret-from vault:site-pw\nfill [7] ok\n$ jawb secret list\nsite-pw\n$ jawb secret rm site-pw\n",[14,903,904,941,959,978,985,996,1001],{"__ignoreMap":255},[259,905,906,908,911,914,917,920,923,926,928,931,934,937],{"class":261,"line":262},[259,907,266],{"class":265},[259,909,910],{"class":269}," printf",[259,912,913],{"class":269}," %s",[259,915,916],{"class":269}," \"",[259,918,919],{"class":292},"$SITE_PASSWORD",[259,921,922],{"class":269},"\"",[259,924,925],{"class":299}," |",[259,927,270],{"class":265},[259,929,930],{"class":269}," secret",[259,932,933],{"class":269}," set",[259,935,936],{"class":269}," site-pw",[259,938,940],{"class":939},"sJ8bj","   # value from stdin, never argv\n",[259,942,943,946,948,950,953,956],{"class":261,"line":286},[259,944,945],{"class":265},"stored",[259,947,930],{"class":269},[259,949,936],{"class":269},[259,951,952],{"class":269}," in",[259,954,955],{"class":269}," profile",[259,957,958],{"class":269}," default\n",[259,960,961,963,965,967,969,972,975],{"class":261,"line":296},[259,962,266],{"class":265},[259,964,270],{"class":269},[259,966,273],{"class":269},[259,968,277],{"class":276},[259,970,971],{"class":269}," \"textbox:Password\"",[259,973,974],{"class":276}," --secret-from",[259,976,977],{"class":269}," vault:site-pw\n",[259,979,980,982],{"class":261,"line":331},[259,981,289],{"class":265},[259,983,984],{"class":292}," [7] ok\n",[259,986,987,989,991,993],{"class":261,"line":388},[259,988,266],{"class":265},[259,990,270],{"class":269},[259,992,930],{"class":269},[259,994,995],{"class":269}," list\n",[259,997,998],{"class":261,"line":411},[259,999,1000],{"class":265},"site-pw\n",[259,1002,1003,1005,1007,1009,1012],{"class":261,"line":418},[259,1004,266],{"class":265},[259,1006,270],{"class":269},[259,1008,930],{"class":269},[259,1010,1011],{"class":269}," rm",[259,1013,1014],{"class":269}," site-pw\n",[10,1016,1017,1020,1021,1024,1025,1028,1029,1032,1033,1036,1037,1040],{},[14,1018,1019],{},"--from env:\u003CNAME>"," or ",[14,1022,1023],{},"--from file:\u003CPATH>"," read the value from an\nenvironment variable or a file instead of stdin. Secrets belong to a\npersistent profile (",[14,1026,1027],{},"--profile"," picks one): incognito tabs cannot use\nthem, ",[14,1030,1031],{},"storage export"," never includes them, and ",[14,1034,1035],{},"profile delete"," removes\nthem. ",[14,1038,1039],{},"secret list"," shows names and bound domains. jawb never shows a\nvalue back.",[10,1042,1043,1044,1047],{},"An extension that calls an API can ask jawbd to send a secret with its\nrequests, for example as an ",[14,1045,1046],{},"Authorization"," header. jawbd sends it only to\nthe domains you bound the secret to, and only if the extension declares\nthem too:",[250,1049,1051],{"className":252,"code":1050,"language":254,"meta":255,"style":255},"$ printf %s \"$API_TOKEN\" | jawb secret set shop.key --domains api.shop.example\nstored secret shop.key in profile default; sent only to api.shop.example\n$ jawb secret set shop.key --domains api.shop.example,eu.shop.example\njawb: this sends a secret to MORE domains and needs a human (pc_…):\n  ...\nType `widen` to approve it, or `deny` to decline it:\n",[14,1052,1053,1085,1113,1130,1166,1171],{"__ignoreMap":255},[259,1054,1055,1057,1059,1061,1063,1066,1068,1070,1072,1074,1076,1079,1082],{"class":261,"line":262},[259,1056,266],{"class":265},[259,1058,910],{"class":269},[259,1060,913],{"class":269},[259,1062,916],{"class":269},[259,1064,1065],{"class":292},"$API_TOKEN",[259,1067,922],{"class":269},[259,1069,925],{"class":299},[259,1071,270],{"class":265},[259,1073,930],{"class":269},[259,1075,933],{"class":269},[259,1077,1078],{"class":269}," shop.key",[259,1080,1081],{"class":276}," --domains",[259,1083,1084],{"class":269}," api.shop.example\n",[259,1086,1087,1089,1091,1093,1095,1097,1100,1102,1105,1108,1111],{"class":261,"line":286},[259,1088,945],{"class":265},[259,1090,930],{"class":269},[259,1092,1078],{"class":269},[259,1094,952],{"class":269},[259,1096,955],{"class":269},[259,1098,1099],{"class":269}," default",[259,1101,833],{"class":292},[259,1103,1104],{"class":265},"sent",[259,1106,1107],{"class":269}," only",[259,1109,1110],{"class":269}," to",[259,1112,1084],{"class":269},[259,1114,1115,1117,1119,1121,1123,1125,1127],{"class":261,"line":296},[259,1116,266],{"class":265},[259,1118,270],{"class":269},[259,1120,930],{"class":269},[259,1122,933],{"class":269},[259,1124,1078],{"class":269},[259,1126,1081],{"class":276},[259,1128,1129],{"class":269}," api.shop.example,eu.shop.example\n",[259,1131,1132,1135,1137,1140,1143,1145,1147,1150,1153,1156,1158,1160,1163],{"class":261,"line":331},[259,1133,1134],{"class":265},"jawb:",[259,1136,596],{"class":269},[259,1138,1139],{"class":269}," sends",[259,1141,1142],{"class":269}," a",[259,1144,930],{"class":269},[259,1146,1110],{"class":269},[259,1148,1149],{"class":269}," MORE",[259,1151,1152],{"class":269}," domains",[259,1154,1155],{"class":269}," and",[259,1157,604],{"class":269},[259,1159,1142],{"class":269},[259,1161,1162],{"class":269}," human",[259,1164,1165],{"class":292}," (pc_…):\n",[259,1167,1168],{"class":261,"line":388},[259,1169,1170],{"class":276},"  ...\n",[259,1172,1173,1176,1178,1181,1184,1186,1189,1192,1195,1197,1200,1202,1204,1207],{"class":261,"line":411},[259,1174,1175],{"class":265},"Type",[259,1177,839],{"class":269},[259,1179,1180],{"class":265},"widen",[259,1182,1183],{"class":269},"`",[259,1185,1110],{"class":265},[259,1187,1188],{"class":269}," approve",[259,1190,1191],{"class":269}," it,",[259,1193,1194],{"class":269}," or",[259,1196,839],{"class":269},[259,1198,1199],{"class":265},"deny",[259,1201,1183],{"class":269},[259,1203,1110],{"class":265},[259,1205,1206],{"class":269}," decline",[259,1208,1209],{"class":269}," it:\n",[10,1211,1212,1213,1216,1217,1219,1220,1223],{},"A secret with no domains is never sent by an extension; ",[14,1214,1215],{},"fill --secret-from"," still uses it. Adding a domain to an existing secret needs a\nperson: jawb shows the change and asks you to type ",[14,1218,1180],{},". A program can\nask for the change but cannot approve it with the token alone; you approve\nit here, with ",[14,1221,1222],{},"jawb confirm \u003Cpc_id>",", or in the desktop app. Creating a\nsecret, or removing domains, applies at once. Needs jawbd API level 29.",[1225,1226,1227],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":255,"searchDepth":286,"depth":286,"links":1229},[1230],{"id":894,"depth":286,"text":895},"Click, fill, type, select, check, press, hover, scroll, upload, download and submit.","md",{},null,"\u002Fdocs\u002Fcli\u002Fact",{"title":5,"description":1231},"docs\u002F3.cli\u002F6.act","fm4o3HHFELcQoMUvzHcIVG12wa6PIAbZsBcg_09mgq8",[1240],{"title":1241,"path":1242,"stem":1243,"children":1244},"Documentation","\u002Fdocs","docs\u002F1.index",[1245,1246,1250,1254,1258,1280,1317,1331,1335,1339,1343,1347],{"title":1241,"path":1242,"stem":1243},{"title":1247,"path":1248,"stem":1249},"Protocol adapters","\u002Fdocs\u002Fprotocol","docs\u002F10.protocol",{"title":1251,"path":1252,"stem":1253},"Extensions","\u002Fdocs\u002Fextensions","docs\u002F11.extensions",{"title":1255,"path":1256,"stem":1257},"Roadmap and status","\u002Fdocs\u002Froadmap","docs\u002F12.roadmap",{"title":1259,"path":1260,"stem":1261,"children":1262},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F2.getting-started\u002F1.index",[1263,1264,1268,1272,1276],{"title":1259,"path":1260,"stem":1261},{"title":1265,"path":1266,"stem":1267},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F2.getting-started\u002F2.installation",{"title":1269,"path":1270,"stem":1271},"Desktop app","\u002Fdocs\u002Fgetting-started\u002Fdesktop-app","docs\u002F2.getting-started\u002F3.desktop-app",{"title":1273,"path":1274,"stem":1275},"Running the daemon","\u002Fdocs\u002Fgetting-started\u002Frunning-the-daemon","docs\u002F2.getting-started\u002F4.running-the-daemon",{"title":1277,"path":1278,"stem":1279},"Using the CLI","\u002Fdocs\u002Fgetting-started\u002Fusing-the-cli","docs\u002F2.getting-started\u002F5.using-the-cli",{"title":1281,"path":1282,"stem":1283,"children":1284},"CLI reference","\u002Fdocs\u002Fcli","docs\u002F3.cli\u002F1.index",[1285,1286,1290,1294,1298,1301,1305,1306,1310,1313],{"title":1281,"path":1282,"stem":1283},{"title":1287,"path":1288,"stem":1289},"JSON envelope and exit codes","\u002Fdocs\u002Fcli\u002Fjson-and-exit-codes","docs\u002F3.cli\u002F10.json-and-exit-codes",{"title":1291,"path":1292,"stem":1293},"jawb status","\u002Fdocs\u002Fcli\u002Fstatus","docs\u002F3.cli\u002F2.status",{"title":1295,"path":1296,"stem":1297},"Tabs, profiles and sessions","\u002Fdocs\u002Fcli\u002Ftabs-and-profiles","docs\u002F3.cli\u002F3.tabs-and-profiles",{"title":1299,"path":876,"stem":1300},"jawb observe [\u003Curl>] [--full] [--interactive-only] [--js]","docs\u002F3.cli\u002F4.observe",{"title":1302,"path":1303,"stem":1304},"jawb read [--format md|text|json] [--element \u003Cid>] [--full] [--js]","\u002Fdocs\u002Fcli\u002Fread","docs\u002F3.cli\u002F5.read",{"title":5,"path":1235,"stem":1237},{"title":1307,"path":1308,"stem":1309},"See commands","\u002Fdocs\u002Fcli\u002Fsee","docs\u002F3.cli\u002F7.see",{"title":1311,"path":205,"stem":1312},"Policy and confirmation","docs\u002F3.cli\u002F8.policy",{"title":1314,"path":1315,"stem":1316},"Install lifecycle and profile settings","\u002Fdocs\u002Fcli\u002Flifecycle","docs\u002F3.cli\u002F9.lifecycle",{"title":1318,"path":1319,"stem":1320,"children":1321},"SDK reference","\u002Fdocs\u002Fsdk","docs\u002F4.sdk\u002F1.index",[1322,1323,1327],{"title":1318,"path":1319,"stem":1320},{"title":1324,"path":1325,"stem":1326},"Rust SDK — jawb-sdk-rust","\u002Fdocs\u002Fsdk\u002Frust-sdk","docs\u002F4.sdk\u002F2.rust-sdk",{"title":1328,"path":1329,"stem":1330},"Website SDK — @4hum-ai\u002Fjawb-sdk","\u002Fdocs\u002Fsdk\u002Fwebsite-sdk","docs\u002F4.sdk\u002F3.website-sdk",{"title":1332,"path":1333,"stem":1334},"Configuration","\u002Fdocs\u002Fconfig","docs\u002F5.config",{"title":1336,"path":1337,"stem":1338},"WebMCP","\u002Fdocs\u002Fwebmcp","docs\u002F6.webmcp",{"title":1340,"path":1341,"stem":1342},"Agents","\u002Fdocs\u002Fagents","docs\u002F7.agents",{"title":1344,"path":1345,"stem":1346},"MCP server","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",{"title":1348,"path":1349,"stem":1350},"Security and trust","\u002Fdocs\u002Fsecurity","docs\u002F9.security",1792595702495]