waterplane 0.1.6 → 0.1.14
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 +146 -1
- package/README.md +47 -24
- package/SECURITY.md +11 -3
- package/deploy/node-version +1 -1
- package/node_modules/@waterplane/shared/dist/agentfiles.d.ts +17 -0
- package/node_modules/@waterplane/shared/dist/agentfiles.js +60 -5
- package/node_modules/@waterplane/shared/dist/agentfiles.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/alwaysonwords.d.ts +83 -0
- package/node_modules/@waterplane/shared/dist/alwaysonwords.js +215 -0
- package/node_modules/@waterplane/shared/dist/alwaysonwords.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/assess/sasswords.js +4 -0
- package/node_modules/@waterplane/shared/dist/assess/sasswords.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/autocompact.js +3 -2
- package/node_modules/@waterplane/shared/dist/autocompact.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/backendsources.d.ts +11 -1
- package/node_modules/@waterplane/shared/dist/backendsources.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/branchmode.d.ts +33 -0
- package/node_modules/@waterplane/shared/dist/branchmode.js +88 -0
- package/node_modules/@waterplane/shared/dist/branchmode.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/budget.d.ts +7 -1
- package/node_modules/@waterplane/shared/dist/budget.js +11 -3
- package/node_modules/@waterplane/shared/dist/budget.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/buildstamp.d.ts +37 -0
- package/node_modules/@waterplane/shared/dist/buildstamp.js +95 -0
- package/node_modules/@waterplane/shared/dist/buildstamp.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/burn.d.ts +16 -1
- package/node_modules/@waterplane/shared/dist/burn.js +30 -0
- package/node_modules/@waterplane/shared/dist/burn.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/calday.d.ts +4 -0
- package/node_modules/@waterplane/shared/dist/calday.js +25 -0
- package/node_modules/@waterplane/shared/dist/calday.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/changebrief.d.ts +77 -0
- package/node_modules/@waterplane/shared/dist/changebrief.js +70 -0
- package/node_modules/@waterplane/shared/dist/changebrief.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js +1 -0
- package/node_modules/@waterplane/shared/dist/clihealth/healthrecord.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/costwindow.d.ts +24 -5
- package/node_modules/@waterplane/shared/dist/costwindow.js +35 -15
- package/node_modules/@waterplane/shared/dist/costwindow.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/desktopfiles.d.ts +100 -0
- package/node_modules/@waterplane/shared/dist/desktopfiles.js +192 -0
- package/node_modules/@waterplane/shared/dist/desktopfiles.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/exposure.d.ts +175 -0
- package/node_modules/@waterplane/shared/dist/exposure.js +357 -0
- package/node_modules/@waterplane/shared/dist/exposure.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/exposurepush.d.ts +60 -0
- package/node_modules/@waterplane/shared/dist/exposurepush.js +103 -0
- package/node_modules/@waterplane/shared/dist/exposurepush.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/commits.d.ts +26 -0
- package/node_modules/@waterplane/shared/dist/healthindex/commits.js +57 -0
- package/node_modules/@waterplane/shared/dist/healthindex/commits.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/move.d.ts +25 -0
- package/node_modules/@waterplane/shared/dist/healthindex/move.js +79 -0
- package/node_modules/@waterplane/shared/dist/healthindex/move.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/readings.d.ts +53 -0
- package/node_modules/@waterplane/shared/dist/healthindex/readings.js +154 -0
- package/node_modules/@waterplane/shared/dist/healthindex/readings.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/repoindex.d.ts +41 -0
- package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js +19 -0
- package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/score.d.ts +26 -0
- package/node_modules/@waterplane/shared/dist/healthindex/score.js +156 -0
- package/node_modules/@waterplane/shared/dist/healthindex/score.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/types.d.ts +206 -0
- package/node_modules/@waterplane/shared/dist/healthindex/types.js +58 -0
- package/node_modules/@waterplane/shared/dist/healthindex/types.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/vs.d.ts +26 -0
- package/node_modules/@waterplane/shared/dist/healthindex/vs.js +38 -0
- package/node_modules/@waterplane/shared/dist/healthindex/vs.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/words.d.ts +28 -0
- package/node_modules/@waterplane/shared/dist/healthindex/words.js +124 -0
- package/node_modules/@waterplane/shared/dist/healthindex/words.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex.d.ts +15 -411
- package/node_modules/@waterplane/shared/dist/healthindex.js +8 -602
- package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/hints.js +15 -0
- package/node_modules/@waterplane/shared/dist/hints.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/index.d.ts +37 -0
- package/node_modules/@waterplane/shared/dist/index.js +37 -0
- package/node_modules/@waterplane/shared/dist/index.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent/clean.d.ts +87 -0
- package/node_modules/@waterplane/shared/dist/intent/clean.js +51 -3
- package/node_modules/@waterplane/shared/dist/intent/clean.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +40 -1
- package/node_modules/@waterplane/shared/dist/intent/kind.js +36 -3
- package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent/types.d.ts +13 -0
- package/node_modules/@waterplane/shared/dist/intent/types.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent/verdict.js +9 -16
- package/node_modules/@waterplane/shared/dist/intent/verdict.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent/words.js +5 -0
- package/node_modules/@waterplane/shared/dist/intent/words.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent.d.ts +2 -2
- package/node_modules/@waterplane/shared/dist/intent.js +2 -2
- package/node_modules/@waterplane/shared/dist/intent.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/launchmodes.d.ts +2 -0
- package/node_modules/@waterplane/shared/dist/launchmodes.js +12 -0
- package/node_modules/@waterplane/shared/dist/launchmodes.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/ledgerspan.d.ts +106 -0
- package/node_modules/@waterplane/shared/dist/ledgerspan.js +196 -0
- package/node_modules/@waterplane/shared/dist/ledgerspan.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/naming.d.ts +3 -1
- package/node_modules/@waterplane/shared/dist/naming.js +6 -2
- package/node_modules/@waterplane/shared/dist/naming.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/netfuse.d.ts +5 -0
- package/node_modules/@waterplane/shared/dist/netfuse.js +6 -1
- package/node_modules/@waterplane/shared/dist/netfuse.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/netretry.d.ts +78 -0
- package/node_modules/@waterplane/shared/dist/netretry.js +85 -0
- package/node_modules/@waterplane/shared/dist/netretry.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/netretrycfg.d.ts +12 -0
- package/node_modules/@waterplane/shared/dist/netretrycfg.js +27 -0
- package/node_modules/@waterplane/shared/dist/netretrycfg.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/nodemin.d.ts +6 -4
- package/node_modules/@waterplane/shared/dist/nodemin.js +6 -4
- package/node_modules/@waterplane/shared/dist/nodemin.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/optins.d.ts +35 -1
- package/node_modules/@waterplane/shared/dist/optins.js +39 -1
- package/node_modules/@waterplane/shared/dist/optins.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/pairing.js +4 -0
- package/node_modules/@waterplane/shared/dist/pairing.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/passive.js +3 -0
- package/node_modules/@waterplane/shared/dist/passive.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/plugin/api.d.ts +394 -0
- package/node_modules/@waterplane/shared/dist/plugin/api.js +2 -0
- package/node_modules/@waterplane/shared/dist/plugin/api.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/plugin/backend.d.ts +197 -0
- package/node_modules/@waterplane/shared/dist/plugin/backend.js +9 -0
- package/node_modules/@waterplane/shared/dist/plugin/backend.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/plugin/manifest.d.ts +160 -0
- package/node_modules/@waterplane/shared/dist/plugin/manifest.js +98 -0
- package/node_modules/@waterplane/shared/dist/plugin/manifest.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/plugin/module.d.ts +98 -0
- package/node_modules/@waterplane/shared/dist/plugin/module.js +13 -0
- package/node_modules/@waterplane/shared/dist/plugin/module.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/plugin/version.d.ts +66 -0
- package/node_modules/@waterplane/shared/dist/plugin/version.js +86 -0
- package/node_modules/@waterplane/shared/dist/plugin/version.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/plugin.d.ts +5 -867
- package/node_modules/@waterplane/shared/dist/plugin.js +27 -186
- package/node_modules/@waterplane/shared/dist/plugin.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/pluginlaunch.d.ts +7 -0
- package/node_modules/@waterplane/shared/dist/prview.d.ts +23 -0
- package/node_modules/@waterplane/shared/dist/prview.js +107 -0
- package/node_modules/@waterplane/shared/dist/prview.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueserial.d.ts +11 -2
- package/node_modules/@waterplane/shared/dist/queue/queueserial.js +13 -4
- package/node_modules/@waterplane/shared/dist/queue/queueserial.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/queue/queuewords.js +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queuewords.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/repohealth.d.ts +4 -0
- package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/repotwins.d.ts +31 -0
- package/node_modules/@waterplane/shared/dist/repotwins.js +52 -0
- package/node_modules/@waterplane/shared/dist/repotwins.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/requirements.js +4 -1
- package/node_modules/@waterplane/shared/dist/requirements.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/schedule/schedaction.d.ts +29 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedaction.js +22 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedaction.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/schedule/schedclean.js +26 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedclean.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.d.ts +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js +1 -0
- package/node_modules/@waterplane/shared/dist/schedule/schedhorizon.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/schedule.d.ts +1 -1
- package/node_modules/@waterplane/shared/dist/schedule.js +1 -1
- package/node_modules/@waterplane/shared/dist/schedule.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/sessionbudget.d.ts +34 -7
- package/node_modules/@waterplane/shared/dist/sessionbudget.js +59 -21
- package/node_modules/@waterplane/shared/dist/sessionbudget.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/sweep.d.ts +2 -1
- package/node_modules/@waterplane/shared/dist/sweep.js +2 -1
- package/node_modules/@waterplane/shared/dist/sweep.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/tokens.d.ts +4 -3
- package/node_modules/@waterplane/shared/dist/tokens.js +9 -7
- package/node_modules/@waterplane/shared/dist/tokens.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/weekburn.d.ts +144 -0
- package/node_modules/@waterplane/shared/dist/weekburn.js +250 -0
- package/node_modules/@waterplane/shared/dist/weekburn.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/alwayson.d.ts +64 -0
- package/node_modules/@waterplane/shared/dist/wire/alwayson.js +7 -0
- package/node_modules/@waterplane/shared/dist/wire/alwayson.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/backend.d.ts +4 -0
- package/node_modules/@waterplane/shared/dist/wire/backendtokens.d.ts +6 -0
- package/node_modules/@waterplane/shared/dist/wire/backendtokens.js +0 -9
- package/node_modules/@waterplane/shared/dist/wire/backendtokens.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/wire/costwindow.d.ts +25 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/clienthost.d.ts +15 -1
- package/node_modules/@waterplane/shared/dist/wire/messages/clientsession.d.ts +24 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hosttools.d.ts +12 -2
- package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +194 -1
- package/node_modules/@waterplane/shared/dist/wire/notify.js +139 -1
- package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/wire/pullrequest.d.ts +42 -0
- package/node_modules/@waterplane/shared/dist/wire/pullrequest.js +2 -0
- package/node_modules/@waterplane/shared/dist/wire/pullrequest.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +131 -0
- package/node_modules/@waterplane/shared/dist/wire/repo.js +8 -3
- package/node_modules/@waterplane/shared/dist/wire/repo.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/wire/sent.d.ts +3 -1
- package/node_modules/@waterplane/shared/dist/wire/session/contextspark.d.ts +7 -0
- package/node_modules/@waterplane/shared/dist/wire/session/info.d.ts +4 -1
- package/node_modules/@waterplane/shared/dist/wire/session/launch.d.ts +36 -0
- package/node_modules/@waterplane/shared/dist/wire/session.d.ts +1 -1
- package/node_modules/@waterplane/shared/dist/wire/telemetry.d.ts +30 -0
- package/node_modules/@waterplane/shared/dist/wire/work.d.ts +13 -0
- package/node_modules/@waterplane/shared/dist/wire/work.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/wordof.d.ts +11 -0
- package/node_modules/@waterplane/shared/dist/wordof.js +14 -0
- package/node_modules/@waterplane/shared/dist/wordof.js.map +1 -0
- package/npm-shrinkwrap.json +3 -3
- package/package.json +2 -2
- package/packages/extensions/scorecard/waterplane-plugin.json +10 -0
- package/packages/host/dist/agentexposure.d.ts +13 -0
- package/packages/host/dist/agentexposure.js +90 -0
- package/packages/host/dist/agentexposure.js.map +1 -0
- package/packages/host/dist/agentintents.js +7 -8
- package/packages/host/dist/agentintents.js.map +1 -1
- package/packages/host/dist/agentwatch.d.ts +3 -7
- package/packages/host/dist/agentwatch.js.map +1 -1
- package/packages/host/dist/alwayson.d.ts +18 -0
- package/packages/host/dist/alwayson.js +159 -0
- package/packages/host/dist/alwayson.js.map +1 -0
- package/packages/host/dist/answergate.d.ts +3 -7
- package/packages/host/dist/answergate.js.map +1 -1
- package/packages/host/dist/attentionstore.d.ts +94 -0
- package/packages/host/dist/attentionstore.js +232 -0
- package/packages/host/dist/attentionstore.js.map +1 -0
- package/packages/host/dist/backends/claude-sources.d.ts +2 -0
- package/packages/host/dist/backends/claude-sources.js +12 -0
- package/packages/host/dist/backends/claude-sources.js.map +1 -1
- package/packages/host/dist/backends/claude.js +3 -2
- package/packages/host/dist/backends/claude.js.map +1 -1
- package/packages/host/dist/backends/derive.js +1 -0
- package/packages/host/dist/backends/derive.js.map +1 -1
- package/packages/host/dist/backends/overhead.d.ts +7 -5
- package/packages/host/dist/backends/overhead.js +15 -13
- package/packages/host/dist/backends/overhead.js.map +1 -1
- package/packages/host/dist/backends/registry.js +4 -1
- package/packages/host/dist/backends/registry.js.map +1 -1
- package/packages/host/dist/backends/types.d.ts +2 -0
- package/packages/host/dist/besidespend.d.ts +22 -0
- package/packages/host/dist/besidespend.js +65 -0
- package/packages/host/dist/besidespend.js.map +1 -0
- package/packages/host/dist/boxkit.d.ts +19 -0
- package/packages/host/dist/boxkit.js +38 -0
- package/packages/host/dist/boxkit.js.map +1 -0
- package/packages/host/dist/branchrules.d.ts +14 -0
- package/packages/host/dist/branchrules.js +47 -0
- package/packages/host/dist/branchrules.js.map +1 -0
- package/packages/host/dist/budget.d.ts +3 -2
- package/packages/host/dist/budget.js +5 -3
- package/packages/host/dist/budget.js.map +1 -1
- package/packages/host/dist/builds.d.ts +31 -1
- package/packages/host/dist/builds.js +55 -3
- package/packages/host/dist/builds.js.map +1 -1
- package/packages/host/dist/buildversions.d.ts +2 -0
- package/packages/host/dist/buildversions.js +36 -0
- package/packages/host/dist/buildversions.js.map +1 -0
- package/packages/host/dist/burnwatch.d.ts +23 -11
- package/packages/host/dist/burnwatch.js +57 -3
- package/packages/host/dist/burnwatch.js.map +1 -1
- package/packages/host/dist/changebrief.d.ts +37 -0
- package/packages/host/dist/changebrief.js +157 -0
- package/packages/host/dist/changebrief.js.map +1 -0
- package/packages/host/dist/cli/index.js +1 -1
- package/packages/host/dist/cli/index.js.map +1 -1
- package/packages/host/dist/clihealth.d.ts +2 -0
- package/packages/host/dist/clihealth.js +11 -2
- package/packages/host/dist/clihealth.js.map +1 -1
- package/packages/host/dist/compliance.d.ts +5 -1
- package/packages/host/dist/compliance.js +70 -31
- package/packages/host/dist/compliance.js.map +1 -1
- package/packages/host/dist/composer.d.ts +3 -1
- package/packages/host/dist/composer.js +3 -1
- package/packages/host/dist/composer.js.map +1 -1
- package/packages/host/dist/context.js +29 -4
- package/packages/host/dist/context.js.map +1 -1
- package/packages/host/dist/convlog.d.ts +1 -1
- package/packages/host/dist/convlog.js +1 -1
- package/packages/host/dist/costwindow.d.ts +25 -0
- package/packages/host/dist/costwindow.js +63 -1
- package/packages/host/dist/costwindow.js.map +1 -1
- package/packages/host/dist/ctxlog/ctxagents.js +16 -25
- package/packages/host/dist/ctxlog/ctxagents.js.map +1 -1
- package/packages/host/dist/ctxlog/ctxcursor.d.ts +36 -1
- package/packages/host/dist/ctxlog/ctxcursor.js +96 -2
- package/packages/host/dist/ctxlog/ctxcursor.js.map +1 -1
- package/packages/host/dist/ctxlog/ctxproject.js +2 -1
- package/packages/host/dist/ctxlog/ctxproject.js.map +1 -1
- package/packages/host/dist/ctxlog/ctxupdate.js +30 -24
- package/packages/host/dist/ctxlog/ctxupdate.js.map +1 -1
- package/packages/host/dist/ctxlog/usagerecord.d.ts +28 -0
- package/packages/host/dist/ctxlog/usagerecord.js +81 -0
- package/packages/host/dist/ctxlog/usagerecord.js.map +1 -0
- package/packages/host/dist/diskwatch.d.ts +4 -6
- package/packages/host/dist/diskwatch.js +3 -1
- package/packages/host/dist/diskwatch.js.map +1 -1
- package/packages/host/dist/eraseen.d.ts +6 -0
- package/packages/host/dist/eraseen.js +100 -0
- package/packages/host/dist/eraseen.js.map +1 -0
- package/packages/host/dist/explainjob.d.ts +24 -0
- package/packages/host/dist/explainjob.js +80 -0
- package/packages/host/dist/explainjob.js.map +1 -0
- package/packages/host/dist/exposure.d.ts +56 -0
- package/packages/host/dist/exposure.js +371 -0
- package/packages/host/dist/exposure.js.map +1 -0
- package/packages/host/dist/exposurepush.d.ts +28 -0
- package/packages/host/dist/exposurepush.js +136 -0
- package/packages/host/dist/exposurepush.js.map +1 -0
- package/packages/host/dist/exposurerun.d.ts +18 -0
- package/packages/host/dist/exposurerun.js +126 -0
- package/packages/host/dist/exposurerun.js.map +1 -0
- package/packages/host/dist/exposurewatch.d.ts +29 -0
- package/packages/host/dist/exposurewatch.js +127 -0
- package/packages/host/dist/exposurewatch.js.map +1 -0
- package/packages/host/dist/extensions/scorecard/host/engine.d.mts +54 -0
- package/packages/host/dist/extensions/scorecard/host/engine.mjs +303 -0
- package/packages/host/dist/extensions/scorecard/host/engine.mjs.map +1 -0
- package/packages/host/dist/extensions/scorecard/host/gitslug.d.mts +5 -0
- package/packages/host/dist/extensions/scorecard/host/gitslug.mjs +45 -0
- package/packages/host/dist/extensions/scorecard/host/gitslug.mjs.map +1 -0
- package/packages/host/dist/extensions/scorecard/host/index.d.mts +15 -0
- package/packages/host/dist/extensions/scorecard/host/index.mjs +47 -0
- package/packages/host/dist/extensions/scorecard/host/index.mjs.map +1 -0
- package/packages/host/dist/extensions/scorecard/host/store.d.mts +12 -0
- package/packages/host/dist/extensions/scorecard/host/store.mjs +91 -0
- package/packages/host/dist/extensions/scorecard/host/store.mjs.map +1 -0
- package/packages/host/dist/extensions/scorecard/shared/logic.d.mts +42 -0
- package/packages/host/dist/extensions/scorecard/shared/logic.mjs +170 -0
- package/packages/host/dist/extensions/scorecard/shared/logic.mjs.map +1 -0
- package/packages/host/dist/extensions/scorecard/shared/wire.d.mts +140 -0
- package/packages/host/dist/extensions/scorecard/shared/wire.mjs +29 -0
- package/packages/host/dist/extensions/scorecard/shared/wire.mjs.map +1 -0
- package/packages/host/dist/files.d.ts +14 -12
- package/packages/host/dist/files.js +64 -94
- package/packages/host/dist/files.js.map +1 -1
- package/packages/host/dist/forge/github.d.ts +3 -0
- package/packages/host/dist/forge/github.js +96 -0
- package/packages/host/dist/forge/github.js.map +1 -0
- package/packages/host/dist/forge/index.d.ts +14 -0
- package/packages/host/dist/forge/index.js +32 -0
- package/packages/host/dist/forge/index.js.map +1 -0
- package/packages/host/dist/forge/types.d.ts +58 -0
- package/packages/host/dist/forge/types.js +2 -0
- package/packages/host/dist/forge/types.js.map +1 -0
- package/packages/host/dist/git.d.ts +41 -16
- package/packages/host/dist/git.js +162 -101
- package/packages/host/dist/git.js.map +1 -1
- package/packages/host/dist/gitnotify.d.ts +54 -0
- package/packages/host/dist/gitnotify.js +167 -0
- package/packages/host/dist/gitnotify.js.map +1 -0
- package/packages/host/dist/healthwatch.d.ts +2 -1
- package/packages/host/dist/healthwatch.js +4 -2
- package/packages/host/dist/healthwatch.js.map +1 -1
- package/packages/host/dist/hoststore.js +2 -2
- package/packages/host/dist/hoststore.js.map +1 -1
- package/packages/host/dist/intents/adapters.js +68 -19
- package/packages/host/dist/intents/adapters.js.map +1 -1
- package/packages/host/dist/intents/clock.d.ts +6 -3
- package/packages/host/dist/intents/clock.js +19 -5
- package/packages/host/dist/intents/clock.js.map +1 -1
- package/packages/host/dist/intents/contract.d.ts +15 -5
- package/packages/host/dist/intents/contract.js.map +1 -1
- package/packages/host/dist/intents/disk.d.ts +16 -0
- package/packages/host/dist/intents/disk.js +26 -1
- package/packages/host/dist/intents/disk.js.map +1 -1
- package/packages/host/dist/intents/fire.js +7 -1
- package/packages/host/dist/intents/fire.js.map +1 -1
- package/packages/host/dist/intents/ladder.js +3 -1
- package/packages/host/dist/intents/ladder.js.map +1 -1
- package/packages/host/dist/intents/manager.d.ts +3 -3
- package/packages/host/dist/intents/manager.js +2 -2
- package/packages/host/dist/intents/manager.js.map +1 -1
- package/packages/host/dist/intents/watch.d.ts +27 -3
- package/packages/host/dist/intents/watch.js +70 -9
- package/packages/host/dist/intents/watch.js.map +1 -1
- package/packages/host/dist/intents/write.d.ts +28 -1
- package/packages/host/dist/intents/write.js +87 -2
- package/packages/host/dist/intents/write.js.map +1 -1
- package/packages/host/dist/localcistatus.d.ts +22 -0
- package/packages/host/dist/localcistatus.js +105 -0
- package/packages/host/dist/localcistatus.js.map +1 -0
- package/packages/host/dist/main.js +45 -12
- package/packages/host/dist/main.js.map +1 -1
- package/packages/host/dist/net.d.ts +2 -0
- package/packages/host/dist/net.js +11 -2
- package/packages/host/dist/net.js.map +1 -1
- package/packages/host/dist/netlog.d.ts +40 -0
- package/packages/host/dist/netlog.js +165 -0
- package/packages/host/dist/netlog.js.map +1 -0
- package/packages/host/dist/netretrycfg.d.ts +7 -0
- package/packages/host/dist/netretrycfg.js +51 -0
- package/packages/host/dist/netretrycfg.js.map +1 -0
- package/packages/host/dist/notifyprefs.d.ts +6 -2
- package/packages/host/dist/notifyprefs.js +20 -5
- package/packages/host/dist/notifyprefs.js.map +1 -1
- package/packages/host/dist/notifytypes.d.ts +63 -0
- package/packages/host/dist/notifytypes.js +2 -0
- package/packages/host/dist/notifytypes.js.map +1 -0
- package/packages/host/dist/opendeliveries.js +24 -0
- package/packages/host/dist/opendeliveries.js.map +1 -1
- package/packages/host/dist/optins.d.ts +28 -1
- package/packages/host/dist/optins.js +96 -4
- package/packages/host/dist/optins.js.map +1 -1
- package/packages/host/dist/peers/agentpeer.js +1 -1
- package/packages/host/dist/peers/agentpeer.js.map +1 -1
- package/packages/host/dist/peers/jobs.d.ts +2 -4
- package/packages/host/dist/peers/jobs.js +6 -1
- package/packages/host/dist/peers/jobs.js.map +1 -1
- package/packages/host/dist/periodspend.d.ts +22 -3
- package/packages/host/dist/periodspend.js +44 -4
- package/packages/host/dist/periodspend.js.map +1 -1
- package/packages/host/dist/plugins/pluginapi.js +40 -10
- package/packages/host/dist/plugins/pluginapi.js.map +1 -1
- package/packages/host/dist/plugins/pluginregistry.d.ts +3 -8
- package/packages/host/dist/plugins/pluginregistry.js +1 -1
- package/packages/host/dist/plugins/pluginregistry.js.map +1 -1
- package/packages/host/dist/plugins/plugintoolkit/sessionof.d.ts +47 -0
- package/packages/host/dist/plugins/plugintoolkit/sessionof.js +136 -0
- package/packages/host/dist/plugins/plugintoolkit/sessionof.js.map +1 -0
- package/packages/host/dist/prmergestore.d.ts +31 -0
- package/packages/host/dist/prmergestore.js +106 -0
- package/packages/host/dist/prmergestore.js.map +1 -0
- package/packages/host/dist/protectmain.d.ts +35 -0
- package/packages/host/dist/protectmain.js +73 -0
- package/packages/host/dist/protectmain.js.map +1 -0
- package/packages/host/dist/prpush.d.ts +38 -0
- package/packages/host/dist/prpush.js +351 -0
- package/packages/host/dist/prpush.js.map +1 -0
- package/packages/host/dist/prs.d.ts +118 -0
- package/packages/host/dist/prs.js +681 -0
- package/packages/host/dist/prs.js.map +1 -0
- package/packages/host/dist/push.d.ts +85 -1
- package/packages/host/dist/push.js +238 -8
- package/packages/host/dist/push.js.map +1 -1
- package/packages/host/dist/pushlanded.d.ts +29 -0
- package/packages/host/dist/pushlanded.js +61 -0
- package/packages/host/dist/pushlanded.js.map +1 -0
- package/packages/host/dist/pushreach.d.ts +9 -0
- package/packages/host/dist/pushreach.js +102 -0
- package/packages/host/dist/pushreach.js.map +1 -0
- package/packages/host/dist/pushverdict.d.ts +42 -0
- package/packages/host/dist/pushverdict.js +110 -0
- package/packages/host/dist/pushverdict.js.map +1 -0
- package/packages/host/dist/render.d.ts +57 -0
- package/packages/host/dist/render.js +57 -39
- package/packages/host/dist/render.js.map +1 -1
- package/packages/host/dist/repohealth.js +5 -2
- package/packages/host/dist/repohealth.js.map +1 -1
- package/packages/host/dist/repohealthapproval.d.ts +3 -0
- package/packages/host/dist/repohealthapproval.js +92 -2
- package/packages/host/dist/repohealthapproval.js.map +1 -1
- package/packages/host/dist/repos.d.ts +7 -1
- package/packages/host/dist/repos.js +30 -3
- package/packages/host/dist/repos.js.map +1 -1
- package/packages/host/dist/reposkill.d.ts +8 -5
- package/packages/host/dist/reposkill.js +16 -11
- package/packages/host/dist/reposkill.js.map +1 -1
- package/packages/host/dist/reposkilltext.d.ts +8 -1
- package/packages/host/dist/reposkilltext.js +85 -12
- package/packages/host/dist/reposkilltext.js.map +1 -1
- package/packages/host/dist/routes/apigitspend.d.ts +2 -0
- package/packages/host/dist/routes/apigitspend.js +40 -0
- package/packages/host/dist/routes/apigitspend.js.map +1 -0
- package/packages/host/dist/routes/apihost.js +17 -0
- package/packages/host/dist/routes/apihost.js.map +1 -1
- package/packages/host/dist/routes/apiprs.d.ts +2 -0
- package/packages/host/dist/routes/apiprs.js +47 -0
- package/packages/host/dist/routes/apiprs.js.map +1 -0
- package/packages/host/dist/routes/apirepofiles.js +13 -1
- package/packages/host/dist/routes/apirepofiles.js.map +1 -1
- package/packages/host/dist/routes/apirepowork.d.ts +6 -0
- package/packages/host/dist/routes/apirepowork.js +42 -33
- package/packages/host/dist/routes/apirepowork.js.map +1 -1
- package/packages/host/dist/routes/apiroutes.js +2 -1
- package/packages/host/dist/routes/apiroutes.js.map +1 -1
- package/packages/host/dist/routes/apisession.js +24 -0
- package/packages/host/dist/routes/apisession.js.map +1 -1
- package/packages/host/dist/routes/apistats.js +12 -7
- package/packages/host/dist/routes/apistats.js.map +1 -1
- package/packages/host/dist/routes/apisystem.js +23 -1
- package/packages/host/dist/routes/apisystem.js.map +1 -1
- package/packages/host/dist/routes/apitable.d.ts +10 -0
- package/packages/host/dist/routes/apitable.js.map +1 -1
- package/packages/host/dist/routes/apiweekburn.d.ts +2 -0
- package/packages/host/dist/routes/apiweekburn.js +30 -0
- package/packages/host/dist/routes/apiweekburn.js.map +1 -0
- package/packages/host/dist/routes/session.js +10 -0
- package/packages/host/dist/routes/session.js.map +1 -1
- package/packages/host/dist/routes/system.js +34 -6
- package/packages/host/dist/routes/system.js.map +1 -1
- package/packages/host/dist/routes/types.d.ts +29 -21
- package/packages/host/dist/routes/work/workbuild.js +3 -2
- package/packages/host/dist/routes/work/workbuild.js.map +1 -1
- package/packages/host/dist/routes/work/workintent.js +6 -2
- package/packages/host/dist/routes/work/workintent.js.map +1 -1
- package/packages/host/dist/routes/work/workschedule.js +33 -3
- package/packages/host/dist/routes/work/workschedule.js.map +1 -1
- package/packages/host/dist/screenlog.d.ts +20 -0
- package/packages/host/dist/screenlog.js +40 -0
- package/packages/host/dist/screenlog.js.map +1 -1
- package/packages/host/dist/server/billingwire.d.ts +3 -1
- package/packages/host/dist/server/billingwire.js +4 -2
- package/packages/host/dist/server/billingwire.js.map +1 -1
- package/packages/host/dist/server/clients.d.ts +14 -24
- package/packages/host/dist/server/clients.js +81 -11
- package/packages/host/dist/server/clients.js.map +1 -1
- package/packages/host/dist/server/ctx.d.ts +2 -0
- package/packages/host/dist/server/ctxseal.d.ts +1 -1
- package/packages/host/dist/server/ctxseal.js +6 -6
- package/packages/host/dist/server/ctxseal.js.map +1 -1
- package/packages/host/dist/server/deliveries.js +4 -2
- package/packages/host/dist/server/deliveries.js.map +1 -1
- package/packages/host/dist/server/http.js +2 -2
- package/packages/host/dist/server/http.js.map +1 -1
- package/packages/host/dist/server/intentDeps.js +13 -6
- package/packages/host/dist/server/intentDeps.js.map +1 -1
- package/packages/host/dist/server/intentEvents.js +9 -4
- package/packages/host/dist/server/intentEvents.js.map +1 -1
- package/packages/host/dist/server/scan.js +23 -1
- package/packages/host/dist/server/scan.js.map +1 -1
- package/packages/host/dist/server/sessionEvents.js +40 -15
- package/packages/host/dist/server/sessionEvents.js.map +1 -1
- package/packages/host/dist/server/shutdown.d.ts +3 -1
- package/packages/host/dist/server/shutdown.js +9 -1
- package/packages/host/dist/server/shutdown.js.map +1 -1
- package/packages/host/dist/sessionbudget.d.ts +2 -0
- package/packages/host/dist/sessionbudget.js +17 -6
- package/packages/host/dist/sessionbudget.js.map +1 -1
- package/packages/host/dist/sessions/agentpoll.d.ts +42 -0
- package/packages/host/dist/sessions/agentpoll.js +193 -0
- package/packages/host/dist/sessions/agentpoll.js.map +1 -0
- package/packages/host/dist/sessions/apiretry.d.ts +106 -0
- package/packages/host/dist/sessions/apiretry.js +387 -0
- package/packages/host/dist/sessions/apiretry.js.map +1 -0
- package/packages/host/dist/sessions/askwatch.d.ts +62 -0
- package/packages/host/dist/sessions/askwatch.js +169 -0
- package/packages/host/dist/sessions/askwatch.js.map +1 -0
- package/packages/host/dist/sessions/boxes.d.ts +2 -23
- package/packages/host/dist/sessions/boxes.js +10 -664
- package/packages/host/dist/sessions/boxes.js.map +1 -1
- package/packages/host/dist/sessions/boxread.d.ts +47 -0
- package/packages/host/dist/sessions/boxread.js +628 -0
- package/packages/host/dist/sessions/boxread.js.map +1 -0
- package/packages/host/dist/sessions/core.d.ts +22 -1
- package/packages/host/dist/sessions/ctxseries.js +3 -0
- package/packages/host/dist/sessions/ctxseries.js.map +1 -1
- package/packages/host/dist/sessions/drive.d.ts +20 -6
- package/packages/host/dist/sessions/drive.js +45 -12
- package/packages/host/dist/sessions/drive.js.map +1 -1
- package/packages/host/dist/sessions/endsession.d.ts +11 -0
- package/packages/host/dist/sessions/endsession.js +71 -0
- package/packages/host/dist/sessions/endsession.js.map +1 -0
- package/packages/host/dist/sessions/haltall.d.ts +14 -0
- package/packages/host/dist/sessions/haltall.js +32 -1
- package/packages/host/dist/sessions/haltall.js.map +1 -1
- package/packages/host/dist/sessions/knobs.d.ts +11 -0
- package/packages/host/dist/sessions/knobs.js +12 -0
- package/packages/host/dist/sessions/knobs.js.map +1 -1
- package/packages/host/dist/sessions/record.js +7 -2
- package/packages/host/dist/sessions/record.js.map +1 -1
- package/packages/host/dist/sessions/resume.d.ts +17 -0
- package/packages/host/dist/sessions/resume.js +65 -11
- package/packages/host/dist/sessions/resume.js.map +1 -1
- package/packages/host/dist/sessions/roster.js +3 -0
- package/packages/host/dist/sessions/roster.js.map +1 -1
- package/packages/host/dist/sessions/sidechannel.d.ts +1 -1
- package/packages/host/dist/sessions/sidechannel.js +2 -2
- package/packages/host/dist/sessions/tmux.js +21 -2
- package/packages/host/dist/sessions/tmux.js.map +1 -1
- package/packages/host/dist/sessions/turn.d.ts +15 -58
- package/packages/host/dist/sessions/turn.js +19 -358
- package/packages/host/dist/sessions/turn.js.map +1 -1
- package/packages/host/dist/sessions.d.ts +10 -7
- package/packages/host/dist/sessions.js +31 -79
- package/packages/host/dist/sessions.js.map +1 -1
- package/packages/host/dist/settle.d.ts +30 -2
- package/packages/host/dist/settle.js +94 -49
- package/packages/host/dist/settle.js.map +1 -1
- package/packages/host/dist/setupprefs.d.ts +26 -1
- package/packages/host/dist/setupprefs.js +49 -1
- package/packages/host/dist/setupprefs.js.map +1 -1
- package/packages/host/dist/setupwatch.d.ts +10 -8
- package/packages/host/dist/setupwatch.js +19 -16
- package/packages/host/dist/setupwatch.js.map +1 -1
- package/packages/host/dist/sidecar/sidecarname.d.ts +2 -0
- package/packages/host/dist/sidecar/sidecarname.js +5 -1
- package/packages/host/dist/sidecar/sidecarname.js.map +1 -1
- package/packages/host/dist/sidecar/sidecarroute.d.ts +1 -1
- package/packages/host/dist/sidecar/sidecarroute.js +5 -0
- package/packages/host/dist/sidecar/sidecarroute.js.map +1 -1
- package/packages/host/dist/sidecar.d.ts +1 -1
- package/packages/host/dist/sidecar.js +1 -1
- package/packages/host/dist/sidecar.js.map +1 -1
- package/packages/host/dist/tokenscan.d.ts +4 -4
- package/packages/host/dist/tokenscan.js +18 -37
- package/packages/host/dist/tokenscan.js.map +1 -1
- package/packages/host/dist/tokenstats.js +16 -18
- package/packages/host/dist/tokenstats.js.map +1 -1
- package/packages/host/dist/transcript/transcriptparse.js +17 -26
- package/packages/host/dist/transcript/transcriptparse.js.map +1 -1
- package/packages/host/dist/transcript/transcriptturns.d.ts +29 -0
- package/packages/host/dist/transcript/transcriptturns.js +27 -0
- package/packages/host/dist/transcript/transcriptturns.js.map +1 -1
- package/packages/host/dist/transcript.d.ts +1 -1
- package/packages/host/dist/transcript.js +1 -1
- package/packages/host/dist/transcript.js.map +1 -1
- package/packages/host/dist/usagesources.d.ts +1 -1
- package/packages/host/dist/usagesources.js +7 -2
- package/packages/host/dist/usagesources.js.map +1 -1
- package/packages/host/dist/visualskill.js +2 -2
- package/packages/host/dist/weekburn.d.ts +79 -0
- package/packages/host/dist/weekburn.js +276 -0
- package/packages/host/dist/weekburn.js.map +1 -0
- package/packages/host/dist/worktreeleftover.d.ts +9 -0
- package/packages/host/dist/worktreeleftover.js +17 -1
- package/packages/host/dist/worktreeleftover.js.map +1 -1
- package/packages/web/dist/assets/demo-DsZGy-MC.js +24 -0
- package/packages/web/dist/assets/icons-eqlvjswV.js +1 -0
- package/packages/web/dist/assets/index-GHwJuQb3.js +169 -0
- package/packages/web/dist/assets/index-VzDSZwwH.css +1 -0
- package/packages/web/dist/assets/shared-BWk5jXWb.js +49 -0
- package/packages/web/dist/assets/sheets-Dj-0m0DB.js +232 -0
- package/packages/web/dist/assets/{sheets-Bjv2L-cG.css → sheets-DoUhPGK0.css} +1 -1
- package/packages/web/dist/build-id.txt +1 -1
- package/packages/web/dist/buildstamp.json +1 -0
- package/packages/web/dist/index.html +7 -7
- package/packages/web/dist/sw.js +18 -3
- package/release.json +7 -4
- package/scripts/windows/wsl-setup.sh +10 -1
- package/tools/repohealth/constants.mjs +21 -1
- package/tools/repohealth/fixture.json +493 -30
- package/tools/repohealth/lang/typescript-resolve.mjs +354 -0
- package/tools/repohealth/metrics/graph.mjs +258 -0
- package/tools/repohealth/metrics/size.mjs +1 -1
- package/tools/repohealth/own.mjs +4 -4
- package/tools/repohealth/packs/c.mjs +4 -0
- package/tools/repohealth/packs/common.mjs +4 -0
- package/tools/repohealth/packs/dart.mjs +4 -0
- package/tools/repohealth/packs/kotlin.mjs +8 -0
- package/tools/repohealth/packs/python.mjs +8 -0
- package/tools/repohealth/packs/shell.mjs +4 -0
- package/tools/repohealth/packs/typescript.mjs +278 -7
- package/tools/repohealth/readings.mjs +39 -0
- package/tools/repohealth/series.mjs +1 -0
- package/tools/repohealth/snapshot.mjs +14 -0
- package/tools/repohealth/types.mjs +12 -0
- package/tools/repohealth.mjs +2 -0
- package/packages/web/dist/assets/demo-CXlqlYE4.js +0 -23
- package/packages/web/dist/assets/icons-BbqDBVjw.js +0 -1
- package/packages/web/dist/assets/index-CgPoyb3Y.css +0 -1
- package/packages/web/dist/assets/index-D5JKj8DK.js +0 -169
- package/packages/web/dist/assets/shared-eyaskl5l.js +0 -47
- package/packages/web/dist/assets/sheets-BzzL2re1.js +0 -204
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prs.js","sourceRoot":"","sources":["../src/prs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type PushSubscription } from "web-push";
|
|
2
|
+
import { type NotifyLevel, type NotifyOpen } from "@waterplane/shared";
|
|
2
3
|
export interface PushPayload {
|
|
3
4
|
title: string;
|
|
4
5
|
body: string;
|
|
@@ -27,16 +28,99 @@ export interface PushPayload {
|
|
|
27
28
|
pull?: string;
|
|
28
29
|
/** Id of the plugin that posted this; a tap opens that plugin's screen. */
|
|
29
30
|
plugin?: string;
|
|
31
|
+
/** The feed item's own id, kind and stamp, so the service worker can hand a
|
|
32
|
+
* tapped alert back to the page whole (`openNotif`). */
|
|
33
|
+
id?: string;
|
|
34
|
+
kind?: string;
|
|
35
|
+
ts?: number;
|
|
36
|
+
/** A backlog cut to open (`NotificationItem.backlog`). */
|
|
37
|
+
backlog?: {
|
|
38
|
+
cwd: string;
|
|
39
|
+
ids: string[];
|
|
40
|
+
};
|
|
41
|
+
/** The screen a tap opens (`NotificationItem.open`). */
|
|
42
|
+
open?: NotifyOpen;
|
|
43
|
+
/** `attention` or `info` (`notifyLevel`), so the service worker can word or
|
|
44
|
+
* channel the two apart. Only attention is pushed unless the person asked for
|
|
45
|
+
* information too (`notify.prefs`' `pushInfo`) or the payload carries `pull`. */
|
|
46
|
+
level?: NotifyLevel;
|
|
47
|
+
/** The attention item's cause key (`NotificationItem.key`). */
|
|
48
|
+
key?: string;
|
|
30
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* What a push may weigh, as JSON bytes. RFC 8030 has a push service accept 4096 bytes of
|
|
52
|
+
* encrypted record; aes128gcm's header and tag take ~100 of them, so 3800 leaves room. Past the
|
|
53
|
+
* limit a service answers 413 and the notification is lost — so the payload is cut BEFORE it goes.
|
|
54
|
+
*/
|
|
55
|
+
export declare const PUSH_BUDGET = 3800;
|
|
56
|
+
/** The retry after a 413: a service with a smaller limit still gets the title and the item's ids. */
|
|
57
|
+
export declare const PUSH_FLOOR = 1024;
|
|
58
|
+
/** The tap targets a payload may lose when it cannot fit otherwise. Never `id`/`kind` (the service
|
|
59
|
+
* worker's `notifItem` hands a tap back to the page's feed row by them), `ts`, `level`, nor the
|
|
60
|
+
* words (cut instead). Without one of these a tap degrades to that feed row, which holds the item. */
|
|
61
|
+
declare const DROPPABLE: readonly ["file", "pull", "image", "backlog", "open", "key", "plugin", "sessionId", "tag"];
|
|
62
|
+
type Droppable = (typeof DROPPABLE)[number];
|
|
63
|
+
/**
|
|
64
|
+
* The ONE place a push payload is fitted to a size. First the words are cut (`fitWords`); every
|
|
65
|
+
* other field — id, kind, key, file, pull — is kept, because the service worker hands the item back
|
|
66
|
+
* to the page by them and the full words are in the app's feed. When the KEPT fields alone are over
|
|
67
|
+
* the budget (a multi-KB `file.relPath` or `key`), the longest optional tap target is dropped — and
|
|
68
|
+
* `pull` with `file`, since a pull without its file cannot start — until it fits, the words
|
|
69
|
+
* re-fitted each time so a field that went never cost them a character. A payload that cannot fit
|
|
70
|
+
* even then is `text: null`: never sent, because a service answers an over-budget push with 413.
|
|
71
|
+
*/
|
|
72
|
+
export declare function pushPayloadFit(payload: PushPayload, budget: number): {
|
|
73
|
+
text: string | null;
|
|
74
|
+
dropped: Droppable[];
|
|
75
|
+
};
|
|
76
|
+
/** `pushPayloadFit`'s text alone: null when nothing that fits can be sent. */
|
|
77
|
+
export declare function pushPayloadText(payload: PushPayload, budget: number): string | null;
|
|
78
|
+
/** How long the same refusal from the same subscription stays quiet after it was logged once. */
|
|
79
|
+
export declare const PUSH_REPEAT_LOG_MS: number;
|
|
80
|
+
/**
|
|
81
|
+
* The ONE rule for a push service's refusal. `gone`: 404/410, the service says the subscription
|
|
82
|
+
* expired or was unsubscribed — removed at once. `key-refused`: 401/403, the service rejected the
|
|
83
|
+
* VAPID token THIS DESKTOP signed — almost always the host's own fault (clock skew past the token's
|
|
84
|
+
* 12 h, a `VAPID_CONTACT` the service will not take, an older vapid.json restored) and healed by
|
|
85
|
+
* fixing it, so it is COUNTED and the subscription removed only when the refusal persists
|
|
86
|
+
* (`PUSH_KEY_REFUSAL_COUNT` refusals spanning `PUSH_KEY_REFUSAL_SPAN_MS`): the phone keeps showing
|
|
87
|
+
* "on" and nothing re-posts a removed subscription. A refusal whose own `Date` header shows the
|
|
88
|
+
* host's clock off by more than `PUSH_CLOCK_SKEW_MS` is not counted at all (`pushClockSkewMs`). `too-large`: 413, resent smaller once.
|
|
89
|
+
* `transient`: everything else — 429, 5xx, 400, a network error with no status — kept, next notify tries.
|
|
90
|
+
*/
|
|
91
|
+
export declare function pushRefusal(statusCode: unknown): "gone" | "key-refused" | "too-large" | "transient";
|
|
92
|
+
/** A key refusal removes the subscription only once it has happened this many times… */
|
|
93
|
+
export declare const PUSH_KEY_REFUSAL_COUNT = 3;
|
|
94
|
+
/** …and the first and latest of them are at least this far apart. */
|
|
95
|
+
export declare const PUSH_KEY_REFUSAL_SPAN_MS: number;
|
|
96
|
+
/** How far this host's clock may sit from the push service's before a key refusal is blamed on the
|
|
97
|
+
* clock rather than the subscription. The VAPID JWT's `exp` is the host's now + 12 h, so a host
|
|
98
|
+
* clock off by more than that is refused on every send, for as long as the clock stays wrong. */
|
|
99
|
+
export declare const PUSH_CLOCK_SKEW_MS: number;
|
|
100
|
+
/**
|
|
101
|
+
* How far the push service's clock is from this host's, in ms (service − host), read off the
|
|
102
|
+
* refusal's own `Date` response header (web-push's `WebPushError.headers`); null when the error
|
|
103
|
+
* carries no parseable Date — then nobody said, and the refusal is judged as before.
|
|
104
|
+
*/
|
|
105
|
+
export declare function pushClockSkewMs(err: unknown, now: number): number | null;
|
|
31
106
|
export declare class PushManager {
|
|
32
107
|
private subs;
|
|
33
108
|
private keys;
|
|
34
109
|
private subsPath;
|
|
35
110
|
private keysPath;
|
|
36
|
-
|
|
111
|
+
private now;
|
|
112
|
+
constructor(root: string, opts?: {
|
|
113
|
+
now?: () => number;
|
|
114
|
+
});
|
|
37
115
|
get publicKey(): string;
|
|
38
116
|
subscribe(sub: PushSubscription): void;
|
|
39
117
|
unsubscribe(endpoint: string): void;
|
|
40
118
|
notify(payload: PushPayload): Promise<void>;
|
|
119
|
+
/** When each (subscription, refusal) was last logged — a transient refusal that repeats on every
|
|
120
|
+
* notify is one line per `PUSH_REPEAT_LOG_MS`, not one per notify. Entries past the window are
|
|
121
|
+
* pruned on every call, so it holds at most what was logged within the last window. */
|
|
122
|
+
private lastLogged;
|
|
123
|
+
private logOnce;
|
|
41
124
|
private save;
|
|
42
125
|
}
|
|
126
|
+
export {};
|
|
@@ -13,12 +13,148 @@ import webpush from "web-push";
|
|
|
13
13
|
import { env } from "./env.js";
|
|
14
14
|
import { BRAND } from "@waterplane/shared";
|
|
15
15
|
import { hostStateDir } from "./branddirs.js";
|
|
16
|
+
/**
|
|
17
|
+
* What a push may weigh, as JSON bytes. RFC 8030 has a push service accept 4096 bytes of
|
|
18
|
+
* encrypted record; aes128gcm's header and tag take ~100 of them, so 3800 leaves room. Past the
|
|
19
|
+
* limit a service answers 413 and the notification is lost — so the payload is cut BEFORE it goes.
|
|
20
|
+
*/
|
|
21
|
+
export const PUSH_BUDGET = 3800;
|
|
22
|
+
/** The retry after a 413: a service with a smaller limit still gets the title and the item's ids. */
|
|
23
|
+
export const PUSH_FLOOR = 1024;
|
|
24
|
+
const byteLen = (s) => Buffer.byteLength(s, "utf8");
|
|
25
|
+
/** The tap targets a payload may lose when it cannot fit otherwise. Never `id`/`kind` (the service
|
|
26
|
+
* worker's `notifItem` hands a tap back to the page's feed row by them), `ts`, `level`, nor the
|
|
27
|
+
* words (cut instead). Without one of these a tap degrades to that feed row, which holds the item. */
|
|
28
|
+
const DROPPABLE = ["file", "pull", "image", "backlog", "open", "key", "plugin", "sessionId", "tag"];
|
|
29
|
+
/** The words of a payload fitted to `budget`: the JSON whole, else the body (then the title) cut
|
|
30
|
+
* by code point with a trailing "…" to the longest that fits; null when even an empty body and a
|
|
31
|
+
* bare "…" title are over. */
|
|
32
|
+
function fitWords(payload, budget) {
|
|
33
|
+
const whole = JSON.stringify(payload);
|
|
34
|
+
if (byteLen(whole) <= budget)
|
|
35
|
+
return whole;
|
|
36
|
+
const cut = (s, n) => { const cps = Array.from(s); return cps.length <= n ? s : cps.slice(0, n).join("") + "…"; };
|
|
37
|
+
const longest = (field, base) => {
|
|
38
|
+
const cps = Array.from(base[field]).length;
|
|
39
|
+
let lo = 0, hi = cps;
|
|
40
|
+
while (lo < hi) {
|
|
41
|
+
const mid = Math.ceil((lo + hi) / 2);
|
|
42
|
+
if (byteLen(JSON.stringify({ ...base, [field]: cut(base[field], mid) })) <= budget)
|
|
43
|
+
lo = mid;
|
|
44
|
+
else
|
|
45
|
+
hi = mid - 1;
|
|
46
|
+
}
|
|
47
|
+
return { ...base, [field]: cut(base[field], lo) };
|
|
48
|
+
};
|
|
49
|
+
const bodyCut = longest("body", payload);
|
|
50
|
+
if (byteLen(JSON.stringify(bodyCut)) <= budget)
|
|
51
|
+
return JSON.stringify(bodyCut);
|
|
52
|
+
const t = JSON.stringify(longest("title", { ...bodyCut, body: "" }));
|
|
53
|
+
return byteLen(t) <= budget ? t : null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The ONE place a push payload is fitted to a size. First the words are cut (`fitWords`); every
|
|
57
|
+
* other field — id, kind, key, file, pull — is kept, because the service worker hands the item back
|
|
58
|
+
* to the page by them and the full words are in the app's feed. When the KEPT fields alone are over
|
|
59
|
+
* the budget (a multi-KB `file.relPath` or `key`), the longest optional tap target is dropped — and
|
|
60
|
+
* `pull` with `file`, since a pull without its file cannot start — until it fits, the words
|
|
61
|
+
* re-fitted each time so a field that went never cost them a character. A payload that cannot fit
|
|
62
|
+
* even then is `text: null`: never sent, because a service answers an over-budget push with 413.
|
|
63
|
+
*/
|
|
64
|
+
export function pushPayloadFit(payload, budget) {
|
|
65
|
+
let p = payload;
|
|
66
|
+
const dropped = [];
|
|
67
|
+
for (;;) {
|
|
68
|
+
const text = fitWords(p, budget);
|
|
69
|
+
if (text !== null)
|
|
70
|
+
return { text, dropped };
|
|
71
|
+
const rec = p;
|
|
72
|
+
let worst = null, worstLen = 0;
|
|
73
|
+
for (const f of DROPPABLE) {
|
|
74
|
+
if (rec[f] === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
const len = byteLen(JSON.stringify(rec[f]));
|
|
77
|
+
if (len > worstLen) {
|
|
78
|
+
worst = f;
|
|
79
|
+
worstLen = len;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (worst === null)
|
|
83
|
+
return { text: null, dropped };
|
|
84
|
+
const gone = worst === "file" && rec.pull !== undefined ? ["file", "pull"] : [worst];
|
|
85
|
+
const next = { ...rec };
|
|
86
|
+
for (const f of gone)
|
|
87
|
+
delete next[f];
|
|
88
|
+
p = next;
|
|
89
|
+
dropped.push(...gone);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** `pushPayloadFit`'s text alone: null when nothing that fits can be sent. */
|
|
93
|
+
export function pushPayloadText(payload, budget) {
|
|
94
|
+
return pushPayloadFit(payload, budget).text;
|
|
95
|
+
}
|
|
96
|
+
/** How long the same refusal from the same subscription stays quiet after it was logged once. */
|
|
97
|
+
export const PUSH_REPEAT_LOG_MS = 60 * 60_000;
|
|
98
|
+
/**
|
|
99
|
+
* The ONE rule for a push service's refusal. `gone`: 404/410, the service says the subscription
|
|
100
|
+
* expired or was unsubscribed — removed at once. `key-refused`: 401/403, the service rejected the
|
|
101
|
+
* VAPID token THIS DESKTOP signed — almost always the host's own fault (clock skew past the token's
|
|
102
|
+
* 12 h, a `VAPID_CONTACT` the service will not take, an older vapid.json restored) and healed by
|
|
103
|
+
* fixing it, so it is COUNTED and the subscription removed only when the refusal persists
|
|
104
|
+
* (`PUSH_KEY_REFUSAL_COUNT` refusals spanning `PUSH_KEY_REFUSAL_SPAN_MS`): the phone keeps showing
|
|
105
|
+
* "on" and nothing re-posts a removed subscription. A refusal whose own `Date` header shows the
|
|
106
|
+
* host's clock off by more than `PUSH_CLOCK_SKEW_MS` is not counted at all (`pushClockSkewMs`). `too-large`: 413, resent smaller once.
|
|
107
|
+
* `transient`: everything else — 429, 5xx, 400, a network error with no status — kept, next notify tries.
|
|
108
|
+
*/
|
|
109
|
+
export function pushRefusal(statusCode) {
|
|
110
|
+
if (statusCode === 404 || statusCode === 410)
|
|
111
|
+
return "gone";
|
|
112
|
+
if (statusCode === 401 || statusCode === 403)
|
|
113
|
+
return "key-refused";
|
|
114
|
+
if (statusCode === 413)
|
|
115
|
+
return "too-large";
|
|
116
|
+
return "transient";
|
|
117
|
+
}
|
|
118
|
+
/** A key refusal removes the subscription only once it has happened this many times… */
|
|
119
|
+
export const PUSH_KEY_REFUSAL_COUNT = 3;
|
|
120
|
+
/** …and the first and latest of them are at least this far apart. */
|
|
121
|
+
export const PUSH_KEY_REFUSAL_SPAN_MS = 24 * 60 * 60_000;
|
|
122
|
+
/** How far this host's clock may sit from the push service's before a key refusal is blamed on the
|
|
123
|
+
* clock rather than the subscription. The VAPID JWT's `exp` is the host's now + 12 h, so a host
|
|
124
|
+
* clock off by more than that is refused on every send, for as long as the clock stays wrong. */
|
|
125
|
+
export const PUSH_CLOCK_SKEW_MS = 10 * 60_000;
|
|
126
|
+
/**
|
|
127
|
+
* How far the push service's clock is from this host's, in ms (service − host), read off the
|
|
128
|
+
* refusal's own `Date` response header (web-push's `WebPushError.headers`); null when the error
|
|
129
|
+
* carries no parseable Date — then nobody said, and the refusal is judged as before.
|
|
130
|
+
*/
|
|
131
|
+
export function pushClockSkewMs(err, now) {
|
|
132
|
+
const headers = err?.headers;
|
|
133
|
+
if (!headers || typeof headers !== "object")
|
|
134
|
+
return null;
|
|
135
|
+
const raw = headers.date ?? headers.Date;
|
|
136
|
+
if (typeof raw !== "string")
|
|
137
|
+
return null;
|
|
138
|
+
const at = Date.parse(raw);
|
|
139
|
+
return Number.isFinite(at) ? at - now : null;
|
|
140
|
+
}
|
|
141
|
+
/** The push service's host, for a log line (never the endpoint's secret path). */
|
|
142
|
+
function endpointHost(endpoint) {
|
|
143
|
+
try {
|
|
144
|
+
return new URL(endpoint).host;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return "a push service";
|
|
148
|
+
}
|
|
149
|
+
}
|
|
16
150
|
export class PushManager {
|
|
17
151
|
subs = [];
|
|
18
152
|
keys;
|
|
19
153
|
subsPath;
|
|
20
154
|
keysPath;
|
|
21
|
-
|
|
155
|
+
now;
|
|
156
|
+
constructor(root, opts = {}) {
|
|
157
|
+
this.now = opts.now ?? Date.now;
|
|
22
158
|
const dir = hostStateDir(root);
|
|
23
159
|
this.subsPath = join(dir, "push-subs.json");
|
|
24
160
|
this.keysPath = join(dir, "vapid.json");
|
|
@@ -80,22 +216,116 @@ export class PushManager {
|
|
|
80
216
|
this.save();
|
|
81
217
|
}
|
|
82
218
|
async notify(payload) {
|
|
83
|
-
const body = JSON.stringify(payload);
|
|
84
219
|
const dead = [];
|
|
220
|
+
let changed = false;
|
|
221
|
+
// One rule for every refusal, first send and retry alike (`pushRefusal`).
|
|
222
|
+
const refused = (sub, where, err, again) => {
|
|
223
|
+
const code = err?.statusCode;
|
|
224
|
+
const kind = pushRefusal(code);
|
|
225
|
+
if (kind === "gone") {
|
|
226
|
+
dead.push(sub.endpoint);
|
|
227
|
+
return;
|
|
228
|
+
} // routine expiry, no line
|
|
229
|
+
if (kind === "key-refused") {
|
|
230
|
+
const now = this.now();
|
|
231
|
+
// The service's own clock says this host's is wrong: the token was refused for the HOST's
|
|
232
|
+
// clock, never the subscription's fault, so it is not counted toward removal.
|
|
233
|
+
const skew = pushClockSkewMs(err, now);
|
|
234
|
+
if (skew !== null && Math.abs(skew) > PUSH_CLOCK_SKEW_MS) {
|
|
235
|
+
if (!this.logOnce(`${sub.endpoint}\0skew`))
|
|
236
|
+
return;
|
|
237
|
+
const min = Math.round(Math.abs(skew) / 60_000);
|
|
238
|
+
console.warn(`[push] ${where} refused this desktop's key (${code}) for "${payload.title}", and its clock is ${min} min ${skew > 0 ? "ahead of" : "behind"} this desktop's — the key is signed with this desktop's clock, so fix the clock; not counted against the subscription`);
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const r = sub.keyRefused ?? { first: now, count: 0 };
|
|
242
|
+
r.count++;
|
|
243
|
+
sub.keyRefused = r;
|
|
244
|
+
changed = true;
|
|
245
|
+
if (r.count >= PUSH_KEY_REFUSAL_COUNT && now - r.first >= PUSH_KEY_REFUSAL_SPAN_MS) {
|
|
246
|
+
dead.push(sub.endpoint);
|
|
247
|
+
console.warn(`[push] ${where} has refused this desktop's key (${code}) ${r.count} times over ${Math.round((now - r.first) / 3_600_000)} h; removing that subscription — the phone must re-enable notifications to get them again`);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
if (!this.logOnce(`${sub.endpoint}\0key`))
|
|
251
|
+
return;
|
|
252
|
+
console.warn(`[push] ${where} refused this desktop's key (${code}) for "${payload.title}" — counting it (${r.count} so far); the subscription is removed only if this persists ${PUSH_KEY_REFUSAL_COUNT} times over ${PUSH_KEY_REFUSAL_SPAN_MS / 3_600_000} h. Usually the host's own fault: check the clock, VAPID_CONTACT, or a restored vapid.json; the next successful send clears the count`);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
// Keyed and worded by status or error code, never the message: a network error's message
|
|
256
|
+
// names an address that changes per attempt, which defeated the hourly limit.
|
|
257
|
+
const why = code ?? err?.code ?? "network error";
|
|
258
|
+
if (!this.logOnce(`${sub.endpoint}\0${why}`))
|
|
259
|
+
return;
|
|
260
|
+
console.warn(`[push] ${where} refused "${payload.title}"${again ? " again" : ""} (${why}); the item is in the app's feed`);
|
|
261
|
+
};
|
|
262
|
+
const sent = (sub) => {
|
|
263
|
+
if (sub.keyRefused) {
|
|
264
|
+
delete sub.keyRefused;
|
|
265
|
+
changed = true;
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
// Fitted once per notify, and said once: a payload known to be over budget never goes out.
|
|
269
|
+
const fitted = (budget) => {
|
|
270
|
+
const { text, dropped } = pushPayloadFit(payload, budget);
|
|
271
|
+
if (text === null)
|
|
272
|
+
console.warn(`[push] "${payload.title}" cannot fit a push's ${budget} bytes even with its words cut and its tap targets dropped; not sent — the item is in the app's feed`);
|
|
273
|
+
else if (dropped.length)
|
|
274
|
+
console.warn(`[push] "${payload.title}" is over a push's ${budget} bytes even with its words cut; sent without its ${dropped.join(", ")} — a tap opens the item in the app's feed`);
|
|
275
|
+
return text;
|
|
276
|
+
};
|
|
277
|
+
if (!this.subs.length)
|
|
278
|
+
return;
|
|
279
|
+
const whole = fitted(PUSH_BUDGET);
|
|
280
|
+
if (whole === null)
|
|
281
|
+
return;
|
|
282
|
+
let floor;
|
|
85
283
|
await Promise.all(this.subs.map(async (sub) => {
|
|
284
|
+
const where = endpointHost(sub.endpoint);
|
|
86
285
|
try {
|
|
87
|
-
await webpush.sendNotification(sub,
|
|
286
|
+
await webpush.sendNotification(sub, whole);
|
|
287
|
+
sent(sub);
|
|
88
288
|
}
|
|
89
289
|
catch (err) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
290
|
+
if (pushRefusal(err?.statusCode) !== "too-large") {
|
|
291
|
+
refused(sub, where, err, false);
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
// 413: this service's limit is under our budget. Once more, cut to the floor.
|
|
295
|
+
if (floor === undefined)
|
|
296
|
+
floor = fitted(PUSH_FLOOR);
|
|
297
|
+
if (floor === null)
|
|
298
|
+
return;
|
|
299
|
+
const small = floor;
|
|
300
|
+
console.warn(`[push] ${where} answered 413 to "${payload.title}"; resending cut to ${Buffer.byteLength(small, "utf8")} bytes`);
|
|
301
|
+
try {
|
|
302
|
+
await webpush.sendNotification(sub, small);
|
|
303
|
+
sent(sub);
|
|
304
|
+
}
|
|
305
|
+
catch (e) {
|
|
306
|
+
refused(sub, where, e, true);
|
|
307
|
+
}
|
|
93
308
|
}
|
|
94
309
|
}));
|
|
95
|
-
if (dead.length)
|
|
310
|
+
if (dead.length)
|
|
96
311
|
this.subs = this.subs.filter((s) => !dead.includes(s.endpoint));
|
|
312
|
+
if (dead.length || changed)
|
|
97
313
|
this.save();
|
|
98
|
-
|
|
314
|
+
}
|
|
315
|
+
/** When each (subscription, refusal) was last logged — a transient refusal that repeats on every
|
|
316
|
+
* notify is one line per `PUSH_REPEAT_LOG_MS`, not one per notify. Entries past the window are
|
|
317
|
+
* pruned on every call, so it holds at most what was logged within the last window. */
|
|
318
|
+
lastLogged = new Map();
|
|
319
|
+
logOnce(key) {
|
|
320
|
+
const now = this.now();
|
|
321
|
+
for (const [k, t] of this.lastLogged)
|
|
322
|
+
if (now - t >= PUSH_REPEAT_LOG_MS)
|
|
323
|
+
this.lastLogged.delete(k);
|
|
324
|
+
const at = this.lastLogged.get(key);
|
|
325
|
+
if (at !== undefined && now - at < PUSH_REPEAT_LOG_MS)
|
|
326
|
+
return false;
|
|
327
|
+
this.lastLogged.set(key, now);
|
|
328
|
+
return true;
|
|
99
329
|
}
|
|
100
330
|
save() {
|
|
101
331
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** What the confirming `ls-remote` may take: a hung network or a credential prompt is no answer. */
|
|
2
|
+
export declare const LANDED_LS_REMOTE_MS = 30000;
|
|
3
|
+
type Locked = {
|
|
4
|
+
to: string | null;
|
|
5
|
+
refs: {
|
|
6
|
+
src: string;
|
|
7
|
+
dst: string;
|
|
8
|
+
at?: string;
|
|
9
|
+
}[];
|
|
10
|
+
};
|
|
11
|
+
export type Landed = {
|
|
12
|
+
dst: string;
|
|
13
|
+
sha: string;
|
|
14
|
+
}[];
|
|
15
|
+
/** Every locked ref with the sha this push sent (`rev-parse src`), when the remote is at exactly that
|
|
16
|
+
* sha — read off the refusal when the remote named it, else asked of the remote (`ls-remote`, the
|
|
17
|
+
* push's `To`) — or null when any one is not, or could not be confirmed. */
|
|
18
|
+
export declare function landedAlready(wt: string, locked: Locked, timeoutMs?: number): Promise<Landed | null>;
|
|
19
|
+
/**
|
|
20
|
+
* What the refused push would have left locally, for HEAD's branch: the upstream it asked for
|
|
21
|
+
* (`setUpstream`, a first push's `--set-upstream <remote> <branch>`), then the remote-tracking ref
|
|
22
|
+
* git maps its push to (`%(push)`) moved to the confirmed sha — only when that ref is the branch a
|
|
23
|
+
* landed ref names. Anything it cannot place is left as it was; a failure here never fails the push.
|
|
24
|
+
*/
|
|
25
|
+
export declare function recordLanded(wt: string, landed: Landed, setUpstream: {
|
|
26
|
+
remote: string;
|
|
27
|
+
branch: string;
|
|
28
|
+
} | null): Promise<void>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A push the remote refused only because its ref had already moved — `refsLockedAt` — is DONE when
|
|
3
|
+
* the remote now holds exactly what this push sent (another push of the same commit landed while
|
|
4
|
+
* this one's hook ran). Its own module beside `git.ts`, which runs the push and stays under its cap.
|
|
5
|
+
*
|
|
6
|
+
* Two halves: `landedAlready` confirms it (the refusal's own `is at <sha>`, else one bounded
|
|
7
|
+
* `ls-remote`; a timeout or a prompt confirms nothing, so it stays a refusal), and `recordLanded`
|
|
8
|
+
* does what a successful push would have done locally — moves the remote-tracking ref and sets the
|
|
9
|
+
* upstream it was asked for — only ever to the sha just confirmed on the remote.
|
|
10
|
+
*/
|
|
11
|
+
import { execFileP as pexec } from "./proc.js";
|
|
12
|
+
/** What the confirming `ls-remote` may take: a hung network or a credential prompt is no answer. */
|
|
13
|
+
export const LANDED_LS_REMOTE_MS = 30_000;
|
|
14
|
+
async function git(wt, args, timeout) {
|
|
15
|
+
const env = { ...process.env, GIT_TERMINAL_PROMPT: "0" };
|
|
16
|
+
return (await pexec("git", args, { cwd: wt, maxBuffer: 1024 * 1024, env, ...(timeout ? { timeout } : {}) })).stdout.trim();
|
|
17
|
+
}
|
|
18
|
+
/** Every locked ref with the sha this push sent (`rev-parse src`), when the remote is at exactly that
|
|
19
|
+
* sha — read off the refusal when the remote named it, else asked of the remote (`ls-remote`, the
|
|
20
|
+
* push's `To`) — or null when any one is not, or could not be confirmed. */
|
|
21
|
+
export async function landedAlready(wt, locked, timeoutMs = LANDED_LS_REMOTE_MS) {
|
|
22
|
+
const landed = [];
|
|
23
|
+
for (const { src, dst, at } of locked.refs) {
|
|
24
|
+
const sha = await git(wt, ["rev-parse", "--verify", "--end-of-options", `${src}^{commit}`]).catch(() => "");
|
|
25
|
+
let there = at;
|
|
26
|
+
if (!there && locked.to) {
|
|
27
|
+
const ls = await git(wt, ["ls-remote", "--end-of-options", locked.to, dst], timeoutMs).catch(() => "");
|
|
28
|
+
there = ls.split("\n").map((l) => l.split("\t")).find((c) => c[1] === dst)?.[0];
|
|
29
|
+
}
|
|
30
|
+
if (!sha || sha !== there)
|
|
31
|
+
return null;
|
|
32
|
+
landed.push({ dst, sha });
|
|
33
|
+
}
|
|
34
|
+
return landed;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* What the refused push would have left locally, for HEAD's branch: the upstream it asked for
|
|
38
|
+
* (`setUpstream`, a first push's `--set-upstream <remote> <branch>`), then the remote-tracking ref
|
|
39
|
+
* git maps its push to (`%(push)`) moved to the confirmed sha — only when that ref is the branch a
|
|
40
|
+
* landed ref names. Anything it cannot place is left as it was; a failure here never fails the push.
|
|
41
|
+
*/
|
|
42
|
+
export async function recordLanded(wt, landed, setUpstream) {
|
|
43
|
+
try {
|
|
44
|
+
const b = await git(wt, ["symbolic-ref", "--short", "HEAD"]);
|
|
45
|
+
if (setUpstream && setUpstream.branch === b && landed.some((l) => l.dst === `refs/heads/${b}`)) {
|
|
46
|
+
await git(wt, ["config", `branch.${b}.remote`, setUpstream.remote]);
|
|
47
|
+
await git(wt, ["config", `branch.${b}.merge`, `refs/heads/${b}`]);
|
|
48
|
+
}
|
|
49
|
+
const [push, remote] = (await git(wt, ["for-each-ref", "--format=%(push)%09%(push:remotename)", `refs/heads/${b}`])).split("\t");
|
|
50
|
+
if (!remote || !/^[\w.-]+$/.test(remote) || !push?.startsWith(`refs/remotes/${remote}/`))
|
|
51
|
+
return;
|
|
52
|
+
// A first push named its remote; %(push) follows remote.pushDefault, which may be another one.
|
|
53
|
+
if (setUpstream && remote !== setUpstream.remote)
|
|
54
|
+
return;
|
|
55
|
+
const hit = landed.find((l) => l.dst === `refs/heads/${push.slice(`refs/remotes/${remote}/`.length)}`);
|
|
56
|
+
if (hit)
|
|
57
|
+
await git(wt, ["update-ref", "-m", "push: already landed", push, hit.sha]);
|
|
58
|
+
}
|
|
59
|
+
catch { /* the push is done either way; git status stays as it was */ }
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=pushlanded.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushlanded.js","sourceRoot":"","sources":["../src/pushlanded.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when a failed push of `sha` on `branch` is RESOLVED by git state: the branch's remote ref
|
|
3
|
+
* contains `sha`, or contains the branch's CURRENT tip when that tip REPLACED `sha` (an `--amend` or
|
|
4
|
+
* rebase — not a reset back onto the remote, whose tip `sha` descends from) and what the branch now
|
|
5
|
+
* is went up. False when neither is there.
|
|
6
|
+
* Undefined — never a made-up "it went up" — for no such branch, no remote ref, an unsafe name or
|
|
7
|
+
* sha, or git broke. It asks about THAT branch, never HEAD.
|
|
8
|
+
*/
|
|
9
|
+
export declare function pushedAlready(wt: string, branch: string, sha: string): Promise<boolean | undefined>;
|