waterplane 0.1.24 → 0.1.26
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 +49 -0
- package/SECURITY.md +25 -5
- package/node_modules/@waterplane/shared/dist/agentseries/compare.d.ts +8 -0
- package/node_modules/@waterplane/shared/dist/agentseries/compare.js +103 -0
- package/node_modules/@waterplane/shared/dist/agentseries/compare.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/agentseries/markers.d.ts +17 -0
- package/node_modules/@waterplane/shared/dist/agentseries/markers.js +125 -0
- package/node_modules/@waterplane/shared/dist/agentseries/markers.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/agentseries/series.d.ts +16 -0
- package/node_modules/@waterplane/shared/dist/agentseries/series.js +93 -0
- package/node_modules/@waterplane/shared/dist/agentseries/series.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/agentseries/stats.d.ts +8 -0
- package/node_modules/@waterplane/shared/dist/agentseries/stats.js +33 -0
- package/node_modules/@waterplane/shared/dist/agentseries/stats.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/agentseries/types.d.ts +103 -0
- package/node_modules/@waterplane/shared/dist/agentseries/types.js +11 -0
- package/node_modules/@waterplane/shared/dist/agentseries/types.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/agentseries.d.ts +10 -0
- package/node_modules/@waterplane/shared/dist/agentseries.js +11 -0
- package/node_modules/@waterplane/shared/dist/agentseries.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/calday.d.ts +5 -0
- package/node_modules/@waterplane/shared/dist/calday.js +10 -0
- package/node_modules/@waterplane/shared/dist/calday.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.d.ts +13 -1
- package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js +22 -4
- package/node_modules/@waterplane/shared/dist/clihealth/healthfixture.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/clihealth.d.ts +1 -1
- package/node_modules/@waterplane/shared/dist/clihealth.js +1 -1
- package/node_modules/@waterplane/shared/dist/clihealth.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/dictate.d.ts +6 -0
- package/node_modules/@waterplane/shared/dist/dictate.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/dictatemodels.d.ts +23 -0
- package/node_modules/@waterplane/shared/dist/dictatemodels.js +31 -0
- package/node_modules/@waterplane/shared/dist/dictatemodels.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/commits.d.ts +1 -1
- package/node_modules/@waterplane/shared/dist/healthindex/commits.js +2 -2
- package/node_modules/@waterplane/shared/dist/healthindex/commits.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthindex/coverage.d.ts +128 -0
- package/node_modules/@waterplane/shared/dist/healthindex/coverage.js +343 -0
- package/node_modules/@waterplane/shared/dist/healthindex/coverage.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/healthindex/readings.d.ts +9 -1
- package/node_modules/@waterplane/shared/dist/healthindex/readings.js +122 -4
- package/node_modules/@waterplane/shared/dist/healthindex/readings.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthindex/repoindex.d.ts +5 -0
- package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js +2 -0
- package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthindex/score.d.ts +3 -0
- package/node_modules/@waterplane/shared/dist/healthindex/score.js +52 -16
- package/node_modules/@waterplane/shared/dist/healthindex/score.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthindex/types.d.ts +82 -6
- package/node_modules/@waterplane/shared/dist/healthindex/types.js +35 -2
- package/node_modules/@waterplane/shared/dist/healthindex/types.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthindex/words.js +65 -6
- package/node_modules/@waterplane/shared/dist/healthindex/words.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthindex.d.ts +21 -7
- package/node_modules/@waterplane/shared/dist/healthindex.js +20 -7
- package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthindexresponse.js +3 -2
- package/node_modules/@waterplane/shared/dist/healthindexresponse.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/healthspend.d.ts +23 -0
- package/node_modules/@waterplane/shared/dist/healthspend.js +32 -1
- package/node_modules/@waterplane/shared/dist/healthspend.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/hints.js +9 -0
- package/node_modules/@waterplane/shared/dist/hints.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/index.d.ts +9 -0
- package/node_modules/@waterplane/shared/dist/index.js +9 -0
- package/node_modules/@waterplane/shared/dist/index.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/installrow.js +10 -0
- package/node_modules/@waterplane/shared/dist/installrow.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +45 -1
- package/node_modules/@waterplane/shared/dist/intent/kind.js +60 -2
- package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/intent.d.ts +1 -1
- package/node_modules/@waterplane/shared/dist/intent.js +1 -1
- package/node_modules/@waterplane/shared/dist/intent.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/itempaths.d.ts +23 -0
- package/node_modules/@waterplane/shared/dist/itempaths.js +38 -0
- package/node_modules/@waterplane/shared/dist/itempaths.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/pluginlaunch.d.ts +3 -2
- package/node_modules/@waterplane/shared/dist/pluginlaunch.js +1 -1
- package/node_modules/@waterplane/shared/dist/pluginlaunch.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/pricelist.d.ts +57 -0
- package/node_modules/@waterplane/shared/dist/pricelist.js +128 -0
- package/node_modules/@waterplane/shared/dist/pricelist.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/pricing.d.ts +86 -9
- package/node_modules/@waterplane/shared/dist/pricing.js +140 -20
- package/node_modules/@waterplane/shared/dist/pricing.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/queue/queuelanestate.d.ts +14 -0
- package/node_modules/@waterplane/shared/dist/queue/queuelanestate.js +25 -0
- package/node_modules/@waterplane/shared/dist/queue/queuelanestate.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/queue/queueplan.d.ts +4 -0
- package/node_modules/@waterplane/shared/dist/queue/queueplan.js +21 -0
- package/node_modules/@waterplane/shared/dist/queue/queueplan.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/queue/queuewords.js +2 -1
- package/node_modules/@waterplane/shared/dist/queue/queuewords.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/queue.d.ts +2 -0
- package/node_modules/@waterplane/shared/dist/queue.js +1 -0
- package/node_modules/@waterplane/shared/dist/queue.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/repohealth.d.ts +178 -0
- package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/repohealthhabits.d.ts +15 -0
- package/node_modules/@waterplane/shared/dist/repohealthhabits.js +117 -0
- package/node_modules/@waterplane/shared/dist/repohealthhabits.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/repohealthnative.d.ts +10 -0
- package/node_modules/@waterplane/shared/dist/repohealthnative.js +94 -0
- package/node_modules/@waterplane/shared/dist/repohealthnative.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/repohealthread.js +23 -1
- package/node_modules/@waterplane/shared/dist/repohealthread.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/skillstate.d.ts +51 -0
- package/node_modules/@waterplane/shared/dist/skillstate.js +176 -0
- package/node_modules/@waterplane/shared/dist/skillstate.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/skillwords.d.ts +10 -0
- package/node_modules/@waterplane/shared/dist/skillwords.js +18 -0
- package/node_modules/@waterplane/shared/dist/skillwords.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/agentreadings.d.ts +248 -0
- package/node_modules/@waterplane/shared/dist/wire/agentreadings.js +36 -0
- package/node_modules/@waterplane/shared/dist/wire/agentreadings.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/backend.d.ts +2 -0
- package/node_modules/@waterplane/shared/dist/wire/costwindow.d.ts +4 -0
- package/node_modules/@waterplane/shared/dist/wire/dictatesetup.d.ts +42 -0
- package/node_modules/@waterplane/shared/dist/wire/dictatesetup.js +9 -0
- package/node_modules/@waterplane/shared/dist/wire/dictatesetup.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/messages/hostcore.d.ts +22 -1
- package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +6 -1
- package/node_modules/@waterplane/shared/dist/wire/notify.js +6 -1
- package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +1 -1
- package/node_modules/@waterplane/shared/dist/wire/skills.d.ts +142 -0
- package/node_modules/@waterplane/shared/dist/wire/skills.js +6 -0
- package/node_modules/@waterplane/shared/dist/wire/skills.js.map +1 -0
- package/node_modules/@waterplane/shared/dist/wire/sysstat.d.ts +17 -0
- package/node_modules/@waterplane/shared/dist/wire/telemetry.d.ts +4 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/packages/extensions/diskspace/waterplane-plugin.json +16 -0
- package/packages/extensions/links/waterplane-plugin.json +18 -0
- package/packages/host/dist/agentclass.d.ts +116 -0
- package/packages/host/dist/agentclass.js +339 -0
- package/packages/host/dist/agentclass.js.map +1 -0
- package/packages/host/dist/agentintents.d.ts +18 -0
- package/packages/host/dist/agentintents.js +40 -7
- package/packages/host/dist/agentintents.js.map +1 -1
- package/packages/host/dist/agentmarkers.d.ts +49 -0
- package/packages/host/dist/agentmarkers.js +255 -0
- package/packages/host/dist/agentmarkers.js.map +1 -0
- package/packages/host/dist/agentreadings.d.ts +68 -0
- package/packages/host/dist/agentreadings.js +336 -0
- package/packages/host/dist/agentreadings.js.map +1 -0
- package/packages/host/dist/agentscan.d.ts +8 -0
- package/packages/host/dist/agentscan.js +427 -0
- package/packages/host/dist/agentscan.js.map +1 -0
- package/packages/host/dist/archive.js +9 -3
- package/packages/host/dist/archive.js.map +1 -1
- package/packages/host/dist/artifacts.js +4 -7
- package/packages/host/dist/artifacts.js.map +1 -1
- package/packages/host/dist/askrules.js +12 -4
- package/packages/host/dist/askrules.js.map +1 -1
- package/packages/host/dist/auth.d.ts +1 -0
- package/packages/host/dist/auth.js +5 -3
- package/packages/host/dist/auth.js.map +1 -1
- package/packages/host/dist/autopull.js +4 -8
- package/packages/host/dist/autopull.js.map +1 -1
- package/packages/host/dist/backends/claude.js +1 -0
- package/packages/host/dist/backends/claude.js.map +1 -1
- package/packages/host/dist/backends/derive.js +3 -1
- package/packages/host/dist/backends/derive.js.map +1 -1
- package/packages/host/dist/binguard.js +19 -2
- package/packages/host/dist/binguard.js.map +1 -1
- package/packages/host/dist/capture.js +7 -10
- package/packages/host/dist/capture.js.map +1 -1
- package/packages/host/dist/clifixtures.d.ts +24 -4
- package/packages/host/dist/clifixtures.js +50 -10
- package/packages/host/dist/clifixtures.js.map +1 -1
- package/packages/host/dist/clihealth.d.ts +8 -2
- package/packages/host/dist/clihealth.js +11 -3
- package/packages/host/dist/clihealth.js.map +1 -1
- package/packages/host/dist/costwindow.js +4 -2
- package/packages/host/dist/costwindow.js.map +1 -1
- package/packages/host/dist/ctxlog/ctxagents.d.ts +2 -0
- package/packages/host/dist/ctxlog/ctxagents.js +5 -5
- package/packages/host/dist/ctxlog/ctxagents.js.map +1 -1
- package/packages/host/dist/ctxlog/ctxcursor.d.ts +2 -0
- package/packages/host/dist/ctxlog/ctxcursor.js +2 -2
- package/packages/host/dist/ctxlog/ctxcursor.js.map +1 -1
- package/packages/host/dist/ctxlog/ctxupdate.js +11 -6
- package/packages/host/dist/ctxlog/ctxupdate.js.map +1 -1
- package/packages/host/dist/deliver/deliverknobs.d.ts +0 -2
- package/packages/host/dist/deliver/deliverknobs.js +0 -2
- package/packages/host/dist/deliver/deliverknobs.js.map +1 -1
- package/packages/host/dist/deliver/deliverproof.d.ts +3 -2
- package/packages/host/dist/deliver/deliverproof.js +9 -8
- package/packages/host/dist/deliver/deliverproof.js.map +1 -1
- package/packages/host/dist/deliver/deliverreturn.d.ts +3 -2
- package/packages/host/dist/deliver/deliverreturn.js +13 -12
- package/packages/host/dist/deliver/deliverreturn.js.map +1 -1
- package/packages/host/dist/deliver/deliverrun.js +20 -18
- package/packages/host/dist/deliver/deliverrun.js.map +1 -1
- package/packages/host/dist/deliver/deliverscreen.d.ts +2 -1
- package/packages/host/dist/deliver/deliverscreen.js +9 -8
- package/packages/host/dist/deliver/deliverscreen.js.map +1 -1
- package/packages/host/dist/deliver/delivertypes.d.ts +4 -0
- package/packages/host/dist/deliver.js +2 -1
- package/packages/host/dist/deliver.js.map +1 -1
- package/packages/host/dist/dictate.d.ts +11 -0
- package/packages/host/dist/dictate.js +20 -10
- package/packages/host/dist/dictate.js.map +1 -1
- package/packages/host/dist/dictatesetup.d.ts +54 -0
- package/packages/host/dist/dictatesetup.js +261 -0
- package/packages/host/dist/dictatesetup.js.map +1 -0
- package/packages/host/dist/doctor.js +1 -1
- package/packages/host/dist/doctor.js.map +1 -1
- package/packages/host/dist/exposure.d.ts +10 -0
- package/packages/host/dist/exposure.js +25 -0
- package/packages/host/dist/exposure.js.map +1 -1
- package/packages/host/dist/exposurepush.js +2 -2
- package/packages/host/dist/exposurepush.js.map +1 -1
- package/packages/host/dist/extensions/diskspace/host/candidates.d.mts +180 -0
- package/packages/host/dist/extensions/diskspace/host/candidates.mjs +716 -0
- package/packages/host/dist/extensions/diskspace/host/candidates.mjs.map +1 -0
- package/packages/host/dist/extensions/diskspace/host/engine.d.mts +21 -0
- package/packages/host/dist/extensions/diskspace/host/engine.mjs +498 -0
- package/packages/host/dist/extensions/diskspace/host/engine.mjs.map +1 -0
- package/packages/host/dist/extensions/diskspace/host/index.d.mts +25 -0
- package/packages/host/dist/extensions/diskspace/host/index.mjs +135 -0
- package/packages/host/dist/extensions/diskspace/host/index.mjs.map +1 -0
- package/packages/host/dist/extensions/diskspace/host/large.d.mts +11 -0
- package/packages/host/dist/extensions/diskspace/host/large.mjs +56 -0
- package/packages/host/dist/extensions/diskspace/host/large.mjs.map +1 -0
- package/packages/host/dist/extensions/diskspace/host/run.d.mts +94 -0
- package/packages/host/dist/extensions/diskspace/host/run.mjs +200 -0
- package/packages/host/dist/extensions/diskspace/host/run.mjs.map +1 -0
- package/packages/host/dist/extensions/diskspace/shared/wire.d.mts +197 -0
- package/packages/host/dist/extensions/diskspace/shared/wire.mjs +23 -0
- package/packages/host/dist/extensions/diskspace/shared/wire.mjs.map +1 -0
- package/packages/host/dist/extensions/links/host/engine.d.mts +39 -0
- package/packages/host/dist/extensions/links/host/engine.mjs +285 -0
- package/packages/host/dist/extensions/links/host/engine.mjs.map +1 -0
- package/packages/host/dist/extensions/links/host/index.d.mts +10 -0
- package/packages/host/dist/extensions/links/host/index.mjs +72 -0
- package/packages/host/dist/extensions/links/host/index.mjs.map +1 -0
- package/packages/host/dist/extensions/links/host/parse.d.mts +61 -0
- package/packages/host/dist/extensions/links/host/parse.mjs +225 -0
- package/packages/host/dist/extensions/links/host/parse.mjs.map +1 -0
- package/packages/host/dist/extensions/links/host/run.d.mts +15 -0
- package/packages/host/dist/extensions/links/host/run.mjs +32 -0
- package/packages/host/dist/extensions/links/host/run.mjs.map +1 -0
- package/packages/host/dist/extensions/links/host/store.d.mts +11 -0
- package/packages/host/dist/extensions/links/host/store.mjs +76 -0
- package/packages/host/dist/extensions/links/host/store.mjs.map +1 -0
- package/packages/host/dist/extensions/links/shared/wire.d.mts +141 -0
- package/packages/host/dist/extensions/links/shared/wire.mjs +20 -0
- package/packages/host/dist/extensions/links/shared/wire.mjs.map +1 -0
- package/packages/host/dist/git.d.ts +5 -3
- package/packages/host/dist/git.js +16 -28
- package/packages/host/dist/git.js.map +1 -1
- package/packages/host/dist/halt.js +16 -3
- package/packages/host/dist/halt.js.map +1 -1
- package/packages/host/dist/jsonstore.d.ts +16 -4
- package/packages/host/dist/jsonstore.js +32 -8
- package/packages/host/dist/jsonstore.js.map +1 -1
- package/packages/host/dist/landedbase.d.ts +41 -0
- package/packages/host/dist/landedbase.js +59 -0
- package/packages/host/dist/landedbase.js.map +1 -0
- package/packages/host/dist/lantls.js +2 -2
- package/packages/host/dist/lantls.js.map +1 -1
- package/packages/host/dist/limitretry.js +2 -3
- package/packages/host/dist/limitretry.js.map +1 -1
- package/packages/host/dist/localledger.js +9 -12
- package/packages/host/dist/localledger.js.map +1 -1
- package/packages/host/dist/main.js +2 -0
- package/packages/host/dist/main.js.map +1 -1
- package/packages/host/dist/opendeliveries.d.ts +4 -0
- package/packages/host/dist/opendeliveries.js +27 -1
- package/packages/host/dist/opendeliveries.js.map +1 -1
- package/packages/host/dist/plugins/setupcontrib.js +3 -2
- package/packages/host/dist/plugins/setupcontrib.js.map +1 -1
- package/packages/host/dist/pricefetch.d.ts +80 -0
- package/packages/host/dist/pricefetch.js +289 -0
- package/packages/host/dist/pricefetch.js.map +1 -0
- package/packages/host/dist/pricegap.d.ts +11 -0
- package/packages/host/dist/pricegap.js +30 -0
- package/packages/host/dist/pricegap.js.map +1 -0
- package/packages/host/dist/repohealthscopes.js +16 -24
- package/packages/host/dist/repohealthscopes.js.map +1 -1
- package/packages/host/dist/repos.d.ts +4 -0
- package/packages/host/dist/repos.js +1 -1
- package/packages/host/dist/repos.js.map +1 -1
- package/packages/host/dist/reposkilltext.d.ts +2 -0
- package/packages/host/dist/reposkilltext.js +8 -2
- package/packages/host/dist/reposkilltext.js.map +1 -1
- package/packages/host/dist/routes/apiagentpoints.d.ts +5 -0
- package/packages/host/dist/routes/apiagentpoints.js +48 -0
- package/packages/host/dist/routes/apiagentpoints.js.map +1 -0
- package/packages/host/dist/routes/apidictate.d.ts +2 -0
- package/packages/host/dist/routes/apidictate.js +27 -0
- package/packages/host/dist/routes/apidictate.js.map +1 -0
- package/packages/host/dist/routes/apihost.js +3 -2
- package/packages/host/dist/routes/apihost.js.map +1 -1
- package/packages/host/dist/routes/apirepofiles.js +3 -1
- package/packages/host/dist/routes/apirepofiles.js.map +1 -1
- package/packages/host/dist/routes/apirepowork.js +14 -0
- package/packages/host/dist/routes/apirepowork.js.map +1 -1
- package/packages/host/dist/routes/apiroutes.js +4 -1
- package/packages/host/dist/routes/apiroutes.js.map +1 -1
- package/packages/host/dist/routes/apiskills.d.ts +3 -0
- package/packages/host/dist/routes/apiskills.js +81 -0
- package/packages/host/dist/routes/apiskills.js.map +1 -0
- package/packages/host/dist/routes/apistats.js +2 -2
- package/packages/host/dist/routes/apistats.js.map +1 -1
- package/packages/host/dist/routes/apisystem.js +3 -1
- package/packages/host/dist/routes/apisystem.js.map +1 -1
- package/packages/host/dist/routes/apitable.d.ts +2 -0
- package/packages/host/dist/routes/apitable.js.map +1 -1
- package/packages/host/dist/server/billingwire.js +5 -0
- package/packages/host/dist/server/billingwire.js.map +1 -1
- package/packages/host/dist/server/deliveries.d.ts +4 -1
- package/packages/host/dist/server/deliveries.js +38 -6
- package/packages/host/dist/server/deliveries.js.map +1 -1
- package/packages/host/dist/server/http.js +1 -1
- package/packages/host/dist/server/http.js.map +1 -1
- package/packages/host/dist/server/intentDeps.js +20 -6
- package/packages/host/dist/server/intentDeps.js.map +1 -1
- package/packages/host/dist/server/wsops.js +2 -1
- package/packages/host/dist/server/wsops.js.map +1 -1
- package/packages/host/dist/sessions/core.d.ts +1 -0
- package/packages/host/dist/sessions/ctxseries.js +7 -5
- package/packages/host/dist/sessions/ctxseries.js.map +1 -1
- package/packages/host/dist/sessions/drive.d.ts +6 -1
- package/packages/host/dist/sessions/drive.js +13 -10
- package/packages/host/dist/sessions/drive.js.map +1 -1
- package/packages/host/dist/sessions/record.js +16 -17
- package/packages/host/dist/sessions/record.js.map +1 -1
- package/packages/host/dist/sessions/sidechannel.js +1 -1
- package/packages/host/dist/sessions/sidechannel.js.map +1 -1
- package/packages/host/dist/sessions/tmux.js +6 -1
- package/packages/host/dist/sessions/tmux.js.map +1 -1
- package/packages/host/dist/sessions/turn.js +5 -0
- package/packages/host/dist/sessions/turn.js.map +1 -1
- package/packages/host/dist/sessions.d.ts +2 -1
- package/packages/host/dist/sessions.js +1 -1
- package/packages/host/dist/sessions.js.map +1 -1
- package/packages/host/dist/settle.d.ts +3 -2
- package/packages/host/dist/settle.js +13 -13
- package/packages/host/dist/settle.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/skills/skillinventory.d.ts +23 -0
- package/packages/host/dist/skills/skillinventory.js +275 -0
- package/packages/host/dist/skills/skillinventory.js.map +1 -0
- package/packages/host/dist/skills/skilllayers.d.ts +28 -0
- package/packages/host/dist/skills/skilllayers.js +73 -0
- package/packages/host/dist/skills/skilllayers.js.map +1 -0
- package/packages/host/dist/skills/skillrecommend.d.ts +42 -0
- package/packages/host/dist/skills/skillrecommend.js +171 -0
- package/packages/host/dist/skills/skillrecommend.js.map +1 -0
- package/packages/host/dist/skills/skillrefs.d.ts +2 -0
- package/packages/host/dist/skills/skillrefs.js +50 -0
- package/packages/host/dist/skills/skillrefs.js.map +1 -0
- package/packages/host/dist/skills/skilluse.d.ts +57 -0
- package/packages/host/dist/skills/skilluse.js +242 -0
- package/packages/host/dist/skills/skilluse.js.map +1 -0
- package/packages/host/dist/skills/skillweight.d.ts +18 -0
- package/packages/host/dist/skills/skillweight.js +69 -0
- package/packages/host/dist/skills/skillweight.js.map +1 -0
- package/packages/host/dist/skills/skillwrite.d.ts +56 -0
- package/packages/host/dist/skills/skillwrite.js +183 -0
- package/packages/host/dist/skills/skillwrite.js.map +1 -0
- package/packages/host/dist/sysstat.d.ts +34 -1
- package/packages/host/dist/sysstat.js +82 -14
- package/packages/host/dist/sysstat.js.map +1 -1
- package/packages/host/dist/tokenscan.js +5 -2
- package/packages/host/dist/tokenscan.js.map +1 -1
- package/packages/host/dist/tokenstats.js +7 -4
- package/packages/host/dist/tokenstats.js.map +1 -1
- package/packages/host/dist/transcript/transcriptparse.js +2 -2
- package/packages/host/dist/transcript/transcriptparse.js.map +1 -1
- package/packages/host/dist/waitclock.d.ts +12 -0
- package/packages/host/dist/waitclock.js +23 -0
- package/packages/host/dist/waitclock.js.map +1 -0
- package/packages/host/dist/weekburn.js +7 -5
- package/packages/host/dist/weekburn.js.map +1 -1
- package/packages/host/dist/worktreeleftover.js +13 -15
- package/packages/host/dist/worktreeleftover.js.map +1 -1
- package/packages/web/dist/assets/demo-DHkwSmU5.js +26 -0
- package/packages/web/dist/assets/{icons-D8RlmSLR.js → icons-5lVTFNUU.js} +1 -1
- package/packages/web/dist/assets/index-Bh4cH6X8.js +170 -0
- package/packages/web/dist/assets/index-F7VHtsLI.css +1 -0
- package/packages/web/dist/assets/shared-BvQMg9ra.js +51 -0
- package/packages/web/dist/assets/sheets-Cwi72V02.js +257 -0
- package/packages/web/dist/assets/sheets-DjU2XiUd.css +1 -0
- package/packages/web/dist/build-id.txt +1 -1
- package/packages/web/dist/buildstamp.json +1 -1
- package/packages/web/dist/index.html +7 -7
- package/packages/web/dist/sw.js +2 -2
- package/release.json +11 -3
- package/tools/repohealth/constants.mjs +34 -1
- package/tools/repohealth/fixture.json +5374 -38
- package/tools/repohealth/git.mjs +77 -0
- package/tools/repohealth/lang/dart-analyze.mjs +181 -0
- package/tools/repohealth/lang/dart-lex.mjs +494 -0
- package/tools/repohealth/lang/dart-resolve.mjs +95 -0
- package/tools/repohealth/lang/python-ast.mjs +602 -0
- package/tools/repohealth/lang/python-resolve.mjs +228 -0
- package/tools/repohealth/metrics/habits.mjs +286 -0
- package/tools/repohealth/metrics/native.mjs +542 -0
- package/tools/repohealth/metrics/untested.mjs +20 -8
- package/tools/repohealth/metrics/workspace.mjs +256 -0
- package/tools/repohealth/own.mjs +67 -5
- package/tools/repohealth/packs/dart.mjs +153 -85
- package/tools/repohealth/packs/python.mjs +51 -14
- package/tools/repohealth/plot.mjs +143 -1
- package/tools/repohealth/reach.mjs +98 -0
- package/tools/repohealth/scope.mjs +14 -1
- package/tools/repohealth/series.mjs +5 -0
- package/tools/repohealth/types.mjs +4 -0
- package/tools/repohealth.mjs +39 -5
- package/packages/web/dist/assets/demo-ad3g3HDa.js +0 -26
- package/packages/web/dist/assets/index-Csb7jynu.js +0 -170
- package/packages/web/dist/assets/index-Cz9Haocy.css +0 -1
- package/packages/web/dist/assets/shared-DBaaGttP.js +0 -51
- package/packages/web/dist/assets/sheets-CqsP9w1V.js +0 -256
- package/packages/web/dist/assets/sheets-DoUhPGK0.css +0 -1
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
// healthindex/readings: Rows to readings: ISO weeks, the per-entry values, the repo `central` override. Barrel: ../healthindex.ts (read the header there).
|
|
2
|
-
import { HEALTH_ENTRIES, HEALTH_CONTEXT_GOOD_SHARE, HEALTH_INDEX_DEFAULT_WARN_CHARS, HEALTH_NO_CLAUDE_MD } from "./types.js";
|
|
2
|
+
import { HEALTH_ENTRIES, HEALTH_OPTIONAL_ENTRIES, HEALTH_HIGHER_IS_BETTER, HEALTH_SCORE_FLOOR, HEALTH_CONTEXT_GOOD_SHARE, HEALTH_INDEX_DEFAULT_WARN_CHARS, HEALTH_NO_CLAUDE_MD } from "./types.js";
|
|
3
3
|
const posFinite = (v) => typeof v === "number" && Number.isFinite(v) && v > 0;
|
|
4
4
|
const nonNegFinite = (v) => typeof v === "number" && Number.isFinite(v) && v >= 0;
|
|
5
5
|
/** `100 · min(1, good / value)`; a value at or under 0 is 100. */
|
|
6
6
|
export function healthScore(value, good) {
|
|
7
7
|
return value <= 0 ? 100 : 100 * Math.min(1, good / value);
|
|
8
8
|
}
|
|
9
|
+
/** `100 · min(1, value / good)`, floored at `HEALTH_SCORE_FLOOR`: for an entry where more is better. */
|
|
10
|
+
export function healthScoreAtLeast(value, good) {
|
|
11
|
+
return Math.max(HEALTH_SCORE_FLOOR, value >= good ? 100 : (100 * value) / good);
|
|
12
|
+
}
|
|
13
|
+
/** One entry's score against its good line, in the entry's own direction. */
|
|
14
|
+
export function healthEntryScore(entry, value, good) {
|
|
15
|
+
return HEALTH_HIGHER_IS_BETTER.includes(entry) ? healthScoreAtLeast(value, good) : healthScore(value, good);
|
|
16
|
+
}
|
|
9
17
|
/** The Monday (UTC) of the ISO week holding `day` (`YYYY-MM-DD`), or null for a malformed day. */
|
|
10
18
|
export function isoWeekOf(day) {
|
|
11
19
|
if (typeof day !== "string" || !/^\d{4}-\d{2}-\d{2}$/.test(day))
|
|
@@ -103,6 +111,9 @@ export function healthEntryReadings(row) {
|
|
|
103
111
|
if (Array.isArray(list) && posFinite(files) && list.length <= files) {
|
|
104
112
|
values.untested = list.length / files;
|
|
105
113
|
}
|
|
114
|
+
const opt = optionalReadings(row);
|
|
115
|
+
Object.assign(values, opt.values);
|
|
116
|
+
const absent = opt.absent;
|
|
106
117
|
// The repo's own say (`central`): a disabled entry is not in the basket at
|
|
107
118
|
// all; an override REPLACES the engine's value (for size, `lineMean` — the
|
|
108
119
|
// longest file stays measured), and a failed override is absent — never the
|
|
@@ -110,23 +121,130 @@ export function healthEntryReadings(row) {
|
|
|
110
121
|
const c = centralOf(row);
|
|
111
122
|
for (const e of c.disabled) {
|
|
112
123
|
delete values[e];
|
|
124
|
+
delete absent[e];
|
|
113
125
|
if (e === "size")
|
|
114
126
|
max = undefined;
|
|
115
127
|
}
|
|
116
128
|
for (const e of c.overridden) {
|
|
117
129
|
delete values[e];
|
|
130
|
+
delete absent[e];
|
|
118
131
|
const v = row.central?.override?.[e]?.value;
|
|
119
|
-
if (!nonNegFinite(v))
|
|
132
|
+
if (!nonNegFinite(v)) {
|
|
133
|
+
// A core entry absent leaves the week unscored; an optional one is unknown, said so.
|
|
134
|
+
if (HEALTH_OPTIONAL_ENTRIES.includes(e))
|
|
135
|
+
absent[e] = "the repo's own command for it gave no usable value";
|
|
120
136
|
continue;
|
|
137
|
+
}
|
|
121
138
|
if (e === "size" && !max)
|
|
122
139
|
continue;
|
|
123
140
|
values[e] = v;
|
|
124
141
|
}
|
|
125
142
|
if (values.size === undefined)
|
|
126
143
|
max = undefined;
|
|
127
|
-
|
|
144
|
+
// A disabled or overridden entry is the repo's say, never "unrecorded".
|
|
145
|
+
const unrecorded = opt.unrecorded.filter((e) => !c.disabled.includes(e) && !c.overridden.includes(e));
|
|
146
|
+
const out = max ? { values, max } : { values };
|
|
147
|
+
if (Object.keys(absent).length)
|
|
148
|
+
out.absent = absent;
|
|
149
|
+
if (unrecorded.length)
|
|
150
|
+
out.unrecorded = unrecorded;
|
|
151
|
+
return out;
|
|
152
|
+
}
|
|
153
|
+
/** The engine's reason, cut to one readable clause (a graph reason can name many files). */
|
|
154
|
+
const REASON_MAX = 160;
|
|
155
|
+
function reasonOf(m, fallback) {
|
|
156
|
+
const r = typeof m?.reason === "string" && m.reason.trim() ? m.reason.trim() : fallback;
|
|
157
|
+
return r.length > REASON_MAX ? `${r.slice(0, REASON_MAX - 1).trimEnd()}…` : r;
|
|
158
|
+
}
|
|
159
|
+
function median(xs) {
|
|
160
|
+
const s = [...xs].sort((a, b) => a - b);
|
|
161
|
+
const n = s.length;
|
|
162
|
+
return n % 2 ? s[(n - 1) / 2] : (s[n / 2 - 1] + s[n / 2]) / 2;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The six entries P2 added, read off fields the engine already writes
|
|
166
|
+
* (calibration: `docs/analysis/health-metrics/P2.md`). Each comes out as a
|
|
167
|
+
* value, an absence with the engine's own reason (UNKNOWN that week), or
|
|
168
|
+
* unrecorded (the row has no field: an engine that never took it).
|
|
169
|
+
*
|
|
170
|
+
* - `dups`: `dups.pairsPerKloc` — the engine divides by the lines its analyzer
|
|
171
|
+
* READ, so code nobody parsed does not dilute it.
|
|
172
|
+
* - `deadExports`: the list's length per 1,000 source lines (`classics.loc`).
|
|
173
|
+
* The list is whole (never capped). The denominator is every source line,
|
|
174
|
+
* so a language with no parser reads LOW here — bounded by coverage: past a
|
|
175
|
+
* fifth of unread files the entry is unknown anyway.
|
|
176
|
+
* - `cycles`: `graph.cycleFiles / graph.files` — a share, so growth alone
|
|
177
|
+
* does not move it.
|
|
178
|
+
* - `cochange`: the median, over the hotspot files, of each one's median
|
|
179
|
+
* co-changed files in its group — what a typical change to a busy file costs.
|
|
180
|
+
* - `fixAfterChange`, `testsWithCode`: `habits.value.fix.rate` and
|
|
181
|
+
* `habits.value.testsWithCode.rate`, each its own `{value, reason}`.
|
|
182
|
+
*/
|
|
183
|
+
function optionalReadings(row) {
|
|
184
|
+
const values = {};
|
|
185
|
+
const absent = {};
|
|
186
|
+
const unrecorded = [];
|
|
187
|
+
const odd = "the reading came back in a shape this version cannot read";
|
|
188
|
+
const take = (e, field, read) => {
|
|
189
|
+
if (field === undefined) {
|
|
190
|
+
unrecorded.push(e);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const v = field?.value;
|
|
194
|
+
if (v === null || v === undefined || typeof v !== "object") {
|
|
195
|
+
absent[e] = v === null || v === undefined ? reasonOf(field, "not read at this commit") : odd;
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const n = read(v);
|
|
199
|
+
if (n === null || !nonNegFinite(n))
|
|
200
|
+
absent[e] = odd;
|
|
201
|
+
else
|
|
202
|
+
values[e] = n;
|
|
203
|
+
};
|
|
204
|
+
take("dups", row.dups, (v) => {
|
|
205
|
+
const p = v.pairsPerKloc;
|
|
206
|
+
return nonNegFinite(p) ? p : null;
|
|
207
|
+
});
|
|
208
|
+
const loc = row.classics?.value?.loc;
|
|
209
|
+
take("deadExports", row.deadExports, (v) => (Array.isArray(v) && posFinite(loc) ? v.length / (loc / 1000) : null));
|
|
210
|
+
if (Array.isArray(row.deadExports?.value) && !posFinite(loc))
|
|
211
|
+
absent.deadExports = "no source line count at this commit to divide by";
|
|
212
|
+
take("cycles", row.graph, (v) => {
|
|
213
|
+
const g = v;
|
|
214
|
+
return posFinite(g.files) && nonNegFinite(g.cycleFiles) && g.cycleFiles <= g.files ? g.cycleFiles / g.files : null;
|
|
215
|
+
});
|
|
216
|
+
take("cochange", row.cochange, (v) => {
|
|
217
|
+
const hs = v.hotspots;
|
|
218
|
+
if (!Array.isArray(hs) || hs.length === 0)
|
|
219
|
+
return null;
|
|
220
|
+
const meds = [];
|
|
221
|
+
for (const h of hs) {
|
|
222
|
+
const m = h?.median;
|
|
223
|
+
if (!nonNegFinite(m))
|
|
224
|
+
return null;
|
|
225
|
+
meds.push(m);
|
|
226
|
+
}
|
|
227
|
+
return median(meds);
|
|
228
|
+
});
|
|
229
|
+
// `habits` is one family with a `{value, reason}` per sub-reading; a family-wide absence is each one's.
|
|
230
|
+
const habits = row.habits;
|
|
231
|
+
const sub = (k) => {
|
|
232
|
+
if (habits === undefined)
|
|
233
|
+
return undefined;
|
|
234
|
+
if (!habits?.value || typeof habits.value !== "object")
|
|
235
|
+
return { value: null, reason: habits?.reason };
|
|
236
|
+
const s = habits.value[k];
|
|
237
|
+
return s && typeof s === "object" ? s : { value: null, reason: odd };
|
|
238
|
+
};
|
|
239
|
+
const rateOf = (v) => {
|
|
240
|
+
const r = v.rate;
|
|
241
|
+
return nonNegFinite(r) && r <= 1 ? r : null;
|
|
242
|
+
};
|
|
243
|
+
take("fixAfterChange", sub("fix"), rateOf);
|
|
244
|
+
take("testsWithCode", sub("testsWithCode"), rateOf);
|
|
245
|
+
return { values, absent, unrecorded };
|
|
128
246
|
}
|
|
129
|
-
/** The
|
|
247
|
+
/** The values alone — `healthEntryReadings(row).values`. The warn line is not read here any more (scores read it). */
|
|
130
248
|
export function healthEntryValues(row, _contextWarnChars) {
|
|
131
249
|
return healthEntryReadings(row).values;
|
|
132
250
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readings.js","sourceRoot":"","sources":["../../src/healthindex/readings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"readings.js","sourceRoot":"","sources":["../../src/healthindex/readings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type HealthEntry, type HealthIndexSeries } from "./types.js";
|
|
2
|
+
import { type HealthCoverage, type HealthCapKind } from "./coverage.js";
|
|
2
3
|
import { type HealthCommitSeries } from "./commits.js";
|
|
3
4
|
import { type HealthMove } from "./move.js";
|
|
4
5
|
import { type HealthWords } from "./words.js";
|
|
@@ -18,6 +19,10 @@ export interface RepoHealthIndex {
|
|
|
18
19
|
alert?: "warn" | "severe" | null;
|
|
19
20
|
/** That worst alert's sentence; null with it. */
|
|
20
21
|
alertText?: string | null;
|
|
22
|
+
/** Which cap set the value (`coverage.ts`); null = the mean did. Absent = an older host. */
|
|
23
|
+
capKind?: HealthCapKind | null;
|
|
24
|
+
/** What applied and what was measured on the latest week, with the repo's gates. Absent = an older host. */
|
|
25
|
+
coverage?: HealthCoverage;
|
|
21
26
|
}
|
|
22
27
|
/** The wire summary for one repo, or null where there is no index (the field stays ABSENT, never 0). */
|
|
23
28
|
export declare function repoHealthIndexOf(series: HealthIndexSeries | null, move?: HealthMove | null): RepoHealthIndex | null;
|
|
@@ -14,6 +14,8 @@ export function repoHealthIndexOf(series, move) {
|
|
|
14
14
|
cappedBy: last.cappedBy,
|
|
15
15
|
alert: last.alerts[0]?.level ?? null,
|
|
16
16
|
alertText: last.alerts[0]?.text ?? null,
|
|
17
|
+
capKind: last.capKind ?? null,
|
|
18
|
+
...(last.coverage ? { coverage: last.coverage } : {}),
|
|
17
19
|
};
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=repoindex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repoindex.js","sourceRoot":"","sources":["../../src/healthindex/repoindex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repoindex.js","sourceRoot":"","sources":["../../src/healthindex/repoindex.ts"],"names":[],"mappings":"AAgCA,wGAAwG;AACxG,MAAM,UAAU,iBAAiB,CAAC,MAAgC,EAAE,IAAwB;IAC1F,MAAM,GAAG,GAAG,MAAM,EAAE,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACxE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI;QACpC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI;QACvC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type HealthEntry, type HealthSeriesRow, type HealthIndexSeries } from "./types.js";
|
|
2
|
+
import { type HealthCoverage, type HealthCapKind } from "./coverage.js";
|
|
2
3
|
/** Plain names for an entry, as the cap sentence names it. */
|
|
3
4
|
export declare const HEALTH_ENTRY_LABEL: Record<HealthEntry, string>;
|
|
4
5
|
/**
|
|
@@ -22,5 +23,7 @@ export declare function healthRowScore(row: HealthSeriesRow, contextWarnChars: n
|
|
|
22
23
|
mean: number;
|
|
23
24
|
scores: Partial<Record<HealthEntry, number>>;
|
|
24
25
|
cappedBy: HealthEntry | null;
|
|
26
|
+
capKind: HealthCapKind | null;
|
|
27
|
+
coverage: HealthCoverage;
|
|
25
28
|
} | null;
|
|
26
29
|
/** One scored commit (a series row) for the phone's commits axis. No lnLink, contributions or move. */
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
// healthindex/score: The absolute score: per-entry scores, alerts, the capped headline, the weekly series. Barrel: ../healthindex.ts (read the header there).
|
|
2
|
-
import { HEALTH_ENTRIES, HEALTH_GOOD, HEALTH_SCORE_CAP_GAP, HEALTH_ALERT_WARN, HEALTH_ALERT_SEVERE } from "./types.js";
|
|
3
|
-
import { healthScore, healthWeeks, healthContextGood, healthEntryReadings, centralOf, treeOf, DAY_MS } from "./readings.js";
|
|
2
|
+
import { HEALTH_ENTRIES, HEALTH_OPTIONAL_ENTRIES, HEALTH_GOOD, HEALTH_SCORE_CAP_GAP, HEALTH_ALERT_WARN, HEALTH_ALERT_SEVERE } from "./types.js";
|
|
3
|
+
import { healthScore, healthEntryScore, healthWeeks, healthContextGood, healthEntryReadings, centralOf, treeOf, DAY_MS } from "./readings.js";
|
|
4
4
|
import { wordOf } from "../wordof.js";
|
|
5
|
+
import { healthCoverage, healthHeadline } from "./coverage.js";
|
|
5
6
|
const daysBetween = (a, b) => Math.round((Date.parse(`${b}T00:00:00Z`) - Date.parse(`${a}T00:00:00Z`)) / DAY_MS);
|
|
6
7
|
// ── words: one wording for the phone and VS Code ────────────────────────────
|
|
7
8
|
/** A whole number with thousands separators, locale-free: `8,397`. */
|
|
8
9
|
const commas = (n) => Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
9
10
|
const pct = (x) => `${Math.round(x * 100)}%`;
|
|
10
11
|
const oneDp = (x) => (Math.round(x * 10) / 10).toFixed(1);
|
|
12
|
+
const twoDp = (x) => (Math.round(x * 100) / 100).toFixed(2);
|
|
13
|
+
/** A share with one decimal under 10% (`0.6%`), whole above: a cycle share lives near 1%. */
|
|
14
|
+
const finePct = (x) => (x < 0.1 ? `${(Math.round(x * 1000) / 10).toFixed(1)}%` : pct(x));
|
|
11
15
|
/** Plain names for an entry, as the cap sentence names it. */
|
|
12
16
|
export const HEALTH_ENTRY_LABEL = {
|
|
13
17
|
size: "file length",
|
|
@@ -15,6 +19,12 @@ export const HEALTH_ENTRY_LABEL = {
|
|
|
15
19
|
hatches: "escape hatches",
|
|
16
20
|
context: "CLAUDE.md + skill descriptions",
|
|
17
21
|
untested: "untested modules",
|
|
22
|
+
dups: "duplicate code",
|
|
23
|
+
deadExports: "dead exports",
|
|
24
|
+
cycles: "import cycles",
|
|
25
|
+
cochange: "files that change together",
|
|
26
|
+
fixAfterChange: "fixes after a change",
|
|
27
|
+
testsWithCode: "tests changed with code",
|
|
18
28
|
};
|
|
19
29
|
function alertText(level, subject, value, good, path) {
|
|
20
30
|
const body = (() => {
|
|
@@ -32,12 +42,24 @@ function alertText(level, subject, value, good, path) {
|
|
|
32
42
|
return `CLAUDE.md + skill descriptions are ${commas(value)} chars (good: under ${commas(good)})`;
|
|
33
43
|
case "untested":
|
|
34
44
|
return `${pct(value)} of source files have no test reaching them (good: under ${pct(good)})`;
|
|
45
|
+
case "dups":
|
|
46
|
+
return `${twoDp(value)} near-duplicate block pairs per 1,000 lines (good: under ${twoDp(good)})`;
|
|
47
|
+
case "deadExports":
|
|
48
|
+
return `${oneDp(value)} exports per 1,000 lines that no other file uses (good: under ${oneDp(good)})`;
|
|
49
|
+
case "cycles":
|
|
50
|
+
return `${finePct(value)} of the import graph's files sit in an import cycle (good: under ${finePct(good)})`;
|
|
51
|
+
case "cochange":
|
|
52
|
+
return `a change to one of the busiest files also changes ${oneDp(value)} other files beside it (median; good: under ${oneDp(good)})`;
|
|
53
|
+
case "fixAfterChange":
|
|
54
|
+
return `${pct(value)} of recent source commits fix what a commit in the week before changed (good: under ${pct(good)})`;
|
|
55
|
+
case "testsWithCode":
|
|
56
|
+
return `only ${pct(value)} of recent source commits also change a test (good: at least ${pct(good)})`;
|
|
35
57
|
}
|
|
36
58
|
})();
|
|
37
59
|
return `${level}: ${body}`;
|
|
38
60
|
}
|
|
39
61
|
function alertOf(entry, subject, value, good, path) {
|
|
40
|
-
const score =
|
|
62
|
+
const score = healthEntryScore(entry, value, good);
|
|
41
63
|
if (!(score < HEALTH_ALERT_WARN))
|
|
42
64
|
return null;
|
|
43
65
|
const level = score < HEALTH_ALERT_SEVERE ? "severe" : "warn";
|
|
@@ -55,10 +77,23 @@ export function healthCapWords(s) {
|
|
|
55
77
|
const worst = Math.round(s.value - HEALTH_SCORE_CAP_GAP);
|
|
56
78
|
return `Capped at ${Math.round(s.value)} by ${wordOf(HEALTH_ENTRY_LABEL, s.cappedBy, "an entry this app version cannot name")} (${worst} of 100): the entries average ${Math.round(s.mean)}, and the score stays within ${HEALTH_SCORE_CAP_GAP} of its worst entry.`;
|
|
57
79
|
}
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
80
|
+
/**
|
|
81
|
+
* One week's score from its readings; null when any enabled CORE entry is
|
|
82
|
+
* absent, none is enabled, or every enabled entry is UNKNOWN (`coverage.ts`).
|
|
83
|
+
* An optional entry (`HEALTH_OPTIONAL_ENTRIES`) the row could not read is
|
|
84
|
+
* unknown with the engine's reason; one the row has no field for does not
|
|
85
|
+
* apply on that row. Unknown entries leave the mean, the worst-entry cap and
|
|
86
|
+
* the alerts; the coverage and gate caps then apply (`healthHeadline`).
|
|
87
|
+
*/
|
|
88
|
+
function scoreWeek(r, row, disabled, contextWarnChars) {
|
|
89
|
+
const all = HEALTH_ENTRIES.filter((e) => !disabled.includes(e) && !(r.unrecorded ?? []).includes(e));
|
|
90
|
+
const absent = r.absent ?? {};
|
|
91
|
+
if (all.length === 0 || all.some((e) => r.values[e] === undefined && !(HEALTH_OPTIONAL_ENTRIES.includes(e) && absent[e])))
|
|
92
|
+
return null;
|
|
93
|
+
const coverage = healthCoverage(row, all, absent);
|
|
94
|
+
const unknown = new Set(coverage.items.filter((i) => i.kind === "entry" && i.state === "unknown").map((i) => i.key));
|
|
95
|
+
const enabled = all.filter((e) => !unknown.has(e));
|
|
96
|
+
if (enabled.length === 0)
|
|
62
97
|
return null;
|
|
63
98
|
const ctxGood = healthContextGood(contextWarnChars);
|
|
64
99
|
const scores = {};
|
|
@@ -84,7 +119,7 @@ function scoreWeek(r, disabled, contextWarnChars) {
|
|
|
84
119
|
continue;
|
|
85
120
|
}
|
|
86
121
|
const good = e === "context" ? ctxGood : HEALTH_GOOD[e];
|
|
87
|
-
scores[e] =
|
|
122
|
+
scores[e] = healthEntryScore(e, v, good);
|
|
88
123
|
const a = alertOf(e, e, v, good);
|
|
89
124
|
if (a)
|
|
90
125
|
alerts.push(a);
|
|
@@ -96,10 +131,9 @@ function scoreWeek(r, disabled, contextWarnChars) {
|
|
|
96
131
|
for (const e of enabled)
|
|
97
132
|
if (scores[e] < scores[worst])
|
|
98
133
|
worst = e;
|
|
99
|
-
const
|
|
100
|
-
const index = Math.min(mean, capped);
|
|
134
|
+
const { index, capKind } = healthHeadline(mean, scores[worst], coverage);
|
|
101
135
|
alerts.sort((a, b) => a.score - b.score);
|
|
102
|
-
return { index, mean, scores, sizeParts, cappedBy:
|
|
136
|
+
return { index, mean, scores, sizeParts, cappedBy: capKind === "worst" ? worst : null, capKind, coverage, alerts, enabled };
|
|
103
137
|
}
|
|
104
138
|
/**
|
|
105
139
|
* The scored series. `null` when no week has every enabled entry — no score
|
|
@@ -110,14 +144,14 @@ export function healthIndex(rows, contextWarnChars) {
|
|
|
110
144
|
for (const { week, row } of healthWeeks(rows)) {
|
|
111
145
|
const c = centralOf(row);
|
|
112
146
|
const readings = healthEntryReadings(row);
|
|
113
|
-
const s = scoreWeek(readings, c.disabled, contextWarnChars);
|
|
147
|
+
const s = scoreWeek(readings, row, c.disabled, contextWarnChars);
|
|
114
148
|
if (!s)
|
|
115
149
|
continue;
|
|
116
150
|
const prereg = typeof row.prereg === "string" ? row.prereg : null;
|
|
117
151
|
const prev = points[points.length - 1];
|
|
118
152
|
const base = {
|
|
119
153
|
week, index: s.index, mean: s.mean, scores: s.scores, sizeParts: s.sizeParts,
|
|
120
|
-
cappedBy: s.cappedBy, alerts: s.alerts, values: readings.values, prereg,
|
|
154
|
+
cappedBy: s.cappedBy, capKind: s.capKind, coverage: s.coverage, alerts: s.alerts, values: readings.values, prereg,
|
|
121
155
|
central: c.fp, disabled: c.disabled, overridden: c.overridden, tree: treeOf(row),
|
|
122
156
|
};
|
|
123
157
|
if (!prev) {
|
|
@@ -125,7 +159,9 @@ export function healthIndex(rows, contextWarnChars) {
|
|
|
125
159
|
continue;
|
|
126
160
|
}
|
|
127
161
|
const spanDays = daysBetween(prev.week, week);
|
|
128
|
-
|
|
162
|
+
// A change in WHAT was measured (an entry turning unknown, a gate declared) moves the basket like a central change.
|
|
163
|
+
const gapReason = prev.prereg !== prereg ? "prereg" : prev.central !== c.fp ? "central"
|
|
164
|
+
: (prev.coverage?.key ?? "") !== s.coverage.key ? "coverage" : null;
|
|
129
165
|
if (gapReason) {
|
|
130
166
|
points.push({ ...base, gap: true, lnLink: null, comparable: 0, contributions: {}, spanDays, gapReason });
|
|
131
167
|
continue;
|
|
@@ -149,8 +185,8 @@ export function healthIndex(rows, contextWarnChars) {
|
|
|
149
185
|
}
|
|
150
186
|
/** One row by the SAME formula a week uses (`scoreWeek`); null when an enabled entry is absent. */
|
|
151
187
|
export function healthRowScore(row, contextWarnChars) {
|
|
152
|
-
const s = scoreWeek(healthEntryReadings(row), centralOf(row).disabled, contextWarnChars);
|
|
153
|
-
return s ? { index: s.index, mean: s.mean, scores: s.scores, cappedBy: s.cappedBy } : null;
|
|
188
|
+
const s = scoreWeek(healthEntryReadings(row), row, centralOf(row).disabled, contextWarnChars);
|
|
189
|
+
return s ? { index: s.index, mean: s.mean, scores: s.scores, cappedBy: s.cappedBy, capKind: s.capKind, coverage: s.coverage } : null;
|
|
154
190
|
}
|
|
155
191
|
/** One scored commit (a series row) for the phone's commits axis. No lnLink, contributions or move. */
|
|
156
192
|
//# sourceMappingURL=score.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/healthindex/score.ts"],"names":[],"mappings":"AAAA,8JAA8J;AAC9J,OAAO,EAAE,cAAc,EAAoB,WAAW,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAwI,MAAM,YAAY,CAAC;AAC/Q,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAA4B,mBAAmB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACtJ,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CACnD,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAErF,+EAA+E;AAE/E,sEAAsE;AACtE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AACrG,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7D,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,gCAAgC;IACzC,QAAQ,EAAE,kBAAkB;CAC7B,CAAC;AAEF,SAAS,SAAS,CAAC,KAA2B,EAAE,OAA2B,EAAE,KAAa,EAAE,IAAY,EAAE,IAAa;IACrH,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,oEAAoE;QACpE,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,KAAK;gBACR,OAAO,GAAG,IAAI,IAAI,kBAAkB,OAAO,MAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACjG,KAAK,UAAU;gBACb,OAAO,sCAAsC,MAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACnG,KAAK,SAAS;gBACZ,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,6DAA6D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAChG,KAAK,SAAS;gBACZ,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,4DAA4D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACnG,KAAK,SAAS;gBACZ,OAAO,sCAAsC,MAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACnG,KAAK,UAAU;gBACb,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,4DAA4D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,OAAO,CAAC,KAAkB,EAAE,OAA2B,EAAE,KAAa,EAAE,IAAY,EAAE,IAAoB;IACjH,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC,KAAK,GAAG,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC;IAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACnI,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,CAAgE;IAC7F,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,oBAAoB,CAAC,CAAC;IACzD,OAAO,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAAE,uCAAuC,CAAC,KAAK,KAAK,iCAAiC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,oBAAoB,sBAAsB,CAAC;AACvQ,CAAC;AAED,qGAAqG;AACrG,SAAS,SAAS,CAAC,CAAsB,EAAE,QAAgC,EAAE,gBAA+B;IAC1G,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,MAAM,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,IAAI,SAAS,GAA2B,IAAI,CAAC;IAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC;QAChC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAI,CAAC;YACjB,SAAS,GAAG;gBACV,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACnE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;aACpF,CAAC;YACF,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACxE,yEAAyE;YACzE,wDAAwD;YACxD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,uEAAuE;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,IAAI,KAAK,GAAgB,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAK,MAAM,CAAC,CAAC,CAAY,GAAI,MAAM,CAAC,KAAK,CAAY;YAAE,KAAK,GAAG,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAI,MAAM,CAAC,KAAK,CAAY,GAAG,oBAAoB,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,IAAgC,EAChC,gBAA+B;IAE/B,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC5D,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS;YAC5E,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;YACvE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;SACjF,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACrG,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/F,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACzG,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3B,MAAM,aAAa,GAAyC,EAAE,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;gBAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ;SACpG,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,cAAc,CAC5B,GAAoB,EACpB,gBAA+B;IAE/B,MAAM,CAAC,GAAG,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACzF,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC;AAED,uGAAuG"}
|
|
1
|
+
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/healthindex/score.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import type { HealthCoverage, HealthCapKind } from "./coverage.js";
|
|
2
|
+
export declare const HEALTH_ENTRIES: readonly ["size", "retouch", "hatches", "context", "untested", "dups", "deadExports", "cycles", "cochange", "fixAfterChange", "testsWithCode"];
|
|
2
3
|
export type HealthEntry = (typeof HEALTH_ENTRIES)[number];
|
|
4
|
+
/**
|
|
5
|
+
* The entries a week may be scored WITHOUT: where the row's reading is absent
|
|
6
|
+
* (`{value: null, reason}` — no parser for the language, a quiet window, a
|
|
7
|
+
* shallow clone), the entry is UNKNOWN (`coverage.ts`): out of the mean, one
|
|
8
|
+
* applicable dimension nobody measured, never 100. The first five predate
|
|
9
|
+
* coverage and keep their old rule (any one absent = no score that week).
|
|
10
|
+
* A row with NO field for one of these at all comes from an engine that never
|
|
11
|
+
* took the reading; there the entry does not apply on that row (P2,
|
|
12
|
+
* `docs/analysis/health-metrics/P2.md`).
|
|
13
|
+
*/
|
|
14
|
+
export declare const HEALTH_OPTIONAL_ENTRIES: readonly HealthEntry[];
|
|
15
|
+
/** Entries where MORE is better: scored `100 · min(1, value / good)`, floored at `HEALTH_SCORE_FLOOR`. */
|
|
16
|
+
export declare const HEALTH_HIGHER_IS_BETTER: readonly HealthEntry[];
|
|
17
|
+
/** The lowest score a higher-is-better entry can get: the geometric mean needs a score above 0. */
|
|
18
|
+
export declare const HEALTH_SCORE_FLOOR = 1;
|
|
3
19
|
/**
|
|
4
20
|
* The GOOD value of each reading — at or under it, the entry scores 100.
|
|
5
21
|
* Opinion, and PROVISIONAL: picked by the owner from the repos on this
|
|
@@ -21,6 +37,18 @@ export declare const HEALTH_GOOD: {
|
|
|
21
37
|
readonly hatches: 2;
|
|
22
38
|
/** Share of source files no test reaches. */
|
|
23
39
|
readonly untested: 0.2;
|
|
40
|
+
/** Near-duplicate block pairs per 1,000 lines the analyzer read (engine `dups.pairsPerKloc`). */
|
|
41
|
+
readonly dups: 0.25;
|
|
42
|
+
/** Exports no other file names, per 1,000 source lines. */
|
|
43
|
+
readonly deadExports: 1.5;
|
|
44
|
+
/** Share of import-graph files that sit in an import cycle. */
|
|
45
|
+
readonly cycles: 0.01;
|
|
46
|
+
/** Median, over the busiest files, of how many other files in the same group change with one. */
|
|
47
|
+
readonly cochange: 5;
|
|
48
|
+
/** Share of recent source commits that fix what another commit changed in the week before. */
|
|
49
|
+
readonly fixAfterChange: 0.1;
|
|
50
|
+
/** Share of recent source commits that also change a test. HIGHER is better: at or OVER it scores 100. */
|
|
51
|
+
readonly testsWithCode: 0.5;
|
|
24
52
|
};
|
|
25
53
|
/**
|
|
26
54
|
* Context's good line, as a share of the repo's warn line: all of it. The setup
|
|
@@ -92,6 +120,36 @@ export interface HealthSeriesRow {
|
|
|
92
120
|
untested?: {
|
|
93
121
|
value?: unknown[] | null;
|
|
94
122
|
} | null;
|
|
123
|
+
dups?: {
|
|
124
|
+
value?: {
|
|
125
|
+
pairsPerKloc?: unknown;
|
|
126
|
+
} | null;
|
|
127
|
+
reason?: unknown;
|
|
128
|
+
} | null;
|
|
129
|
+
deadExports?: {
|
|
130
|
+
value?: unknown[] | null;
|
|
131
|
+
reason?: unknown;
|
|
132
|
+
} | null;
|
|
133
|
+
graph?: {
|
|
134
|
+
value?: {
|
|
135
|
+
files?: unknown;
|
|
136
|
+
cycleFiles?: unknown;
|
|
137
|
+
} | null;
|
|
138
|
+
reason?: unknown;
|
|
139
|
+
} | null;
|
|
140
|
+
cochange?: {
|
|
141
|
+
value?: {
|
|
142
|
+
hotspots?: unknown;
|
|
143
|
+
} | null;
|
|
144
|
+
reason?: unknown;
|
|
145
|
+
} | null;
|
|
146
|
+
habits?: {
|
|
147
|
+
value?: {
|
|
148
|
+
fix?: unknown;
|
|
149
|
+
testsWithCode?: unknown;
|
|
150
|
+
} | null;
|
|
151
|
+
reason?: unknown;
|
|
152
|
+
} | null;
|
|
95
153
|
classics?: {
|
|
96
154
|
value?: {
|
|
97
155
|
loc?: unknown;
|
|
@@ -100,6 +158,20 @@ export interface HealthSeriesRow {
|
|
|
100
158
|
} | null;
|
|
101
159
|
/** The repo's disables and overrides in force on this row; absent = none. */
|
|
102
160
|
central?: HealthRowCentral | null;
|
|
161
|
+
/** Which index dimensions each active pack could read (engine `reach.mjs`); absent = an older engine. Read by `coverage.ts`. */
|
|
162
|
+
reach?: {
|
|
163
|
+
value?: {
|
|
164
|
+
packs?: unknown;
|
|
165
|
+
} | null;
|
|
166
|
+
} | null;
|
|
167
|
+
/** The repo's own readings (engine `own.mjs`), HEAD rows only. The index reads only their `gate`s (`coverage.ts`). */
|
|
168
|
+
own?: {
|
|
169
|
+
readings?: unknown;
|
|
170
|
+
gates?: unknown;
|
|
171
|
+
refused?: unknown;
|
|
172
|
+
unreadGates?: unknown;
|
|
173
|
+
notRun?: unknown;
|
|
174
|
+
} | null;
|
|
103
175
|
}
|
|
104
176
|
/** `row.central` — written by the engine's `central.mjs`. */
|
|
105
177
|
export interface HealthRowCentral {
|
|
@@ -144,16 +216,20 @@ export interface HealthAlert {
|
|
|
144
216
|
export interface HealthIndexPoint {
|
|
145
217
|
/** The ISO week's Monday, `YYYY-MM-DD` (UTC). */
|
|
146
218
|
week: string;
|
|
147
|
-
/** The headline SCORE, 0–100: `min(mean, worst + HEALTH_SCORE_CAP_GAP)
|
|
219
|
+
/** The headline SCORE, 0–100: `min(mean, worst + HEALTH_SCORE_CAP_GAP, coverage cap, gate cap)` (`coverage.ts`). */
|
|
148
220
|
index: number;
|
|
149
|
-
/** Geometric mean of the
|
|
221
|
+
/** Geometric mean of the MEASURED entries' scores (an unknown entry is out), before any cap. */
|
|
150
222
|
mean: number;
|
|
151
|
-
/** Each
|
|
223
|
+
/** Each measured entry's score, 0–100 (an unknown entry has none). */
|
|
152
224
|
scores: Partial<Record<HealthEntry, number>>;
|
|
153
225
|
/** Size's two sub-readings; null where size is disabled. */
|
|
154
226
|
sizeParts: HealthSizeParts | null;
|
|
155
|
-
/** The worst entry when the cap set the headline
|
|
227
|
+
/** The worst entry when the WORST-ENTRY cap set the headline, else null. */
|
|
156
228
|
cappedBy: HealthEntry | null;
|
|
229
|
+
/** Which cap set the headline; null when the mean did. Optional: absent from an older host. */
|
|
230
|
+
capKind?: HealthCapKind | null;
|
|
231
|
+
/** What applied this week, what was measured, and the repo's gates. Optional: absent from an older host. */
|
|
232
|
+
coverage?: HealthCoverage;
|
|
157
233
|
/** Every entry or size sub-reading under `HEALTH_ALERT_WARN`, worst first. */
|
|
158
234
|
alerts: HealthAlert[];
|
|
159
235
|
/** A prereg or `central` change since the previous scored week: the score
|
|
@@ -184,7 +260,7 @@ export interface HealthIndexPoint {
|
|
|
184
260
|
/** Why a gap was marked: the engine's definition moved, or the repo's own
|
|
185
261
|
* `central` config moved. (`nothing` is no longer produced: every scored
|
|
186
262
|
* week has every enabled entry.) */
|
|
187
|
-
gapReason?: "prereg" | "central" | "nothing";
|
|
263
|
+
gapReason?: "prereg" | "central" | "coverage" | "nothing";
|
|
188
264
|
/** The repo's `central` fingerprint this week; "" = none applied. */
|
|
189
265
|
central: string;
|
|
190
266
|
/** Entries the repo disabled this week — out of the mean, not absent readings. */
|
|
@@ -1,5 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export const HEALTH_ENTRIES = [
|
|
2
|
+
"size", "retouch", "hatches", "context", "untested",
|
|
3
|
+
"dups", "deadExports", "cycles", "cochange", "fixAfterChange", "testsWithCode",
|
|
4
|
+
];
|
|
5
|
+
/**
|
|
6
|
+
* The entries a week may be scored WITHOUT: where the row's reading is absent
|
|
7
|
+
* (`{value: null, reason}` — no parser for the language, a quiet window, a
|
|
8
|
+
* shallow clone), the entry is UNKNOWN (`coverage.ts`): out of the mean, one
|
|
9
|
+
* applicable dimension nobody measured, never 100. The first five predate
|
|
10
|
+
* coverage and keep their old rule (any one absent = no score that week).
|
|
11
|
+
* A row with NO field for one of these at all comes from an engine that never
|
|
12
|
+
* took the reading; there the entry does not apply on that row (P2,
|
|
13
|
+
* `docs/analysis/health-metrics/P2.md`).
|
|
14
|
+
*/
|
|
15
|
+
export const HEALTH_OPTIONAL_ENTRIES = [
|
|
16
|
+
"dups", "deadExports", "cycles", "cochange", "fixAfterChange", "testsWithCode",
|
|
17
|
+
];
|
|
18
|
+
/** Entries where MORE is better: scored `100 · min(1, value / good)`, floored at `HEALTH_SCORE_FLOOR`. */
|
|
19
|
+
export const HEALTH_HIGHER_IS_BETTER = ["testsWithCode"];
|
|
20
|
+
/** The lowest score a higher-is-better entry can get: the geometric mean needs a score above 0. */
|
|
21
|
+
export const HEALTH_SCORE_FLOOR = 1;
|
|
3
22
|
/**
|
|
4
23
|
* The GOOD value of each reading — at or under it, the entry scores 100.
|
|
5
24
|
* Opinion, and PROVISIONAL: picked by the owner from the repos on this
|
|
@@ -21,6 +40,20 @@ export const HEALTH_GOOD = {
|
|
|
21
40
|
hatches: 2.0,
|
|
22
41
|
/** Share of source files no test reaches. */
|
|
23
42
|
untested: 0.2,
|
|
43
|
+
// The six below were calibrated on the HEAD of six owner repos on 2026-11-09
|
|
44
|
+
// (table and argument: docs/analysis/health-metrics/P2.md). Provisional too.
|
|
45
|
+
/** Near-duplicate block pairs per 1,000 lines the analyzer read (engine `dups.pairsPerKloc`). */
|
|
46
|
+
dups: 0.25,
|
|
47
|
+
/** Exports no other file names, per 1,000 source lines. */
|
|
48
|
+
deadExports: 1.5,
|
|
49
|
+
/** Share of import-graph files that sit in an import cycle. */
|
|
50
|
+
cycles: 0.01,
|
|
51
|
+
/** Median, over the busiest files, of how many other files in the same group change with one. */
|
|
52
|
+
cochange: 5,
|
|
53
|
+
/** Share of recent source commits that fix what another commit changed in the week before. */
|
|
54
|
+
fixAfterChange: 0.1,
|
|
55
|
+
/** Share of recent source commits that also change a test. HIGHER is better: at or OVER it scores 100. */
|
|
56
|
+
testsWithCode: 0.5,
|
|
24
57
|
};
|
|
25
58
|
/**
|
|
26
59
|
* Context's good line, as a share of the repo's warn line: all of it. The setup
|