waterplane 0.0.1 → 0.1.6
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/CHANGELOG.md +1172 -0
- package/DISCLAIMER.md +113 -0
- package/LICENSE +21 -0
- package/NOTICES.md +78 -0
- package/README.md +392 -4
- package/SECURITY.md +388 -0
- package/bin/waterplane.mjs +5 -0
- package/deploy/gh-version +1 -0
- package/deploy/node-version +1 -0
- package/node_modules/@waterplane/shared/dist/agentfiles.d.ts +118 -0
- package/node_modules/@waterplane/shared/dist/agentfiles.js +345 -0
- package/node_modules/@waterplane/shared/dist/agentfiles.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/artifacts.d.ts +213 -0
- package/node_modules/@waterplane/shared/dist/artifacts.js +295 -0
- package/node_modules/@waterplane/shared/dist/artifacts.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/askrules.d.ts +95 -0
- package/node_modules/@waterplane/shared/dist/askrules.js +133 -0
- package/node_modules/@waterplane/shared/dist/askrules.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess/sassapply.d.ts +191 -0
- package/node_modules/@waterplane/shared/dist/assess/sassapply.js +152 -0
- package/node_modules/@waterplane/shared/dist/assess/sassapply.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess/sassclean.d.ts +21 -0
- package/node_modules/@waterplane/shared/dist/assess/sassclean.js +453 -0
- package/node_modules/@waterplane/shared/dist/assess/sassclean.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess/sassio.d.ts +257 -0
- package/node_modules/@waterplane/shared/dist/assess/sassio.js +2 -0
- package/node_modules/@waterplane/shared/dist/assess/sassio.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess/sassslot.d.ts +19 -0
- package/node_modules/@waterplane/shared/dist/assess/sassslot.js +136 -0
- package/node_modules/@waterplane/shared/dist/assess/sassslot.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess/sassvocab.d.ts +115 -0
- package/node_modules/@waterplane/shared/dist/assess/sassvocab.js +98 -0
- package/node_modules/@waterplane/shared/dist/assess/sassvocab.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess/sasswords.d.ts +140 -0
- package/node_modules/@waterplane/shared/dist/assess/sasswords.js +155 -0
- package/node_modules/@waterplane/shared/dist/assess/sasswords.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess.d.ts +58 -0
- package/node_modules/@waterplane/shared/dist/assess.js +55 -0
- package/node_modules/@waterplane/shared/dist/assess.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/attach.d.ts +118 -0
- package/node_modules/@waterplane/shared/dist/attach.js +85 -0
- package/node_modules/@waterplane/shared/dist/attach.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/autocompact.d.ts +125 -0
- package/node_modules/@waterplane/shared/dist/autocompact.js +226 -0
- package/node_modules/@waterplane/shared/dist/autocompact.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/backendsources.d.ts +399 -0
- package/node_modules/@waterplane/shared/dist/backendsources.js +3 -0
- package/node_modules/@waterplane/shared/dist/backendsources.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/billing.d.ts +48 -0
- package/node_modules/@waterplane/shared/dist/billing.js +64 -0
- package/node_modules/@waterplane/shared/dist/billing.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/bindconv.d.ts +47 -0
- package/node_modules/@waterplane/shared/dist/bindconv.js +35 -0
- package/node_modules/@waterplane/shared/dist/bindconv.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/bookmark.d.ts +26 -0
- package/node_modules/@waterplane/shared/dist/bookmark.js +40 -0
- package/node_modules/@waterplane/shared/dist/bookmark.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/brand.d.ts +94 -0
- package/node_modules/@waterplane/shared/dist/brand.js +88 -0
- package/node_modules/@waterplane/shared/dist/brand.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/brandmigrate.d.ts +30 -0
- package/node_modules/@waterplane/shared/dist/brandmigrate.js +67 -0
- package/node_modules/@waterplane/shared/dist/brandmigrate.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/budget.d.ts +247 -0
- package/node_modules/@waterplane/shared/dist/budget.js +295 -0
- package/node_modules/@waterplane/shared/dist/budget.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/buildparams.d.ts +146 -0
- package/node_modules/@waterplane/shared/dist/buildparams.js +260 -0
- package/node_modules/@waterplane/shared/dist/buildparams.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/buildscan.d.ts +99 -0
- package/node_modules/@waterplane/shared/dist/buildscan.js +334 -0
- package/node_modules/@waterplane/shared/dist/buildscan.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/burn.d.ts +137 -0
- package/node_modules/@waterplane/shared/dist/burn.js +176 -0
- package/node_modules/@waterplane/shared/dist/burn.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/chord.d.ts +39 -0
- package/node_modules/@waterplane/shared/dist/chord.js +102 -0
- package/node_modules/@waterplane/shared/dist/chord.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/claudeconfig.d.ts +18 -0
- package/node_modules/@waterplane/shared/dist/claudeconfig.js +44 -0
- package/node_modules/@waterplane/shared/dist/claudeconfig.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/claudeversion.d.ts +17 -0
- package/node_modules/@waterplane/shared/dist/claudeversion.js +31 -0
- package/node_modules/@waterplane/shared/dist/claudeversion.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clientframe.d.ts +12 -0
- package/node_modules/@waterplane/shared/dist/clientframe.js +15 -0
- package/node_modules/@waterplane/shared/dist/clientframe.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.d.ts +52 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.js +137 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthcatalog.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.d.ts +58 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js +189 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.d.ts +254 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js +367 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.d.ts +36 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.js +123 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrollup.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.d.ts +101 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.js +103 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healththresholds.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth.d.ts +64 -0
- package/node_modules/@waterplane/shared/dist/clihealth.js +69 -0
- package/node_modules/@waterplane/shared/dist/clihealth.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clirestart.d.ts +66 -0
- package/node_modules/@waterplane/shared/dist/clirestart.js +82 -0
- package/node_modules/@waterplane/shared/dist/clirestart.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/closed.d.ts +41 -0
- package/node_modules/@waterplane/shared/dist/closed.js +102 -0
- package/node_modules/@waterplane/shared/dist/closed.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/collage.d.ts +132 -0
- package/node_modules/@waterplane/shared/dist/collage.js +198 -0
- package/node_modules/@waterplane/shared/dist/collage.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/contextweight.d.ts +169 -0
- package/node_modules/@waterplane/shared/dist/contextweight.js +247 -0
- package/node_modules/@waterplane/shared/dist/contextweight.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/costwindow.d.ts +216 -0
- package/node_modules/@waterplane/shared/dist/costwindow.js +430 -0
- package/node_modules/@waterplane/shared/dist/costwindow.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/ctxwindow.d.ts +92 -0
- package/node_modules/@waterplane/shared/dist/ctxwindow.js +107 -0
- package/node_modules/@waterplane/shared/dist/ctxwindow.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/deskstorage.d.ts +170 -0
- package/node_modules/@waterplane/shared/dist/deskstorage.js +140 -0
- package/node_modules/@waterplane/shared/dist/deskstorage.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/devices.d.ts +52 -0
- package/node_modules/@waterplane/shared/dist/devices.js +53 -0
- package/node_modules/@waterplane/shared/dist/devices.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/dictate.d.ts +178 -0
- package/node_modules/@waterplane/shared/dist/dictate.js +345 -0
- package/node_modules/@waterplane/shared/dist/dictate.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/dictateterms.d.ts +91 -0
- package/node_modules/@waterplane/shared/dist/dictateterms.js +180 -0
- package/node_modules/@waterplane/shared/dist/dictateterms.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/envresolve.d.ts +30 -0
- package/node_modules/@waterplane/shared/dist/envresolve.js +76 -0
- package/node_modules/@waterplane/shared/dist/envresolve.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/fanoutruns.d.ts +25 -0
- package/node_modules/@waterplane/shared/dist/fanoutruns.js +88 -0
- package/node_modules/@waterplane/shared/dist/fanoutruns.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/followup.d.ts +38 -0
- package/node_modules/@waterplane/shared/dist/followup.js +68 -0
- package/node_modules/@waterplane/shared/dist/followup.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/gallery.d.ts +83 -0
- package/node_modules/@waterplane/shared/dist/gallery.js +94 -0
- package/node_modules/@waterplane/shared/dist/gallery.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/halt.d.ts +46 -0
- package/node_modules/@waterplane/shared/dist/halt.js +34 -0
- package/node_modules/@waterplane/shared/dist/halt.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex.d.ts +485 -0
- package/node_modules/@waterplane/shared/dist/healthindex.js +677 -0
- package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindexresponse.d.ts +36 -0
- package/node_modules/@waterplane/shared/dist/healthindexresponse.js +84 -0
- package/node_modules/@waterplane/shared/dist/healthindexresponse.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthspend.d.ts +23 -0
- package/node_modules/@waterplane/shared/dist/healthspend.js +41 -0
- package/node_modules/@waterplane/shared/dist/healthspend.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/hints.d.ts +77 -0
- package/node_modules/@waterplane/shared/dist/hints.js +607 -0
- package/node_modules/@waterplane/shared/dist/hints.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/hosts.d.ts +160 -0
- package/node_modules/@waterplane/shared/dist/hosts.js +316 -0
- package/node_modules/@waterplane/shared/dist/hosts.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/hosturl.d.ts +73 -0
- package/node_modules/@waterplane/shared/dist/hosturl.js +129 -0
- package/node_modules/@waterplane/shared/dist/hosturl.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/index.d.ts +283 -0
- package/node_modules/@waterplane/shared/dist/index.js +305 -0
- package/node_modules/@waterplane/shared/dist/index.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/installlog.d.ts +137 -0
- package/node_modules/@waterplane/shared/dist/installlog.js +367 -0
- package/node_modules/@waterplane/shared/dist/installlog.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/budgetpass.d.ts +103 -0
- package/node_modules/@waterplane/shared/dist/intent/budgetpass.js +185 -0
- package/node_modules/@waterplane/shared/dist/intent/budgetpass.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/clean.d.ts +30 -0
- package/node_modules/@waterplane/shared/dist/intent/clean.js +492 -0
- package/node_modules/@waterplane/shared/dist/intent/clean.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/facts.d.ts +320 -0
- package/node_modules/@waterplane/shared/dist/intent/facts.js +52 -0
- package/node_modules/@waterplane/shared/dist/intent/facts.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +194 -0
- package/node_modules/@waterplane/shared/dist/intent/kind.js +230 -0
- package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/row.d.ts +433 -0
- package/node_modules/@waterplane/shared/dist/intent/row.js +75 -0
- package/node_modules/@waterplane/shared/dist/intent/row.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/slot.d.ts +137 -0
- package/node_modules/@waterplane/shared/dist/intent/slot.js +238 -0
- package/node_modules/@waterplane/shared/dist/intent/slot.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/target.d.ts +62 -0
- package/node_modules/@waterplane/shared/dist/intent/target.js +177 -0
- package/node_modules/@waterplane/shared/dist/intent/target.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/types.d.ts +455 -0
- package/node_modules/@waterplane/shared/dist/intent/types.js +27 -0
- package/node_modules/@waterplane/shared/dist/intent/types.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/verdict.d.ts +50 -0
- package/node_modules/@waterplane/shared/dist/intent/verdict.js +431 -0
- package/node_modules/@waterplane/shared/dist/intent/verdict.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent/words.d.ts +236 -0
- package/node_modules/@waterplane/shared/dist/intent/words.js +329 -0
- package/node_modules/@waterplane/shared/dist/intent/words.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/intent.d.ts +69 -0
- package/node_modules/@waterplane/shared/dist/intent.js +65 -0
- package/node_modules/@waterplane/shared/dist/intent.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/itempaths.d.ts +35 -0
- package/node_modules/@waterplane/shared/dist/itempaths.js +55 -0
- package/node_modules/@waterplane/shared/dist/itempaths.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/keyhint.d.ts +32 -0
- package/node_modules/@waterplane/shared/dist/keyhint.js +53 -0
- package/node_modules/@waterplane/shared/dist/keyhint.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/lanroute.d.ts +86 -0
- package/node_modules/@waterplane/shared/dist/lanroute.js +84 -0
- package/node_modules/@waterplane/shared/dist/lanroute.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/launch.d.ts +110 -0
- package/node_modules/@waterplane/shared/dist/launch.js +102 -0
- package/node_modules/@waterplane/shared/dist/launch.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/launchmodes.d.ts +22 -0
- package/node_modules/@waterplane/shared/dist/launchmodes.js +38 -0
- package/node_modules/@waterplane/shared/dist/launchmodes.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/localrt.d.ts +53 -0
- package/node_modules/@waterplane/shared/dist/localrt.js +54 -0
- package/node_modules/@waterplane/shared/dist/localrt.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/localusage.d.ts +35 -0
- package/node_modules/@waterplane/shared/dist/localusage.js +135 -0
- package/node_modules/@waterplane/shared/dist/localusage.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/naming.d.ts +391 -0
- package/node_modules/@waterplane/shared/dist/naming.js +571 -0
- package/node_modules/@waterplane/shared/dist/naming.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/netfuse.d.ts +60 -0
- package/node_modules/@waterplane/shared/dist/netfuse.js +99 -0
- package/node_modules/@waterplane/shared/dist/netfuse.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/netstall.d.ts +163 -0
- package/node_modules/@waterplane/shared/dist/netstall.js +241 -0
- package/node_modules/@waterplane/shared/dist/netstall.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/nodemin.d.ts +18 -0
- package/node_modules/@waterplane/shared/dist/nodemin.js +35 -0
- package/node_modules/@waterplane/shared/dist/nodemin.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/optins.d.ts +122 -0
- package/node_modules/@waterplane/shared/dist/optins.js +252 -0
- package/node_modules/@waterplane/shared/dist/optins.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pad.d.ts +263 -0
- package/node_modules/@waterplane/shared/dist/pad.js +373 -0
- package/node_modules/@waterplane/shared/dist/pad.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pairing.d.ts +120 -0
- package/node_modules/@waterplane/shared/dist/pairing.js +130 -0
- package/node_modules/@waterplane/shared/dist/pairing.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/passive.d.ts +58 -0
- package/node_modules/@waterplane/shared/dist/passive.js +36 -0
- package/node_modules/@waterplane/shared/dist/passive.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/peer.d.ts +311 -0
- package/node_modules/@waterplane/shared/dist/peer.js +390 -0
- package/node_modules/@waterplane/shared/dist/peer.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/period.d.ts +108 -0
- package/node_modules/@waterplane/shared/dist/period.js +263 -0
- package/node_modules/@waterplane/shared/dist/period.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/plugin.d.ts +898 -0
- package/node_modules/@waterplane/shared/dist/plugin.js +196 -0
- package/node_modules/@waterplane/shared/dist/plugin.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pluginfile.d.ts +25 -0
- package/node_modules/@waterplane/shared/dist/pluginfile.js +8 -0
- package/node_modules/@waterplane/shared/dist/pluginfile.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pluginlaunch.d.ts +109 -0
- package/node_modules/@waterplane/shared/dist/pluginlaunch.js +3 -0
- package/node_modules/@waterplane/shared/dist/pluginlaunch.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pluginmaturity.d.ts +26 -0
- package/node_modules/@waterplane/shared/dist/pluginmaturity.js +32 -0
- package/node_modules/@waterplane/shared/dist/pluginmaturity.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pluginreadings.d.ts +43 -0
- package/node_modules/@waterplane/shared/dist/pluginreadings.js +5 -0
- package/node_modules/@waterplane/shared/dist/pluginreadings.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pricing.d.ts +249 -0
- package/node_modules/@waterplane/shared/dist/pricing.js +388 -0
- package/node_modules/@waterplane/shared/dist/pricing.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/promptid.d.ts +48 -0
- package/node_modules/@waterplane/shared/dist/promptid.js +116 -0
- package/node_modules/@waterplane/shared/dist/promptid.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/ptysize.d.ts +74 -0
- package/node_modules/@waterplane/shared/dist/ptysize.js +77 -0
- package/node_modules/@waterplane/shared/dist/ptysize.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queuebind.d.ts +40 -0
- package/node_modules/@waterplane/shared/dist/queue/queuebind.js +70 -0
- package/node_modules/@waterplane/shared/dist/queue/queuebind.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueentry.d.ts +175 -0
- package/node_modules/@waterplane/shared/dist/queue/queueentry.js +4 -0
- package/node_modules/@waterplane/shared/dist/queue/queueentry.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queuelane.d.ts +65 -0
- package/node_modules/@waterplane/shared/dist/queue/queuelane.js +45 -0
- package/node_modules/@waterplane/shared/dist/queue/queuelane.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueplan.d.ts +180 -0
- package/node_modules/@waterplane/shared/dist/queue/queueplan.js +169 -0
- package/node_modules/@waterplane/shared/dist/queue/queueplan.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueretarget.d.ts +61 -0
- package/node_modules/@waterplane/shared/dist/queue/queueretarget.js +94 -0
- package/node_modules/@waterplane/shared/dist/queue/queueretarget.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueretry.d.ts +61 -0
- package/node_modules/@waterplane/shared/dist/queue/queueretry.js +66 -0
- package/node_modules/@waterplane/shared/dist/queue/queueretry.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueserial.d.ts +154 -0
- package/node_modules/@waterplane/shared/dist/queue/queueserial.js +169 -0
- package/node_modules/@waterplane/shared/dist/queue/queueserial.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueuploads.d.ts +65 -0
- package/node_modules/@waterplane/shared/dist/queue/queueuploads.js +79 -0
- package/node_modules/@waterplane/shared/dist/queue/queueuploads.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queuewords.d.ts +22 -0
- package/node_modules/@waterplane/shared/dist/queue/queuewords.js +55 -0
- package/node_modules/@waterplane/shared/dist/queue/queuewords.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue.d.ts +13 -0
- package/node_modules/@waterplane/shared/dist/queue.js +44 -0
- package/node_modules/@waterplane/shared/dist/queue.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/repocolor.d.ts +159 -0
- package/node_modules/@waterplane/shared/dist/repocolor.js +261 -0
- package/node_modules/@waterplane/shared/dist/repocolor.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/repohealth.d.ts +640 -0
- package/node_modules/@waterplane/shared/dist/repohealth.js +117 -0
- package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/repohealthread.d.ts +156 -0
- package/node_modules/@waterplane/shared/dist/repohealthread.js +680 -0
- package/node_modules/@waterplane/shared/dist/repohealthread.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/requirements.d.ts +81 -0
- package/node_modules/@waterplane/shared/dist/requirements.js +191 -0
- package/node_modules/@waterplane/shared/dist/requirements.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/rootchoice.d.ts +52 -0
- package/node_modules/@waterplane/shared/dist/rootchoice.js +18 -0
- package/node_modules/@waterplane/shared/dist/rootchoice.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedaction.d.ts +106 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedaction.js +14 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedaction.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedclean.d.ts +6 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedclean.js +180 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedclean.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedfire.d.ts +76 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedfire.js +122 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedfire.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.d.ts +78 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js +98 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedrule.d.ts +219 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedrule.js +162 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedrule.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedtext.d.ts +37 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedtext.js +119 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedtext.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedwhen.d.ts +54 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedwhen.js +70 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedwhen.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedzone.d.ts +76 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedzone.js +159 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedzone.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/schedule.d.ts +44 -0
- package/node_modules/@waterplane/shared/dist/schedule.js +43 -0
- package/node_modules/@waterplane/shared/dist/schedule.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/screenlog.d.ts +65 -0
- package/node_modules/@waterplane/shared/dist/screenlog.js +169 -0
- package/node_modules/@waterplane/shared/dist/screenlog.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sendstamp.d.ts +85 -0
- package/node_modules/@waterplane/shared/dist/sendstamp.js +96 -0
- package/node_modules/@waterplane/shared/dist/sendstamp.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessionbudget.d.ts +162 -0
- package/node_modules/@waterplane/shared/dist/sessionbudget.js +213 -0
- package/node_modules/@waterplane/shared/dist/sessionbudget.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costcold.d.ts +99 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costcold.js +94 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costcold.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.d.ts +125 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.js +184 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costcompact.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.d.ts +21 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.js +31 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costofseries.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costreading.d.ts +174 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costreading.js +302 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costreading.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.d.ts +209 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.js +128 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costtypes.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costwords.d.ts +169 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costwords.js +262 -0
- package/node_modules/@waterplane/shared/dist/sessioncost/costwords.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sessioncost.d.ts +52 -0
- package/node_modules/@waterplane/shared/dist/sessioncost.js +51 -0
- package/node_modules/@waterplane/shared/dist/sessioncost.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/settings.d.ts +136 -0
- package/node_modules/@waterplane/shared/dist/settings.js +303 -0
- package/node_modules/@waterplane/shared/dist/settings.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/shells.d.ts +140 -0
- package/node_modules/@waterplane/shared/dist/shells.js +257 -0
- package/node_modules/@waterplane/shared/dist/shells.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/slash.d.ts +47 -0
- package/node_modules/@waterplane/shared/dist/slash.js +166 -0
- package/node_modules/@waterplane/shared/dist/slash.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sourceshape.d.ts +27 -0
- package/node_modules/@waterplane/shared/dist/sourceshape.js +141 -0
- package/node_modules/@waterplane/shared/dist/sourceshape.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/spendwarn.d.ts +37 -0
- package/node_modules/@waterplane/shared/dist/spendwarn.js +79 -0
- package/node_modules/@waterplane/shared/dist/spendwarn.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/statedir.d.ts +11 -0
- package/node_modules/@waterplane/shared/dist/statedir.js +34 -0
- package/node_modules/@waterplane/shared/dist/statedir.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/stream.d.ts +135 -0
- package/node_modules/@waterplane/shared/dist/stream.js +117 -0
- package/node_modules/@waterplane/shared/dist/stream.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sweep.d.ts +156 -0
- package/node_modules/@waterplane/shared/dist/sweep.js +193 -0
- package/node_modules/@waterplane/shared/dist/sweep.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/sweepfamilies.d.ts +56 -0
- package/node_modules/@waterplane/shared/dist/sweepfamilies.js +140 -0
- package/node_modules/@waterplane/shared/dist/sweepfamilies.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/termpalette.d.ts +17 -0
- package/node_modules/@waterplane/shared/dist/termpalette.js +5 -0
- package/node_modules/@waterplane/shared/dist/termpalette.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/themeoverlay.d.ts +111 -0
- package/node_modules/@waterplane/shared/dist/themeoverlay.js +328 -0
- package/node_modules/@waterplane/shared/dist/themeoverlay.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/tokens.d.ts +198 -0
- package/node_modules/@waterplane/shared/dist/tokens.js +320 -0
- package/node_modules/@waterplane/shared/dist/tokens.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/transcriptfold.d.ts +50 -0
- package/node_modules/@waterplane/shared/dist/transcriptfold.js +87 -0
- package/node_modules/@waterplane/shared/dist/transcriptfold.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/urls.d.ts +53 -0
- package/node_modules/@waterplane/shared/dist/urls.js +150 -0
- package/node_modules/@waterplane/shared/dist/urls.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/usagesources.d.ts +88 -0
- package/node_modules/@waterplane/shared/dist/usagesources.js +198 -0
- package/node_modules/@waterplane/shared/dist/usagesources.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/windowadvice.d.ts +7 -0
- package/node_modules/@waterplane/shared/dist/windowadvice.js +50 -0
- package/node_modules/@waterplane/shared/dist/windowadvice.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/backend.d.ts +223 -0
- package/node_modules/@waterplane/shared/dist/wire/backend.js +18 -0
- package/node_modules/@waterplane/shared/dist/wire/backend.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/backendtokens.d.ts +99 -0
- package/node_modules/@waterplane/shared/dist/wire/backendtokens.js +11 -0
- package/node_modules/@waterplane/shared/dist/wire/backendtokens.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/capture.d.ts +380 -0
- package/node_modules/@waterplane/shared/dist/wire/capture.js +46 -0
- package/node_modules/@waterplane/shared/dist/wire/capture.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/costwindow.d.ts +143 -0
- package/node_modules/@waterplane/shared/dist/wire/costwindow.js +16 -0
- package/node_modules/@waterplane/shared/dist/wire/costwindow.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/install.d.ts +172 -0
- package/node_modules/@waterplane/shared/dist/wire/install.js +30 -0
- package/node_modules/@waterplane/shared/dist/wire/install.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/intent.d.ts +187 -0
- package/node_modules/@waterplane/shared/dist/wire/intent.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/intent.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/localrt.d.ts +78 -0
- package/node_modules/@waterplane/shared/dist/wire/localrt.js +21 -0
- package/node_modules/@waterplane/shared/dist/wire/localrt.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/localusage.d.ts +121 -0
- package/node_modules/@waterplane/shared/dist/wire/localusage.js +23 -0
- package/node_modules/@waterplane/shared/dist/wire/localusage.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.d.ts +177 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientbacklog.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.d.ts +344 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.d.ts +307 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.d.ts +18 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.js +5 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientupdates.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.d.ts +478 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clientwork.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.d.ts +488 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.d.ts +338 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.d.ts +16 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hostupdates.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages.d.ts +25 -0
- package/node_modules/@waterplane/shared/dist/wire/messages.js +18 -0
- package/node_modules/@waterplane/shared/dist/wire/messages.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +145 -0
- package/node_modules/@waterplane/shared/dist/wire/notify.js +96 -0
- package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/notifylink.d.ts +36 -0
- package/node_modules/@waterplane/shared/dist/wire/notifylink.js +44 -0
- package/node_modules/@waterplane/shared/dist/wire/notifylink.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/onboard.d.ts +121 -0
- package/node_modules/@waterplane/shared/dist/wire/onboard.js +11 -0
- package/node_modules/@waterplane/shared/dist/wire/onboard.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +456 -0
- package/node_modules/@waterplane/shared/dist/wire/repo.js +30 -0
- package/node_modules/@waterplane/shared/dist/wire/repo.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/sent.d.ts +127 -0
- package/node_modules/@waterplane/shared/dist/wire/sent.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/sent.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session/archive.d.ts +286 -0
- package/node_modules/@waterplane/shared/dist/wire/session/archive.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/session/archive.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session/context.d.ts +298 -0
- package/node_modules/@waterplane/shared/dist/wire/session/context.js +6 -0
- package/node_modules/@waterplane/shared/dist/wire/session/context.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session/contextspark.d.ts +402 -0
- package/node_modules/@waterplane/shared/dist/wire/session/contextspark.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/session/contextspark.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session/delivery.d.ts +114 -0
- package/node_modules/@waterplane/shared/dist/wire/session/delivery.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/session/delivery.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session/info.d.ts +427 -0
- package/node_modules/@waterplane/shared/dist/wire/session/info.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/session/info.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session/launch.d.ts +332 -0
- package/node_modules/@waterplane/shared/dist/wire/session/launch.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/session/launch.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session/promptbox.d.ts +181 -0
- package/node_modules/@waterplane/shared/dist/wire/session/promptbox.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/session/promptbox.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/session.d.ts +16 -0
- package/node_modules/@waterplane/shared/dist/wire/session.js +10 -0
- package/node_modules/@waterplane/shared/dist/wire/session.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/slash.d.ts +31 -0
- package/node_modules/@waterplane/shared/dist/wire/slash.js +9 -0
- package/node_modules/@waterplane/shared/dist/wire/slash.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/sysstat.d.ts +226 -0
- package/node_modules/@waterplane/shared/dist/wire/sysstat.js +47 -0
- package/node_modules/@waterplane/shared/dist/wire/sysstat.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/telemetry.d.ts +645 -0
- package/node_modules/@waterplane/shared/dist/wire/telemetry.js +3 -0
- package/node_modules/@waterplane/shared/dist/wire/telemetry.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/transcript.d.ts +327 -0
- package/node_modules/@waterplane/shared/dist/wire/transcript.js +60 -0
- package/node_modules/@waterplane/shared/dist/wire/transcript.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/updates.d.ts +130 -0
- package/node_modules/@waterplane/shared/dist/wire/updates.js +52 -0
- package/node_modules/@waterplane/shared/dist/wire/updates.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/work.d.ts +699 -0
- package/node_modules/@waterplane/shared/dist/wire/work.js +22 -0
- package/node_modules/@waterplane/shared/dist/wire/work.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/working.d.ts +70 -0
- package/node_modules/@waterplane/shared/dist/working.js +208 -0
- package/node_modules/@waterplane/shared/dist/working.js.map +1 -0
- package/node_modules/@waterplane/shared/package.json +17 -0
- package/npm-shrinkwrap.json +250 -0
- package/package.json +33 -6
- package/packages/extensions/copilot-usage/waterplane-plugin.json +9 -0
- package/packages/extensions/ocr/assets/deu.traineddata.gz +0 -0
- package/packages/extensions/ocr/assets/eng.traineddata.gz +0 -0
- package/packages/extensions/ocr/assets/manifest.json +44 -0
- package/packages/extensions/ocr/assets/tesseract-core-lstm.wasm.js +191 -0
- package/packages/extensions/ocr/assets/tesseract-core-simd-lstm.wasm.js +191 -0
- package/packages/extensions/ocr/assets/worker.min.js +3 -0
- package/packages/extensions/ocr/waterplane-plugin.json +11 -0
- package/packages/extensions/requirements/waterplane-plugin.json +9 -0
- package/packages/extensions/token-stats/waterplane-plugin.json +8 -0
- package/packages/host/dist/acks.d.ts +119 -0
- package/packages/host/dist/acks.js +268 -0
- package/packages/host/dist/acks.js.map +1 -0
- package/packages/host/dist/agentfollowup.d.ts +45 -0
- package/packages/host/dist/agentfollowup.js +77 -0
- package/packages/host/dist/agentfollowup.js.map +1 -0
- package/packages/host/dist/agentintents.d.ts +278 -0
- package/packages/host/dist/agentintents.js +509 -0
- package/packages/host/dist/agentintents.js.map +1 -0
- package/packages/host/dist/agents.d.ts +112 -0
- package/packages/host/dist/agents.js +517 -0
- package/packages/host/dist/agents.js.map +1 -0
- package/packages/host/dist/agentwatch.d.ts +42 -0
- package/packages/host/dist/agentwatch.js +35 -0
- package/packages/host/dist/agentwatch.js.map +1 -0
- package/packages/host/dist/androidenv.d.ts +80 -0
- package/packages/host/dist/androidenv.js +344 -0
- package/packages/host/dist/androidenv.js.map +1 -0
- package/packages/host/dist/answergate.d.ts +191 -0
- package/packages/host/dist/answergate.js +321 -0
- package/packages/host/dist/answergate.js.map +1 -0
- package/packages/host/dist/api.d.ts +19 -0
- package/packages/host/dist/api.js +62 -0
- package/packages/host/dist/api.js.map +1 -0
- package/packages/host/dist/apkcheck.d.ts +36 -0
- package/packages/host/dist/apkcheck.js +290 -0
- package/packages/host/dist/apkcheck.js.map +1 -0
- package/packages/host/dist/appready.d.ts +8 -0
- package/packages/host/dist/appready.js +16 -0
- package/packages/host/dist/appready.js.map +1 -0
- package/packages/host/dist/archive.d.ts +95 -0
- package/packages/host/dist/archive.js +318 -0
- package/packages/host/dist/archive.js.map +1 -0
- package/packages/host/dist/artifacts.d.ts +38 -0
- package/packages/host/dist/artifacts.js +315 -0
- package/packages/host/dist/artifacts.js.map +1 -0
- package/packages/host/dist/askbox.d.ts +116 -0
- package/packages/host/dist/askbox.js +341 -0
- package/packages/host/dist/askbox.js.map +1 -0
- package/packages/host/dist/askrules.d.ts +38 -0
- package/packages/host/dist/askrules.js +139 -0
- package/packages/host/dist/askrules.js.map +1 -0
- package/packages/host/dist/assess/hassapply.d.ts +127 -0
- package/packages/host/dist/assess/hassapply.js +482 -0
- package/packages/host/dist/assess/hassapply.js.map +1 -0
- package/packages/host/dist/assess/hassexec.d.ts +160 -0
- package/packages/host/dist/assess/hassexec.js +178 -0
- package/packages/host/dist/assess/hassexec.js.map +1 -0
- package/packages/host/dist/assess/hassinput.d.ts +80 -0
- package/packages/host/dist/assess/hassinput.js +264 -0
- package/packages/host/dist/assess/hassinput.js.map +1 -0
- package/packages/host/dist/assess/hassknobs.d.ts +66 -0
- package/packages/host/dist/assess/hassknobs.js +69 -0
- package/packages/host/dist/assess/hassknobs.js.map +1 -0
- package/packages/host/dist/assess/hassprogress.d.ts +30 -0
- package/packages/host/dist/assess/hassprogress.js +165 -0
- package/packages/host/dist/assess/hassprogress.js.map +1 -0
- package/packages/host/dist/assess/hassrun.d.ts +39 -0
- package/packages/host/dist/assess/hassrun.js +269 -0
- package/packages/host/dist/assess/hassrun.js.map +1 -0
- package/packages/host/dist/assess/hassstore.d.ts +77 -0
- package/packages/host/dist/assess/hassstore.js +187 -0
- package/packages/host/dist/assess/hassstore.js.map +1 -0
- package/packages/host/dist/assess/hassutil.d.ts +28 -0
- package/packages/host/dist/assess/hassutil.js +53 -0
- package/packages/host/dist/assess/hassutil.js.map +1 -0
- package/packages/host/dist/assess.d.ts +60 -0
- package/packages/host/dist/assess.js +58 -0
- package/packages/host/dist/assess.js.map +1 -0
- package/packages/host/dist/auth.d.ts +93 -0
- package/packages/host/dist/auth.js +276 -0
- package/packages/host/dist/auth.js.map +1 -0
- package/packages/host/dist/authroutes.d.ts +36 -0
- package/packages/host/dist/authroutes.js +108 -0
- package/packages/host/dist/authroutes.js.map +1 -0
- package/packages/host/dist/autopull.d.ts +107 -0
- package/packages/host/dist/autopull.js +248 -0
- package/packages/host/dist/autopull.js.map +1 -0
- package/packages/host/dist/backends/claude-endpoint.d.ts +98 -0
- package/packages/host/dist/backends/claude-endpoint.js +347 -0
- package/packages/host/dist/backends/claude-endpoint.js.map +1 -0
- package/packages/host/dist/backends/claude-local.d.ts +51 -0
- package/packages/host/dist/backends/claude-local.js +221 -0
- package/packages/host/dist/backends/claude-local.js.map +1 -0
- package/packages/host/dist/backends/claude-sources.d.ts +53 -0
- package/packages/host/dist/backends/claude-sources.js +68 -0
- package/packages/host/dist/backends/claude-sources.js.map +1 -0
- package/packages/host/dist/backends/claude.d.ts +45 -0
- package/packages/host/dist/backends/claude.js +248 -0
- package/packages/host/dist/backends/claude.js.map +1 -0
- package/packages/host/dist/backends/claudemodels.d.ts +19 -0
- package/packages/host/dist/backends/claudemodels.js +122 -0
- package/packages/host/dist/backends/claudemodels.js.map +1 -0
- package/packages/host/dist/backends/derive.d.ts +81 -0
- package/packages/host/dist/backends/derive.js +198 -0
- package/packages/host/dist/backends/derive.js.map +1 -0
- package/packages/host/dist/backends/index.d.ts +138 -0
- package/packages/host/dist/backends/index.js +328 -0
- package/packages/host/dist/backends/index.js.map +1 -0
- package/packages/host/dist/backends/overhead.d.ts +16 -0
- package/packages/host/dist/backends/overhead.js +124 -0
- package/packages/host/dist/backends/overhead.js.map +1 -0
- package/packages/host/dist/backends/readers.d.ts +57 -0
- package/packages/host/dist/backends/readers.js +74 -0
- package/packages/host/dist/backends/readers.js.map +1 -0
- package/packages/host/dist/backends/registry.d.ts +37 -0
- package/packages/host/dist/backends/registry.js +73 -0
- package/packages/host/dist/backends/registry.js.map +1 -0
- package/packages/host/dist/backends/shell.d.ts +31 -0
- package/packages/host/dist/backends/shell.js +127 -0
- package/packages/host/dist/backends/shell.js.map +1 -0
- package/packages/host/dist/backends/types.d.ts +457 -0
- package/packages/host/dist/backends/types.js +2 -0
- package/packages/host/dist/backends/types.js.map +1 -0
- package/packages/host/dist/backlog/backlogcore.d.ts +36 -0
- package/packages/host/dist/backlog/backlogcore.js +2 -0
- package/packages/host/dist/backlog/backlogcore.js.map +1 -0
- package/packages/host/dist/backlog/backlogedits.d.ts +96 -0
- package/packages/host/dist/backlog/backlogedits.js +229 -0
- package/packages/host/dist/backlog/backlogedits.js.map +1 -0
- package/packages/host/dist/backlog/backlogfollowup.d.ts +7 -0
- package/packages/host/dist/backlog/backlogfollowup.js +71 -0
- package/packages/host/dist/backlog/backlogfollowup.js.map +1 -0
- package/packages/host/dist/backlog/backlogknobs.d.ts +56 -0
- package/packages/host/dist/backlog/backlogknobs.js +62 -0
- package/packages/host/dist/backlog/backlogknobs.js.map +1 -0
- package/packages/host/dist/backlog/backlogsessions.d.ts +217 -0
- package/packages/host/dist/backlog/backlogsessions.js +421 -0
- package/packages/host/dist/backlog/backlogsessions.js.map +1 -0
- package/packages/host/dist/backlog/backlogstore.d.ts +31 -0
- package/packages/host/dist/backlog/backlogstore.js +101 -0
- package/packages/host/dist/backlog/backlogstore.js.map +1 -0
- package/packages/host/dist/backlog/backlogtitles.d.ts +40 -0
- package/packages/host/dist/backlog/backlogtitles.js +50 -0
- package/packages/host/dist/backlog/backlogtitles.js.map +1 -0
- package/packages/host/dist/backlog/backlogwording.d.ts +31 -0
- package/packages/host/dist/backlog/backlogwording.js +42 -0
- package/packages/host/dist/backlog/backlogwording.js.map +1 -0
- package/packages/host/dist/backlog.d.ts +142 -0
- package/packages/host/dist/backlog.js +96 -0
- package/packages/host/dist/backlog.js.map +1 -0
- package/packages/host/dist/billing.d.ts +53 -0
- package/packages/host/dist/billing.js +140 -0
- package/packages/host/dist/billing.js.map +1 -0
- package/packages/host/dist/binguard.d.ts +28 -0
- package/packages/host/dist/binguard.js +88 -0
- package/packages/host/dist/binguard.js.map +1 -0
- package/packages/host/dist/bookmarks.d.ts +24 -0
- package/packages/host/dist/bookmarks.js +118 -0
- package/packages/host/dist/bookmarks.js.map +1 -0
- package/packages/host/dist/branddirs.d.ts +223 -0
- package/packages/host/dist/branddirs.js +828 -0
- package/packages/host/dist/branddirs.js.map +1 -0
- package/packages/host/dist/budget.d.ts +57 -0
- package/packages/host/dist/budget.js +153 -0
- package/packages/host/dist/budget.js.map +1 -0
- package/packages/host/dist/builds.d.ts +178 -0
- package/packages/host/dist/builds.js +645 -0
- package/packages/host/dist/builds.js.map +1 -0
- package/packages/host/dist/buildscan.d.ts +16 -0
- package/packages/host/dist/buildscan.js +177 -0
- package/packages/host/dist/buildscan.js.map +1 -0
- package/packages/host/dist/burnwatch.d.ts +53 -0
- package/packages/host/dist/burnwatch.js +141 -0
- package/packages/host/dist/burnwatch.js.map +1 -0
- package/packages/host/dist/capture/android.d.ts +2 -0
- package/packages/host/dist/capture/android.js +144 -0
- package/packages/host/dist/capture/android.js.map +1 -0
- package/packages/host/dist/capture/captureconfig.d.ts +44 -0
- package/packages/host/dist/capture/captureconfig.js +169 -0
- package/packages/host/dist/capture/captureconfig.js.map +1 -0
- package/packages/host/dist/capture/capturehelpers.d.ts +34 -0
- package/packages/host/dist/capture/capturehelpers.js +156 -0
- package/packages/host/dist/capture/capturehelpers.js.map +1 -0
- package/packages/host/dist/capture/capturekit.d.ts +32 -0
- package/packages/host/dist/capture/capturekit.js +47 -0
- package/packages/host/dist/capture/capturekit.js.map +1 -0
- package/packages/host/dist/capture/capturepass.d.ts +17 -0
- package/packages/host/dist/capture/capturepass.js +262 -0
- package/packages/host/dist/capture/capturepass.js.map +1 -0
- package/packages/host/dist/capture/capturesettle.d.ts +35 -0
- package/packages/host/dist/capture/capturesettle.js +77 -0
- package/packages/host/dist/capture/capturesettle.js.map +1 -0
- package/packages/host/dist/capture/captureverdict.d.ts +132 -0
- package/packages/host/dist/capture/captureverdict.js +107 -0
- package/packages/host/dist/capture/captureverdict.js.map +1 -0
- package/packages/host/dist/capture/garmin.d.ts +2 -0
- package/packages/host/dist/capture/garmin.js +294 -0
- package/packages/host/dist/capture/garmin.js.map +1 -0
- package/packages/host/dist/capture/pixels.d.ts +60 -0
- package/packages/host/dist/capture/pixels.js +199 -0
- package/packages/host/dist/capture/pixels.js.map +1 -0
- package/packages/host/dist/capture/types.d.ts +195 -0
- package/packages/host/dist/capture/types.js +2 -0
- package/packages/host/dist/capture/types.js.map +1 -0
- package/packages/host/dist/capture/web.d.ts +2 -0
- package/packages/host/dist/capture/web.js +290 -0
- package/packages/host/dist/capture/web.js.map +1 -0
- package/packages/host/dist/capture/window.d.ts +2 -0
- package/packages/host/dist/capture/window.js +88 -0
- package/packages/host/dist/capture/window.js.map +1 -0
- package/packages/host/dist/capture.d.ts +116 -0
- package/packages/host/dist/capture.js +295 -0
- package/packages/host/dist/capture.js.map +1 -0
- package/packages/host/dist/claudebin.d.ts +32 -0
- package/packages/host/dist/claudebin.js +113 -0
- package/packages/host/dist/claudebin.js.map +1 -0
- package/packages/host/dist/claudeconfig.d.ts +23 -0
- package/packages/host/dist/claudeconfig.js +118 -0
- package/packages/host/dist/claudeconfig.js.map +1 -0
- package/packages/host/dist/cli/entry.d.ts +1 -0
- package/packages/host/dist/cli/entry.js +11 -0
- package/packages/host/dist/cli/entry.js.map +1 -0
- package/packages/host/dist/cli/index.d.ts +12 -0
- package/packages/host/dist/cli/index.js +122 -0
- package/packages/host/dist/cli/index.js.map +1 -0
- package/packages/host/dist/cli/pair.d.ts +28 -0
- package/packages/host/dist/cli/pair.js +94 -0
- package/packages/host/dist/cli/pair.js.map +1 -0
- package/packages/host/dist/cli/releasesig.d.ts +42 -0
- package/packages/host/dist/cli/releasesig.js +60 -0
- package/packages/host/dist/cli/releasesig.js.map +1 -0
- package/packages/host/dist/cli/selfupdate.d.ts +96 -0
- package/packages/host/dist/cli/selfupdate.js +842 -0
- package/packages/host/dist/cli/selfupdate.js.map +1 -0
- package/packages/host/dist/cli/service.d.ts +100 -0
- package/packages/host/dist/cli/service.js +645 -0
- package/packages/host/dist/cli/service.js.map +1 -0
- package/packages/host/dist/cli/statesnap.d.ts +34 -0
- package/packages/host/dist/cli/statesnap.js +135 -0
- package/packages/host/dist/cli/statesnap.js.map +1 -0
- package/packages/host/dist/cli/windows.d.ts +191 -0
- package/packages/host/dist/cli/windows.js +658 -0
- package/packages/host/dist/cli/windows.js.map +1 -0
- package/packages/host/dist/clifixtures.d.ts +28 -0
- package/packages/host/dist/clifixtures.js +193 -0
- package/packages/host/dist/clifixtures.js.map +1 -0
- package/packages/host/dist/clihealth.d.ts +121 -0
- package/packages/host/dist/clihealth.js +301 -0
- package/packages/host/dist/clihealth.js.map +1 -0
- package/packages/host/dist/clisuggest.d.ts +13 -0
- package/packages/host/dist/clisuggest.js +54 -0
- package/packages/host/dist/clisuggest.js.map +1 -0
- package/packages/host/dist/commitmsg.d.ts +17 -0
- package/packages/host/dist/commitmsg.js +98 -0
- package/packages/host/dist/commitmsg.js.map +1 -0
- package/packages/host/dist/compliance.d.ts +121 -0
- package/packages/host/dist/compliance.js +827 -0
- package/packages/host/dist/compliance.js.map +1 -0
- package/packages/host/dist/composer.d.ts +225 -0
- package/packages/host/dist/composer.js +453 -0
- package/packages/host/dist/composer.js.map +1 -0
- package/packages/host/dist/confirmgate.d.ts +34 -0
- package/packages/host/dist/confirmgate.js +114 -0
- package/packages/host/dist/confirmgate.js.map +1 -0
- package/packages/host/dist/context.d.ts +22 -0
- package/packages/host/dist/context.js +92 -0
- package/packages/host/dist/context.js.map +1 -0
- package/packages/host/dist/contextlimits.d.ts +31 -0
- package/packages/host/dist/contextlimits.js +128 -0
- package/packages/host/dist/contextlimits.js.map +1 -0
- package/packages/host/dist/convfork.d.ts +67 -0
- package/packages/host/dist/convfork.js +372 -0
- package/packages/host/dist/convfork.js.map +1 -0
- package/packages/host/dist/convlog.d.ts +40 -0
- package/packages/host/dist/convlog.js +52 -0
- package/packages/host/dist/convlog.js.map +1 -0
- package/packages/host/dist/costwindow.d.ts +77 -0
- package/packages/host/dist/costwindow.js +333 -0
- package/packages/host/dist/costwindow.js.map +1 -0
- package/packages/host/dist/ctxlog/ctxagents.d.ts +179 -0
- package/packages/host/dist/ctxlog/ctxagents.js +419 -0
- package/packages/host/dist/ctxlog/ctxagents.js.map +1 -0
- package/packages/host/dist/ctxlog/ctxcursor.d.ts +299 -0
- package/packages/host/dist/ctxlog/ctxcursor.js +163 -0
- package/packages/host/dist/ctxlog/ctxcursor.js.map +1 -0
- package/packages/host/dist/ctxlog/ctxproject.d.ts +49 -0
- package/packages/host/dist/ctxlog/ctxproject.js +198 -0
- package/packages/host/dist/ctxlog/ctxproject.js.map +1 -0
- package/packages/host/dist/ctxlog/ctxupdate.d.ts +11 -0
- package/packages/host/dist/ctxlog/ctxupdate.js +338 -0
- package/packages/host/dist/ctxlog/ctxupdate.js.map +1 -0
- package/packages/host/dist/ctxlog.d.ts +56 -0
- package/packages/host/dist/ctxlog.js +57 -0
- package/packages/host/dist/ctxlog.js.map +1 -0
- package/packages/host/dist/ctxwindow.d.ts +17 -0
- package/packages/host/dist/ctxwindow.js +106 -0
- package/packages/host/dist/ctxwindow.js.map +1 -0
- package/packages/host/dist/decisionlog.d.ts +29 -0
- package/packages/host/dist/decisionlog.js +167 -0
- package/packages/host/dist/decisionlog.js.map +1 -0
- package/packages/host/dist/deliver/deliverknobs.d.ts +84 -0
- package/packages/host/dist/deliver/deliverknobs.js +85 -0
- package/packages/host/dist/deliver/deliverknobs.js.map +1 -0
- package/packages/host/dist/deliver/deliverproof.d.ts +25 -0
- package/packages/host/dist/deliver/deliverproof.js +123 -0
- package/packages/host/dist/deliver/deliverproof.js.map +1 -0
- package/packages/host/dist/deliver/deliverreturn.d.ts +12 -0
- package/packages/host/dist/deliver/deliverreturn.js +365 -0
- package/packages/host/dist/deliver/deliverreturn.js.map +1 -0
- package/packages/host/dist/deliver/deliverrun.d.ts +20 -0
- package/packages/host/dist/deliver/deliverrun.js +495 -0
- package/packages/host/dist/deliver/deliverrun.js.map +1 -0
- package/packages/host/dist/deliver/deliverscreen.d.ts +67 -0
- package/packages/host/dist/deliver/deliverscreen.js +428 -0
- package/packages/host/dist/deliver/deliverscreen.js.map +1 -0
- package/packages/host/dist/deliver/delivertypes.d.ts +119 -0
- package/packages/host/dist/deliver/delivertypes.js +2 -0
- package/packages/host/dist/deliver/delivertypes.js.map +1 -0
- package/packages/host/dist/deliver.d.ts +50 -0
- package/packages/host/dist/deliver.js +142 -0
- package/packages/host/dist/deliver.js.map +1 -0
- package/packages/host/dist/deviceledger.d.ts +33 -0
- package/packages/host/dist/deviceledger.js +143 -0
- package/packages/host/dist/deviceledger.js.map +1 -0
- package/packages/host/dist/dictate.d.ts +142 -0
- package/packages/host/dist/dictate.js +419 -0
- package/packages/host/dist/dictate.js.map +1 -0
- package/packages/host/dist/discover.d.ts +20 -0
- package/packages/host/dist/discover.js +162 -0
- package/packages/host/dist/discover.js.map +1 -0
- package/packages/host/dist/diskwatch.d.ts +39 -0
- package/packages/host/dist/diskwatch.js +111 -0
- package/packages/host/dist/diskwatch.js.map +1 -0
- package/packages/host/dist/doctor.d.ts +153 -0
- package/packages/host/dist/doctor.js +748 -0
- package/packages/host/dist/doctor.js.map +1 -0
- package/packages/host/dist/doctorclaude.d.ts +33 -0
- package/packages/host/dist/doctorclaude.js +128 -0
- package/packages/host/dist/doctorclaude.js.map +1 -0
- package/packages/host/dist/doctormac.d.ts +47 -0
- package/packages/host/dist/doctormac.js +81 -0
- package/packages/host/dist/doctormac.js.map +1 -0
- package/packages/host/dist/doctorproc.d.ts +11 -0
- package/packages/host/dist/doctorproc.js +36 -0
- package/packages/host/dist/doctorproc.js.map +1 -0
- package/packages/host/dist/doctorwsl.d.ts +90 -0
- package/packages/host/dist/doctorwsl.js +205 -0
- package/packages/host/dist/doctorwsl.js.map +1 -0
- package/packages/host/dist/echo.d.ts +331 -0
- package/packages/host/dist/echo.js +439 -0
- package/packages/host/dist/echo.js.map +1 -0
- package/packages/host/dist/env.d.ts +16 -0
- package/packages/host/dist/env.js +190 -0
- package/packages/host/dist/env.js.map +1 -0
- package/packages/host/dist/envfiles.d.ts +5 -0
- package/packages/host/dist/envfiles.js +43 -0
- package/packages/host/dist/envfiles.js.map +1 -0
- package/packages/host/dist/extensions/copilot-usage/host/ghquota.d.mts +17 -0
- package/packages/host/dist/extensions/copilot-usage/host/ghquota.mjs +96 -0
- package/packages/host/dist/extensions/copilot-usage/host/ghquota.mjs.map +1 -0
- package/packages/host/dist/extensions/copilot-usage/host/index.d.mts +17 -0
- package/packages/host/dist/extensions/copilot-usage/host/index.mjs +102 -0
- package/packages/host/dist/extensions/copilot-usage/host/index.mjs.map +1 -0
- package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.d.mts +90 -0
- package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.mjs +365 -0
- package/packages/host/dist/extensions/copilot-usage/host/vscodelocal.mjs.map +1 -0
- package/packages/host/dist/extensions/ocr/host/index.d.mts +10 -0
- package/packages/host/dist/extensions/ocr/host/index.mjs +4 -0
- package/packages/host/dist/extensions/ocr/host/index.mjs.map +1 -0
- package/packages/host/dist/extensions/requirements/host/index.d.mts +2 -0
- package/packages/host/dist/extensions/requirements/host/index.mjs +63 -0
- package/packages/host/dist/extensions/requirements/host/index.mjs.map +1 -0
- package/packages/host/dist/extensions/requirements/host/list.d.mts +17 -0
- package/packages/host/dist/extensions/requirements/host/list.mjs +125 -0
- package/packages/host/dist/extensions/requirements/host/list.mjs.map +1 -0
- package/packages/host/dist/extensions/requirements/host/requirements.d.mts +31 -0
- package/packages/host/dist/extensions/requirements/host/requirements.mjs +318 -0
- package/packages/host/dist/extensions/requirements/host/requirements.mjs.map +1 -0
- package/packages/host/dist/extensions/requirements/shared/methods.d.mts +88 -0
- package/packages/host/dist/extensions/requirements/shared/methods.mjs +36 -0
- package/packages/host/dist/extensions/requirements/shared/methods.mjs.map +1 -0
- package/packages/host/dist/fanout.d.ts +89 -0
- package/packages/host/dist/fanout.js +273 -0
- package/packages/host/dist/fanout.js.map +1 -0
- package/packages/host/dist/files.d.ts +211 -0
- package/packages/host/dist/files.js +760 -0
- package/packages/host/dist/files.js.map +1 -0
- package/packages/host/dist/git.d.ts +261 -0
- package/packages/host/dist/git.js +787 -0
- package/packages/host/dist/git.js.map +1 -0
- package/packages/host/dist/gitlog.d.ts +14 -0
- package/packages/host/dist/gitlog.js +93 -0
- package/packages/host/dist/gitlog.js.map +1 -0
- package/packages/host/dist/halt.d.ts +35 -0
- package/packages/host/dist/halt.js +160 -0
- package/packages/host/dist/halt.js.map +1 -0
- package/packages/host/dist/healthwatch.d.ts +90 -0
- package/packages/host/dist/healthwatch.js +334 -0
- package/packages/host/dist/healthwatch.js.map +1 -0
- package/packages/host/dist/host.d.ts +51 -0
- package/packages/host/dist/host.js +153 -0
- package/packages/host/dist/host.js.map +1 -0
- package/packages/host/dist/hoststore.d.ts +24 -0
- package/packages/host/dist/hoststore.js +350 -0
- package/packages/host/dist/hoststore.js.map +1 -0
- package/packages/host/dist/httpio.d.ts +64 -0
- package/packages/host/dist/httpio.js +199 -0
- package/packages/host/dist/httpio.js.map +1 -0
- package/packages/host/dist/installlog.d.ts +25 -0
- package/packages/host/dist/installlog.js +137 -0
- package/packages/host/dist/installlog.js.map +1 -0
- package/packages/host/dist/intents/adapters.d.ts +285 -0
- package/packages/host/dist/intents/adapters.js +690 -0
- package/packages/host/dist/intents/adapters.js.map +1 -0
- package/packages/host/dist/intents/clock.d.ts +105 -0
- package/packages/host/dist/intents/clock.js +190 -0
- package/packages/host/dist/intents/clock.js.map +1 -0
- package/packages/host/dist/intents/contract.d.ts +488 -0
- package/packages/host/dist/intents/contract.js +155 -0
- package/packages/host/dist/intents/contract.js.map +1 -0
- package/packages/host/dist/intents/disk.d.ts +198 -0
- package/packages/host/dist/intents/disk.js +588 -0
- package/packages/host/dist/intents/disk.js.map +1 -0
- package/packages/host/dist/intents/fire.d.ts +112 -0
- package/packages/host/dist/intents/fire.js +545 -0
- package/packages/host/dist/intents/fire.js.map +1 -0
- package/packages/host/dist/intents/ladder.d.ts +7 -0
- package/packages/host/dist/intents/ladder.js +408 -0
- package/packages/host/dist/intents/ladder.js.map +1 -0
- package/packages/host/dist/intents/manager.d.ts +239 -0
- package/packages/host/dist/intents/manager.js +292 -0
- package/packages/host/dist/intents/manager.js.map +1 -0
- package/packages/host/dist/intents/requeue.d.ts +207 -0
- package/packages/host/dist/intents/requeue.js +521 -0
- package/packages/host/dist/intents/requeue.js.map +1 -0
- package/packages/host/dist/intents/watch.d.ts +92 -0
- package/packages/host/dist/intents/watch.js +464 -0
- package/packages/host/dist/intents/watch.js.map +1 -0
- package/packages/host/dist/intents/write.d.ts +238 -0
- package/packages/host/dist/intents/write.js +651 -0
- package/packages/host/dist/intents/write.js.map +1 -0
- package/packages/host/dist/jsonstore.d.ts +50 -0
- package/packages/host/dist/jsonstore.js +158 -0
- package/packages/host/dist/jsonstore.js.map +1 -0
- package/packages/host/dist/keyhints.d.ts +45 -0
- package/packages/host/dist/keyhints.js +117 -0
- package/packages/host/dist/keyhints.js.map +1 -0
- package/packages/host/dist/lanid.d.ts +21 -0
- package/packages/host/dist/lanid.js +78 -0
- package/packages/host/dist/lanid.js.map +1 -0
- package/packages/host/dist/launchfiles.d.ts +64 -0
- package/packages/host/dist/launchfiles.js +212 -0
- package/packages/host/dist/launchfiles.js.map +1 -0
- package/packages/host/dist/limit.d.ts +82 -0
- package/packages/host/dist/limit.js +251 -0
- package/packages/host/dist/limit.js.map +1 -0
- package/packages/host/dist/limitlog.d.ts +51 -0
- package/packages/host/dist/limitlog.js +154 -0
- package/packages/host/dist/limitlog.js.map +1 -0
- package/packages/host/dist/limitretry.d.ts +135 -0
- package/packages/host/dist/limitretry.js +115 -0
- package/packages/host/dist/limitretry.js.map +1 -0
- package/packages/host/dist/livesources.d.ts +38 -0
- package/packages/host/dist/livesources.js +26 -0
- package/packages/host/dist/livesources.js.map +1 -0
- package/packages/host/dist/localledger.d.ts +69 -0
- package/packages/host/dist/localledger.js +214 -0
- package/packages/host/dist/localledger.js.map +1 -0
- package/packages/host/dist/localrt.d.ts +164 -0
- package/packages/host/dist/localrt.js +414 -0
- package/packages/host/dist/localrt.js.map +1 -0
- package/packages/host/dist/localslot.d.ts +152 -0
- package/packages/host/dist/localslot.js +269 -0
- package/packages/host/dist/localslot.js.map +1 -0
- package/packages/host/dist/localusage.d.ts +153 -0
- package/packages/host/dist/localusage.js +710 -0
- package/packages/host/dist/localusage.js.map +1 -0
- package/packages/host/dist/login.d.ts +34 -0
- package/packages/host/dist/login.js +126 -0
- package/packages/host/dist/login.js.map +1 -0
- package/packages/host/dist/main.d.ts +1 -0
- package/packages/host/dist/main.js +694 -0
- package/packages/host/dist/main.js.map +1 -0
- package/packages/host/dist/meter.d.ts +23 -0
- package/packages/host/dist/meter.js +121 -0
- package/packages/host/dist/meter.js.map +1 -0
- package/packages/host/dist/naming.d.ts +257 -0
- package/packages/host/dist/naming.js +387 -0
- package/packages/host/dist/naming.js.map +1 -0
- package/packages/host/dist/net.d.ts +78 -0
- package/packages/host/dist/net.js +267 -0
- package/packages/host/dist/net.js.map +1 -0
- package/packages/host/dist/netstats.d.ts +99 -0
- package/packages/host/dist/netstats.js +223 -0
- package/packages/host/dist/netstats.js.map +1 -0
- package/packages/host/dist/notifyprefs.d.ts +12 -0
- package/packages/host/dist/notifyprefs.js +60 -0
- package/packages/host/dist/notifyprefs.js.map +1 -0
- package/packages/host/dist/ocrlocal.d.ts +46 -0
- package/packages/host/dist/ocrlocal.js +297 -0
- package/packages/host/dist/ocrlocal.js.map +1 -0
- package/packages/host/dist/onboard.d.ts +182 -0
- package/packages/host/dist/onboard.js +590 -0
- package/packages/host/dist/onboard.js.map +1 -0
- package/packages/host/dist/onboardroutes.d.ts +31 -0
- package/packages/host/dist/onboardroutes.js +78 -0
- package/packages/host/dist/onboardroutes.js.map +1 -0
- package/packages/host/dist/opendeliveries.d.ts +175 -0
- package/packages/host/dist/opendeliveries.js +538 -0
- package/packages/host/dist/opendeliveries.js.map +1 -0
- package/packages/host/dist/optins.d.ts +14 -0
- package/packages/host/dist/optins.js +252 -0
- package/packages/host/dist/optins.js.map +1 -0
- package/packages/host/dist/origin.d.ts +86 -0
- package/packages/host/dist/origin.js +301 -0
- package/packages/host/dist/origin.js.map +1 -0
- package/packages/host/dist/pair.d.ts +149 -0
- package/packages/host/dist/pair.js +505 -0
- package/packages/host/dist/pair.js.map +1 -0
- package/packages/host/dist/passive.d.ts +58 -0
- package/packages/host/dist/passive.js +187 -0
- package/packages/host/dist/passive.js.map +1 -0
- package/packages/host/dist/paths.d.ts +67 -0
- package/packages/host/dist/paths.js +135 -0
- package/packages/host/dist/paths.js.map +1 -0
- package/packages/host/dist/pathx.d.ts +6 -0
- package/packages/host/dist/pathx.js +35 -0
- package/packages/host/dist/pathx.js.map +1 -0
- package/packages/host/dist/peers/agentpeer.d.ts +58 -0
- package/packages/host/dist/peers/agentpeer.js +249 -0
- package/packages/host/dist/peers/agentpeer.js.map +1 -0
- package/packages/host/dist/peers/client.d.ts +60 -0
- package/packages/host/dist/peers/client.js +96 -0
- package/packages/host/dist/peers/client.js.map +1 -0
- package/packages/host/dist/peers/jobs.d.ts +140 -0
- package/packages/host/dist/peers/jobs.js +424 -0
- package/packages/host/dist/peers/jobs.js.map +1 -0
- package/packages/host/dist/peers/routes.d.ts +50 -0
- package/packages/host/dist/peers/routes.js +191 -0
- package/packages/host/dist/peers/routes.js.map +1 -0
- package/packages/host/dist/peers/serve.d.ts +61 -0
- package/packages/host/dist/peers/serve.js +532 -0
- package/packages/host/dist/peers/serve.js.map +1 -0
- package/packages/host/dist/peers/store.d.ts +64 -0
- package/packages/host/dist/peers/store.js +128 -0
- package/packages/host/dist/peers/store.js.map +1 -0
- package/packages/host/dist/periodspend.d.ts +61 -0
- package/packages/host/dist/periodspend.js +109 -0
- package/packages/host/dist/periodspend.js.map +1 -0
- package/packages/host/dist/permmode.d.ts +90 -0
- package/packages/host/dist/permmode.js +157 -0
- package/packages/host/dist/permmode.js.map +1 -0
- package/packages/host/dist/planbox.d.ts +23 -0
- package/packages/host/dist/planbox.js +123 -0
- package/packages/host/dist/planbox.js.map +1 -0
- package/packages/host/dist/plugins/builtin.d.ts +39 -0
- package/packages/host/dist/plugins/builtin.js +200 -0
- package/packages/host/dist/plugins/builtin.js.map +1 -0
- package/packages/host/dist/plugins/pluginapi.d.ts +34 -0
- package/packages/host/dist/plugins/pluginapi.js +649 -0
- package/packages/host/dist/plugins/pluginapi.js.map +1 -0
- package/packages/host/dist/plugins/pluginassets.d.ts +16 -0
- package/packages/host/dist/plugins/pluginassets.js +44 -0
- package/packages/host/dist/plugins/pluginassets.js.map +1 -0
- package/packages/host/dist/plugins/pluginfiles.d.ts +30 -0
- package/packages/host/dist/plugins/pluginfiles.js +130 -0
- package/packages/host/dist/plugins/pluginfiles.js.map +1 -0
- package/packages/host/dist/plugins/pluginloader.d.ts +59 -0
- package/packages/host/dist/plugins/pluginloader.js +206 -0
- package/packages/host/dist/plugins/pluginloader.js.map +1 -0
- package/packages/host/dist/plugins/pluginregistry.d.ts +249 -0
- package/packages/host/dist/plugins/pluginregistry.js +799 -0
- package/packages/host/dist/plugins/pluginregistry.js.map +1 -0
- package/packages/host/dist/plugins/pluginroutes.d.ts +29 -0
- package/packages/host/dist/plugins/pluginroutes.js +50 -0
- package/packages/host/dist/plugins/pluginroutes.js.map +1 -0
- package/packages/host/dist/plugins/pluginrpc.d.ts +19 -0
- package/packages/host/dist/plugins/pluginrpc.js +28 -0
- package/packages/host/dist/plugins/pluginrpc.js.map +1 -0
- package/packages/host/dist/plugins/pluginstreams.d.ts +109 -0
- package/packages/host/dist/plugins/pluginstreams.js +418 -0
- package/packages/host/dist/plugins/pluginstreams.js.map +1 -0
- package/packages/host/dist/plugins/plugintoolkit/screen.d.ts +9 -0
- package/packages/host/dist/plugins/plugintoolkit/screen.js +21 -0
- package/packages/host/dist/plugins/plugintoolkit/screen.js.map +1 -0
- package/packages/host/dist/plugins/plugintoolkit/sessionfiles.d.ts +6 -0
- package/packages/host/dist/plugins/plugintoolkit/sessionfiles.js +24 -0
- package/packages/host/dist/plugins/plugintoolkit/sessionfiles.js.map +1 -0
- package/packages/host/dist/plugins/plugintoolkit/tail.d.ts +10 -0
- package/packages/host/dist/plugins/plugintoolkit/tail.js +110 -0
- package/packages/host/dist/plugins/plugintoolkit/tail.js.map +1 -0
- package/packages/host/dist/plugins/setupcontrib.d.ts +64 -0
- package/packages/host/dist/plugins/setupcontrib.js +94 -0
- package/packages/host/dist/plugins/setupcontrib.js.map +1 -0
- package/packages/host/dist/proc.d.ts +13 -0
- package/packages/host/dist/proc.js +27 -0
- package/packages/host/dist/proc.js.map +1 -0
- package/packages/host/dist/prompt.d.ts +113 -0
- package/packages/host/dist/prompt.js +565 -0
- package/packages/host/dist/prompt.js.map +1 -0
- package/packages/host/dist/promptbase.d.ts +28 -0
- package/packages/host/dist/promptbase.js +42 -0
- package/packages/host/dist/promptbase.js.map +1 -0
- package/packages/host/dist/promptmerge.d.ts +63 -0
- package/packages/host/dist/promptmerge.js +221 -0
- package/packages/host/dist/promptmerge.js.map +1 -0
- package/packages/host/dist/promptnav.d.ts +29 -0
- package/packages/host/dist/promptnav.js +97 -0
- package/packages/host/dist/promptnav.js.map +1 -0
- package/packages/host/dist/prompts.d.ts +4 -0
- package/packages/host/dist/prompts.js +78 -0
- package/packages/host/dist/prompts.js.map +1 -0
- package/packages/host/dist/ptycap.d.ts +41 -0
- package/packages/host/dist/ptycap.js +192 -0
- package/packages/host/dist/ptycap.js.map +1 -0
- package/packages/host/dist/ptyenv.d.ts +3 -0
- package/packages/host/dist/ptyenv.js +63 -0
- package/packages/host/dist/ptyenv.js.map +1 -0
- package/packages/host/dist/push.d.ts +42 -0
- package/packages/host/dist/push.js +107 -0
- package/packages/host/dist/push.js.map +1 -0
- package/packages/host/dist/pushprogress.d.ts +27 -0
- package/packages/host/dist/pushprogress.js +72 -0
- package/packages/host/dist/pushprogress.js.map +1 -0
- package/packages/host/dist/question.d.ts +60 -0
- package/packages/host/dist/question.js +137 -0
- package/packages/host/dist/question.js.map +1 -0
- package/packages/host/dist/ratelimit.d.ts +44 -0
- package/packages/host/dist/ratelimit.js +68 -0
- package/packages/host/dist/ratelimit.js.map +1 -0
- package/packages/host/dist/render.d.ts +50 -0
- package/packages/host/dist/render.js +138 -0
- package/packages/host/dist/render.js.map +1 -0
- package/packages/host/dist/repohealth.d.ts +113 -0
- package/packages/host/dist/repohealth.js +752 -0
- package/packages/host/dist/repohealth.js.map +1 -0
- package/packages/host/dist/repohealthapproval.d.ts +88 -0
- package/packages/host/dist/repohealthapproval.js +709 -0
- package/packages/host/dist/repohealthapproval.js.map +1 -0
- package/packages/host/dist/repohealthscopes.d.ts +23 -0
- package/packages/host/dist/repohealthscopes.js +124 -0
- package/packages/host/dist/repohealthscopes.js.map +1 -0
- package/packages/host/dist/repos.d.ts +25 -0
- package/packages/host/dist/repos.js +181 -0
- package/packages/host/dist/repos.js.map +1 -0
- package/packages/host/dist/reposkill.d.ts +17 -0
- package/packages/host/dist/reposkill.js +92 -0
- package/packages/host/dist/reposkill.js.map +1 -0
- package/packages/host/dist/reposkilltext.d.ts +16 -0
- package/packages/host/dist/reposkilltext.js +320 -0
- package/packages/host/dist/reposkilltext.js.map +1 -0
- package/packages/host/dist/restartnote.d.ts +17 -0
- package/packages/host/dist/restartnote.js +36 -0
- package/packages/host/dist/restartnote.js.map +1 -0
- package/packages/host/dist/review.d.ts +83 -0
- package/packages/host/dist/review.js +513 -0
- package/packages/host/dist/review.js.map +1 -0
- package/packages/host/dist/rootchoice.d.ts +26 -0
- package/packages/host/dist/rootchoice.js +101 -0
- package/packages/host/dist/rootchoice.js.map +1 -0
- package/packages/host/dist/routes/apihost.d.ts +2 -0
- package/packages/host/dist/routes/apihost.js +532 -0
- package/packages/host/dist/routes/apihost.js.map +1 -0
- package/packages/host/dist/routes/apiio.d.ts +86 -0
- package/packages/host/dist/routes/apiio.js +354 -0
- package/packages/host/dist/routes/apiio.js.map +1 -0
- package/packages/host/dist/routes/apirepofiles.d.ts +7 -0
- package/packages/host/dist/routes/apirepofiles.js +382 -0
- package/packages/host/dist/routes/apirepofiles.js.map +1 -0
- package/packages/host/dist/routes/apirepowork.d.ts +2 -0
- package/packages/host/dist/routes/apirepowork.js +500 -0
- package/packages/host/dist/routes/apirepowork.js.map +1 -0
- package/packages/host/dist/routes/apiroutes.d.ts +14 -0
- package/packages/host/dist/routes/apiroutes.js +20 -0
- package/packages/host/dist/routes/apiroutes.js.map +1 -0
- package/packages/host/dist/routes/apisession.d.ts +2 -0
- package/packages/host/dist/routes/apisession.js +197 -0
- package/packages/host/dist/routes/apisession.js.map +1 -0
- package/packages/host/dist/routes/apistats.d.ts +2 -0
- package/packages/host/dist/routes/apistats.js +220 -0
- package/packages/host/dist/routes/apistats.js.map +1 -0
- package/packages/host/dist/routes/apisystem.d.ts +2 -0
- package/packages/host/dist/routes/apisystem.js +389 -0
- package/packages/host/dist/routes/apisystem.js.map +1 -0
- package/packages/host/dist/routes/apitable.d.ts +180 -0
- package/packages/host/dist/routes/apitable.js +71 -0
- package/packages/host/dist/routes/apitable.js.map +1 -0
- package/packages/host/dist/routes/index.d.ts +19 -0
- package/packages/host/dist/routes/index.js +65 -0
- package/packages/host/dist/routes/index.js.map +1 -0
- package/packages/host/dist/routes/session.d.ts +2 -0
- package/packages/host/dist/routes/session.js +771 -0
- package/packages/host/dist/routes/session.js.map +1 -0
- package/packages/host/dist/routes/system.d.ts +24 -0
- package/packages/host/dist/routes/system.js +530 -0
- package/packages/host/dist/routes/system.js.map +1 -0
- package/packages/host/dist/routes/types.d.ts +283 -0
- package/packages/host/dist/routes/types.js +2 -0
- package/packages/host/dist/routes/types.js.map +1 -0
- package/packages/host/dist/routes/work/workassess.d.ts +2 -0
- package/packages/host/dist/routes/work/workassess.js +182 -0
- package/packages/host/dist/routes/work/workassess.js.map +1 -0
- package/packages/host/dist/routes/work/workbacklog.d.ts +2 -0
- package/packages/host/dist/routes/work/workbacklog.js +329 -0
- package/packages/host/dist/routes/work/workbacklog.js.map +1 -0
- package/packages/host/dist/routes/work/workbuild.d.ts +2 -0
- package/packages/host/dist/routes/work/workbuild.js +250 -0
- package/packages/host/dist/routes/work/workbuild.js.map +1 -0
- package/packages/host/dist/routes/work/workintent.d.ts +2 -0
- package/packages/host/dist/routes/work/workintent.js +167 -0
- package/packages/host/dist/routes/work/workintent.js.map +1 -0
- package/packages/host/dist/routes/work/workschedule.d.ts +2 -0
- package/packages/host/dist/routes/work/workschedule.js +131 -0
- package/packages/host/dist/routes/work/workschedule.js.map +1 -0
- package/packages/host/dist/routes/work.d.ts +10 -0
- package/packages/host/dist/routes/work.js +13 -0
- package/packages/host/dist/routes/work.js.map +1 -0
- package/packages/host/dist/scaffold.d.ts +104 -0
- package/packages/host/dist/scaffold.js +417 -0
- package/packages/host/dist/scaffold.js.map +1 -0
- package/packages/host/dist/screenlog.d.ts +43 -0
- package/packages/host/dist/screenlog.js +209 -0
- package/packages/host/dist/screenlog.js.map +1 -0
- package/packages/host/dist/secrets.d.ts +72 -0
- package/packages/host/dist/secrets.js +258 -0
- package/packages/host/dist/secrets.js.map +1 -0
- package/packages/host/dist/sentlog.d.ts +82 -0
- package/packages/host/dist/sentlog.js +186 -0
- package/packages/host/dist/sentlog.js.map +1 -0
- package/packages/host/dist/server/billingwire.d.ts +24 -0
- package/packages/host/dist/server/billingwire.js +73 -0
- package/packages/host/dist/server/billingwire.js.map +1 -0
- package/packages/host/dist/server/clients.d.ts +52 -0
- package/packages/host/dist/server/clients.js +178 -0
- package/packages/host/dist/server/clients.js.map +1 -0
- package/packages/host/dist/server/ctx.d.ts +118 -0
- package/packages/host/dist/server/ctx.js +2 -0
- package/packages/host/dist/server/ctx.js.map +1 -0
- package/packages/host/dist/server/ctxseal.d.ts +21 -0
- package/packages/host/dist/server/ctxseal.js +24 -0
- package/packages/host/dist/server/ctxseal.js.map +1 -0
- package/packages/host/dist/server/deliveries.d.ts +20 -0
- package/packages/host/dist/server/deliveries.js +276 -0
- package/packages/host/dist/server/deliveries.js.map +1 -0
- package/packages/host/dist/server/firstapp.d.ts +12 -0
- package/packages/host/dist/server/firstapp.js +37 -0
- package/packages/host/dist/server/firstapp.js.map +1 -0
- package/packages/host/dist/server/http.d.ts +34 -0
- package/packages/host/dist/server/http.js +475 -0
- package/packages/host/dist/server/http.js.map +1 -0
- package/packages/host/dist/server/intentDeps.d.ts +36 -0
- package/packages/host/dist/server/intentDeps.js +418 -0
- package/packages/host/dist/server/intentDeps.js.map +1 -0
- package/packages/host/dist/server/intentEvents.d.ts +13 -0
- package/packages/host/dist/server/intentEvents.js +234 -0
- package/packages/host/dist/server/intentEvents.js.map +1 -0
- package/packages/host/dist/server/liveness.d.ts +64 -0
- package/packages/host/dist/server/liveness.js +74 -0
- package/packages/host/dist/server/liveness.js.map +1 -0
- package/packages/host/dist/server/scan.d.ts +41 -0
- package/packages/host/dist/server/scan.js +227 -0
- package/packages/host/dist/server/scan.js.map +1 -0
- package/packages/host/dist/server/sessionEvents.d.ts +40 -0
- package/packages/host/dist/server/sessionEvents.js +509 -0
- package/packages/host/dist/server/sessionEvents.js.map +1 -0
- package/packages/host/dist/server/shutdown.d.ts +11 -0
- package/packages/host/dist/server/shutdown.js +135 -0
- package/packages/host/dist/server/shutdown.js.map +1 -0
- package/packages/host/dist/server/wsops.d.ts +44 -0
- package/packages/host/dist/server/wsops.js +313 -0
- package/packages/host/dist/server/wsops.js.map +1 -0
- package/packages/host/dist/sessionSearch.d.ts +46 -0
- package/packages/host/dist/sessionSearch.js +93 -0
- package/packages/host/dist/sessionSearch.js.map +1 -0
- package/packages/host/dist/sessionbudget.d.ts +61 -0
- package/packages/host/dist/sessionbudget.js +84 -0
- package/packages/host/dist/sessionbudget.js.map +1 -0
- package/packages/host/dist/sessions/boxes.d.ts +112 -0
- package/packages/host/dist/sessions/boxes.js +968 -0
- package/packages/host/dist/sessions/boxes.js.map +1 -0
- package/packages/host/dist/sessions/budgetwatch.d.ts +95 -0
- package/packages/host/dist/sessions/budgetwatch.js +171 -0
- package/packages/host/dist/sessions/budgetwatch.js.map +1 -0
- package/packages/host/dist/sessions/convid.d.ts +72 -0
- package/packages/host/dist/sessions/convid.js +305 -0
- package/packages/host/dist/sessions/convid.js.map +1 -0
- package/packages/host/dist/sessions/core.d.ts +749 -0
- package/packages/host/dist/sessions/core.js +2 -0
- package/packages/host/dist/sessions/core.js.map +1 -0
- package/packages/host/dist/sessions/ctxseries.d.ts +184 -0
- package/packages/host/dist/sessions/ctxseries.js +766 -0
- package/packages/host/dist/sessions/ctxseries.js.map +1 -0
- package/packages/host/dist/sessions/drive.d.ts +207 -0
- package/packages/host/dist/sessions/drive.js +779 -0
- package/packages/host/dist/sessions/drive.js.map +1 -0
- package/packages/host/dist/sessions/haltall.d.ts +36 -0
- package/packages/host/dist/sessions/haltall.js +95 -0
- package/packages/host/dist/sessions/haltall.js.map +1 -0
- package/packages/host/dist/sessions/health.d.ts +88 -0
- package/packages/host/dist/sessions/health.js +108 -0
- package/packages/host/dist/sessions/health.js.map +1 -0
- package/packages/host/dist/sessions/idlewatch.d.ts +34 -0
- package/packages/host/dist/sessions/idlewatch.js +74 -0
- package/packages/host/dist/sessions/idlewatch.js.map +1 -0
- package/packages/host/dist/sessions/knobs.d.ts +315 -0
- package/packages/host/dist/sessions/knobs.js +411 -0
- package/packages/host/dist/sessions/knobs.js.map +1 -0
- package/packages/host/dist/sessions/links.d.ts +53 -0
- package/packages/host/dist/sessions/links.js +209 -0
- package/packages/host/dist/sessions/links.js.map +1 -0
- package/packages/host/dist/sessions/livemode.d.ts +56 -0
- package/packages/host/dist/sessions/livemode.js +300 -0
- package/packages/host/dist/sessions/livemode.js.map +1 -0
- package/packages/host/dist/sessions/record.d.ts +196 -0
- package/packages/host/dist/sessions/record.js +719 -0
- package/packages/host/dist/sessions/record.js.map +1 -0
- package/packages/host/dist/sessions/resume.d.ts +164 -0
- package/packages/host/dist/sessions/resume.js +629 -0
- package/packages/host/dist/sessions/resume.js.map +1 -0
- package/packages/host/dist/sessions/roster.d.ts +164 -0
- package/packages/host/dist/sessions/roster.js +566 -0
- package/packages/host/dist/sessions/roster.js.map +1 -0
- package/packages/host/dist/sessions/sidechannel.d.ts +96 -0
- package/packages/host/dist/sessions/sidechannel.js +726 -0
- package/packages/host/dist/sessions/sidechannel.js.map +1 -0
- package/packages/host/dist/sessions/tmux.d.ts +247 -0
- package/packages/host/dist/sessions/tmux.js +731 -0
- package/packages/host/dist/sessions/tmux.js.map +1 -0
- package/packages/host/dist/sessions/turn.d.ts +237 -0
- package/packages/host/dist/sessions/turn.js +1003 -0
- package/packages/host/dist/sessions/turn.js.map +1 -0
- package/packages/host/dist/sessions/wall.d.ts +117 -0
- package/packages/host/dist/sessions/wall.js +658 -0
- package/packages/host/dist/sessions/wall.js.map +1 -0
- package/packages/host/dist/sessions.d.ts +255 -0
- package/packages/host/dist/sessions.js +758 -0
- package/packages/host/dist/sessions.js.map +1 -0
- package/packages/host/dist/settings.d.ts +40 -0
- package/packages/host/dist/settings.js +171 -0
- package/packages/host/dist/settings.js.map +1 -0
- package/packages/host/dist/settle.d.ts +171 -0
- package/packages/host/dist/settle.js +409 -0
- package/packages/host/dist/settle.js.map +1 -0
- package/packages/host/dist/setupprefs.d.ts +51 -0
- package/packages/host/dist/setupprefs.js +178 -0
- package/packages/host/dist/setupprefs.js.map +1 -0
- package/packages/host/dist/setupwatch.d.ts +39 -0
- package/packages/host/dist/setupwatch.js +249 -0
- package/packages/host/dist/setupwatch.js.map +1 -0
- package/packages/host/dist/shelllinks.d.ts +39 -0
- package/packages/host/dist/shelllinks.js +292 -0
- package/packages/host/dist/shelllinks.js.map +1 -0
- package/packages/host/dist/shells.d.ts +190 -0
- package/packages/host/dist/shells.js +633 -0
- package/packages/host/dist/shells.js.map +1 -0
- package/packages/host/dist/sidecar/sidecarclaude.d.ts +120 -0
- package/packages/host/dist/sidecar/sidecarclaude.js +213 -0
- package/packages/host/dist/sidecar/sidecarclaude.js.map +1 -0
- package/packages/host/dist/sidecar/sidecarname.d.ts +99 -0
- package/packages/host/dist/sidecar/sidecarname.js +163 -0
- package/packages/host/dist/sidecar/sidecarname.js.map +1 -0
- package/packages/host/dist/sidecar/sidecaropenai.d.ts +24 -0
- package/packages/host/dist/sidecar/sidecaropenai.js +129 -0
- package/packages/host/dist/sidecar/sidecaropenai.js.map +1 -0
- package/packages/host/dist/sidecar/sidecarroute.d.ts +65 -0
- package/packages/host/dist/sidecar/sidecarroute.js +158 -0
- package/packages/host/dist/sidecar/sidecarroute.js.map +1 -0
- package/packages/host/dist/sidecar/sidecartasks.d.ts +20 -0
- package/packages/host/dist/sidecar/sidecartasks.js +63 -0
- package/packages/host/dist/sidecar/sidecartasks.js.map +1 -0
- package/packages/host/dist/sidecar/sidecartrust.d.ts +32 -0
- package/packages/host/dist/sidecar/sidecartrust.js +74 -0
- package/packages/host/dist/sidecar/sidecartrust.js.map +1 -0
- package/packages/host/dist/sidecar.d.ts +82 -0
- package/packages/host/dist/sidecar.js +78 -0
- package/packages/host/dist/sidecar.js.map +1 -0
- package/packages/host/dist/signkey.d.ts +57 -0
- package/packages/host/dist/signkey.js +159 -0
- package/packages/host/dist/signkey.js.map +1 -0
- package/packages/host/dist/slash.d.ts +43 -0
- package/packages/host/dist/slash.js +236 -0
- package/packages/host/dist/slash.js.map +1 -0
- package/packages/host/dist/sourceanswer.d.ts +103 -0
- package/packages/host/dist/sourceanswer.js +193 -0
- package/packages/host/dist/sourceanswer.js.map +1 -0
- package/packages/host/dist/speedtest.d.ts +57 -0
- package/packages/host/dist/speedtest.js +137 -0
- package/packages/host/dist/speedtest.js.map +1 -0
- package/packages/host/dist/spendwall.d.ts +33 -0
- package/packages/host/dist/spendwall.js +45 -0
- package/packages/host/dist/spendwall.js.map +1 -0
- package/packages/host/dist/sysstat.d.ts +134 -0
- package/packages/host/dist/sysstat.js +630 -0
- package/packages/host/dist/sysstat.js.map +1 -0
- package/packages/host/dist/tailnetpeers.d.ts +34 -0
- package/packages/host/dist/tailnetpeers.js +116 -0
- package/packages/host/dist/tailnetpeers.js.map +1 -0
- package/packages/host/dist/tailscaleguard.d.ts +11 -0
- package/packages/host/dist/tailscaleguard.js +133 -0
- package/packages/host/dist/tailscaleguard.js.map +1 -0
- package/packages/host/dist/termqueries.d.ts +124 -0
- package/packages/host/dist/termqueries.js +207 -0
- package/packages/host/dist/termqueries.js.map +1 -0
- package/packages/host/dist/themeoverlay.d.ts +74 -0
- package/packages/host/dist/themeoverlay.js +262 -0
- package/packages/host/dist/themeoverlay.js.map +1 -0
- package/packages/host/dist/thumbs.d.ts +69 -0
- package/packages/host/dist/thumbs.js +359 -0
- package/packages/host/dist/thumbs.js.map +1 -0
- package/packages/host/dist/tmuxreq.d.ts +91 -0
- package/packages/host/dist/tmuxreq.js +207 -0
- package/packages/host/dist/tmuxreq.js.map +1 -0
- package/packages/host/dist/tmuxscroll.d.ts +70 -0
- package/packages/host/dist/tmuxscroll.js +206 -0
- package/packages/host/dist/tmuxscroll.js.map +1 -0
- package/packages/host/dist/tokenscan.d.ts +63 -0
- package/packages/host/dist/tokenscan.js +220 -0
- package/packages/host/dist/tokenscan.js.map +1 -0
- package/packages/host/dist/tokenstats.d.ts +115 -0
- package/packages/host/dist/tokenstats.js +763 -0
- package/packages/host/dist/tokenstats.js.map +1 -0
- package/packages/host/dist/toolchain.d.ts +147 -0
- package/packages/host/dist/toolchain.js +468 -0
- package/packages/host/dist/toolchain.js.map +1 -0
- package/packages/host/dist/transcript/transcriptlog.d.ts +134 -0
- package/packages/host/dist/transcript/transcriptlog.js +300 -0
- package/packages/host/dist/transcript/transcriptlog.js.map +1 -0
- package/packages/host/dist/transcript/transcriptparse.d.ts +28 -0
- package/packages/host/dist/transcript/transcriptparse.js +377 -0
- package/packages/host/dist/transcript/transcriptparse.js.map +1 -0
- package/packages/host/dist/transcript/transcriptscreen.d.ts +71 -0
- package/packages/host/dist/transcript/transcriptscreen.js +120 -0
- package/packages/host/dist/transcript/transcriptscreen.js.map +1 -0
- package/packages/host/dist/transcript/transcriptturns.d.ts +139 -0
- package/packages/host/dist/transcript/transcriptturns.js +270 -0
- package/packages/host/dist/transcript/transcriptturns.js.map +1 -0
- package/packages/host/dist/transcript.d.ts +28 -0
- package/packages/host/dist/transcript.js +34 -0
- package/packages/host/dist/transcript.js.map +1 -0
- package/packages/host/dist/transportsurvey.d.ts +10 -0
- package/packages/host/dist/transportsurvey.js +109 -0
- package/packages/host/dist/transportsurvey.js.map +1 -0
- package/packages/host/dist/tree.d.ts +80 -0
- package/packages/host/dist/tree.js +372 -0
- package/packages/host/dist/tree.js.map +1 -0
- package/packages/host/dist/turnagents.d.ts +17 -0
- package/packages/host/dist/turnagents.js +205 -0
- package/packages/host/dist/turnagents.js.map +1 -0
- package/packages/host/dist/uistats.d.ts +18 -0
- package/packages/host/dist/uistats.js +105 -0
- package/packages/host/dist/uistats.js.map +1 -0
- package/packages/host/dist/update.d.ts +100 -0
- package/packages/host/dist/update.js +536 -0
- package/packages/host/dist/update.js.map +1 -0
- package/packages/host/dist/updates/apply.d.ts +45 -0
- package/packages/host/dist/updates/apply.js +362 -0
- package/packages/host/dist/updates/apply.js.map +1 -0
- package/packages/host/dist/updates/catalog.d.ts +11 -0
- package/packages/host/dist/updates/catalog.js +123 -0
- package/packages/host/dist/updates/catalog.js.map +1 -0
- package/packages/host/dist/updates/checker.d.ts +73 -0
- package/packages/host/dist/updates/checker.js +189 -0
- package/packages/host/dist/updates/checker.js.map +1 -0
- package/packages/host/dist/updates/github.d.ts +13 -0
- package/packages/host/dist/updates/github.js +63 -0
- package/packages/host/dist/updates/github.js.map +1 -0
- package/packages/host/dist/updates/gitops.d.ts +16 -0
- package/packages/host/dist/updates/gitops.js +61 -0
- package/packages/host/dist/updates/gitops.js.map +1 -0
- package/packages/host/dist/updates/installrecord.d.ts +26 -0
- package/packages/host/dist/updates/installrecord.js +42 -0
- package/packages/host/dist/updates/installrecord.js.map +1 -0
- package/packages/host/dist/updates/remote.d.ts +10 -0
- package/packages/host/dist/updates/remote.js +54 -0
- package/packages/host/dist/updates/remote.js.map +1 -0
- package/packages/host/dist/updates/restart.d.ts +5 -0
- package/packages/host/dist/updates/restart.js +20 -0
- package/packages/host/dist/updates/restart.js.map +1 -0
- package/packages/host/dist/updates/self.d.ts +19 -0
- package/packages/host/dist/updates/self.js +51 -0
- package/packages/host/dist/updates/self.js.map +1 -0
- package/packages/host/dist/updates/wire.d.ts +18 -0
- package/packages/host/dist/updates/wire.js +21 -0
- package/packages/host/dist/updates/wire.js.map +1 -0
- package/packages/host/dist/usage.d.ts +124 -0
- package/packages/host/dist/usage.js +411 -0
- package/packages/host/dist/usage.js.map +1 -0
- package/packages/host/dist/usagelog.d.ts +53 -0
- package/packages/host/dist/usagelog.js +223 -0
- package/packages/host/dist/usagelog.js.map +1 -0
- package/packages/host/dist/usagesourcelog.d.ts +59 -0
- package/packages/host/dist/usagesourcelog.js +208 -0
- package/packages/host/dist/usagesourcelog.js.map +1 -0
- package/packages/host/dist/usagesources.d.ts +175 -0
- package/packages/host/dist/usagesources.js +462 -0
- package/packages/host/dist/usagesources.js.map +1 -0
- package/packages/host/dist/visualskill.d.ts +36 -0
- package/packages/host/dist/visualskill.js +230 -0
- package/packages/host/dist/visualskill.js.map +1 -0
- package/packages/host/dist/webbundle.d.ts +47 -0
- package/packages/host/dist/webbundle.js +155 -0
- package/packages/host/dist/webbundle.js.map +1 -0
- package/packages/host/dist/wirerecord.d.ts +5 -0
- package/packages/host/dist/wirerecord.js +128 -0
- package/packages/host/dist/wirerecord.js.map +1 -0
- package/packages/host/dist/worktreeleftover.d.ts +27 -0
- package/packages/host/dist/worktreeleftover.js +153 -0
- package/packages/host/dist/worktreeleftover.js.map +1 -0
- package/packages/host/dist/worktreeowner.d.ts +17 -0
- package/packages/host/dist/worktreeowner.js +45 -0
- package/packages/host/dist/worktreeowner.js.map +1 -0
- package/packages/host/package.json +26 -0
- package/packages/web/dist/assets/apple-touch-icon.png +0 -0
- package/packages/web/dist/assets/badge-96.png +0 -0
- package/packages/web/dist/assets/demo-CXlqlYE4.js +23 -0
- package/packages/web/dist/assets/hero.png +0 -0
- package/packages/web/dist/assets/icon-192.png +0 -0
- package/packages/web/dist/assets/icon-32.png +0 -0
- package/packages/web/dist/assets/icon-48.png +0 -0
- package/packages/web/dist/assets/icon-512-maskable.png +0 -0
- package/packages/web/dist/assets/icon-512.png +0 -0
- package/packages/web/dist/assets/icon-dark.svg +43 -0
- package/packages/web/dist/assets/icon-light.svg +42 -0
- package/packages/web/dist/assets/icon.svg +11 -0
- package/packages/web/dist/assets/icons-BbqDBVjw.js +1 -0
- package/packages/web/dist/assets/index-CgPoyb3Y.css +1 -0
- package/packages/web/dist/assets/index-D5JKj8DK.js +169 -0
- package/packages/web/dist/assets/react-CoSyT_xY.js +8 -0
- package/packages/web/dist/assets/rolldown-runtime-BpQH8Ho1.js +1 -0
- package/packages/web/dist/assets/shared-eyaskl5l.js +47 -0
- package/packages/web/dist/assets/sheets-Bjv2L-cG.css +1 -0
- package/packages/web/dist/assets/sheets-BzzL2re1.js +204 -0
- package/packages/web/dist/assets/vendor-BPwPmufs.js +3 -0
- package/packages/web/dist/assets/xterm-BrP-ENHg.css +1 -0
- package/packages/web/dist/assets/xterm-C8zLTNGk.js +16 -0
- package/packages/web/dist/build-id.txt +1 -0
- package/packages/web/dist/demo/media/r1/dot-claude/inbox/swipe-sketch.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-android-fixed.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-android.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-before.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-date-picker.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-empty-state.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-grouped.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-ios.png +0 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-preview.html +18 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-release-notes.md +21 -0
- package/packages/web/dist/demo/media/r1/dot-claude/outbox/todo-garden-sorted.png +0 -0
- package/packages/web/dist/demo/media/r3/dot-claude/outbox/trail-log-ridge-loop.png +0 -0
- package/packages/web/dist/index.html +84 -0
- package/packages/web/dist/manifest.webmanifest +16 -0
- package/packages/web/dist/sw.js +420 -0
- package/release.json +22 -0
- package/scripts/windows/keeper.ps1 +60 -0
- package/scripts/windows/wsl-setup.sh +173 -0
- package/tools/repohealth/census.mjs +353 -0
- package/tools/repohealth/central.mjs +234 -0
- package/tools/repohealth/constants.mjs +420 -0
- package/tools/repohealth/events.mjs +563 -0
- package/tools/repohealth/fixture.json +17976 -0
- package/tools/repohealth/git.mjs +471 -0
- package/tools/repohealth/html.mjs +601 -0
- package/tools/repohealth/judge.mjs +546 -0
- package/tools/repohealth/lang/typescript-ast.mjs +538 -0
- package/tools/repohealth/metrics/classics.mjs +239 -0
- package/tools/repohealth/metrics/cochange.mjs +234 -0
- package/tools/repohealth/metrics/context.mjs +411 -0
- package/tools/repohealth/metrics/deadexports.mjs +122 -0
- package/tools/repohealth/metrics/dups.mjs +261 -0
- package/tools/repohealth/metrics/hatches.mjs +164 -0
- package/tools/repohealth/metrics/retouch.mjs +326 -0
- package/tools/repohealth/metrics/route.mjs +159 -0
- package/tools/repohealth/metrics/size.mjs +120 -0
- package/tools/repohealth/metrics/tripwires.mjs +258 -0
- package/tools/repohealth/metrics/untested.mjs +308 -0
- package/tools/repohealth/narrate.mjs +342 -0
- package/tools/repohealth/own.mjs +238 -0
- package/tools/repohealth/packs/c.mjs +124 -0
- package/tools/repohealth/packs/common.mjs +205 -0
- package/tools/repohealth/packs/dart.mjs +118 -0
- package/tools/repohealth/packs/index.mjs +83 -0
- package/tools/repohealth/packs/kotlin.mjs +320 -0
- package/tools/repohealth/packs/python.mjs +488 -0
- package/tools/repohealth/packs/shell.mjs +88 -0
- package/tools/repohealth/packs/typescript.mjs +604 -0
- package/tools/repohealth/plot.mjs +462 -0
- package/tools/repohealth/readings.mjs +427 -0
- package/tools/repohealth/scope.mjs +184 -0
- package/tools/repohealth/series.mjs +360 -0
- package/tools/repohealth/snapshot.mjs +431 -0
- package/tools/repohealth/source.mjs +266 -0
- package/tools/repohealth/statefile.mjs +31 -0
- package/tools/repohealth/types.mjs +316 -0
- package/tools/repohealth.mjs +767 -0
- package/tools/skillmap.mjs +109 -0
|
@@ -0,0 +1,968 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The choice box: when to look for one, reading it off the rendered screen
|
|
3
|
+
* (claude's numbered box and opencode's highlighted row), publishing it, the
|
|
4
|
+
* "unparsable dialog" fallback flag, the sign-in link that rides on the same
|
|
5
|
+
* render, and the two answer walks that place a selection before pressing
|
|
6
|
+
* Return. Stateless — every per-session fact lives on the `Session` record.
|
|
7
|
+
* Reasoning: `waterplane-heuristics` (`prompt.ts`, `ocprompt.ts`, `askbox.ts`,
|
|
8
|
+
* `login.ts`) and docs/notes/host-architecture.md.
|
|
9
|
+
*/
|
|
10
|
+
import { answerTextProblem } from "@waterplane/shared";
|
|
11
|
+
import { answerSourcePlan, applySourceReply } from "../sourceanswer.js";
|
|
12
|
+
export { sourceKeysProblem } from "../sourceanswer.js";
|
|
13
|
+
import { screenReaderFor } from "../backends/readers.js";
|
|
14
|
+
import { derive } from "../backends/derive.js";
|
|
15
|
+
import { detectPrompt, dialogStillUp, dialogEvidence, hasDialogFooter, isDialogFooterRow, MAX_BOX_OPTIONS, mergeBox, navToSubmit, readNavBox, sameBox, samePrompt, stripAnsi } from "../prompt.js";
|
|
16
|
+
import { asksFromCall, descFor, pendingAskQuestions, pendingAskRecord, pickAsk, recoverHead } from "../askbox.js";
|
|
17
|
+
import { isPlanBox, planPathFor, readPlan } from "../planbox.js";
|
|
18
|
+
import { detectLimitText, STOP_WAIT_RE } from "../limit.js";
|
|
19
|
+
import { detectLogin, loginCandidate, sameLogin } from "../login.js";
|
|
20
|
+
import { logMtime, transcriptPath } from "../transcript.js";
|
|
21
|
+
import { recordSent } from "../sentlog.js";
|
|
22
|
+
import { rememberRule, sessionAskRules } from "../answergate.js";
|
|
23
|
+
import { PROMPT_CHECK_MS, PROMPT_MAX_STALE_MS, PROMPT_MISS_MAX, PROMPT_SETTLE_MS, RESIZE_REPAINT_MS, PROMPT_GATE_BYTES, SUBMIT_NAV_TRIES, SUBMIT_NAV_MAX_KEYS, SUBMIT_NAV_LINES, SUBMIT_NAV_SETTLE_MS, CHOOSE_NAV_TRIES, CHOOSE_NAV_SETTLE_MS, PROMPT_CELL_ROWS, IDLE_PING_MS, HEALTH_SAMPLE_ROWS, } from "./knobs.js";
|
|
24
|
+
/**
|
|
25
|
+
* The tail of a screen ending at the row a matcher was looking for.
|
|
26
|
+
*
|
|
27
|
+
* Anchored on the MATCHED row rather than sliced off the bottom, for the same
|
|
28
|
+
* reason `deliver.ts` places its echo instead of taking the last N rows: the
|
|
29
|
+
* bottom of a claude screen is the composer and the working line, and a sample
|
|
30
|
+
* that shows those says nothing about the box above them.
|
|
31
|
+
*/
|
|
32
|
+
/** How long the `askbox.enrich` fixture waits for the log to write the call: 2 min. */
|
|
33
|
+
const ASK_RECORD_POLLS = 60;
|
|
34
|
+
const ASK_RECORD_POLL_MS = 2_000;
|
|
35
|
+
function healthTail(screen, anchor) {
|
|
36
|
+
const rows = screen.split("\n");
|
|
37
|
+
let hit = -1;
|
|
38
|
+
for (let i = rows.length - 1; i >= 0; i--)
|
|
39
|
+
if (anchor(rows[i])) {
|
|
40
|
+
hit = i;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
if (hit < 0)
|
|
44
|
+
hit = rows.length - 1;
|
|
45
|
+
return rows.slice(Math.max(0, hit - HEALTH_SAMPLE_ROWS + 1), hit + 1).join("\n");
|
|
46
|
+
}
|
|
47
|
+
export function scheduleChecks(core, s) {
|
|
48
|
+
if (s.idleTimer)
|
|
49
|
+
clearTimeout(s.idleTimer);
|
|
50
|
+
s.idleTimer = setTimeout(() => core.checkIdle(s), IDLE_PING_MS);
|
|
51
|
+
// Output on a hooked session with no turn in flight: the hooks say nothing
|
|
52
|
+
// is running, and the CLI may be working anyway (`/compact` announces
|
|
53
|
+
// nothing, and a `Stop` a hook blocked leaves the turn going). One armed
|
|
54
|
+
// timer, never restarted while a pass is already pending, and it costs a
|
|
55
|
+
// regex over ONE repaint — see `checkTurnWatch`. A session with a turn the
|
|
56
|
+
// hooks DO own is left to them.
|
|
57
|
+
// Not while a backend's own channel reports EXACT turns: those boundaries are
|
|
58
|
+
// exact by definition, and `workingLine` is claude's working line — pointed
|
|
59
|
+
// at another TUI it could only ever match something else. A channel whose
|
|
60
|
+
// ends are requests (`verifyEnds`: claude's hook pipe) keeps the watch.
|
|
61
|
+
const exactTurns = !!s.channel?.turnsLive && !s.backend.sources?.turns?.verifyEnds;
|
|
62
|
+
if (s.hooksActive && !exactTurns && !s.stopVerifyTimer && !s.turnActive)
|
|
63
|
+
core.armTurnWatch(s);
|
|
64
|
+
// The prompt check is a debounce with a CEILING. A pure debounce never fires
|
|
65
|
+
// while a box is up — the TUI repaints its working line every second or so,
|
|
66
|
+
// and each repaint pushed the check out again — which is exactly the state
|
|
67
|
+
// that needs publishing. `PROMPT_MAX_STALE_MS` since the last check that
|
|
68
|
+
// actually ran wins over the quiet window, so a repaint storm delays
|
|
69
|
+
// verification by a bounded amount instead of for ever.
|
|
70
|
+
// Measured from the start of THIS burst when the last check is older than the
|
|
71
|
+
// ceiling itself: after a quiet spell the ceiling has long expired, and taking
|
|
72
|
+
// it at face value fired the check at 0 ms on the burst's FIRST chunk — the
|
|
73
|
+
// first chunk of a box tmux is still painting. (`readTwice` is what keeps a
|
|
74
|
+
// half-painted read from being published; this only stops buying it.)
|
|
75
|
+
const now = Date.now();
|
|
76
|
+
const since = s.promptTimer || now - s.lastPromptCheckAt < PROMPT_MAX_STALE_MS ? s.lastPromptCheckAt : now;
|
|
77
|
+
const ceiling = since + PROMPT_MAX_STALE_MS - now;
|
|
78
|
+
armPromptCheck(core, s, Math.max(0, Math.min(PROMPT_CHECK_MS, ceiling)));
|
|
79
|
+
// A shell's links and codes (`shelllinks.ts`) on the same quiet tick; a
|
|
80
|
+
// session with turns never pays for that read.
|
|
81
|
+
if (s.backend.caps.turns === false)
|
|
82
|
+
core.armLinksCheck(s);
|
|
83
|
+
}
|
|
84
|
+
/** Arm the prompt check, EARLIEST-wins: a later caller may pull the check
|
|
85
|
+
* forward but never push a pending one back (that is what made the debounce
|
|
86
|
+
* starve under constant output). */
|
|
87
|
+
export function armPromptCheck(core, s, delayMs) {
|
|
88
|
+
const due = Date.now() + delayMs;
|
|
89
|
+
if (s.promptTimer && s.promptDueAt <= due)
|
|
90
|
+
return;
|
|
91
|
+
if (s.promptTimer)
|
|
92
|
+
clearTimeout(s.promptTimer);
|
|
93
|
+
s.promptDueAt = due;
|
|
94
|
+
s.promptTimer = setTimeout(() => { s.promptTimer = null; checkPrompt(core, s); }, delayMs);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Prompt detection runs in two stages. The cheap stage scans an ANSI-stripped
|
|
98
|
+
* byte window — fast enough for a per-quiet-period check, but a repaint-based
|
|
99
|
+
* TUI makes that window a shuffled, hole-punched approximation of the screen
|
|
100
|
+
* (fragments joined across cursor jumps, words missing letters). So a hit is
|
|
101
|
+
* only a CANDIDATE: it is re-detected against the RENDERED screen (headless VT
|
|
102
|
+
* replay, what a user actually sees) and that result is what we publish. The
|
|
103
|
+
* render is the expensive part, hence the gate — no candidate, no replay.
|
|
104
|
+
*
|
|
105
|
+
* Before this, garbled repaint fragments were surfaced verbatim as one-tap
|
|
106
|
+
* option labels, and phantom prompts flickered in and out mid-answer.
|
|
107
|
+
*/
|
|
108
|
+
function checkPrompt(core, s) {
|
|
109
|
+
if (!s.info.running)
|
|
110
|
+
return;
|
|
111
|
+
// A backend whose TUI draws no box this detector can read is a backend this
|
|
112
|
+
// check has nothing to say about. Not armed at all, rather than armed and
|
|
113
|
+
// publishing null: the strict stage costs a full VT replay per quiet period,
|
|
114
|
+
// and — the part that matters more — the only way a claude-shaped rule can
|
|
115
|
+
// "match" a screen it was never written for is by matching something else.
|
|
116
|
+
// The sign-in link rides on this same render, which is the right place for
|
|
117
|
+
// it too: a claude account's sign-in screen is not a fact about a binary
|
|
118
|
+
// that has no claude account.
|
|
119
|
+
const reader = derive(s.backend).screen("dialogs");
|
|
120
|
+
if (!reader)
|
|
121
|
+
return;
|
|
122
|
+
// The CLI's own channel is posing the dialogs: the screen reader stands down,
|
|
123
|
+
// because two readers on one box re-key its fingerprint (a card re-opened, a
|
|
124
|
+
// queued answer stale, a push). It comes back the moment the channel goes
|
|
125
|
+
// down (`sidechannel.ts`), and it also stays off for a box the channel
|
|
126
|
+
// published before it finished reconciling.
|
|
127
|
+
if (screenReaderOff(s))
|
|
128
|
+
return;
|
|
129
|
+
// Named readers, not a boolean: `prompt.ts`'s rules are claude's screen and
|
|
130
|
+
// nothing else, so a second TUI gets its own reader rather than a looser
|
|
131
|
+
// version of this one. See `backends/types.ts`.
|
|
132
|
+
// A reader a plugin contributed (`backends/readers.ts`) — opencode's, for one.
|
|
133
|
+
const nav = screenReaderFor(s.backend);
|
|
134
|
+
if (nav) {
|
|
135
|
+
checkNavBox(core, s, nav);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (reader !== "claude-numbered")
|
|
139
|
+
return; // a contributed name whose plugin left: no reader, no box
|
|
140
|
+
// A pane in copy-mode is showing HISTORY, not the live screen: the rendered
|
|
141
|
+
// grid is wherever the user panned to, so an answered box scrolled back into
|
|
142
|
+
// view would be re-detected as live — an approve bar over a dialog that no
|
|
143
|
+
// longer exists, and an `awaitingInput` interlock on a session that is fine.
|
|
144
|
+
// The pane is unchanged underneath; the next check after the pan back down
|
|
145
|
+
// reads it. (`tmuxscroll.ts`.)
|
|
146
|
+
if (s.copyMode)
|
|
147
|
+
return;
|
|
148
|
+
s.lastPromptCheckAt = Date.now();
|
|
149
|
+
// Cheap stage runs LENIENT: the "❯" cursor and the Enter/Esc footer each sit
|
|
150
|
+
// on their own row, and a repaint can leave them outside the byte window while
|
|
151
|
+
// the option rows sit inside it. Demanding them here would drop a real prompt
|
|
152
|
+
// before it ever reached the render — no approve bar, no push. Strictness
|
|
153
|
+
// belongs on the rendered screen below, which is what gets published.
|
|
154
|
+
// A dialog we could NOT parse is still a blocked session, and the reader view
|
|
155
|
+
// has no terminal to notice it in — so the render is also paid for when the
|
|
156
|
+
// tail merely carries a box FOOTER, and an unparsable box publishes the
|
|
157
|
+
// weaker `awaitingInput` signal ("open the CLI") instead of nothing at all.
|
|
158
|
+
// "esc to interrupt" is deliberately not in DIALOG_FOOTER_RE: that is the
|
|
159
|
+
// TUI's working line, i.e. every busy session, i.e. a render per check.
|
|
160
|
+
// The window is a few repaints wide, not one: this TUI redraws a full screen
|
|
161
|
+
// in ~3 KB, and the footer is not the LAST thing it draws — a box whose
|
|
162
|
+
// preview pane was painted after it fell outside a one-frame window entirely.
|
|
163
|
+
// A regex over 12 KB every 600 ms of quiet costs nothing; missing the gate
|
|
164
|
+
// costs the whole feature. Stale bytes here only buy a render whose STRICT
|
|
165
|
+
// pass then publishes null, so a wide gate can't invent a phantom prompt.
|
|
166
|
+
const rawTail = s.scrollback.slice(-PROMPT_GATE_BYTES);
|
|
167
|
+
const tail = stripAnsi(rawTail);
|
|
168
|
+
const candidate = !!detectPrompt(rawTail, { lenient: true });
|
|
169
|
+
// A gate miss retires a prompt only when there is no PUBLISHED box to lose.
|
|
170
|
+
//
|
|
171
|
+
// "Only the strict verifier clears it" is the rule the miss counter below
|
|
172
|
+
// exists to enforce, and this exit sat outside it. The gate reads a fixed
|
|
173
|
+
// byte WINDOW, so a box whose own frame is a large fraction of that window —
|
|
174
|
+
// six options with a wrapped description each — plus the repaints that follow
|
|
175
|
+
// can push the footer out of view while the box is plainly still on screen,
|
|
176
|
+
// and the panel vanished with no misses spent. With a box published we fall
|
|
177
|
+
// through to the render and let the strict pass decide instead; a box that is
|
|
178
|
+
// genuinely gone leaves a screen carrying no dialog footer, which clears it on
|
|
179
|
+
// that same pass with no added latency.
|
|
180
|
+
// A sign-in link opens the gate on its own shape: claude 2.1.293's sign-in
|
|
181
|
+
// screen draws no dialog footer (`login.ts`'s `loginCandidate`).
|
|
182
|
+
if (!candidate && !hasDialogFooter(tail) && !s.info.prompt && !s.info.login && !loginCandidate(rawTail, tail)) {
|
|
183
|
+
s.promptGen++; // invalidates any render still in flight — the box is gone
|
|
184
|
+
s.promptMisses = 0;
|
|
185
|
+
s.promptPending = null;
|
|
186
|
+
applyPrompt(core, s, null);
|
|
187
|
+
setAwaiting(core, s, false);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (s.promptRendering)
|
|
191
|
+
return;
|
|
192
|
+
s.promptRendering = true;
|
|
193
|
+
const gen = s.promptGen;
|
|
194
|
+
void core.screenText(s.info.id, 60)
|
|
195
|
+
.then((screen) => {
|
|
196
|
+
if (!s.info.running || s.promptGen !== gen)
|
|
197
|
+
return;
|
|
198
|
+
// The sign-in link rides on THIS render rather than paying for one of
|
|
199
|
+
// its own: the gate above opens on the link's shape (`loginCandidate`),
|
|
200
|
+
// so the replay is bought every time there is a link to find.
|
|
201
|
+
applyLogin(core, s, detectLogin(screen, s.scrollback));
|
|
202
|
+
const parsed = detectPrompt(screen);
|
|
203
|
+
if (parsed) {
|
|
204
|
+
s.promptMisses = 0;
|
|
205
|
+
// One box stays ONE box while the TUI repaints under it. The strict
|
|
206
|
+
// pass runs about twice a second and reads whatever is legible right
|
|
207
|
+
// now — which the console refreshing itself, a pan, or a box taller
|
|
208
|
+
// than the terminal all change — so a live question was re-published
|
|
209
|
+
// several times a minute under a new fingerprint. That re-opened a
|
|
210
|
+
// card the user had collapsed or hidden to answer at the desk, made
|
|
211
|
+
// queued answers stale and fired a push per repaint. `sameBox` /
|
|
212
|
+
// `mergeBox` in `prompt.ts` carry the reasoning; a box that is
|
|
213
|
+
// genuinely different is published as itself.
|
|
214
|
+
// The commit row's own word, off this same render — "Submit" on the
|
|
215
|
+
// last question of an ask, "Next" on every one before it.
|
|
216
|
+
const commit = parsed.multi ? navToSubmit(screen) : null;
|
|
217
|
+
const read = commit ? { ...parsed, submitLabel: commit.label } : parsed;
|
|
218
|
+
// Enriched BEFORE the comparison, not after: the enrichment is what
|
|
219
|
+
// carries `askId`, and that is the only handle `sameBox` can trust on
|
|
220
|
+
// the boxes that actually move.
|
|
221
|
+
const fresh = enrichPrompt(s, read);
|
|
222
|
+
const live = s.info.prompt;
|
|
223
|
+
const next = live && sameBox(live, fresh) ? mergeBox(live, fresh) : fresh;
|
|
224
|
+
// A box that is NEW, or that would change the published one, waits for
|
|
225
|
+
// a second read that agrees — see `readTwice`. The published box (if
|
|
226
|
+
// any) stays as it is meanwhile.
|
|
227
|
+
if (samePrompt(next, live ?? null))
|
|
228
|
+
s.promptPending = null;
|
|
229
|
+
else if (!readTwice(s, read)) {
|
|
230
|
+
armPromptCheck(core, s, PROMPT_SETTLE_MS);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
applyPrompt(core, s, next);
|
|
234
|
+
setAwaiting(core, s, false);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// Nothing parsed — but a capture taken mid-repaint is a HALF-DRAWN box:
|
|
238
|
+
// the option rows are there and the cursor row (or a label, or the
|
|
239
|
+
// footer) is not yet redrawn. Publishing null on that is what made a
|
|
240
|
+
// live dialog blink: the panel unmounted, the next capture parsed it
|
|
241
|
+
// again, and around it went, about once a second. So while the screen
|
|
242
|
+
// still carries a dialog footer, keep the box we already published and
|
|
243
|
+
// count the miss; a box that is genuinely gone runs the counter out (or
|
|
244
|
+
// takes the cheap gate's exit above, which needs no misses at all).
|
|
245
|
+
// `dialogStillUp`, not merely "a footer is somewhere on this screen".
|
|
246
|
+
// This CLI scrolls rather than repainting an alt screen, so an answered
|
|
247
|
+
// box stays in the rendered tail for as long as the conversation takes
|
|
248
|
+
// to push it out — and the loose test read that corpse as a live
|
|
249
|
+
// question, which both kept the retired box published for its full miss
|
|
250
|
+
// budget and raised `awaitingInput` on a session sitting at an idle
|
|
251
|
+
// composer.
|
|
252
|
+
s.promptPending = null; // agreement is between CONSECUTIVE reads
|
|
253
|
+
const dialog = dialogStillUp(screen);
|
|
254
|
+
/**
|
|
255
|
+
* **A repaint WE asked for is not evidence the box is gone.**
|
|
256
|
+
*
|
|
257
|
+
* The phone's answer panel takes its space from the terminal, so
|
|
258
|
+
* publishing a box shrinks the grid, which reports new rows, which is a
|
|
259
|
+
* SIGWINCH, which makes this TUI clear and redraw everything. The
|
|
260
|
+
* captures taken across that redraw are half-drawn — and they were being
|
|
261
|
+
* counted as misses, three of them at `PROMPT_CHECK_MS` apart retired the
|
|
262
|
+
* box, the panel unmounted, the grid grew back, another SIGWINCH, the box
|
|
263
|
+
* parsed again, and the panel came back. A ~2 Hz blink that made a live
|
|
264
|
+
* question unanswerable, and every part of it correct in isolation.
|
|
265
|
+
*
|
|
266
|
+
* The miss budget is for a screen we happened to catch mid-repaint. This
|
|
267
|
+
* is a screen we KNOW is mid-repaint, because we are the ones who asked
|
|
268
|
+
* for it — so it costs nothing and we simply look again. `dialogStillUp`
|
|
269
|
+
* still gates it: a box genuinely gone during a resize leaves a screen
|
|
270
|
+
* with no footer and is retired on this same pass, exactly as before.
|
|
271
|
+
*/
|
|
272
|
+
if (s.info.prompt && dialog && Date.now() - s.lastResizeAt < RESIZE_REPAINT_MS) {
|
|
273
|
+
armPromptCheck(core, s, PROMPT_CHECK_MS);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
if (s.info.prompt && dialog && s.promptMisses < PROMPT_MISS_MAX) {
|
|
277
|
+
s.promptMisses++;
|
|
278
|
+
// Re-arm ourselves: checks are otherwise driven by output, and a box
|
|
279
|
+
// that was answered at the DESK leaves a quiet screen behind — the
|
|
280
|
+
// retained prompt would then never be re-verified at all.
|
|
281
|
+
armPromptCheck(core, s, PROMPT_CHECK_MS);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
s.promptMisses = 0;
|
|
285
|
+
applyPrompt(core, s, null);
|
|
286
|
+
setAwaiting(core, s, dialog, screen);
|
|
287
|
+
})
|
|
288
|
+
.catch(() => { })
|
|
289
|
+
.finally(() => { s.promptRendering = false; });
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Has the screen read this box TWICE IN A ROW? A box is published only then.
|
|
293
|
+
*
|
|
294
|
+
* tmux hands its client a screen in CHUNKS, so a render taken between two of
|
|
295
|
+
* them is a box painted down to some row and no further: options missing, the
|
|
296
|
+
* last label cut mid-word ("Yes, and don't a"), the question short. With a
|
|
297
|
+
* selection cursor on row 1 that half PARSES — strictly, correctly, as what is
|
|
298
|
+
* legible — and publishing it is publishing a wrong box: the cut label is a
|
|
299
|
+
* one-tap button, it is in `promptFingerprint`, and `mergeBox` never rewrites a
|
|
300
|
+
* published label, so the cut stayed for the life of the box. Measured on the
|
|
301
|
+
* first box of a session, where the paint follows a quiet spell and the check
|
|
302
|
+
* fired on its first chunk (`scheduleChecks`'s ceiling), but nothing about it
|
|
303
|
+
* is specific to the first.
|
|
304
|
+
*
|
|
305
|
+
* Nothing on a half-painted screen says it is half-painted, so completeness is
|
|
306
|
+
* asked of TIME instead: two consecutive strict reads, `PROMPT_SETTLE_MS`
|
|
307
|
+
* apart, that agree field for field (`samePrompt`, on the screen's own read
|
|
308
|
+
* BEFORE enrichment — the log is not what is being proved). A read that
|
|
309
|
+
* disagrees becomes the new candidate; any pass that reads no box clears it.
|
|
310
|
+
* Costs one extra render and ~`PROMPT_SETTLE_MS` on a box's first appearance,
|
|
311
|
+
* and nothing while it sits unchanged. Degrades to publishing nothing yet,
|
|
312
|
+
* never to a box nobody drew.
|
|
313
|
+
*/
|
|
314
|
+
function readTwice(s, read) {
|
|
315
|
+
const agreed = !!s.promptPending && samePrompt(s.promptPending, read);
|
|
316
|
+
s.promptPending = agreed ? null : read;
|
|
317
|
+
return agreed;
|
|
318
|
+
}
|
|
319
|
+
/** A settle between a walk's keystroke and its re-read — the box walks' one wait. */
|
|
320
|
+
const pause = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
321
|
+
/** A contributed reader's answer, or `fallback` when it threw: a throw reads as "no box". */
|
|
322
|
+
function safe(fn, fallback) {
|
|
323
|
+
try {
|
|
324
|
+
return fn();
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return fallback;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* The same two-stage check, for a TUI that draws its dialog a different way.
|
|
332
|
+
*
|
|
333
|
+
* Separate from `checkPrompt()` rather than a branch inside it, because the
|
|
334
|
+
* two share the SHAPE (cheap byte gate → expensive replay → publish, with a
|
|
335
|
+
* miss budget so a half-drawn repaint cannot retire a live box) and not one
|
|
336
|
+
* single rule: opencode (the first such TUI) has no numbered rows, no `❯`, no
|
|
337
|
+
* "Enter to confirm" footer and no scrollback, and every one of `prompt.ts`'s defences is written
|
|
338
|
+
* against one of those. Folding them together would mean loosening rules that
|
|
339
|
+
* exist because of a measured failure on the other screen.
|
|
340
|
+
*
|
|
341
|
+
* What it keeps, deliberately, is the blink fix: a box that stops parsing
|
|
342
|
+
* while the anchor is still on screen costs a MISS, not a retirement, and a
|
|
343
|
+
* repaint the host itself caused by publishing the box (the answer panel takes
|
|
344
|
+
* its space from the terminal, which resizes the PTY, which makes the TUI
|
|
345
|
+
* redraw) costs nothing at all.
|
|
346
|
+
*/
|
|
347
|
+
function checkNavBox(core, s, reader) {
|
|
348
|
+
if (s.copyMode)
|
|
349
|
+
return;
|
|
350
|
+
s.lastPromptCheckAt = Date.now();
|
|
351
|
+
const tail = stripAnsi(s.scrollback.slice(-PROMPT_GATE_BYTES));
|
|
352
|
+
if (!safe(() => reader.candidate(tail), false)) {
|
|
353
|
+
// Nothing that could be a dialog in the window: retire whatever was
|
|
354
|
+
// published with no misses spent, exactly as the claude gate does.
|
|
355
|
+
s.promptGen++;
|
|
356
|
+
s.promptMisses = 0;
|
|
357
|
+
applyPrompt(core, s, null);
|
|
358
|
+
setAwaiting(core, s, false);
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
if (s.promptRendering)
|
|
362
|
+
return;
|
|
363
|
+
s.promptRendering = true;
|
|
364
|
+
const gen = s.promptGen;
|
|
365
|
+
void core.screenCells(s.info.id, PROMPT_CELL_ROWS)
|
|
366
|
+
.then((rows) => {
|
|
367
|
+
if (!s.info.running || s.promptGen !== gen)
|
|
368
|
+
return;
|
|
369
|
+
const box = safe(() => reader.read(rows), null);
|
|
370
|
+
const prompt = box ? safe(() => reader.prompt(box), null) : null;
|
|
371
|
+
if (prompt) {
|
|
372
|
+
s.promptMisses = 0;
|
|
373
|
+
applyPrompt(core, s, prompt);
|
|
374
|
+
setAwaiting(core, s, false);
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
// Unparsed. "Is the dialog still up" is the reader's own question about
|
|
378
|
+
// its own TUI; a dialog still drawn spends a miss rather than retiring the box.
|
|
379
|
+
const dialog = safe(() => reader.stillUp(rows), false);
|
|
380
|
+
if (s.info.prompt && dialog && Date.now() - s.lastResizeAt < RESIZE_REPAINT_MS) {
|
|
381
|
+
armPromptCheck(core, s, PROMPT_CHECK_MS);
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
if (s.info.prompt && dialog && s.promptMisses < PROMPT_MISS_MAX) {
|
|
385
|
+
s.promptMisses++;
|
|
386
|
+
armPromptCheck(core, s, PROMPT_CHECK_MS);
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
s.promptMisses = 0;
|
|
390
|
+
applyPrompt(core, s, null);
|
|
391
|
+
// A dialog whose ARMED option could not be read is still a blocked
|
|
392
|
+
// session, and the phone has no terminal open in the reader view to
|
|
393
|
+
// notice it in. `awaitingInput` is the honest signal for it — "something
|
|
394
|
+
// is asking; open the CLI" — and it is what the phone renders the
|
|
395
|
+
// sentence from rather than greying out a control nobody can explain.
|
|
396
|
+
setAwaiting(core, s, dialog);
|
|
397
|
+
})
|
|
398
|
+
.catch(() => { })
|
|
399
|
+
.finally(() => { s.promptRendering = false; });
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Answer an unnumbered box by placing the selection on the option the user
|
|
403
|
+
* named, and only then pressing Return.
|
|
404
|
+
*
|
|
405
|
+
* The claude path sends the option's digit, which is a complete answer in one
|
|
406
|
+
* keystroke. There are no digits here: the options are three words on a row
|
|
407
|
+
* and the only thing that decides what Return does is which one is armed. So
|
|
408
|
+
* this is `submitPromptBox()`'s loop with a different target — walk, RE-READ,
|
|
409
|
+
* walk again — and the same reason for re-reading rather than counting: how
|
|
410
|
+
* many options there are, whether the ends wrap and whether a keystroke was
|
|
411
|
+
* swallowed by a repaint are all upstream details, and the screen is the only
|
|
412
|
+
* thing that knows.
|
|
413
|
+
*
|
|
414
|
+
* **It refuses rather than guessing.** If the box stops being readable, or the
|
|
415
|
+
* armed option never becomes the one that was asked for, no Return is pressed
|
|
416
|
+
* and the receipt says so. A Return on the wrong row here is "Allow always" on
|
|
417
|
+
* a command nobody approved — this is the failure the capability was false for
|
|
418
|
+
* three months to avoid, and the walk existing does not make it acceptable to
|
|
419
|
+
* fall back to a bare Return the way a checkbox box can.
|
|
420
|
+
*/
|
|
421
|
+
export async function choosePromptBox(core, id, choice) {
|
|
422
|
+
const s = core.sessions.get(id);
|
|
423
|
+
if (!s || !s.info.running)
|
|
424
|
+
return { ok: false, reason: "session not available" };
|
|
425
|
+
const reader = screenReaderFor(s.backend);
|
|
426
|
+
if (!reader) {
|
|
427
|
+
if (derive(s.backend).screen("dialogs") === "claude-numbered" && s.info.prompt?.nav)
|
|
428
|
+
return chooseClaudeNavBox(core, id, choice);
|
|
429
|
+
return { ok: false, reason: "this backend's boxes are answered with a keystroke, not a selection" };
|
|
430
|
+
}
|
|
431
|
+
let box = null;
|
|
432
|
+
for (let i = 0; i < CHOOSE_NAV_TRIES; i++) {
|
|
433
|
+
const rows = await core.screenCells(id, PROMPT_CELL_ROWS);
|
|
434
|
+
box = safe(() => reader.read(rows), null);
|
|
435
|
+
if (!box)
|
|
436
|
+
return { ok: false, reason: "that question is no longer readable on screen" };
|
|
437
|
+
if (box.armed === choice)
|
|
438
|
+
break;
|
|
439
|
+
const b = box;
|
|
440
|
+
const nav = safe(() => reader.navTo(b, choice), null);
|
|
441
|
+
if (!nav)
|
|
442
|
+
return { ok: false, reason: `this box has ${box.options.length} options, not ${choice}` };
|
|
443
|
+
// One key per pass. Overshooting is not self-correcting the way a
|
|
444
|
+
// checkbox walk is — the list WRAPS, so a repaint that swallowed a
|
|
445
|
+
// keystroke and one that did not are two different rings — and a single
|
|
446
|
+
// step re-read is cheap next to pressing Return on the wrong option.
|
|
447
|
+
if (!core.input(id, nav.dir === "right" ? "\x1b[C" : "\x1b[D")) {
|
|
448
|
+
return { ok: false, reason: "session not available" };
|
|
449
|
+
}
|
|
450
|
+
await pause(CHOOSE_NAV_SETTLE_MS);
|
|
451
|
+
}
|
|
452
|
+
if (!box || box.armed !== choice) {
|
|
453
|
+
return { ok: false, reason: "could not place the selection on that option — answer it in the terminal" };
|
|
454
|
+
}
|
|
455
|
+
// Nothing is written to the audit log here, for the same reason the claude
|
|
456
|
+
// answer path writes nothing: `sentlog.ts` records SENDS, and an answer to a
|
|
457
|
+
// box is a keystroke aimed at a question the session already published. The
|
|
458
|
+
// one exception in this file stays the exception — the usage-limit menu is
|
|
459
|
+
// answered on the user's behalf and never shown, so the log is the only
|
|
460
|
+
// place it is visible at all.
|
|
461
|
+
return { ok: core.input(id, "\r") };
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* The same walk for claude's own UNNUMBERED box (2.1.293's first-launch trust
|
|
465
|
+
* box, `prompt.ts`'s `readNavBox`): the rows are a vertical list, so Up/Down
|
|
466
|
+
* rather than Left/Right, one key per pass and a RE-READ between, and Return
|
|
467
|
+
* only once the "❯" is on the option asked for.
|
|
468
|
+
*
|
|
469
|
+
* Not a digit, though the old numbered trust box took one: nothing measured
|
|
470
|
+
* says a digit answers this box, and a digit that does not is a stray
|
|
471
|
+
* character in the composer of the session it lets in. The arrows are what
|
|
472
|
+
* the box's own footer offers.
|
|
473
|
+
*
|
|
474
|
+
* Refuses rather than guessing, as the reader's walk does — and also when the
|
|
475
|
+
* box on screen no longer carries the label that was tapped at that index:
|
|
476
|
+
* that is a different box, and "Yes" by position on it is a guess.
|
|
477
|
+
*/
|
|
478
|
+
async function chooseClaudeNavBox(core, id, choice) {
|
|
479
|
+
const want = core.sessions.get(id)?.info.prompt?.options.find((o) => o.index === choice)?.label;
|
|
480
|
+
let cursor = 0;
|
|
481
|
+
for (let i = 0; i < CHOOSE_NAV_TRIES; i++) {
|
|
482
|
+
const read = readNavBox(await core.screenText(id, 60));
|
|
483
|
+
if (!read)
|
|
484
|
+
return { ok: false, reason: "that question is no longer readable on screen" };
|
|
485
|
+
const target = read.prompt.options.find((o) => o.index === choice);
|
|
486
|
+
if (!target)
|
|
487
|
+
return { ok: false, reason: `this box has ${read.prompt.options.length} options, not ${choice}` };
|
|
488
|
+
if (want !== undefined && target.label !== want) {
|
|
489
|
+
return { ok: false, reason: "the box on screen is not the one that was answered — answer it in the terminal" };
|
|
490
|
+
}
|
|
491
|
+
cursor = read.cursor;
|
|
492
|
+
if (cursor === choice)
|
|
493
|
+
break;
|
|
494
|
+
if (!core.input(id, choice > cursor ? "\x1b[B" : "\x1b[A"))
|
|
495
|
+
return { ok: false, reason: "session not available" };
|
|
496
|
+
await pause(CHOOSE_NAV_SETTLE_MS);
|
|
497
|
+
}
|
|
498
|
+
if (cursor !== choice) {
|
|
499
|
+
return { ok: false, reason: "could not place the selection on that option — answer it in the terminal" };
|
|
500
|
+
}
|
|
501
|
+
return core.input(id, "\r") ? { ok: true } : { ok: false, reason: "session not available" };
|
|
502
|
+
}
|
|
503
|
+
/** Is the published box the side channel's, or is the channel reconciled and
|
|
504
|
+
* owning every box? Either way the screen has nothing to add. */
|
|
505
|
+
export function screenReaderOff(s) {
|
|
506
|
+
const ch = s.channel;
|
|
507
|
+
if (!ch || ch.closed)
|
|
508
|
+
return false;
|
|
509
|
+
if (!!ch.published && s.info.prompt?.askId === ch.published)
|
|
510
|
+
return true;
|
|
511
|
+
// A dialog the channel can see but cannot pose (opencode's `question` tool, whose answer
|
|
512
|
+
// route nobody measured) reaches the phone through the screen or not at all: the reader
|
|
513
|
+
// keeps its duty — and so does `awaitingInput` behind it — while one is open.
|
|
514
|
+
return ch.dialogsLive && !ch.unposed;
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* **The one answer dispatcher** — every answer to a choice box goes through
|
|
518
|
+
* here: the phone's tap (`routes/session.ts`, a digit, a `promptChoice`, typed
|
|
519
|
+
* `promptText`) and anything the answer gate let through (`answergate.ts`, a
|
|
520
|
+
* choice only — the gate never carries words). Three rungs, in order:
|
|
521
|
+
*
|
|
522
|
+
* 1. the box is a dialog, QUESTION or PLAN the CLI posed on its OWN channel ⇒
|
|
523
|
+
* answered there (`SourceDialog.answer(choice, {text})` — `text` only on a
|
|
524
|
+
* `takesText` row; `SourceQuestion.answer({choice, text})`; a plan's verb, a
|
|
525
|
+
* person's tap only, at most once), nothing typed into the PTY — unless the
|
|
526
|
+
* source hands back `{ keys }` or, for a question, `{ typed }`: then exactly
|
|
527
|
+
* that, bounded and typed by `sourceanswer.ts` into this session through
|
|
528
|
+
* `core.input`, the path a digit tap takes, only while it is still open;
|
|
529
|
+
* 2. the box has no numbers (`nav`), or the caller asked for a walk ⇒
|
|
530
|
+
* `choosePromptBox`, which refuses rather than pressing a blind Return;
|
|
531
|
+
* 3. otherwise the digit and a Return, which is what a tap always sent.
|
|
532
|
+
*
|
|
533
|
+
* Typed words reach only rung 1: a box the screen read takes none (refused in
|
|
534
|
+
* words — the composer is `deliver.ts`'s, never this). `choice` is `NaN` for a
|
|
535
|
+
* question answered with words alone.
|
|
536
|
+
*
|
|
537
|
+
* **While the channel owns the dialogs, a box it does not know is not answered
|
|
538
|
+
* by guessing.** A dialog the channel resolved a moment ago (answered at the
|
|
539
|
+
* desk, withdrawn) leaves nothing to type at — the screen walk would read a box
|
|
540
|
+
* that is gone and the digit would land in the composer — so it refuses in
|
|
541
|
+
* words, as the gate refuses, with nothing written.
|
|
542
|
+
*
|
|
543
|
+
* Without `sources` none of rung 1 or the refusal can apply (`s.channel` is
|
|
544
|
+
* absent) and this is exactly the two calls the route and the gate made before.
|
|
545
|
+
*/
|
|
546
|
+
export async function answerBox(core, id, choice, opts = {}) {
|
|
547
|
+
const s = core.sessions.get(id);
|
|
548
|
+
if (!s || !s.info.running)
|
|
549
|
+
return { ok: false, reason: "session not available" };
|
|
550
|
+
const p = s.info.prompt ?? null;
|
|
551
|
+
const ch = s.channel && !s.channel.closed ? s.channel : null;
|
|
552
|
+
const text = opts.text;
|
|
553
|
+
const textWhy = text === undefined ? null : answerTextProblem(text);
|
|
554
|
+
if (textWhy)
|
|
555
|
+
return { ok: false, reason: textWhy };
|
|
556
|
+
const sourceOwned = !!ch && !!p?.askId && p.askId === ch.published;
|
|
557
|
+
// A screen-read box while the channel reports a dialog it cannot pose is the screen's to
|
|
558
|
+
// answer (the walk below), never refused as "not the channel's".
|
|
559
|
+
if (sourceOwned || (ch?.dialogsLive && !ch.unposed)) {
|
|
560
|
+
const q = p?.askId ? ch.questions.get(p.askId) : undefined;
|
|
561
|
+
const d = p?.askId ? ch.dialogs.get(p.askId) : undefined;
|
|
562
|
+
const reply = {
|
|
563
|
+
input: (data) => core.input(id, data), label: s.backend.label,
|
|
564
|
+
stillOpen: () => !ch.closed && s.channel === ch && !!p?.askId && (ch.questions.has(p.askId) || ch.dialogs.has(p.askId) || ch.plans.has(p.askId)),
|
|
565
|
+
log: { sessionId: id, source: opts.byPerson ? "phone" : "plugin" },
|
|
566
|
+
onUnclosed: (note) => {
|
|
567
|
+
if (s.info.prompt?.askId !== p?.askId)
|
|
568
|
+
return;
|
|
569
|
+
s.info.prompt = { ...s.info.prompt, answerNote: note };
|
|
570
|
+
core.emit("updated", s.info);
|
|
571
|
+
},
|
|
572
|
+
};
|
|
573
|
+
if (p && q)
|
|
574
|
+
return answerQuestion(q, choice, text, reply);
|
|
575
|
+
if (p?.askId && ch.plans.has(p.askId))
|
|
576
|
+
return answerSourcePlan(ch.plans.get(p.askId), choice, { byPerson: !!opts.byPerson, text }, reply);
|
|
577
|
+
if (!p || !d)
|
|
578
|
+
return { ok: false, reason: "that question is no longer open — it was answered or withdrawn" };
|
|
579
|
+
const option = Number.isInteger(choice) ? d.options.find((o) => o.index === choice) : undefined;
|
|
580
|
+
if (!option)
|
|
581
|
+
return { ok: false, reason: `${choice} is not one of the box's options` };
|
|
582
|
+
if (text !== undefined && !option.takesText)
|
|
583
|
+
return { ok: false, reason: `“${option.label}” takes no typed reason — tap it without one` };
|
|
584
|
+
// Read BEFORE answering: a source may re-word its options once answered (they are its own).
|
|
585
|
+
const remember = option.remember;
|
|
586
|
+
const dialogWords = remember ? [d.question, ...d.options.map((o) => o.label)].join("\n") : "";
|
|
587
|
+
let r;
|
|
588
|
+
try {
|
|
589
|
+
r = await (text === undefined ? d.answer(choice) : d.answer(choice, { text }));
|
|
590
|
+
}
|
|
591
|
+
catch (e) {
|
|
592
|
+
return { ok: false, reason: `the CLI's own channel did not take that answer (${e?.message || String(e)})` };
|
|
593
|
+
}
|
|
594
|
+
// A dialog's reply is `{ok}` or `{keys}`: typed words are a question's (`SourceTyped`) —
|
|
595
|
+
// except keys-then-words (2.1): the row's key opens a reason field, and the words are the
|
|
596
|
+
// ones the PERSON typed on a `takesText` row (checked above), never the source's own.
|
|
597
|
+
const done = r && typeof r === "object" && "typed" in r
|
|
598
|
+
? dialogWordsProblem(r, text) ?? await applySourceReply(r, reply)
|
|
599
|
+
: await applySourceReply(r, reply);
|
|
600
|
+
// A PERSON chose an option the source marked `remember`: the host keeps that standing rule
|
|
601
|
+
// (`answergate.ts`), keyed by the plugin that registered this backend — the owner of the source.
|
|
602
|
+
// Only the phone's route sets `byPerson` — a gated answer never makes one; a dialog an ask rule the gate holds names keeps none.
|
|
603
|
+
if (done.ok && opts.byPerson && remember)
|
|
604
|
+
rememberRule({ sessionId: id, plugin: s.backend.plugin, backend: s.backend.id, key: remember.key, label: remember.label, askRules: sessionAskRules(id, s.info), text: dialogWords });
|
|
605
|
+
return done;
|
|
606
|
+
}
|
|
607
|
+
if (text !== undefined)
|
|
608
|
+
return { ok: false, reason: "this box takes no typed answer — only a question the CLI posed on its own channel does" };
|
|
609
|
+
if (opts.walk || p?.nav)
|
|
610
|
+
return choosePromptBox(core, id, choice);
|
|
611
|
+
const ok = core.input(id, `${choice}\r`);
|
|
612
|
+
return ok ? { ok } : { ok, reason: "session not available" };
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* Why a dialog's reply carrying `typed` is refused, or null when it is keys-then-words for the
|
|
616
|
+
* person's own reason. `text` is only ever set on a `takesText` row (`answerBox` refused it
|
|
617
|
+
* otherwise before the source was asked).
|
|
618
|
+
*/
|
|
619
|
+
function dialogWordsProblem(r, text) {
|
|
620
|
+
if (text === undefined || !("keys" in r))
|
|
621
|
+
return { ok: false, reason: "the CLI's own channel asked to type words into a dialog — only a question's form takes them" };
|
|
622
|
+
if (r.typed !== text)
|
|
623
|
+
return { ok: false, reason: "the CLI's own channel asked to type a reason that is not the words you typed — nothing was typed" };
|
|
624
|
+
return null;
|
|
625
|
+
}
|
|
626
|
+
/** Rung 1 for a QUESTION: an option, typed words, or both — each only where it offers one. */
|
|
627
|
+
async function answerQuestion(q, choice, text, reply) {
|
|
628
|
+
const picked = Number.isInteger(choice) ? choice : undefined;
|
|
629
|
+
if (picked !== undefined && !(q.options ?? []).some((o) => o.index === picked))
|
|
630
|
+
return { ok: false, reason: `${picked} is not one of the question's options` };
|
|
631
|
+
if (text !== undefined && q.freeText !== true)
|
|
632
|
+
return { ok: false, reason: "this question takes one of its options, not typed words" };
|
|
633
|
+
if (picked === undefined && text === undefined)
|
|
634
|
+
return { ok: false, reason: "an answer to this question needs an option or typed words" };
|
|
635
|
+
let r;
|
|
636
|
+
try {
|
|
637
|
+
r = await q.answer({ ...(picked !== undefined ? { choice: picked } : {}), ...(text !== undefined ? { text } : {}) });
|
|
638
|
+
}
|
|
639
|
+
catch (e) {
|
|
640
|
+
return { ok: false, reason: `the CLI's own channel did not take that answer (${e?.message || String(e)})` };
|
|
641
|
+
}
|
|
642
|
+
return applySourceReply(r, reply);
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Put the CLI's OWN words on the box we scraped.
|
|
646
|
+
*
|
|
647
|
+
* `AskUserQuestion` writes its question and every option's full description
|
|
648
|
+
* into the conversation log before anyone answers, and the screen is where
|
|
649
|
+
* that text goes to die: descriptions are cut at the right edge and again by
|
|
650
|
+
* the preview pane, and a box with six of them is taller than a phone's
|
|
651
|
+
* terminal, so the question row is not on screen at all. A one-tap button
|
|
652
|
+
* reading "A + B + C" with the paragraph explaining it nowhere on the device
|
|
653
|
+
* is a button you cannot honestly press — which is the actual complaint
|
|
654
|
+
* behind "I need to see the question".
|
|
655
|
+
*
|
|
656
|
+
* Enrichment is additive and identity-neutral: `desc`/`ask`/`truncated` are
|
|
657
|
+
* outside `promptFingerprint` on purpose, so a description that arrives one
|
|
658
|
+
* check late cannot invalidate an answer already queued against the box.
|
|
659
|
+
* Matching is by LABEL, never by index — the TUI appends its own rows ("Type
|
|
660
|
+
* something.", "Chat about this") after the tool's, and on a truncated box the
|
|
661
|
+
* visible run starts above 1.
|
|
662
|
+
*
|
|
663
|
+
* Cached on the log's mtime: the strict pass runs about twice a second while a
|
|
664
|
+
* box is up and the log does not move in that time, so this costs one `stat`
|
|
665
|
+
* per check and a tail read per turn.
|
|
666
|
+
*/
|
|
667
|
+
function enrichPrompt(s, p) {
|
|
668
|
+
// The health verdict is STASHED, not recorded: this runs on every strict
|
|
669
|
+
// pass, about twice a second while a box is up, and `applyPrompt` owns the
|
|
670
|
+
// one edge where a box genuinely becomes published. Cleared first, so a
|
|
671
|
+
// path that returns early below leaves no stale answer behind for that edge
|
|
672
|
+
// to record — "the log could not be asked" is not an observation about the
|
|
673
|
+
// matcher.
|
|
674
|
+
s.enrich = null;
|
|
675
|
+
const cid = s.info.claudeSessionId;
|
|
676
|
+
if (!cid)
|
|
677
|
+
return p;
|
|
678
|
+
// A plan approval is never an `AskUserQuestion`, so it is done and returned
|
|
679
|
+
// here: the card gets the plan it is asking about, or nothing extra.
|
|
680
|
+
if (isPlanBox(p.ask ?? p.question)) {
|
|
681
|
+
const plan = pendingPlanFor(s, cid);
|
|
682
|
+
return plan ? { ...p, plan } : p;
|
|
683
|
+
}
|
|
684
|
+
let asks;
|
|
685
|
+
try {
|
|
686
|
+
const mtime = logMtime(transcriptPath(s.info.cwd, cid)) ?? 0;
|
|
687
|
+
if (s.askCache && s.askCache.mtime === mtime)
|
|
688
|
+
asks = s.askCache.asks;
|
|
689
|
+
else {
|
|
690
|
+
asks = pendingAskQuestions(s.info.cwd, cid);
|
|
691
|
+
s.askCache = { mtime, asks };
|
|
692
|
+
}
|
|
693
|
+
// The log does not hold the call while its box is up on 2.1.304 (it is
|
|
694
|
+
// written once answered); the `PreToolUse` hook carried it before the box.
|
|
695
|
+
if (!asks.length && s.askHook)
|
|
696
|
+
asks = asksFromCall(s.info.cwd, cid, s.askHook);
|
|
697
|
+
}
|
|
698
|
+
catch {
|
|
699
|
+
return p;
|
|
700
|
+
}
|
|
701
|
+
const labels = p.options.map((o) => o.label);
|
|
702
|
+
// The UNIQUE best match, never the first that overlaps: one
|
|
703
|
+
// `AskUserQuestion` may carry several questions and two of them sharing a
|
|
704
|
+
// pair of labels ("Yes"/"No") is ordinary, so `find` handed back question 1
|
|
705
|
+
// for a screen showing question 2 — and with it question 1's `askId`, its
|
|
706
|
+
// descriptions and its first options as a "recovered" head a digit would
|
|
707
|
+
// select. A tie now enriches nothing. See `pickAsk`.
|
|
708
|
+
const ask = pickAsk(asks, labels);
|
|
709
|
+
// Only a box the log HAS a pending question for can say anything about this
|
|
710
|
+
// matcher. A tool approval or a trust dialog carries no `AskUserQuestion` at
|
|
711
|
+
// all, so `asks` is legitimately empty and counting that as a miss would
|
|
712
|
+
// report the commonest box in the app as a broken parse.
|
|
713
|
+
s.enrich = { asks: asks.length, matched: !!ask, labels: labels.join("\n") };
|
|
714
|
+
if (!ask)
|
|
715
|
+
return p;
|
|
716
|
+
const options = p.options.map((o) => {
|
|
717
|
+
const desc = descFor(ask, o.label);
|
|
718
|
+
return desc ? { ...o, desc } : o;
|
|
719
|
+
});
|
|
720
|
+
// A box taller than the terminal scrolled its own first options away. The
|
|
721
|
+
// log has them, and their indices are the TUI's own — see `recoverHead`,
|
|
722
|
+
// which refuses unless the two lists can be proved to line up. Recovered,
|
|
723
|
+
// the card is no longer missing buttons, so `truncated` (which SAYS options
|
|
724
|
+
// are unreachable from here) goes with them.
|
|
725
|
+
const head = recoverHead(ask, p.options);
|
|
726
|
+
if (head) {
|
|
727
|
+
const recovered = head.map((o, i) => ({ index: i + 1, label: o.label, ...(o.desc ? { desc: o.desc } : {}) }));
|
|
728
|
+
const { truncated: _cut, ...rest } = p;
|
|
729
|
+
// Capped like the merge, and from the same end: the recovered head is the
|
|
730
|
+
// part nobody can see on the terminal, so the tail is what gives way.
|
|
731
|
+
const all = [...recovered, ...options].slice(0, MAX_BOX_OPTIONS);
|
|
732
|
+
return { ...rest, options: all, ask: ask.question, askId: ask.id };
|
|
733
|
+
}
|
|
734
|
+
return { ...p, options, ask: ask.question, askId: ask.id };
|
|
735
|
+
}
|
|
736
|
+
/**
|
|
737
|
+
* The plan file behind a plan-approval box (`planbox.ts`), cached on the log's
|
|
738
|
+
* mtime and the file's: the strict pass runs about twice a second while the box
|
|
739
|
+
* is up, and neither moves in that time unless somebody edits the plan.
|
|
740
|
+
*/
|
|
741
|
+
function pendingPlanFor(s, cid) {
|
|
742
|
+
try {
|
|
743
|
+
const logM = logMtime(transcriptPath(s.info.cwd, cid)) ?? 0;
|
|
744
|
+
const c = s.planCache;
|
|
745
|
+
const path = c && c.logMtime === logM ? c.path : planPathFor(s.info.cwd, cid);
|
|
746
|
+
const fileM = path ? logMtime(path) ?? 0 : 0;
|
|
747
|
+
if (c && c.logMtime === logM && c.path === path && c.fileMtime === fileM)
|
|
748
|
+
return c.plan ?? undefined;
|
|
749
|
+
const plan = path && fileM ? readPlan(path) : null;
|
|
750
|
+
s.planCache = { logMtime: logM, path, fileMtime: fileM, plan };
|
|
751
|
+
return plan ?? undefined;
|
|
752
|
+
}
|
|
753
|
+
catch {
|
|
754
|
+
return undefined;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
/** Publish the "unparsable dialog on screen" fallback flag. */
|
|
758
|
+
export function setAwaiting(core, s, on, screen) {
|
|
759
|
+
if (!!s.info.awaitingInput === on)
|
|
760
|
+
return;
|
|
761
|
+
s.info.awaitingInput = on || undefined;
|
|
762
|
+
core.emit("updated", s.info);
|
|
763
|
+
// Same reason the parsed prompt notifies: a blocked session is silent, so
|
|
764
|
+
// nothing else would ever tell you. Fires on the ON transition only.
|
|
765
|
+
if (on)
|
|
766
|
+
core.emit("awaiting", s.info.id);
|
|
767
|
+
// …which is nearly the edge the health record wants, and the "nearly" is
|
|
768
|
+
// the whole correction. Raising this flag means "a dialog footer is on that
|
|
769
|
+
// screen and no box parsed above it" — but the flag is an INTERLOCK, and its
|
|
770
|
+
// rule is deliberately loose because a false wait is cheap and typing into a
|
|
771
|
+
// live question box is not. A CLAIM ABOUT THE DETECTOR has the opposite
|
|
772
|
+
// error cost, so it needs the stricter question: was a box actually up?
|
|
773
|
+
//
|
|
774
|
+
// On the live host it was not. A claude session displaying our own prose
|
|
775
|
+
// about this very detector put "Esc to cancel" on screen inside a sentence,
|
|
776
|
+
// the cheap gate fired, the strict pass correctly refused to read a
|
|
777
|
+
// paragraph as a box — and that CORRECT REFUSAL was filed as a miss. Four in
|
|
778
|
+
// nine, i.e. a working detector reporting 44% failure, which is how a board
|
|
779
|
+
// teaches the person reading it to stop reading it.
|
|
780
|
+
//
|
|
781
|
+
// So: an observation is only a miss if the primary rule was the RIGHT RULE
|
|
782
|
+
// and failed. `dialogEvidence` is what says it was — a footer row the CLI
|
|
783
|
+
// painted, plus a cursor or option rows above it. No box, no observation:
|
|
784
|
+
// not a `good` either, because nothing here has been seen to work, and a
|
|
785
|
+
// `good` per correct refusal would fill the twenty-slot window with
|
|
786
|
+
// successes and bury the misses that matter.
|
|
787
|
+
if (on && screen) {
|
|
788
|
+
const ev = dialogEvidence(screen);
|
|
789
|
+
if (ev.box) {
|
|
790
|
+
core.noteFor(s, "prompt.box", "fallback", {
|
|
791
|
+
via: "the weaker “something is asking you something” flag",
|
|
792
|
+
raw: healthTail(screen, (l) => isDialogFooterRow(l)),
|
|
793
|
+
});
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
/**
|
|
798
|
+
* Publish (or retire) the sign-in link this session is showing.
|
|
799
|
+
*
|
|
800
|
+
* Same shape as `applyPrompt` and for the same reason: this runs about twice
|
|
801
|
+
* a second while the login screen is up, and a `session.list` broadcast per
|
|
802
|
+
* repaint would be one per repaint. `at` is stamped when the URL first
|
|
803
|
+
* appears and kept while it is the same URL, because a login link expires and
|
|
804
|
+
* "how old is this" is the difference between a page that signs you in and a
|
|
805
|
+
* page that refuses.
|
|
806
|
+
*/
|
|
807
|
+
function applyLogin(core, s, login) {
|
|
808
|
+
const had = s.info.login ?? null;
|
|
809
|
+
if (sameLogin(had, login))
|
|
810
|
+
return;
|
|
811
|
+
if (!login) {
|
|
812
|
+
s.info.login = null;
|
|
813
|
+
}
|
|
814
|
+
else {
|
|
815
|
+
s.info.login = { ...login, at: had && had.url === login.url ? had.at : Date.now() };
|
|
816
|
+
}
|
|
817
|
+
core.emit("updated", s.info);
|
|
818
|
+
}
|
|
819
|
+
export function applyPrompt(core, s, prompt) {
|
|
820
|
+
// The usage-limit menu is owned by auto-continue, not the normal prompt
|
|
821
|
+
// flow: take its stop-and-wait option ourselves and never surface it (no
|
|
822
|
+
// push, no plugin event) — the scheduled continue does the rest. With
|
|
823
|
+
// auto-continue off it stays a normal prompt (the badge still shows).
|
|
824
|
+
const stopWait = prompt?.options.find((o) => STOP_WAIT_RE.test(o.label));
|
|
825
|
+
if (prompt && stopWait) {
|
|
826
|
+
const scan = stripAnsi(s.scrollback.slice(-6000));
|
|
827
|
+
const det = detectLimitText(scan);
|
|
828
|
+
core.markLimitBlocked(s, det.resetAt, det.weekly, scan.slice(-600));
|
|
829
|
+
if (core.limitAuto(s)) {
|
|
830
|
+
if (s.info.prompt) {
|
|
831
|
+
s.info.prompt = null;
|
|
832
|
+
core.emit("updated", s.info);
|
|
833
|
+
}
|
|
834
|
+
s.proc.write(String(stopWait.index) + "\r");
|
|
835
|
+
// This menu is answered on the user's behalf and then never shown, so
|
|
836
|
+
// the audit log is the ONLY place it is visible at all.
|
|
837
|
+
recordSent({
|
|
838
|
+
sessionId: s.info.id, actor: "auto", source: "limit", kind: "answer",
|
|
839
|
+
text: String(stopWait.index), result: "written",
|
|
840
|
+
detail: `took the usage-limit menu's "${stopWait.label}"`,
|
|
841
|
+
});
|
|
842
|
+
return;
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
// A box IS the question, with buttons. Publishing both would put the same
|
|
846
|
+
// ask on the row twice and in two different wordings.
|
|
847
|
+
if (prompt)
|
|
848
|
+
core.setAsking(s, null);
|
|
849
|
+
// Field by field (`samePrompt`), never `JSON.stringify`: that also compares
|
|
850
|
+
// KEY ORDER, and `mergeBox` builds its object in its own order, so the pass
|
|
851
|
+
// after every merge reported a change for a card that had not moved — one
|
|
852
|
+
// broadcast, one push and one plugin event per box, bought with nothing.
|
|
853
|
+
const changed = !samePrompt(prompt, s.info.prompt ?? null);
|
|
854
|
+
// A tick toggled on a checkbox box is the box being answered, not a new
|
|
855
|
+
// question: the phone redraws it, nobody is pushed "needs you" per tap.
|
|
856
|
+
const ticked = changed && samePrompt(prompt, s.info.prompt ?? null, "ignore");
|
|
857
|
+
const had = !!s.info.prompt;
|
|
858
|
+
if (changed) {
|
|
859
|
+
s.info.prompt = prompt;
|
|
860
|
+
// A numbered-choice suggestion answers THIS box; when the box goes, so
|
|
861
|
+
// does it. (Output alone no longer clears either — see the data handler.)
|
|
862
|
+
const sug = s.info.suggestion;
|
|
863
|
+
if (!prompt && sug && sug.choice != null)
|
|
864
|
+
s.info.suggestion = null;
|
|
865
|
+
core.emit("updated", s.info);
|
|
866
|
+
if (prompt && !ticked)
|
|
867
|
+
core.emit("prompt", s.info.id, prompt);
|
|
868
|
+
// A box became published where none was — the one edge on which the
|
|
869
|
+
// choice-box detector has provably worked. Not on every `changed`: a box
|
|
870
|
+
// whose cursor moves republishes several times while it is up, and the
|
|
871
|
+
// question is "can this app still read a question box", asked once per
|
|
872
|
+
// box. Not on every strict pass either, for the reason `enrichPrompt`
|
|
873
|
+
// states.
|
|
874
|
+
if (prompt && !had) {
|
|
875
|
+
// The fixture is the screen the box was published off (`clifixtures.ts`).
|
|
876
|
+
core.noteFor(s, "prompt.box", "good", { fixture: () => core.screenText(s.info.id) });
|
|
877
|
+
// The enrichment rides on the same edge, from what the poll stashed.
|
|
878
|
+
// `asks: 0` is not a miss (see `enrichPrompt`); the fallback is that the
|
|
879
|
+
// phone shows the labels as the terminal cut them, with the paragraph
|
|
880
|
+
// that explains them nowhere on the device.
|
|
881
|
+
const e = s.enrich;
|
|
882
|
+
if (e && e.asks > 0) {
|
|
883
|
+
// The fixture is the LOG's record of the call, which 2.1.304 writes only
|
|
884
|
+
// once the box is answered — so it is waited for (once per CLI version).
|
|
885
|
+
if (e.matched)
|
|
886
|
+
core.noteFor(s, "askbox.enrich", "good", { fixture: async () => {
|
|
887
|
+
for (let i = 0; i < ASK_RECORD_POLLS; i++) {
|
|
888
|
+
const rec = pendingAskRecord(s.info.cwd, s.info.claudeSessionId);
|
|
889
|
+
if (rec)
|
|
890
|
+
return rec;
|
|
891
|
+
await pause(ASK_RECORD_POLL_MS);
|
|
892
|
+
}
|
|
893
|
+
return null;
|
|
894
|
+
} });
|
|
895
|
+
else
|
|
896
|
+
core.noteFor(s, "askbox.enrich", "fallback", { via: "the labels as the terminal cut them", raw: e.labels });
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
/**
|
|
902
|
+
* Press Return on a checkbox box's **Submit row**, walking the selection
|
|
903
|
+
* cursor there first.
|
|
904
|
+
*
|
|
905
|
+
* A multi-select `AskUserQuestion` is answered by toggling rows and then
|
|
906
|
+
* confirming on a Submit row that carries no index — so the phone's Submit
|
|
907
|
+
* button, which sent a bare Return, pressed it wherever the cursor happened to
|
|
908
|
+
* be: on option 1, where the box starts, that RE-TOGGLES the option and leaves
|
|
909
|
+
* the box open. The box is never answered and the row the user did pick is
|
|
910
|
+
* silently un-picked.
|
|
911
|
+
*
|
|
912
|
+
* Driven off the RENDERED screen rather than a count of rows we believe are
|
|
913
|
+
* there (`navToSubmit`), and re-read between moves: whether a digit key also
|
|
914
|
+
* moves the cursor, and whether the ends of the list wrap, are both upstream
|
|
915
|
+
* details we would otherwise be encoding a guess about. Overshooting is
|
|
916
|
+
* self-correcting — the next pass just walks back — so the loop converges
|
|
917
|
+
* where an open-loop "press Down N times" would land on the wrong row.
|
|
918
|
+
*
|
|
919
|
+
* Falls back to the bare Return whenever the screen shows no Submit row or no
|
|
920
|
+
* cursor (a box taller than the terminal can have scrolled either off): that
|
|
921
|
+
* is exactly what this call did before, and guessing a direction from half a
|
|
922
|
+
* box would toggle a row nobody chose.
|
|
923
|
+
*/
|
|
924
|
+
export async function submitPromptBox(core, id) {
|
|
925
|
+
const s = core.sessions.get(id);
|
|
926
|
+
if (!s || !s.info.running || !s.info.remoteControl)
|
|
927
|
+
return { ok: false, placed: false };
|
|
928
|
+
let placed = false;
|
|
929
|
+
/** Did the screen ever yield a Submit row AND a cursor? The two failures are
|
|
930
|
+
* different facts: "the box is not readable at all" is the fallback this
|
|
931
|
+
* signal is named for, while "readable but the walk never converged" is a
|
|
932
|
+
* navigation miss. Collapsing them would report an unreadable screen as a
|
|
933
|
+
* broken walk. */
|
|
934
|
+
let readable = false;
|
|
935
|
+
/** Kept for the sample: the screen the last decision was taken on. */
|
|
936
|
+
let seen = "";
|
|
937
|
+
for (let i = 0; i < SUBMIT_NAV_TRIES; i++) {
|
|
938
|
+
seen = await core.screenText(id, SUBMIT_NAV_LINES);
|
|
939
|
+
const nav = navToSubmit(seen);
|
|
940
|
+
if (!nav)
|
|
941
|
+
break;
|
|
942
|
+
readable = true;
|
|
943
|
+
if (nav.steps === 0) {
|
|
944
|
+
placed = true;
|
|
945
|
+
break;
|
|
946
|
+
}
|
|
947
|
+
const key = nav.steps > 0 ? "\x1b[B" : "\x1b[A";
|
|
948
|
+
if (!core.input(id, key.repeat(Math.min(Math.abs(nav.steps), SUBMIT_NAV_MAX_KEYS)))) {
|
|
949
|
+
return { ok: false, placed: false };
|
|
950
|
+
}
|
|
951
|
+
await pause(SUBMIT_NAV_SETTLE_MS);
|
|
952
|
+
}
|
|
953
|
+
// One observation per answered box — this is a user's tap, not a poll.
|
|
954
|
+
// `placed` is the only outcome in which the Return that follows means
|
|
955
|
+
// "submit"; without it the keystroke toggles whatever row the cursor sat on,
|
|
956
|
+
// which is the bug this whole method exists to fix.
|
|
957
|
+
// Both words the commit row is drawn with — see `prompt.ts`'s
|
|
958
|
+
// `SUBMIT_ROW_RE`. Anchored, so a sentence containing "next" is not a row.
|
|
959
|
+
const tail = healthTail(seen, (l) => /^\s*\S?\s*(Submit|Next)\s*$/.test(l));
|
|
960
|
+
if (placed)
|
|
961
|
+
core.noteFor(s, "prompt.submit", "good", { fixture: () => seen });
|
|
962
|
+
else if (readable)
|
|
963
|
+
core.noteFor(s, "prompt.submit", "miss", { raw: tail });
|
|
964
|
+
else
|
|
965
|
+
core.noteFor(s, "prompt.submit", "fallback", { via: "a bare Return", raw: tail });
|
|
966
|
+
return { ok: core.input(id, "\r"), placed };
|
|
967
|
+
}
|
|
968
|
+
//# sourceMappingURL=boxes.js.map
|