waterplane 0.1.22 → 0.1.25

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.
Files changed (144) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/SECURITY.md +1 -1
  3. package/node_modules/@waterplane/shared/dist/healthindex/commits.d.ts +1 -1
  4. package/node_modules/@waterplane/shared/dist/healthindex/commits.js +2 -2
  5. package/node_modules/@waterplane/shared/dist/healthindex/commits.js.map +1 -1
  6. package/node_modules/@waterplane/shared/dist/healthindex/coverage.d.ts +128 -0
  7. package/node_modules/@waterplane/shared/dist/healthindex/coverage.js +343 -0
  8. package/node_modules/@waterplane/shared/dist/healthindex/coverage.js.map +1 -0
  9. package/node_modules/@waterplane/shared/dist/healthindex/readings.d.ts +9 -1
  10. package/node_modules/@waterplane/shared/dist/healthindex/readings.js +122 -4
  11. package/node_modules/@waterplane/shared/dist/healthindex/readings.js.map +1 -1
  12. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.d.ts +5 -0
  13. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js +2 -0
  14. package/node_modules/@waterplane/shared/dist/healthindex/repoindex.js.map +1 -1
  15. package/node_modules/@waterplane/shared/dist/healthindex/score.d.ts +3 -0
  16. package/node_modules/@waterplane/shared/dist/healthindex/score.js +52 -16
  17. package/node_modules/@waterplane/shared/dist/healthindex/score.js.map +1 -1
  18. package/node_modules/@waterplane/shared/dist/healthindex/types.d.ts +82 -6
  19. package/node_modules/@waterplane/shared/dist/healthindex/types.js +35 -2
  20. package/node_modules/@waterplane/shared/dist/healthindex/types.js.map +1 -1
  21. package/node_modules/@waterplane/shared/dist/healthindex/words.js +65 -6
  22. package/node_modules/@waterplane/shared/dist/healthindex/words.js.map +1 -1
  23. package/node_modules/@waterplane/shared/dist/healthindex.d.ts +21 -7
  24. package/node_modules/@waterplane/shared/dist/healthindex.js +20 -7
  25. package/node_modules/@waterplane/shared/dist/healthindex.js.map +1 -1
  26. package/node_modules/@waterplane/shared/dist/healthindexresponse.js +3 -2
  27. package/node_modules/@waterplane/shared/dist/healthindexresponse.js.map +1 -1
  28. package/node_modules/@waterplane/shared/dist/healthspend.js +1 -1
  29. package/node_modules/@waterplane/shared/dist/hints.js +9 -0
  30. package/node_modules/@waterplane/shared/dist/hints.js.map +1 -1
  31. package/node_modules/@waterplane/shared/dist/index.d.ts +2 -0
  32. package/node_modules/@waterplane/shared/dist/index.js +2 -0
  33. package/node_modules/@waterplane/shared/dist/index.js.map +1 -1
  34. package/node_modules/@waterplane/shared/dist/intent/kind.d.ts +45 -1
  35. package/node_modules/@waterplane/shared/dist/intent/kind.js +60 -2
  36. package/node_modules/@waterplane/shared/dist/intent/kind.js.map +1 -1
  37. package/node_modules/@waterplane/shared/dist/intent.d.ts +1 -1
  38. package/node_modules/@waterplane/shared/dist/intent.js +1 -1
  39. package/node_modules/@waterplane/shared/dist/intent.js.map +1 -1
  40. package/node_modules/@waterplane/shared/dist/repohealth.d.ts +178 -0
  41. package/node_modules/@waterplane/shared/dist/repohealth.js.map +1 -1
  42. package/node_modules/@waterplane/shared/dist/repohealthhabits.d.ts +15 -0
  43. package/node_modules/@waterplane/shared/dist/repohealthhabits.js +117 -0
  44. package/node_modules/@waterplane/shared/dist/repohealthhabits.js.map +1 -0
  45. package/node_modules/@waterplane/shared/dist/repohealthnative.d.ts +10 -0
  46. package/node_modules/@waterplane/shared/dist/repohealthnative.js +94 -0
  47. package/node_modules/@waterplane/shared/dist/repohealthnative.js.map +1 -0
  48. package/node_modules/@waterplane/shared/dist/repohealthread.js +23 -1
  49. package/node_modules/@waterplane/shared/dist/repohealthread.js.map +1 -1
  50. package/node_modules/@waterplane/shared/dist/wire/agentreadings.d.ts +104 -0
  51. package/node_modules/@waterplane/shared/dist/wire/agentreadings.js +7 -0
  52. package/node_modules/@waterplane/shared/dist/wire/agentreadings.js.map +1 -0
  53. package/node_modules/@waterplane/shared/dist/wire/notify.d.ts +6 -1
  54. package/node_modules/@waterplane/shared/dist/wire/notify.js +6 -1
  55. package/node_modules/@waterplane/shared/dist/wire/notify.js.map +1 -1
  56. package/node_modules/@waterplane/shared/dist/wire/repo.d.ts +1 -1
  57. package/npm-shrinkwrap.json +2 -2
  58. package/package.json +1 -1
  59. package/packages/extensions/android-apps/waterplane-plugin.json +4 -1
  60. package/packages/extensions/copilot-usage/waterplane-plugin.json +7 -2
  61. package/packages/extensions/desktop/waterplane-plugin.json +5 -0
  62. package/packages/extensions/ocr/waterplane-plugin.json +5 -1
  63. package/packages/extensions/requirements/waterplane-plugin.json +3 -3
  64. package/packages/extensions/scorecard/waterplane-plugin.json +2 -1
  65. package/packages/extensions/token-stats/waterplane-plugin.json +4 -3
  66. package/packages/host/dist/agentclass.d.ts +105 -0
  67. package/packages/host/dist/agentclass.js +189 -0
  68. package/packages/host/dist/agentclass.js.map +1 -0
  69. package/packages/host/dist/agentintents.d.ts +18 -0
  70. package/packages/host/dist/agentintents.js +40 -7
  71. package/packages/host/dist/agentintents.js.map +1 -1
  72. package/packages/host/dist/agentreadings.d.ts +40 -0
  73. package/packages/host/dist/agentreadings.js +254 -0
  74. package/packages/host/dist/agentreadings.js.map +1 -0
  75. package/packages/host/dist/agentscan.d.ts +8 -0
  76. package/packages/host/dist/agentscan.js +329 -0
  77. package/packages/host/dist/agentscan.js.map +1 -0
  78. package/packages/host/dist/backends/index.js +12 -1
  79. package/packages/host/dist/backends/index.js.map +1 -1
  80. package/packages/host/dist/binguard.d.ts +13 -1
  81. package/packages/host/dist/binguard.js +28 -2
  82. package/packages/host/dist/binguard.js.map +1 -1
  83. package/packages/host/dist/exposure.d.ts +10 -0
  84. package/packages/host/dist/exposure.js +25 -0
  85. package/packages/host/dist/exposure.js.map +1 -1
  86. package/packages/host/dist/plugins/pluginassets.d.ts +17 -0
  87. package/packages/host/dist/plugins/pluginassets.js +27 -1
  88. package/packages/host/dist/plugins/pluginassets.js.map +1 -1
  89. package/packages/host/dist/plugins/pluginregistry.d.ts +3 -1
  90. package/packages/host/dist/plugins/pluginregistry.js +8 -1
  91. package/packages/host/dist/plugins/pluginregistry.js.map +1 -1
  92. package/packages/host/dist/reposkilltext.d.ts +2 -0
  93. package/packages/host/dist/reposkilltext.js +8 -2
  94. package/packages/host/dist/reposkilltext.js.map +1 -1
  95. package/packages/host/dist/routes/apirepowork.js +13 -0
  96. package/packages/host/dist/routes/apirepowork.js.map +1 -1
  97. package/packages/host/dist/routes/apisystem.js +17 -1
  98. package/packages/host/dist/routes/apisystem.js.map +1 -1
  99. package/packages/host/dist/routes/apitable.d.ts +4 -0
  100. package/packages/host/dist/routes/apitable.js.map +1 -1
  101. package/packages/host/dist/server/http.js +2 -1
  102. package/packages/host/dist/server/http.js.map +1 -1
  103. package/packages/host/dist/server/intentDeps.js +14 -1
  104. package/packages/host/dist/server/intentDeps.js.map +1 -1
  105. package/packages/host/dist/sessions/tmux.js +6 -1
  106. package/packages/host/dist/sessions/tmux.js.map +1 -1
  107. package/packages/host/dist/weekburn.js +7 -5
  108. package/packages/host/dist/weekburn.js.map +1 -1
  109. package/packages/web/dist/assets/demo-mKJo0QVO.js +26 -0
  110. package/packages/web/dist/assets/index-B6f7Lcp1.js +170 -0
  111. package/packages/web/dist/assets/index-DQIK94fc.css +1 -0
  112. package/packages/web/dist/assets/shared-Cd69oxHd.js +51 -0
  113. package/packages/web/dist/assets/sheets-BImsk1_Y.js +256 -0
  114. package/packages/web/dist/build-id.txt +1 -1
  115. package/packages/web/dist/buildstamp.json +1 -1
  116. package/packages/web/dist/index.html +5 -5
  117. package/packages/web/dist/sw.js +2 -2
  118. package/release.json +3 -3
  119. package/tools/repohealth/constants.mjs +34 -1
  120. package/tools/repohealth/fixture.json +5374 -38
  121. package/tools/repohealth/git.mjs +77 -0
  122. package/tools/repohealth/lang/dart-analyze.mjs +181 -0
  123. package/tools/repohealth/lang/dart-lex.mjs +494 -0
  124. package/tools/repohealth/lang/dart-resolve.mjs +95 -0
  125. package/tools/repohealth/lang/python-ast.mjs +602 -0
  126. package/tools/repohealth/lang/python-resolve.mjs +228 -0
  127. package/tools/repohealth/metrics/habits.mjs +286 -0
  128. package/tools/repohealth/metrics/native.mjs +542 -0
  129. package/tools/repohealth/metrics/untested.mjs +20 -8
  130. package/tools/repohealth/metrics/workspace.mjs +256 -0
  131. package/tools/repohealth/own.mjs +67 -5
  132. package/tools/repohealth/packs/dart.mjs +153 -85
  133. package/tools/repohealth/packs/python.mjs +51 -14
  134. package/tools/repohealth/plot.mjs +143 -1
  135. package/tools/repohealth/reach.mjs +98 -0
  136. package/tools/repohealth/scope.mjs +14 -1
  137. package/tools/repohealth/series.mjs +5 -0
  138. package/tools/repohealth/types.mjs +4 -0
  139. package/tools/repohealth.mjs +39 -5
  140. package/packages/web/dist/assets/demo-ad3g3HDa.js +0 -26
  141. package/packages/web/dist/assets/index-BllRvpkw.js +0 -170
  142. package/packages/web/dist/assets/index-DUiYLEts.css +0 -1
  143. package/packages/web/dist/assets/shared-DBaaGttP.js +0 -51
  144. package/packages/web/dist/assets/sheets-CrfRr6Um.js +0 -256
@@ -1 +1 @@
1
- {"version":3,"file":"kind.js","sourceRoot":"","sources":["../../src/intent/kind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kind.js","sourceRoot":"","sources":["../../src/intent/kind.ts"],"names":[],"mappings":"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"}
@@ -66,4 +66,4 @@ export { INTENT_BLOCK_ORDER, autoSlotsBusy, autoSlotsWaitText, closeWhenDoneOf,
66
66
  export { INTENT_FIELD_WRITER, type IntentFieldWriter, clientIntentFields, cleanIntentRow } from "./intent/clean.js";
67
67
  export { type ClockMember, type Slot, type SlotRow, findSlot, latestClock, parseSlotKey, slotMates, slotOf, slotOthersText, slotRowOfIntent, slotRowOfItem, slotsOf } from "./intent/slot.js";
68
68
  export type { IntentKind } from "./intent/kind.js";
69
- export { AGENT_POSTED_WORDS, AGENT_WITHDREW_DETAIL, MANUAL_HOLD_TEXT, ORIGIN_AGENT, ORIGIN_FANOUT_FOLLOWUP, ORIGIN_FANOUT_RUN, ORIGIN_FANOUT_TARGET, ORIGIN_PEER_PREFIX, ORIGIN_SCHEDULE_BUILD, ORIGIN_SCHEDULE_PREFIX, ORIGIN_SCHEDULE_SWEEP, ORIGIN_SCHEDULE_WORK, clockKey, intentKind, intentPaused, isAgentPosted, isAgentWithdrawn, isAssessRow, isBacklogRow, isBuildRow, isCaptureRow, isFanoutRow, isLaunchRow, isPeerPosted, isScheduleRow, isTimedWorkRow, peerOfOrigin, postsScheduledBuild, queuesBacklogItem, scheduleIdFromOrigin, scheduleItemOrigin, timedWorkKey, } from "./intent/kind.js";
69
+ export { AGENT_POSTED_WORDS, AGENT_WITHDREW_DETAIL, MANUAL_HOLD_TEXT, ORIGIN_AGENT, ORIGIN_FANOUT_FOLLOWUP, ORIGIN_FANOUT_RUN, ORIGIN_FANOUT_TARGET, ORIGIN_PEER_PREFIX, ORIGIN_SCHEDULE_BUILD, ORIGIN_SCHEDULE_PREFIX, ORIGIN_SCHEDULE_SWEEP, ORIGIN_SCHEDULE_WORK, clockKey, intentKind, intentPaused, isAgentPosted, isAgentWithdrawn, isAssessRow, isBacklogRow, isBuildRow, isCaptureRow, isFanoutRow, isLaunchRow, isPeerPosted, isScheduleRow, isTimedWorkRow, peerOfOrigin, ORIGIN_PROPOSED_PREFIX, PROPOSER_MAX, isPendingProposal, isProposed, pendingProposals, proposedWords, proposerName, proposerOf, postsScheduledBuild, queuesBacklogItem, scheduleIdFromOrigin, scheduleItemOrigin, timedWorkKey, } from "./intent/kind.js";
@@ -61,5 +61,5 @@ export { AFTER_RESET_LEFTOVER_MS, BUDGET_NOT_HOLDING, RESET_MATCH_MS, budgetAfte
61
61
  export { INTENT_BLOCK_ORDER, autoSlotsBusy, autoSlotsWaitText, closeWhenDoneOf, intentReasonText, localSlotOverText, localSlotWaitText } from "./intent/words.js";
62
62
  export { INTENT_FIELD_WRITER, clientIntentFields, cleanIntentRow } from "./intent/clean.js";
63
63
  export { findSlot, latestClock, parseSlotKey, slotMates, slotOf, slotOthersText, slotRowOfIntent, slotRowOfItem, slotsOf } from "./intent/slot.js";
64
- export { AGENT_POSTED_WORDS, AGENT_WITHDREW_DETAIL, MANUAL_HOLD_TEXT, ORIGIN_AGENT, ORIGIN_FANOUT_FOLLOWUP, ORIGIN_FANOUT_RUN, ORIGIN_FANOUT_TARGET, ORIGIN_PEER_PREFIX, ORIGIN_SCHEDULE_BUILD, ORIGIN_SCHEDULE_PREFIX, ORIGIN_SCHEDULE_SWEEP, ORIGIN_SCHEDULE_WORK, clockKey, intentKind, intentPaused, isAgentPosted, isAgentWithdrawn, isAssessRow, isBacklogRow, isBuildRow, isCaptureRow, isFanoutRow, isLaunchRow, isPeerPosted, isScheduleRow, isTimedWorkRow, peerOfOrigin, postsScheduledBuild, queuesBacklogItem, scheduleIdFromOrigin, scheduleItemOrigin, timedWorkKey, } from "./intent/kind.js";
64
+ export { AGENT_POSTED_WORDS, AGENT_WITHDREW_DETAIL, MANUAL_HOLD_TEXT, ORIGIN_AGENT, ORIGIN_FANOUT_FOLLOWUP, ORIGIN_FANOUT_RUN, ORIGIN_FANOUT_TARGET, ORIGIN_PEER_PREFIX, ORIGIN_SCHEDULE_BUILD, ORIGIN_SCHEDULE_PREFIX, ORIGIN_SCHEDULE_SWEEP, ORIGIN_SCHEDULE_WORK, clockKey, intentKind, intentPaused, isAgentPosted, isAgentWithdrawn, isAssessRow, isBacklogRow, isBuildRow, isCaptureRow, isFanoutRow, isLaunchRow, isPeerPosted, isScheduleRow, isTimedWorkRow, peerOfOrigin, ORIGIN_PROPOSED_PREFIX, PROPOSER_MAX, isPendingProposal, isProposed, pendingProposals, proposedWords, proposerName, proposerOf, postsScheduledBuild, queuesBacklogItem, scheduleIdFromOrigin, scheduleItemOrigin, timedWorkKey, } from "./intent/kind.js";
65
65
  //# sourceMappingURL=intent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intent.js","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGpI,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,EACL,uBAAuB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,GACtM,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAElK,OAAO,EAAE,mBAAmB,EAA0B,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpH,OAAO,EAA6C,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG9L,OAAO,EACL,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAC3D,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EACjG,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAC1F,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EACxH,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EACnF,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,GAC/F,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGpI,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,EACL,uBAAuB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,GACtM,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAElK,OAAO,EAAE,mBAAmB,EAA0B,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpH,OAAO,EAA6C,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG9L,OAAO,EACL,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAC3D,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EACjG,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAC1F,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EACxH,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EACnN,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,GAC/F,MAAM,kBAAkB,CAAC"}
@@ -110,6 +110,13 @@ export interface RepoHealthMeasure {
110
110
  * this command deletes a file.
111
111
  */
112
112
  recut: string | null;
113
+ /**
114
+ * The engine says it understands `update --recut` — the flag behind the
115
+ * phone's re-cut tap. Declared by the engine, never inferred from its kind:
116
+ * a repo's own copy is as likely to be current as the bundled one, and an
117
+ * older copy that ignored the flag would refuse again. Absent = not declared.
118
+ */
119
+ acceptsRecut?: true;
113
120
  /**
114
121
  * The subtree this `status` was taken over, echoed by the engine — `null`
115
122
  * for the whole repo, and ABSENT from an engine that has no scopes at all.
@@ -384,6 +391,156 @@ export interface RepoHealthLongest {
384
391
  path: string | null;
385
392
  day: string | null;
386
393
  }
394
+ /**
395
+ * One git-only reading, drawn as a line (`tools/repohealth/metrics/habits.mjs`).
396
+ *
397
+ * Deliberately NOT a `RepoHealthPlotSeries`: no `reading` (rank, slope), no
398
+ * `source`, no `variant`. These are drawn and worded, never graded against
399
+ * their own past, and the health index does not read them. `absent` is the
400
+ * metric's own reason (shallow clone, no tests recognised, a quiet window);
401
+ * a null point is a CUT in the line, never a zero.
402
+ */
403
+ export interface RepoHealthHabitSeries {
404
+ /** `habits.fixAfterChange`, `habits.deletionRatio`, `habits.netNegative`,
405
+ * `habits.testsWithCode`, `habits.commitSizeP95`. */
406
+ key: string;
407
+ /** A noun phrase that reads as the subject of "…is now". Printed verbatim. */
408
+ label: string;
409
+ /** Appended to a value; `""` for a fraction or ratio. */
410
+ unit: string;
411
+ points: RepoHealthPoint[];
412
+ last: number | null;
413
+ /** The numbers behind the value, as a sentence; `""` when there is none. */
414
+ detail: string;
415
+ absent?: string;
416
+ }
417
+ /** A list reading: its items, or the reason there are none to name. */
418
+ export type RepoHealthHabitList<T> = ({
419
+ absent?: undefined;
420
+ } & T) | {
421
+ absent: string;
422
+ };
423
+ /**
424
+ * What the repo's own tools say (`tools/repohealth/metrics/native.mjs`), read
425
+ * at the newest commit only: each part is a list-shaped value or `{absent}`
426
+ * naming why (such as "osv-scanner is not installed"), never a zero for a tool
427
+ * that did not run. Not graded and not in the health index.
428
+ */
429
+ export interface RepoHealthNativeAnalyzer {
430
+ /** `eslint`, `tsc`, `ruff`, `mypy`, `dart`, `shellcheck`, `detekt`, `ktlint`. */
431
+ key: string;
432
+ /** A noun phrase, printed verbatim ("eslint findings per 1,000 lines"). */
433
+ label: string;
434
+ /** The tool that ran (`flutter` for a Flutter app's Dart reading). */
435
+ tool: string;
436
+ findings: number | null;
437
+ /** Tracked lines of the tool's language, the divisor. */
438
+ lines: number | null;
439
+ per1000: number | null;
440
+ /** A caveat that belongs beside the number (`root tsconfig.json only`). */
441
+ note?: string;
442
+ absent?: string;
443
+ }
444
+ export interface RepoHealthPlotNative {
445
+ /** Advisories by severity and the packages they hit; `items` is capped,
446
+ * `itemsTotal` is the full count (say "20 of N"). */
447
+ vulns: RepoHealthHabitList<{
448
+ total: number;
449
+ packages: number;
450
+ lockfiles: number;
451
+ bySeverity: Record<string, number>;
452
+ items: {
453
+ package: string;
454
+ version: string;
455
+ severity: string;
456
+ ids: string[];
457
+ }[];
458
+ itemsTotal: number;
459
+ }>;
460
+ /** Absent today, with the reason; shaped like the other lists for later. */
461
+ dependencyAge: {
462
+ absent: string;
463
+ };
464
+ analyzers: RepoHealthNativeAnalyzer[];
465
+ /** A fact list from config files, not a score. A setting the file does not
466
+ * state is null. */
467
+ strictness: RepoHealthHabitList<{
468
+ facts: {
469
+ kind: "typescript" | "mypy" | "dart";
470
+ path: string;
471
+ settings: Record<string, boolean | null>;
472
+ }[];
473
+ total: number;
474
+ }>;
475
+ /** Coverage files found newer than the last commit; the engine never runs tests. */
476
+ coverage: RepoHealthHabitList<{
477
+ files: {
478
+ path: string;
479
+ kind: string;
480
+ covered: number;
481
+ total: number;
482
+ percent: number;
483
+ }[];
484
+ total: number;
485
+ }>;
486
+ /** Set when the whole family went unread. */
487
+ absent?: string;
488
+ }
489
+ /**
490
+ * The git-only readings. Every part can be absent on its own: `absent` on the
491
+ * whole object is the family unread (shallow clone, no history read);
492
+ * otherwise a series, a list or `weeks` carries its own reason or null.
493
+ * Absent from an engine older than the field.
494
+ */
495
+ export interface RepoHealthPlotHabits {
496
+ /** The trailing window every rate is taken over; null when unread. */
497
+ windowDays: number | null;
498
+ series: RepoHealthHabitSeries[];
499
+ /** The four weeks the deletion ratio is made of, oldest first; null when
500
+ * the ratio is absent. */
501
+ weeks: {
502
+ added: number;
503
+ deleted: number;
504
+ }[] | null;
505
+ /** Files where churn x size is highest, in the trailing window. */
506
+ hotspots: RepoHealthHabitList<{
507
+ items: {
508
+ path: string;
509
+ churn: number;
510
+ loc: number;
511
+ score: number;
512
+ }[];
513
+ }>;
514
+ /** Tracked binaries and build output at the newest commit. `scope` is
515
+ * always `"tracked"`: the working tree is never read, so untracked litter
516
+ * is not counted and the phone must say so. */
517
+ litter: RepoHealthHabitList<{
518
+ scope: "tracked";
519
+ count: number;
520
+ bytes: number;
521
+ kinds: Record<string, number>;
522
+ items: {
523
+ path: string;
524
+ bytes: number;
525
+ kind: string;
526
+ }[];
527
+ }>;
528
+ /** Markdown that names repo paths which do not resolve at the newest
529
+ * commit. `refs` and `broken` are candidate references, not proof. */
530
+ docsDrift: RepoHealthHabitList<{
531
+ docs: number;
532
+ refs: number;
533
+ broken: number;
534
+ docsWithBroken: number;
535
+ items: {
536
+ path: string;
537
+ broken: number;
538
+ of: number;
539
+ missing: string[];
540
+ }[];
541
+ }>;
542
+ absent?: string;
543
+ }
387
544
  /** Where a repo declares its own readings, repo-relative and COMMITTED. The
388
545
  * engine's `tools/repohealth/own.mjs` names the same path. */
389
546
  export declare const REPOHEALTH_OWN_FILE: string;
@@ -396,7 +553,22 @@ export interface RepoHealthOwnSeries extends RepoHealthPlotSeries {
396
553
  /** The declaration's `better`, attributed to the repo — never the engine's
397
554
  * opinion. Null where the declaration's own field was not one of the two. */
398
555
  better: "lower" | "higher" | null;
556
+ /**
557
+ * The repo marked this reading a GATE (`health.json` `"gate": { "fails":
558
+ * "below" | "above", "at": n }`, checked by the engine's `own.mjs`): a line it
559
+ * calls critical. A failing gate caps the health index
560
+ * (`healthindex/coverage.ts`); `invalid` is a declaration the engine refused,
561
+ * which the index counts as an UNKNOWN gate, never a passed one. Absent = no gate.
562
+ */
563
+ gate?: RepoHealthGateDecl;
399
564
  }
565
+ /** A declared gate: the failing side of `at`, or the engine's sentence for a refused declaration. */
566
+ export type RepoHealthGateDecl = {
567
+ fails: "below" | "above";
568
+ at: number;
569
+ } | {
570
+ invalid: string;
571
+ };
400
572
  /**
401
573
  * The repo's own readings. `declared` is whether HEAD's tree holds the file;
402
574
  * `absent` says why there is nothing to draw where something was declared (a
@@ -436,6 +608,12 @@ export interface RepoHealthPlot {
436
608
  /** Absent on a host or a tool older than the field — the sheet then draws
437
609
  * the column and the name it has, never a blank it presents as a reading. */
438
610
  longest?: RepoHealthLongest;
611
+ /** The git-only readings — see `RepoHealthPlotHabits`. Absent on an engine
612
+ * older than the field. */
613
+ habits?: RepoHealthPlotHabits;
614
+ /** The repo's own analyzers, vulnerable dependencies and coverage files: see
615
+ * `RepoHealthPlotNative`. Absent on an engine older than the field. */
616
+ native?: RepoHealthPlotNative;
439
617
  /** The repo's OWN readings, apart from `series` — see `RepoHealthPlotOwn`. */
440
618
  own?: RepoHealthPlotOwn;
441
619
  /** Present when the latest row carries the repo's `central` block — see
@@ -1 +1 @@
1
- {"version":3,"file":"repohealth.js","sourceRoot":"","sources":["../src/repohealth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD;;kFAEkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAC1D;iFACiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,8BAA8B,CAAC;AAC5D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAChE;;mFAEmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AA4W9D;+DAC+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;AAoN5D,MAAM,UAAU,sBAAsB,CACpC,IAAoD;IAEpD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvE,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAyB;IACjE,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,OAAO,mEAAmE,eAAe,GAAG;YAC1F,4EAA4E,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,iFAAiF,CAAC;IAC9G,OAAO,IAAI,CAAC;AACd,CAAC;AAYD,MAAM,UAAU,0BAA0B,CACxC,IAAyD;IAEzD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,CAA6B,EAC7B,MAAsB;IAEtB,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;QACjB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;QACnE,OAAO,GAAG,iBAAiB,2DAA2D,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,6EAA6E,CAAC;IAC1G,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"repohealth.js","sourceRoot":"","sources":["../src/repohealth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD;;kFAEkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAC1D;iFACiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,8BAA8B,CAAC;AAC5D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAChE;;mFAEmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAse9D;+DAC+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;AAqO5D,MAAM,UAAU,sBAAsB,CACpC,IAAoD;IAEpD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvE,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAyB;IACjE,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,OAAO,mEAAmE,eAAe,GAAG;YAC1F,4EAA4E,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,iFAAiF,CAAC;IAC9G,OAAO,IAAI,CAAC;AACd,CAAC;AAYD,MAAM,UAAU,0BAA0B,CACxC,IAAyD;IAEzD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,CAA6B,EAC7B,MAAsB;IAEtB,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;QACjB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;QACnE,OAAO,GAAG,iBAAiB,2DAA2D,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,6EAA6E,CAAC;IAC1G,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Reading `plot.habits` — the git-only readings — off the engine's JSON.
3
+ *
4
+ * Split from `repohealthread.ts` (at its line cap) and bound by the same rule
5
+ * its header states: the parser rebuilds from the fields it NAMES, so a field
6
+ * nobody listed is dropped in silence. `test/repohealth.test.mjs` runs the
7
+ * real engine and fails until every key path it emits is named here.
8
+ *
9
+ * OPTIONAL as a block (an engine older than the field sends none) and
10
+ * all-or-nothing within it: a malformed block is dropped WHOLE rather than
11
+ * drawn half-true. A list or series that says it is `absent` keeps only the
12
+ * sentence; one that does not must carry every field of its shape.
13
+ */
14
+ import type { RepoHealthPlotHabits } from "./repohealth.js";
15
+ export declare function readHabits(v: unknown): RepoHealthPlotHabits | null;
@@ -0,0 +1,117 @@
1
+ const isRec = (v) => !!v && typeof v === "object" && !Array.isArray(v);
2
+ const isStr = (v) => typeof v === "string" && v.length > 0;
3
+ const isNum = (v) => typeof v === "number" && Number.isFinite(v);
4
+ function points(v) {
5
+ if (!Array.isArray(v))
6
+ return null;
7
+ const out = [];
8
+ for (const raw of v) {
9
+ if (!isRec(raw) || !isStr(raw.day) || !isStr(raw.sha7))
10
+ return null;
11
+ if (raw.v !== null && !isNum(raw.v))
12
+ return null;
13
+ out.push({ day: raw.day, sha7: raw.sha7, v: raw.v });
14
+ }
15
+ return out;
16
+ }
17
+ /** An absent list is `{absent}`; a present one is rebuilt by `shape`. */
18
+ function list(v, shape) {
19
+ if (!isRec(v))
20
+ return null;
21
+ if (isStr(v.absent))
22
+ return { absent: v.absent };
23
+ const t = shape(v);
24
+ return t ? { ...t } : null;
25
+ }
26
+ const strs = (v) => (Array.isArray(v) && v.every((x) => typeof x === "string") ? v : null);
27
+ export function readHabits(v) {
28
+ if (!isRec(v))
29
+ return null;
30
+ if (v.windowDays !== null && !isNum(v.windowDays))
31
+ return null;
32
+ if (v.absent !== undefined && !isStr(v.absent))
33
+ return null;
34
+ if (!Array.isArray(v.series))
35
+ return null;
36
+ const series = [];
37
+ for (const raw of v.series) {
38
+ if (!isRec(raw) || !isStr(raw.key) || !isStr(raw.label) || typeof raw.unit !== "string" || typeof raw.detail !== "string")
39
+ return null;
40
+ if (raw.last !== null && !isNum(raw.last))
41
+ return null;
42
+ if (raw.absent !== undefined && !isStr(raw.absent))
43
+ return null;
44
+ const pts = points(raw.points);
45
+ if (!pts)
46
+ return null;
47
+ const s = { key: raw.key, label: raw.label, unit: raw.unit, points: pts, last: raw.last, detail: raw.detail };
48
+ if (isStr(raw.absent))
49
+ s.absent = raw.absent;
50
+ series.push(s);
51
+ }
52
+ let weeks = null;
53
+ if (v.weeks !== null) {
54
+ if (!Array.isArray(v.weeks))
55
+ return null;
56
+ weeks = [];
57
+ for (const w of v.weeks) {
58
+ if (!isRec(w) || !isNum(w.added) || !isNum(w.deleted))
59
+ return null;
60
+ weeks.push({ added: w.added, deleted: w.deleted });
61
+ }
62
+ }
63
+ const hotspots = list(v.hotspots, (o) => {
64
+ if (!Array.isArray(o.items))
65
+ return null;
66
+ const items = [];
67
+ for (const i of o.items) {
68
+ if (!isRec(i) || !isStr(i.path) || !isNum(i.churn) || !isNum(i.loc) || !isNum(i.score))
69
+ return null;
70
+ items.push({ path: i.path, churn: i.churn, loc: i.loc, score: i.score });
71
+ }
72
+ return { items };
73
+ });
74
+ const litter = list(v.litter, (o) => {
75
+ if (o.scope !== "tracked" || !isNum(o.count) || !isNum(o.bytes) || !isRec(o.kinds) || !Array.isArray(o.items))
76
+ return null;
77
+ const kinds = {};
78
+ for (const [k, n] of Object.entries(o.kinds)) {
79
+ if (!isNum(n))
80
+ return null;
81
+ kinds[k] = n;
82
+ }
83
+ const items = [];
84
+ for (const i of o.items) {
85
+ if (!isRec(i) || !isStr(i.path) || !isNum(i.bytes) || !isStr(i.kind))
86
+ return null;
87
+ items.push({ path: i.path, bytes: i.bytes, kind: i.kind });
88
+ }
89
+ return { scope: "tracked", count: o.count, bytes: o.bytes, kinds, items };
90
+ });
91
+ const docsDrift = list(v.docsDrift, (o) => {
92
+ if (!isNum(o.docs) || !isNum(o.refs) || !isNum(o.broken) || !isNum(o.docsWithBroken) || !Array.isArray(o.items))
93
+ return null;
94
+ const items = [];
95
+ for (const i of o.items) {
96
+ const missing = isRec(i) ? strs(i.missing) : null;
97
+ if (!isRec(i) || !isStr(i.path) || !isNum(i.broken) || !isNum(i.of) || !missing)
98
+ return null;
99
+ items.push({ path: i.path, broken: i.broken, of: i.of, missing });
100
+ }
101
+ return { docs: o.docs, refs: o.refs, broken: o.broken, docsWithBroken: o.docsWithBroken, items };
102
+ });
103
+ if (!hotspots || !litter || !docsDrift)
104
+ return null;
105
+ const out = {
106
+ windowDays: v.windowDays,
107
+ series,
108
+ weeks,
109
+ hotspots,
110
+ litter,
111
+ docsDrift,
112
+ };
113
+ if (isStr(v.absent))
114
+ out.absent = v.absent;
115
+ return out;
116
+ }
117
+ //# sourceMappingURL=repohealthhabits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repohealthhabits.js","sourceRoot":"","sources":["../src/repohealthhabits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Reading `plot.native` — what the repo's own tools say — off the engine's JSON.
3
+ *
4
+ * Same contract as `repohealthhabits.ts`: rebuilt from the fields it NAMES
5
+ * (`test/repohealth.test.mjs` fails until every key path the engine emits is
6
+ * named here), optional as a block, dropped WHOLE when malformed. A part that
7
+ * says it is `absent` keeps only the sentence.
8
+ */
9
+ import type { RepoHealthPlotNative } from "./repohealth.js";
10
+ export declare function readNative(v: unknown): RepoHealthPlotNative | null;
@@ -0,0 +1,94 @@
1
+ const isRec = (v) => !!v && typeof v === "object" && !Array.isArray(v);
2
+ const isStr = (v) => typeof v === "string" && v.length > 0;
3
+ const isNum = (v) => typeof v === "number" && Number.isFinite(v);
4
+ const numOrNull = (v) => v === null || isNum(v);
5
+ function part(v, shape) {
6
+ if (!isRec(v))
7
+ return null;
8
+ if (isStr(v.absent))
9
+ return { absent: v.absent };
10
+ const t = shape(v);
11
+ return t ? { ...t } : null;
12
+ }
13
+ export function readNative(v) {
14
+ if (!isRec(v))
15
+ return null;
16
+ if (v.absent !== undefined && !isStr(v.absent))
17
+ return null;
18
+ const vulns = part(v.vulns, (o) => {
19
+ if (!isNum(o.total) || !isNum(o.packages) || !isNum(o.lockfiles) || !isNum(o.itemsTotal) || !isRec(o.bySeverity) || !Array.isArray(o.items))
20
+ return null;
21
+ const bySeverity = {};
22
+ for (const [k, n] of Object.entries(o.bySeverity)) {
23
+ if (!isNum(n))
24
+ return null;
25
+ bySeverity[k] = n;
26
+ }
27
+ const items = [];
28
+ for (const i of o.items) {
29
+ if (!isRec(i) || !isStr(i.package) || !isStr(i.version) || !isStr(i.severity) || !Array.isArray(i.ids) || !i.ids.every((x) => typeof x === "string"))
30
+ return null;
31
+ items.push({ package: i.package, version: i.version, severity: i.severity, ids: i.ids });
32
+ }
33
+ return { total: o.total, packages: o.packages, lockfiles: o.lockfiles, bySeverity, items, itemsTotal: o.itemsTotal };
34
+ });
35
+ if (!isRec(v.dependencyAge) || !isStr(v.dependencyAge.absent))
36
+ return null;
37
+ const dependencyAge = { absent: v.dependencyAge.absent };
38
+ if (!Array.isArray(v.analyzers))
39
+ return null;
40
+ const analyzers = [];
41
+ for (const a of v.analyzers) {
42
+ if (!isRec(a) || !isStr(a.key) || !isStr(a.label) || !isStr(a.tool))
43
+ return null;
44
+ if (!numOrNull(a.findings) || !numOrNull(a.lines) || !numOrNull(a.per1000))
45
+ return null;
46
+ if (a.note !== undefined && !isStr(a.note))
47
+ return null;
48
+ if (a.absent !== undefined && !isStr(a.absent))
49
+ return null;
50
+ const out = { key: a.key, label: a.label, tool: a.tool, findings: a.findings, lines: a.lines, per1000: a.per1000 };
51
+ if (isStr(a.note))
52
+ out.note = a.note;
53
+ if (isStr(a.absent))
54
+ out.absent = a.absent;
55
+ analyzers.push(out);
56
+ }
57
+ const strictness = part(v.strictness, (o) => {
58
+ if (!isNum(o.total) || !Array.isArray(o.facts))
59
+ return null;
60
+ const facts = [];
61
+ for (const f of o.facts) {
62
+ if (!isRec(f) || !isStr(f.path) || !isRec(f.settings))
63
+ return null;
64
+ if (f.kind !== "typescript" && f.kind !== "mypy" && f.kind !== "dart")
65
+ return null;
66
+ const settings = {};
67
+ for (const [k, b] of Object.entries(f.settings)) {
68
+ if (b !== null && typeof b !== "boolean")
69
+ return null;
70
+ settings[k] = b;
71
+ }
72
+ facts.push({ kind: f.kind, path: f.path, settings });
73
+ }
74
+ return { facts, total: o.total };
75
+ });
76
+ const coverage = part(v.coverage, (o) => {
77
+ if (!isNum(o.total) || !Array.isArray(o.files))
78
+ return null;
79
+ const files = [];
80
+ for (const f of o.files) {
81
+ if (!isRec(f) || !isStr(f.path) || !isStr(f.kind) || !isNum(f.covered) || !isNum(f.total) || !isNum(f.percent))
82
+ return null;
83
+ files.push({ path: f.path, kind: f.kind, covered: f.covered, total: f.total, percent: f.percent });
84
+ }
85
+ return { files, total: o.total };
86
+ });
87
+ if (!vulns || !strictness || !coverage)
88
+ return null;
89
+ const out = { vulns, dependencyAge, analyzers, strictness, coverage };
90
+ if (isStr(v.absent))
91
+ out.absent = v.absent;
92
+ return out;
93
+ }
94
+ //# sourceMappingURL=repohealthnative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repohealthnative.js","sourceRoot":"","sources":["../src/repohealthnative.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,8 @@
59
59
  * refresh, the write and the refusal to overwrite are the host's.
60
60
  */
61
61
  import { REPOHEALTH_ENGINE, } from "./repohealth.js";
62
+ import { readHabits } from "./repohealthhabits.js";
63
+ import { readNative } from "./repohealthnative.js";
62
64
  const isStr = (v) => typeof v === "string" && v.length > 0;
63
65
  const isCount = (v) => typeof v === "number" && Number.isFinite(v) && Number.isInteger(v) && v >= 0;
64
66
  const isTs = (v) => typeof v === "number" && Number.isFinite(v) && v > 0;
@@ -172,6 +174,7 @@ export function parseRepoHealthMeasure(stdout) {
172
174
  const commits = isCount(o.commits) ? o.commits : null;
173
175
  const engineVersion = isStr(o.engineVersion) ? o.engineVersion : null;
174
176
  const recut = isStr(o.recut) ? o.recut : null;
177
+ const acceptsRecut = o.acceptsRecut === true;
175
178
  // A pack the census could not describe is dropped from the list rather than
176
179
  // voiding it: one unreadable entry must not hide the four that read fine.
177
180
  // `files` degrades on its own — a pack with no count still names a language.
@@ -202,7 +205,11 @@ export function parseRepoHealthMeasure(stdout) {
202
205
  // engine with no scopes sends no key and this stays undefined; a current one
203
206
  // always echoes, `null` for the whole repo.
204
207
  const scope = o.scope === undefined ? undefined : isStr(o.scope) ? o.scope : null;
205
- return { commits, packs, groups, engineVersion, recut, ...(scope === undefined ? {} : { scope }) };
208
+ return {
209
+ commits, packs, groups, engineVersion, recut,
210
+ ...(acceptsRecut ? { acceptsRecut: true } : {}),
211
+ ...(scope === undefined ? {} : { scope }),
212
+ };
206
213
  }
207
214
  /**
208
215
  * The one command that re-cuts this root, or null when nobody stated one.
@@ -481,6 +488,13 @@ export function parseRepoHealthPlot(stdout) {
481
488
  };
482
489
  if (longest)
483
490
  plot.longest = longest;
491
+ // Optional and dropped whole when malformed — `repohealthhabits.ts`.
492
+ const habits = readHabits(o.habits);
493
+ if (habits)
494
+ plot.habits = habits;
495
+ const native = readNative(o.native);
496
+ if (native)
497
+ plot.native = native;
484
498
  const own = readOwn(o.own);
485
499
  if (own)
486
500
  plot.own = own;
@@ -556,6 +570,14 @@ function readOwn(v) {
556
570
  key: s.key, source: "repo", label: s.label, unit: s.unit, means: s.means, better: s.better,
557
571
  points, last: s.last, reading, detail: s.detail,
558
572
  };
573
+ // The gate, named field by field: a usable one, or the engine's refusal sentence. Anything else is dropped (no gate claimed).
574
+ const g = s.gate;
575
+ if (g && typeof g === "object") {
576
+ if ((g.fails === "below" || g.fails === "above") && typeof g.at === "number" && Number.isFinite(g.at))
577
+ one.gate = { fails: g.fails, at: g.at };
578
+ else if (isStr(g.invalid))
579
+ one.gate = { invalid: g.invalid };
580
+ }
559
581
  if (isStr(s.absent))
560
582
  one.absent = s.absent;
561
583
  series.push(one);