clearotron 0.2.0 → 0.2.2

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 (629) hide show
  1. package/.env.example +105 -0
  2. package/CONTRIBUTING.md +3 -3
  3. package/INSTALL.md +57 -52
  4. package/README.md +2 -1
  5. package/bin/brandowner.mjs +1 -1
  6. package/bin/clearotron.mjs +4 -4
  7. package/bin/connect.mjs +2 -2
  8. package/bin/example.mjs +114 -37
  9. package/bin/grant.mjs +3 -3
  10. package/bin/key.mjs +1 -1
  11. package/bin/onboard.mjs +97 -119
  12. package/bin/start.mjs +29 -25
  13. package/bin/stop.mjs +65 -3
  14. package/bin/update.mjs +7 -7
  15. package/bin/uspto-sync.mjs +1 -1
  16. package/build-info.json +2 -2
  17. package/docs/DELIVERY.md +6 -2
  18. package/docs/RELEASES.md +6 -4
  19. package/docs/architecture/01-product-overview.md +2 -2
  20. package/docs/architecture/02-architecture.md +2 -2
  21. package/docs/architecture/04-configuration-reference.md +7 -4
  22. package/docs/architecture/05-config-governance.md +38 -5
  23. package/docs/architecture/06-operations-runbook.md +13 -1
  24. package/docs/architecture/09-security-and-data.md +1 -1
  25. package/docs/decisions/0004-documentation-structure.md +1 -1
  26. package/driver/CHANGELOG.md +95 -1
  27. package/driver/README.md +2 -2
  28. package/driver/ask-ledger.mjs +72 -4
  29. package/driver/authority-trees.mjs +1 -1
  30. package/driver/call-capture.mjs +1 -1
  31. package/driver/card-frame.mjs +1 -1
  32. package/driver/case-law-ledger.mjs +1 -1
  33. package/driver/claim-liveness.mjs +1 -1
  34. package/driver/common-law-receipts.mjs +1 -1
  35. package/driver/commonlaw-carry.mjs +1 -1
  36. package/driver/config-inventory.mjs +1 -1
  37. package/driver/connotation-search.mjs +12 -12
  38. package/driver/contract-audit.mjs +5 -5
  39. package/driver/contract-dictation-registry.mjs +4 -4
  40. package/driver/contract-dictation.mjs +2 -2
  41. package/driver/contract-e3-backlog.mjs +6 -6
  42. package/driver/contract-vocabulary.mjs +3 -3
  43. package/driver/corrections-feedforward.mjs +1 -1
  44. package/driver/coverage-form-io.mjs +2 -2
  45. package/driver/coverage-form.mjs +4 -4
  46. package/driver/coverage-ledger.mjs +3 -3
  47. package/driver/coverage-union.mjs +1 -1
  48. package/driver/declination-call.mjs +35 -3
  49. package/driver/declination-duty.mjs +1 -1
  50. package/driver/deliver-trigger.sh +3 -3
  51. package/driver/deploy-live-run-guard.mjs +6 -2
  52. package/driver/dev-portal.mjs +1 -1
  53. package/driver/disposition-call.mjs +4 -4
  54. package/driver/disposition-tool.mjs +4 -4
  55. package/driver/disposition-union.mjs +2 -2
  56. package/driver/doc-constants.mjs +1 -1
  57. package/driver/door-gates.mjs +2 -2
  58. package/driver/doubt-selection.mjs +2 -2
  59. package/driver/drainer-identity.mjs +1 -1
  60. package/driver/driver.config.mjs +63 -11
  61. package/driver/e2e-rounds.mjs +2 -2
  62. package/driver/effort-model.mjs +2 -2
  63. package/driver/engine/anthropic-agent.mjs +24 -24
  64. package/driver/engine/auth.mjs +1 -1
  65. package/driver/engine/common.mjs +1 -1
  66. package/driver/engine/deny-authority-write.mjs +1 -1
  67. package/driver/engine/jx-turn.mjs +1 -1
  68. package/driver/engine/mcp/clarivate-server.mjs +1 -1
  69. package/driver/engine/mcp/corsearch-server.mjs +1 -1
  70. package/driver/engine/mcp/declination-server.mjs +1 -1
  71. package/driver/engine/mcp/dispositions-server.mjs +1 -1
  72. package/driver/engine/mcp/euipo-server.mjs +1 -1
  73. package/driver/engine/mcp/fetch-server.mjs +1 -1
  74. package/driver/engine/mcp/free-tier-server.mjs +2 -2
  75. package/driver/engine/mcp/gather-config.mjs +11 -11
  76. package/driver/engine/mcp/perplexity-server.mjs +1 -1
  77. package/driver/engine/mcp/recording-server.mjs +8 -4
  78. package/driver/engine/mcp/signa-server.mjs +1 -1
  79. package/driver/engine/mcp/uspto-local-server.mjs +1 -1
  80. package/driver/engine/openai-agent.mjs +2 -2
  81. package/driver/engine-build.mjs +2 -2
  82. package/driver/enqueue-schema.mjs +2 -2
  83. package/driver/enqueue.mjs +1 -1
  84. package/driver/envelope-settle.mjs +1 -1
  85. package/driver/evidence-claim-invariant.mjs +2 -2
  86. package/driver/findings-model.mjs +8 -8
  87. package/driver/floor-duty.mjs +1 -1
  88. package/driver/form-neighbourhood.mjs +1 -1
  89. package/driver/framework.mjs +1 -1
  90. package/driver/gateway.mjs +28 -23
  91. package/driver/grounds-grammar.mjs +1 -1
  92. package/driver/hit-list.mjs +1 -1
  93. package/driver/jurisdiction-systems.mjs +1 -1
  94. package/driver/jx-lanes.mjs +1 -1
  95. package/driver/jx-units.mjs +1 -1
  96. package/driver/jx.mjs +3 -3
  97. package/driver/knockout-assess-record.mjs +5 -1
  98. package/driver/narrative-refutation-record.mjs +3 -3
  99. package/driver/numeric-setting.mjs +1 -1
  100. package/driver/owner-use-check.mjs +184 -0
  101. package/driver/package.json +2 -2
  102. package/driver/phase0.mjs +1 -1
  103. package/driver/pipeline-knockout.mjs +52 -4
  104. package/driver/pipeline.mjs +215 -63
  105. package/driver/placement-diff.mjs +2 -2
  106. package/driver/placement-form.mjs +4 -4
  107. package/driver/placement-union.mjs +1 -1
  108. package/driver/portal-acks.mjs +1 -1
  109. package/driver/portal-config-view.mjs +2 -2
  110. package/driver/portal-local-auth.mjs +1 -1
  111. package/driver/portal-report.mjs +6 -6
  112. package/driver/portal-service.mjs +15 -15
  113. package/driver/predelivery-lint.mjs +29 -11
  114. package/driver/prelim-variants-record.mjs +2 -2
  115. package/driver/profile-page.html +1 -1
  116. package/driver/profile-selection.mjs +1 -1
  117. package/driver/profile-service.mjs +2 -2
  118. package/driver/profiles.mjs +1 -1
  119. package/driver/progress.mjs +6 -6
  120. package/driver/provider-usage.mjs +1 -1
  121. package/driver/publish/demo-marking.mjs +1 -1
  122. package/driver/publish/index.mjs +47 -6
  123. package/driver/publish/knockout.mjs +36 -14
  124. package/driver/publish/parse.mjs +4 -4
  125. package/driver/publish/publish-inputs.mjs +2 -2
  126. package/driver/publish/register-presence.mjs +1 -1
  127. package/driver/publish/render-knockout.mjs +198 -31
  128. package/driver/publish/report-data.mjs +13 -3
  129. package/driver/publish/seed-pool.mjs +24 -9
  130. package/driver/queue-watch-probe.mjs +1 -1
  131. package/driver/queue-watch-verdict.mjs +1 -1
  132. package/driver/recall-reconciliation.mjs +1 -1
  133. package/driver/recipe-service.mjs +1 -1
  134. package/driver/record-carry.mjs +141 -2
  135. package/driver/recording-agreement.mjs +3 -3
  136. package/driver/reference-score.mjs +59 -9
  137. package/driver/reference-strip-signatures.mjs +68 -0
  138. package/driver/refusal-bound.mjs +3 -3
  139. package/driver/register-availability.mjs +2 -2
  140. package/driver/register-count.mjs +1 -1
  141. package/driver/register-digest-record.mjs +31 -1
  142. package/driver/register-grant-vocabulary.mjs +2 -2
  143. package/driver/register-plan.mjs +8 -8
  144. package/driver/register-records.mjs +2 -2
  145. package/driver/registry-fidelity.mjs +3 -3
  146. package/driver/remedy-accounting.mjs +1 -1
  147. package/driver/repair-composers.mjs +2 -2
  148. package/driver/repair-digest.mjs +3 -3
  149. package/driver/repairs.mjs +7 -7
  150. package/driver/replay-archive.mjs +2 -0
  151. package/driver/report-card-record.mjs +2 -2
  152. package/driver/result-noun-fields.mjs +10 -3
  153. package/driver/run-economics.mjs +2 -2
  154. package/driver/run-integrity.mjs +1 -1
  155. package/driver/runner.mjs +22 -22
  156. package/driver/scope-rules.mjs +1 -1
  157. package/driver/search-policy.mjs +3 -3
  158. package/driver/skeptic-search.mjs +1 -1
  159. package/driver/skills/blind-frame/SKILL.md +1 -1
  160. package/driver/skills/case-law-citation/SKILL.md +2 -2
  161. package/driver/skills/knockout-assess/SKILL.md +10 -4
  162. package/driver/skills/prelim-search/SKILL.md +2 -2
  163. package/driver/skills/prelim-search/template-formatting.md +1 -1
  164. package/driver/skills/prelim-search/templates/email/generic.md +1 -1
  165. package/driver/skills/prelim-search/worked-examples.md +1 -1
  166. package/driver/skills/prelim-variants/SKILL.md +2 -2
  167. package/driver/stage-context.mjs +1 -1
  168. package/driver/stages-knockout.mjs +55 -4
  169. package/driver/stages.mjs +97 -40
  170. package/driver/stray-artifacts.mjs +2 -2
  171. package/driver/suite-census.json +188 -44
  172. package/driver/synthesis-record.mjs +1 -1
  173. package/driver/systemd/clearotron-client-mcp.service +1 -1
  174. package/driver/systemd/clearotron-portal.service +1 -1
  175. package/driver/systemd/render-units.mjs +1 -1
  176. package/driver/tokens.mjs +1 -1
  177. package/driver/tool-calls.mjs +1 -1
  178. package/driver/turnaround-bands.mjs +1 -1
  179. package/driver/unit-file-drift.mjs +1 -1
  180. package/driver/unit-inventory.mjs +121 -61
  181. package/driver/unit-state-verdict.mjs +20 -12
  182. package/driver/verify-knockout.mjs +10 -2
  183. package/driver/verify.mjs +14 -14
  184. package/driver/whatif-memo-run.mjs +46 -5
  185. package/driver/whatif-queue.mjs +1 -1
  186. package/driver/whatif-worker.mjs +1 -1
  187. package/mcp-server/CHANGELOG.md +12 -0
  188. package/mcp-server/README.md +3 -3
  189. package/mcp-server/http-server.mjs +44 -1
  190. package/mcp-server/key-socket.mjs +184 -0
  191. package/mcp-server/lib/audit-view.mjs +69 -2
  192. package/mcp-server/lib/brief.mjs +15 -0
  193. package/mcp-server/lib/driver.mjs +7 -1
  194. package/mcp-server/lib/events.mjs +1 -1
  195. package/mcp-server/lib/http-handler.mjs +1 -1
  196. package/mcp-server/lib/knockout.mjs +435 -0
  197. package/mcp-server/lib/ops.mjs +4 -4
  198. package/mcp-server/lib/options.mjs +1 -1
  199. package/mcp-server/lib/plan.mjs +1 -1
  200. package/mcp-server/lib/runs.mjs +1 -1
  201. package/mcp-server/lib/scrub.mjs +1 -1
  202. package/mcp-server/lib/whatif.mjs +12 -3
  203. package/mcp-server/mint-token.mjs +1 -1
  204. package/mcp-server/package.json +2 -2
  205. package/mcp-server/server.mjs +76 -11
  206. package/package.json +3 -3
  207. package/portal-ui/package.json +1 -1
  208. package/providers/_shared/enumerate.mjs +1 -1
  209. package/providers/_shared/ledger-path.mjs +3 -3
  210. package/providers/_shared/ledger.mjs +1 -1
  211. package/providers/_shared/result-shape.mjs +3 -3
  212. package/providers/_shared/term-shape.mjs +1 -1
  213. package/providers/corsearch/src/core.js +1 -1
  214. package/providers/jx-subclass/BUILDING.md +1 -1
  215. package/providers/oauth-mcp-bridge/CHANGELOG.md +12 -0
  216. package/providers/oauth-mcp-bridge/package.json +1 -1
  217. package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
  218. package/scripts/README.md +1 -1
  219. package/scripts/added-reference-check.mjs +29 -1
  220. package/scripts/ai-page-render-check.mjs +2 -1
  221. package/scripts/authority-boundary-probe.mjs +1 -1
  222. package/scripts/backfill-started-at.mjs +1 -1
  223. package/scripts/citation-line-check.mjs +3 -3
  224. package/scripts/clearances-render-check.mjs +4 -3
  225. package/scripts/compare.mjs +2 -2
  226. package/scripts/composer-render-check.mjs +6 -6
  227. package/scripts/contract-dictation-scan.mjs +2 -2
  228. package/scripts/dead-names.mjs +1 -1
  229. package/scripts/drain-preflight.mjs +5 -5
  230. package/scripts/e2e-unread-terminals.mjs +1 -1
  231. package/scripts/e2e.mjs +8 -8
  232. package/scripts/env-audit.mjs +27 -7
  233. package/scripts/env-classify.mjs +139 -15
  234. package/scripts/freeze-example-run.mjs +3 -3
  235. package/scripts/head-arrived-gated.mjs +1 -1
  236. package/scripts/headless-page.mjs +274 -0
  237. package/scripts/home-render-check.mjs +3 -2
  238. package/scripts/live-surface-check.mjs +92 -19
  239. package/scripts/main-health.mjs +1 -1
  240. package/scripts/merge-presence-check.mjs +3 -3
  241. package/scripts/mint-reference-strip-backlog.mjs +41 -0
  242. package/scripts/mint-suite-census.mjs +6 -6
  243. package/scripts/nightly-notice.mjs +1 -1
  244. package/scripts/portal-lifecycle-check.mjs +3 -3
  245. package/scripts/reconcile-runs.mjs +1 -1
  246. package/scripts/release-await-cut.mjs +101 -11
  247. package/scripts/release-version-pr-checks.mjs +26 -2
  248. package/scripts/release-version.mjs +2 -2
  249. package/scripts/render-check.mjs +66 -7
  250. package/scripts/report-frame-check.mjs +12 -0
  251. package/scripts/report-screenshot.mjs +62 -2
  252. package/scripts/revisit-render-check.mjs +3 -2
  253. package/scripts/score.mjs +18 -4
  254. package/scripts/strip-tracker-citations.mjs +116 -0
  255. package/scripts/test-run.mjs +3 -3
  256. package/scripts/third-party-notices.mjs +3 -3
  257. package/scripts/travelling-predicates.mjs +3 -3
  258. package/scripts/unexecuted-asserts.mjs +2 -2
  259. package/scripts/verify-publishable.mjs +2 -2
  260. package/scripts/write-up-form-census.mjs +1 -1
  261. package/shared/access-audience.mjs +215 -0
  262. package/shared/brand.mjs +13 -13
  263. package/shared/citation-scan.mjs +1 -1
  264. package/shared/client-door.mjs +7 -7
  265. package/shared/driver-dir.mjs +1 -1
  266. package/shared/env-aliases.mjs +0 -48
  267. package/shared/env-local.mjs +1 -1
  268. package/shared/identifier-scan.mjs +3 -3
  269. package/shared/invocation.mjs +1 -1
  270. package/shared/names-in-force.mjs +2 -0
  271. package/shared/product-owned-names.mjs +1 -1
  272. package/shared/register-selection.mjs +1 -1
  273. package/shared/scope.mjs +5 -5
  274. package/shared/server-units.mjs +4 -4
  275. package/shared/store-in-repo.mjs +2 -2
  276. package/shared/suite-census.mjs +4 -4
  277. package/shared/tracked-files.mjs +31 -0
  278. package/shared/tty-style.mjs +1 -1
  279. package/shared/uspto-index-size.mjs +1 -1
  280. package/shared/vacuous-pass.mjs +1 -1
  281. package/skills/clearotron-account/SKILL.md +42 -13
  282. package/driver/systemd/prelim-driver.path +0 -69
  283. package/driver/systemd/prelim-driver.service +0 -86
  284. package/driver/systemd/prelim-driver.timer +0 -14
  285. package/driver/systemd/prelim-outbox.path +0 -27
  286. package/driver/systemd/prelim-outbox.service +0 -37
  287. package/driver/systemd/prelim-outbox.timer +0 -21
  288. package/node_modules/exceljs/README_zh.md +0 -2878
  289. package/node_modules/exceljs/dist/LICENSE +0 -22
  290. package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
  291. package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
  292. package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
  293. package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
  294. package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
  295. package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
  296. package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
  297. package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
  298. package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
  299. package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
  300. package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
  301. package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
  302. package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
  303. package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
  304. package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
  305. package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
  306. package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
  307. package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
  308. package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
  309. package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
  310. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
  311. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
  312. package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
  313. package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
  314. package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
  315. package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
  316. package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
  317. package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
  318. package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
  319. package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
  320. package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
  321. package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
  322. package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
  323. package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
  324. package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
  325. package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
  326. package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
  327. package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
  328. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
  329. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
  330. package/node_modules/exceljs/dist/es5/index.js +0 -15
  331. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
  332. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
  333. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
  334. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
  335. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
  336. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
  337. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
  338. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
  339. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
  340. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
  341. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
  342. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
  343. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
  344. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
  345. package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
  346. package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
  347. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
  348. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
  349. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
  350. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
  351. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
  352. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
  353. package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
  354. package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
  355. package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
  356. package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
  357. package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
  358. package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
  359. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
  360. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
  361. package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
  362. package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
  363. package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
  364. package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
  365. package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
  366. package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
  367. package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
  368. package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
  369. package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
  370. package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
  371. package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
  372. package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
  373. package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
  374. package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
  375. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
  376. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
  377. package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
  378. package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
  379. package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
  380. package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
  381. package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
  382. package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
  383. package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
  384. package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
  385. package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
  386. package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
  387. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
  388. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
  389. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
  390. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
  391. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
  392. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
  393. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
  394. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
  395. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
  396. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
  397. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
  398. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
  399. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
  400. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
  401. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
  402. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
  403. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
  404. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
  405. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
  406. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
  407. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
  408. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
  409. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
  410. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
  411. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
  412. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
  413. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
  414. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
  415. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
  416. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
  417. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
  418. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
  419. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
  420. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
  421. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
  422. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
  423. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
  424. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
  425. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
  426. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
  427. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
  428. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
  429. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
  430. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
  431. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
  432. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
  433. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
  434. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
  435. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
  436. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
  437. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
  438. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
  439. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
  440. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
  441. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
  442. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
  443. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
  444. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
  445. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
  446. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
  447. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
  448. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
  449. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
  450. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
  451. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
  452. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
  453. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
  454. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
  455. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
  456. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
  457. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
  458. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
  459. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
  460. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
  461. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
  462. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
  463. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
  464. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
  465. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
  466. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
  467. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
  468. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
  469. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
  470. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
  471. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
  472. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
  473. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
  474. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
  475. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
  476. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
  477. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
  478. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
  479. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
  480. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
  481. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
  482. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
  483. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
  484. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
  485. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
  486. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
  487. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
  488. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
  489. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
  490. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
  491. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
  492. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
  493. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
  494. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
  495. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
  496. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
  497. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
  498. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
  499. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
  500. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
  501. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
  502. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
  503. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
  504. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
  505. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
  506. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
  507. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
  508. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
  509. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
  510. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
  511. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
  512. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
  513. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
  514. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
  515. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
  516. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
  517. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
  518. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
  519. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
  520. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
  521. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
  522. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
  523. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
  524. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
  525. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
  526. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
  527. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
  528. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
  529. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
  530. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
  531. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
  532. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
  533. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
  534. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
  535. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
  536. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
  537. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
  538. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
  539. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
  540. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
  541. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
  542. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
  543. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
  544. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
  545. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
  546. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
  547. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
  548. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
  549. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
  550. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
  551. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
  552. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
  553. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
  554. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
  555. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
  556. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
  557. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
  558. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
  559. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
  560. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
  561. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
  562. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
  563. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
  564. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
  565. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
  566. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
  567. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
  568. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
  569. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
  570. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
  571. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
  572. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
  573. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
  574. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
  575. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
  576. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
  577. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
  578. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
  579. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
  580. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
  581. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
  582. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
  583. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
  584. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
  585. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
  586. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
  587. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
  588. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
  589. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
  590. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
  591. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
  592. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
  593. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
  594. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
  595. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
  596. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
  597. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
  598. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
  599. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
  600. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
  601. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
  602. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
  603. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
  604. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
  605. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
  606. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
  607. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
  608. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
  609. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
  610. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
  611. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
  612. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
  613. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
  614. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
  615. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
  616. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
  617. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
  618. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
  619. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
  620. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
  621. package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
  622. package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
  623. package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
  624. package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
  625. package/node_modules/exceljs/dist/exceljs.js +0 -59900
  626. package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
  627. package/node_modules/exceljs/dist/exceljs.min.js +0 -45
  628. package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
  629. package/scripts/deploy-test.sh +0 -309
package/bin/key.mjs CHANGED
@@ -84,7 +84,7 @@ try {
84
84
 
85
85
  for (const line of minted.notes) console.error(line);
86
86
 
87
- // — bb8's F13. A KEY FOR AN IDENTITY ON NO LIST IS A KEY THAT 403s. This command
87
+ // — found in review. A KEY FOR AN IDENTITY ON NO LIST IS A KEY THAT 403s. This command
88
88
  // minted rc 0 for any address, printed the token once — it cannot be shown again — and the operator
89
89
  // handed it to a client whose first request was refused, with nothing on either side saying why.
90
90
  //
package/bin/onboard.mjs CHANGED
@@ -133,7 +133,7 @@ const PROBE_ENGINE = has("--probe-engine");
133
133
  // issue 1871 — the same opt-in shape, for the credentials that had no proof at all. Never implied by
134
134
  // a plain --check: this SPENDS, and on two of the register adapters the count IS a billable search.
135
135
  const PROBE_PROVIDERS = has("--probe-providers");
136
- // tracker issue 149 — the same opt-in shape again, and this one WRITES: every registration it gets
136
+ // the same opt-in shape again, and this one WRITES: every registration it gets
137
137
  // accepted CREATES an OAuth client on the operator's account. `doctor` promises in INSTALL.md that it
138
138
  // writes nothing, and that promise is why a reader runs it on a production box without thinking. So
139
139
  // this is never implied, it says what it is about to create before it creates it, and it reports what
@@ -141,7 +141,7 @@ const PROBE_PROVIDERS = has("--probe-providers");
141
141
  const PROBE_CONNECTOR = has("--probe-connector");
142
142
 
143
143
  // ── output ───────────────────────────────────────────────────────────────────────────────────────────
144
- // WEIGHT WHERE THE MEANING IS (, owner ruling 2026-08-31). Every line here used to
144
+ // WEIGHT WHERE THE MEANING IS (owner ruling 2026-08-31). Every line here used to
145
145
  // be the same weight, which is why the passphrase and the coverage reason both disappeared into their
146
146
  // surroundings — two defects on that issue that are formatting defects wearing other clothes.
147
147
  //
@@ -693,8 +693,8 @@ export async function preflightCandidate(candidate) {
693
693
  /** Ask EUIPO for a token. This is the check that makes "refuses to persist a bad secret" true. */
694
694
  export async function validateEuipo({ clientId, clientSecret, environment }) {
695
695
  try {
696
- const { resolveConfig } = await import(join(REPO, "providers", "euipo", "src", "core.js"));
697
- const { getAccessToken } = await import(join(REPO, "providers", "euipo", "src", "euipo-client.js"));
696
+ const { resolveConfig } = await import(pathToFileURL(join(REPO, "providers", "euipo", "src", "core.js")).href);
697
+ const { getAccessToken } = await import(pathToFileURL(join(REPO, "providers", "euipo", "src", "euipo-client.js")).href);
698
698
  await getAccessToken(resolveConfig({ clientId, clientSecret, environment }), { force: true });
699
699
  return { ok: true };
700
700
  } catch (e) {
@@ -705,7 +705,7 @@ export async function validateEuipo({ clientId, clientSecret, environment }) {
705
705
  /** One minimal Perplexity call. Costs a request, so it is never made without being asked for. */
706
706
  export async function validatePerplexity(apiKey) {
707
707
  try {
708
- const { buildRequestBody, callAgentAPI } = await import(join(REPO, "providers", "perplexity", "src", "core.js"));
708
+ const { buildRequestBody, callAgentAPI } = await import(pathToFileURL(join(REPO, "providers", "perplexity", "src", "core.js")).href);
709
709
  await callAgentAPI(apiKey, buildRequestBody({ task: "Reply with the single word: ok.", preset: "fast-search" }), { retries: 0 });
710
710
  return { ok: true };
711
711
  } catch (e) {
@@ -1053,7 +1053,7 @@ export async function runCheck() {
1053
1053
  // deliberate — a second reader would drift from this one exactly as the composer and the checker did
1054
1054
  // in F41, and the drift is invisible because both sides keep passing their own arms.
1055
1055
  const unitDir = join(homedir(), ".config", "systemd", "user");
1056
- const { BACKGROUND_UNITS } = await import(join(REPO, "bin", "start.mjs"));
1056
+ const { BACKGROUND_UNITS } = await import(pathToFileURL(join(REPO, "bin", "start.mjs")).href);
1057
1057
  const hosted = BACKGROUND_UNITS.some((u) => existsSync(join(unitDir, u)));
1058
1058
  const unitEnv = hosted
1059
1059
  ? unitEnvironment({
@@ -1166,8 +1166,8 @@ export async function runCheck() {
1166
1166
  + "and the MCP connection are live right now; `npm run example` needs no engine.");
1167
1167
  info(`To leave demo: install ${engSpec.vendor}'s CLI (\`${engSpec.fallback}\`), then ${engSpec.signIn}.`);
1168
1168
  } else {
1169
- info("MODE: engine attached, sign-in UNPROVEN a binary resolves, and whether it can complete a turn "
1170
- + "is not knowable from the filesystem. --probe-engine is what settles it.");
1169
+ info("The engine program is installed. Whether it is signed in cannot be read from disk: run "
1170
+ + "clearotron doctor --probe-engine to find out.");
1171
1171
  }
1172
1172
 
1173
1173
  // item 5 — WHICH BILLING LANE, reported rather than left to be inferred from a variable's
@@ -1188,8 +1188,8 @@ export async function runCheck() {
1188
1188
  if (e) envForResolve[k] = e.v;
1189
1189
  }
1190
1190
  const auth = resolveAuthMode({ engineName: engineId, env: envForResolve });
1191
- if (auth.mode === "unknown") info(`billing lane: not policied for ${engineId} — this engine declares no auth modes`);
1192
- else ok(`billing lane: ${auth.mode}${auth.apiBilled ? ` — metered per token against ${engSpec.apiKeyEnv}` : " — drawn against the signed-in subscription, not metered per token"}`);
1191
+ if (auth.mode === "unknown") info(`billing: no policy for ${engineId} — this engine declares no sign-in modes`);
1192
+ else ok(`billing: ${auth.mode}${auth.apiBilled ? ` — charged per token against ${engSpec.apiKeyEnv}` : " — charged to the signed-in subscription, not per token"}`);
1193
1193
  } catch (e) {
1194
1194
  problem(String(e?.message ?? e));
1195
1195
  }
@@ -1366,7 +1366,7 @@ export async function runCheck() {
1366
1366
  // Both lines were honest about their own source and neither said what it was. The first reads this
1367
1367
  // command's env file; the second reads THIS PROCESS's resolution, and a CLI is started by a login
1368
1368
  // shell that carries none of the units' `EnvironmentFile`. The deployment was correct and served
1369
- // celsius, microsoft and generic throughout.
1369
+ // zephyr, aurora and generic throughout.
1370
1370
  //
1371
1371
  // THE UNITS' ENV IS NOT PASSED INTO `profileStoreResolution`, deliberately. `PROFILES_OVERLAY_DIR`
1372
1372
  // is captured when profiles.mjs LOADS, so handing it the units' value would set `live` with no
@@ -1513,7 +1513,7 @@ export async function runCheck() {
1513
1513
  //
1514
1514
  // REPORTS, NEVER JUDGES: nothing here sets `problem()`. Drift is information for the reader, not a
1515
1515
  // fault in their install, and a doctor that called their own overrides broken would be wrong.
1516
- say("\n Doctrine overlay");
1516
+ say("\n Custom instructions");
1517
1517
  try {
1518
1518
  const report = overlayReport({ baseRoot: config.skillsBaseDir, overlayRoot: config.skillsOverlayDir });
1519
1519
  for (const line of renderOverlayReport(report, { indent: "" })) say(` ${line}`);
@@ -1528,7 +1528,7 @@ export async function runCheck() {
1528
1528
  // answer for somebody running the engine by hand. This line is what the services see.
1529
1529
  const svcDoctrine = effectiveForService("CLEAROTRON_INSTRUCTIONS_DIR");
1530
1530
  if (hosted && serviceKnown && svcDoctrine?.v && svcDoctrine.v !== config.skillsOverlayDir) {
1531
- info(`the services read a doctrine overlay this process does not: ${svcDoctrine.v} `
1531
+ info(`the services read custom instructions this process does not: ${svcDoctrine.v} `
1532
1532
  + `(${svcDoctrine.from}). The lines above are this command's own environment — a CLI is not `
1533
1533
  + "started by the units' EnvironmentFile, so \"none configured\" here is not a statement about "
1534
1534
  + "the deployment");
@@ -1541,7 +1541,7 @@ export async function runCheck() {
1541
1541
  // An unreadable overlay THROWS by design (config.resolveSkillPath refuses rather than falling back
1542
1542
  // to the product's copy). Surfaced here rather than allowed to abort the whole check: the doctor's
1543
1543
  // job is to report every section, and a section that kills the run tells the reader least.
1544
- problem(`the doctrine overlay could not be read — ${e.message}`);
1544
+ problem(`the custom instructions could not be read — ${e.message}`);
1545
1545
  }
1546
1546
 
1547
1547
  say("\n Register provider");
@@ -1585,7 +1585,7 @@ export async function runCheck() {
1585
1585
  say("\n Research provider");
1586
1586
  const px = effective("PERPLEXITY_API_KEY");
1587
1587
  if (px) ok(`PERPLEXITY_API_KEY present (${px.from}) — presence only; add --probe-providers to prove it answers`);
1588
- else info("PERPLEXITY_API_KEY is not set — the three clearance searches carry the common-law grid and cannot switch it off, so a clearance refuses at preflight; a Knockout search still runs and discloses the half it skipped");
1588
+ else info("PERPLEXITY_API_KEY is not set — the three clearance searches carry the common-law grid and cannot switch it off, so a clearance stops before it starts, and names the missing key; a Knockout search still runs and discloses the half it skipped");
1589
1589
 
1590
1590
  // ── — THE LANES A PRODUCT DECLARES IT NEEDS, BEFORE A REPORT NAMES THEM ──
1591
1591
  //
@@ -1663,7 +1663,7 @@ export async function runCheck() {
1663
1663
  // could print, and the portal's own config view does — is deliberately not printed here: `doctor` goes
1664
1664
  // to a terminal, into a paste, into an issue.
1665
1665
  // THE ONE CONDITION THAT STOPS THE PORTAL RENDERING, and `doctor` said nothing about it at all
1666
- // (bb8, F2). `portal-ui/dist` is committed, so an absent bundle means a bad checkout on
1666
+ // (found in review). `portal-ui/dist` is committed, so an absent bundle means a bad checkout on
1667
1667
  // a deployment and an unbuilt tree on a source clone; the service already answers 503 and says so in
1668
1668
  // its boot log, but a reader who runs `doctor` BEFORE `start` — which is the order every document
1669
1669
  // gives — had no way to learn it. The product's OWN predicate decides rather than a second existence
@@ -1770,7 +1770,7 @@ export async function runCheck() {
1770
1770
  }
1771
1771
  }
1772
1772
 
1773
- say("\n Portal door");
1773
+ say("\n Portal sign-in");
1774
1774
  {
1775
1775
  const { authView } = await import("../driver/portal-config-view.mjs");
1776
1776
  const door = authView({
@@ -1785,10 +1785,11 @@ export async function runCheck() {
1785
1785
  // NOT A TICK, AND THAT IS THE POINT. This reads the environment THIS command is
1786
1786
  // typed in. `bin/start.mjs` INJECTS `PORTAL_AUTH_MODE: "local"` into the portal's own environment,
1787
1787
  // and a systemd unit's EnvironmentFile can name a third thing — so a green tick here was a
1788
- // confident claim about a door the running service may not be serving. Measured on the test box:
1789
- // doctor said `auth-proxy door (PORTAL_AUTH_MODE is unset)` with a tick while the box served
1790
- // cf-access, and said `local passphrase door` with a tick while it still served cf-access. Both
1791
- // green, neither the door a caller meets.
1788
+ // confident claim about a door the running service may not be serving. Measured on the test
1789
+ // machine, in the wording doctor used at the time: it said `auth-proxy door (PORTAL_AUTH_MODE is
1790
+ // unset)` with a tick while the machine served cf-access, and said `local passphrase door` with a
1791
+ // tick while it still served cf-access. Both green, neither the door a caller meets. Those two
1792
+ // lines read differently now; what they claimed is the point, not how they were worded.
1792
1793
  //
1793
1794
  // The reading is still worth printing — it is what a hand-run process here would use, and it is
1794
1795
  // what `clearotron start` would launch from. It is stated as that, and the sentence below says
@@ -1808,7 +1809,7 @@ export async function runCheck() {
1808
1809
  say(` · local passphrase door (${typed}) — one operator, one passphrase, no identity provider`);
1809
1810
  info(`a lost passphrase is recoverable: ${invocationPrefix()}clearotron passphrase --reset`);
1810
1811
  } else if (door.shape === "fronted") {
1811
- say(` · auth-proxy door (${typed}) — identity is proved by whatever sits in front, and this process trusts it`);
1812
+ say(` · Sign-in: handled by a proxy in front (${typed}) — identity is proved by whatever sits in front, and this process trusts it`);
1812
1813
  for (const v of door.proxyValues) {
1813
1814
  if (v.present) ok(` ${v.name} present`);
1814
1815
  else info(` ${v.name} not set`);
@@ -1908,8 +1909,8 @@ export async function runCheck() {
1908
1909
  say("\n Register lane — proven, not inferred");
1909
1910
  try {
1910
1911
  const [{ activeProvider }, { makeLaneProbe, probeSpend, DEFAULT_CONTROLS, loadProviderCapabilities }] = await Promise.all([
1911
- import(join(REPO, "driver", "driver.config.mjs")),
1912
- import(join(REPO, "providers", "_shared", "lane-probe.mjs")),
1912
+ import(pathToFileURL(join(REPO, "driver", "driver.config.mjs")).href),
1913
+ import(pathToFileURL(join(REPO, "providers", "_shared", "lane-probe.mjs")).href),
1913
1914
  ]);
1914
1915
  const adapter = activeProvider();
1915
1916
  // NOT `adapter.capabilities` — that is null on every adapter, and reading it announced a LOCAL
@@ -1952,7 +1953,7 @@ export async function runCheck() {
1952
1953
  }
1953
1954
  }
1954
1955
 
1955
- say("\n Data-plane paths");
1956
+ say("\n Where files are stored");
1956
1957
  // Each entry is a FUNCTION, called only on the branch that prints it, so a getter is read at access
1957
1958
  // time and never captured as a constant here. The reader of this command is deciding what to
1958
1959
  // provision; a default quoted from memory is the one thing that can send them to the wrong path and
@@ -1963,7 +1964,7 @@ export async function runCheck() {
1963
1964
  // whole rather than summarised: a summary is a second copy, and a second copy is what drifted.
1964
1965
  ["CLEAROTRON_REPORTS_DIR", (name) => {
1965
1966
  const d = defaultWith(name, () => config.poolRoot);
1966
- return d.refusal ?? `${name} is not set — the published-report pool falls back to ${d.value}`;
1967
+ return d.refusal ?? `${name} is not set — the published-reports folder falls back to ${d.value}`;
1967
1968
  }],
1968
1969
  ["CLEAROTRON_WORK_DIR", (name) => {
1969
1970
  const d = defaultWith(name, () => config.workspaceRoot);
@@ -1985,67 +1986,6 @@ export async function runCheck() {
1985
1986
  // The status surface the ruling names: "status should say whether a key is still valid". Stopping
1986
1987
  // the door revokes nothing — a key outlives every teardown until it expires or its id is denylisted —
1987
1988
  // so a doctor that reported the unit and stayed silent about the keys would bless exactly the state
1988
- // the issue was filed about. Judged by the verifier's own pieces (`connectKeyReport` takes the real
1989
- // `isRevoked`), never by a second opinion written here.
1990
- // ── THE PROFILE STORE RESOLVES, OR THE PORTAL 500s ────────────────────────
1991
- //
1992
- // Asked by RUNNING the engine's own resolution, not by re-deriving it: loadProfiles() layers the
1993
- // configured store over the bundled base with generic falling through by name, and its refusal text
1994
- // is the exact line the portal prints on every screen when this is broken. A doctor that stayed
1995
- // green over that state would bless the owner's fresh-install 500.
1996
- say("\n Profile store");
1997
- try {
1998
- const { loadProfiles } = await import(join(REPO, "driver", "profiles.mjs"));
1999
- const resolved = loadProfiles({ force: true });
2000
- const named = [...resolved.keys()];
2001
- ok(`resolves: ${named.length} profile(s) (${named.slice(0, 6).join(", ")}${named.length > 6 ? ", …" : ""}) — the universal fallback is present`);
2002
- } catch (e) {
2003
- problem(`the profile store does NOT resolve — every portal profile screen and every run refuses on this: ${e.message}`);
2004
- }
2005
-
2006
- // ── THE SUBMIT LANE, WALKED (the owner's 502, 2026-09-02) ────────────────────────────────────────
2007
- //
2008
- // Every surface on that box was green while the portal's Start button had no engine to call. This is
2009
- // the only check that asks the question the client's own path asks, so it goes before the connector
2010
- // section: a dead submit lane matters more than a connector nobody has configured yet.
2011
- // ── SETTINGS THIS BUILD DOES NOT READ ( tracker issue 168) ────────────────────────────────────────
2012
- //
2013
- // THE SURFACE AN OPERATOR CHECKS AFTER AN UPGRADE, and until now the surface that told them
2014
- // everything was fine. Upgrading the production install across the `PRELIM_*` rename left thirteen
2015
- // configured settings with no reader in the new build; doctor exited 0 and mentioned none of them.
2016
- //
2017
- // EVERY ENVIRONMENT THE DEPLOYMENT ACTUALLY READS, not this shell's alone — the F34 lesson one step
2018
- // on. A hosted box's values live in the file the units load, so checking `process.env` here would
2019
- // pass a box whose units carry thirteen dead lines. Each source is named in its own row: "it is in
2020
- // your env file" and "it is in the units' environment" are different fixes.
2021
- //
2022
- // A source that could not be read is NOT reported as clean. `unitEnvironment` already distinguishes
2023
- // that, and an unreadable unit environment is said out loud rather than counted as zero dead names —
2024
- // an absence of evidence is not evidence of absence, and this whole check exists because something
2025
- // invisible was being read as fine.
2026
- {
2027
- const { retiredSpellingsIn, retiredSpellingLine } = await import(join(REPO, "shared", "env-aliases.mjs"));
2028
- const sources = [
2029
- { label: "your environment file", env: fileEnv, known: true },
2030
- { label: "this shell's environment", env: process.env, known: true },
2031
- ];
2032
- if (hosted) sources.push({ label: "the units' environment", env: unitEnv?.env, known: unitEnv?.known === true });
2033
-
2034
- const seen = new Set();
2035
- let anyUnknown = false;
2036
- for (const src of sources) {
2037
- if (!src.known || !src.env) { if (src.label === "the units' environment") anyUnknown = true; continue; }
2038
- for (const row of retiredSpellingsIn(src.env)) {
2039
- // One row per NAME, not per source: a name set in both the file and the units is one thing to
2040
- // fix, and two rows would read as two faults.
2041
- if (seen.has(row.name)) continue;
2042
- seen.add(row.name);
2043
- inertSetting(`${retiredSpellingLine(row)} (found in ${src.label})`);
2044
- }
2045
- }
2046
- if (anyUnknown) warn(couldNotDetermine("retired setting names", unitEnv));
2047
- if (!seen.size && !anyUnknown) ok("no retired setting names — every configured name is one this build reads");
2048
- }
2049
1989
 
2050
1990
  // LINGERING, WHICH NOTHING ELSE CHECKS ( — F9). `--background` installs USER units,
2051
1991
  // and a user manager without lingering is torn down at logout: the units stop with the session and
@@ -2075,9 +2015,9 @@ export async function runCheck() {
2075
2015
  + "failing to look, not a report that it is off.");
2076
2016
  }
2077
2017
 
2078
- say("\n Submit lane");
2018
+ say("\n Start-button path");
2079
2019
  try {
2080
- const { triggerLaneVerdict, HOSTED, SUPERVISED } = await import(join(REPO, "shared", "trigger-lane.mjs"));
2020
+ const { triggerLaneVerdict, HOSTED, SUPERVISED } = await import(pathToFileURL(join(REPO, "shared", "trigger-lane.mjs")).href);
2081
2021
  // POSTURE FROM THE BOX, NOT FROM A FLAG. Units installed means the units serve, and the units read
2082
2022
  // %h/.env — so an absent value there is the incident. No units means `start` supervises and derives
2083
2023
  // the value at runtime, where reading this process's environment says nothing either way.
@@ -2117,7 +2057,7 @@ export async function runCheck() {
2117
2057
  // Stop control's availability on — one reader, two surfaces.
2118
2058
  let verbs = null;
2119
2059
  try {
2120
- const { opsTokenPosture } = await import(join(REPO, "driver", "portal-service.mjs"));
2060
+ const { opsTokenPosture } = await import(pathToFileURL(join(REPO, "driver", "portal-service.mjs")).href);
2121
2061
  verbs = opsTokenPosture(opsToken).verbs;
2122
2062
  } catch { /* unreadable posture leaves verbs null, which reads as full ops — see the verdict */ }
2123
2063
  let probe = null;
@@ -2153,12 +2093,12 @@ export async function runCheck() {
2153
2093
  } catch (e) { warn(`the submit lane could not be read: ${e.message}`); }
2154
2094
 
2155
2095
  say("\n Client connector");
2156
- // THE REVOCATION LIST, REPORTED ( bb8's F14). `isRevoked` treats an unreadable
2096
+ // THE REVOCATION LIST, REPORTED (found in review). `isRevoked` treats an unreadable
2157
2097
  // denylist as "not revoked", so a named-but-absent file makes every revocation silently ineffective:
2158
2098
  // measured on a default install, a revoked key completed a full handshake with nothing logged. Nothing
2159
2099
  // surfaced that state anywhere, which is why it survived to be found by hand.
2160
2100
  {
2161
- const { defaultDenylistPath } = await import(join(REPO, "shared", "client-door.mjs"));
2101
+ const { defaultDenylistPath } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
2162
2102
  const dl = effective("TRADEMARK_MCP_TOKEN_DENYLIST")?.v || defaultDenylistPath(homedir());
2163
2103
  try {
2164
2104
  const n = readFileSync(dl, "utf8").split("\n").map((l) => l.trim()).filter((l) => l && !l.startsWith("#")).length;
@@ -2172,8 +2112,8 @@ export async function runCheck() {
2172
2112
  }
2173
2113
  }
2174
2114
  try {
2175
- const { clientDoorState: doorState, describeDoorState, connectKeyReport, CLIENT_DOOR_UNIT: doorUnit } = await import(join(REPO, "shared", "client-door.mjs"));
2176
- const { loadGrants: readGrantsFile, isRevoked: revokedCheck } = await import(join(REPO, "shared", "scope.mjs"));
2115
+ const { clientDoorState: doorState, describeDoorState, connectKeyReport, CLIENT_DOOR_UNIT: doorUnit } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
2116
+ const { loadGrants: readGrantsFile, isRevoked: revokedCheck } = await import(pathToFileURL(join(REPO, "shared", "scope.mjs")).href);
2177
2117
  // ── CONFIGURED IS NOT RUNNING, AND THIS IS THE SURFACE IT WAS MEASURED ON ──
2178
2118
  //
2179
2119
  // `describeDoorState` was written for exactly this block and then never called from it: the split
@@ -2242,14 +2182,14 @@ export async function runCheck() {
2242
2182
  const doorEnvKnown = !hosted || unitEnv?.known === true;
2243
2183
  const doorEnv = hosted && unitEnv?.known === true ? unitEnv.env : process.env;
2244
2184
  if (!doorEnvKnown) warn(couldNotDetermine("CLIENT_MCP_ACCOUNT_ACCESS", unitEnv));
2245
- // THE PORT AND ITS ALLOW-LIST ARE ONE SETTING, AND NOTHING SAID SO (, Hera's
2246
- // operator pass). `start` derives CLIENT_MCP_ALLOWED_HOSTS from the port it resolved, so moving the
2185
+ // THE PORT AND ITS ALLOW-LIST ARE ONE SETTING, AND NOTHING SAID SO (found in an operator pass).
2186
+ // `start` derives CLIENT_MCP_ALLOWED_HOSTS from the port it resolved, so moving the
2247
2187
  // port THROUGH start works. Moving it in the env file the units load does not: the door binds the
2248
2188
  // new port and then answers "403 Invalid Host header" on every request, because the allow-list still
2249
2189
  // names the old one. A door that is up, listening, and refuses everything is the worst of the three
2250
2190
  // states to debug, and nothing surfaced the mismatch.
2251
2191
  {
2252
- const { clientDoorPort: portOf, allowedHosts: hostsFor } = await import(join(REPO, "shared", "client-door.mjs"));
2192
+ const { clientDoorPort: portOf, allowedHosts: hostsFor } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
2253
2193
  const declared = String(effective("CLIENT_MCP_ALLOWED_HOSTS")?.v ?? "").trim();
2254
2194
  if (declared) {
2255
2195
  const port = portOf(doorEnv);
@@ -2265,14 +2205,14 @@ export async function runCheck() {
2265
2205
  }
2266
2206
  }
2267
2207
 
2268
- // IS ANYTHING ANSWERING? ( bb8's F11.) The unit file is evidence about the
2208
+ // IS ANYTHING ANSWERING? (found in review) The unit file is evidence about the
2269
2209
  // background shape only. A foreground `clearotron start` runs the door as its own child with no unit
2270
2210
  // at all, and this section then told a reader whose door was listening that it "is not set up here",
2271
2211
  // pointing them at the command they had just run. One loopback connect settles it, and null stays
2272
2212
  // null — a probe that could not be made is not a door that is absent.
2273
2213
  let doorListening = null;
2274
2214
  try {
2275
- const { clientDoorPort: portOf } = await import(join(REPO, "shared", "client-door.mjs"));
2215
+ const { clientDoorPort: portOf } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
2276
2216
  const { createConnection } = await import("node:net");
2277
2217
  doorListening = await new Promise((resolve) => {
2278
2218
  const sock = createConnection({ host: "127.0.0.1", port: portOf(doorEnv), timeout: 700 });
@@ -2307,11 +2247,16 @@ export async function runCheck() {
2307
2247
  problem("a valid key is on record but NO revocation list is configured (TRADEMARK_MCP_TOKEN_DENYLIST unset) "
2308
2248
  + `— \`${invoke("disconnect")}\` could not actually revoke it. \`${invoke("connect")}\` arms one; set the variable or reconnect.`);
2309
2249
  }
2310
- // THE PUBLISHED ADDRESS, AND WHETHER IT ANSWERS (, acceptance 2). Reported here
2250
+ // THE PUBLISHED ADDRESS, AND WHETHER IT ANSWERS (acceptance 2). Reported here
2311
2251
  // rather than beside the unit, because the unit running and the address being reachable are
2312
2252
  // different facts and the second is the one a client depends on.
2313
- const { clientDoorReachability } = await import(join(REPO, "shared", "client-door.mjs"));
2314
- const published = process.env.CLEAROTRON_CLIENT_MCP_URL ?? null;
2253
+ const { clientDoorReachability } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
2254
+ // FROM THE FILE THE UNITS LOAD, NOT THE SHELL THIS COMMAND WAS TYPED IN (the tracker issue 226
2255
+ // family, met again here). On a hosted box the published address lives in the units' environment,
2256
+ // and reading `process.env` reported "no client connector address is published — that is correct
2257
+ // for a local install" about a deployment that publishes one. Every verdict below rests on this
2258
+ // value, including the audience comparison, so a wrong reading here is not one wrong line.
2259
+ const published = effectiveForService("CLEAROTRON_CLIENT_MCP_URL")?.v ?? null;
2315
2260
  // A SHORT, CHEAP ASK, and a failure to reach IS the finding rather than a failure to look — the
2316
2261
  // property under test is reachability itself. What would be dishonest is calling an address green
2317
2262
  // because nothing asked, which is why `probe` stays null when there is nothing to ask about.
@@ -2327,8 +2272,13 @@ export async function runCheck() {
2327
2272
  // returns null when the header is absent — a looked-and-none answer, not a did-not-look — and
2328
2273
  // the readers separate those, so a probe that omits the field reads as never-looked rather
2329
2274
  // than silently as "no challenge".
2275
+ // THE REDIRECT TARGET TRAVELS WITH IT (tracker issue 241). This request is already made with
2276
+ // `redirect: "manual"`, so the Location an unauthenticated caller is handed is right here —
2277
+ // and it is where Cloudflare Access puts the audience. Reading it from THIS response rather
2278
+ // than asking a second time keeps `doctor` to one request per address, and keeps both answers
2279
+ // about the same moment.
2330
2280
  probe = { ok: res.status < 500, status: res.status, error: null,
2331
- challenge: res.headers.get("www-authenticate") };
2281
+ challenge: res.headers.get("www-authenticate"), location: res.headers.get("location") };
2332
2282
  } catch (e) { probe = { ok: false, status: null, error: String(e?.cause?.code ?? e?.name ?? e?.message ?? e) }; }
2333
2283
  }
2334
2284
  const reach = clientDoorReachability({ url: published, probe });
@@ -2336,6 +2286,34 @@ export async function runCheck() {
2336
2286
  else if (reach.state === "fail") problem(reach.message);
2337
2287
  else info(reach.message);
2338
2288
 
2289
+ // ── AND IS IT THE AUDIENCE THIS INSTALL CHECKS AGAINST? (tracker issue 241) ───────────────────
2290
+ //
2291
+ // The other half of the recreation trap, and the half with no symptom of its own. Deleting and
2292
+ // recreating an Access application changes the audience; the existing warning fires on the
2293
+ // CHALLENGE being wrong, so on a box where somebody recreated the application and then fixed the
2294
+ // sign-in, everything above reads healthy and the stale audience stays invisible until a real
2295
+ // request is rejected.
2296
+ //
2297
+ // No new credential and no provider API: the audience is in the redirect handed to a caller with
2298
+ // no session at all, which is the request just made.
2299
+ {
2300
+ const { readAudience, audienceVerdict } = await import(pathToFileURL(join(REPO, "shared", "access-audience.mjs")).href);
2301
+ const configuredAud = effectiveForService("CLEAROTRON_OIDC_AUDIENCE")?.v ?? "";
2302
+ const read = readAudience(probe ?? { error: "the published address was never asked" });
2303
+ // NOTHING IS CLAIMED ABOUT A BOX THAT USES NO EDGE. With no audience configured AND no Access
2304
+ // challenge in front of the address, there is no question here — a local install is not a
2305
+ // misconfigured hosted one, and saying so every time is how a reader learns to skim this.
2306
+ if (configuredAud || read.kind !== "not-fronted") {
2307
+ const v = audienceVerdict({ configured: configuredAud, read });
2308
+ if (v.ok) ok(v.message);
2309
+ // A COULD-NOT-LOOK IS SAID, NOT RAISED. The line above has already reported the address as
2310
+ // unreachable; repeating it as a second failure teaches the reader that this section
2311
+ // double-counts. It still states what was NOT established, which is the whole job.
2312
+ else if (v.kind === "could-not-look") info(v.message);
2313
+ else problem(v.message);
2314
+ }
2315
+ }
2316
+
2339
2317
  // ── CAN AN ASSISTANT ACTUALLY SIGN IN? (tracker issue 149, opt-in) ────────────────────────────
2340
2318
  //
2341
2319
  // The check above reads the CHALLENGE FORM, which is the first of two provider settings that decide
@@ -2345,7 +2323,7 @@ export async function runCheck() {
2345
2323
  // announces the side effect first, and its control runs before any vendor.
2346
2324
  if (PROBE_CONNECTOR && String(published ?? "").trim()) {
2347
2325
  const { registrationEndpointFrom, probeRegistration, describeRegistration } =
2348
- await import(join(REPO, "shared", "connector-signin-probe.mjs"));
2326
+ await import(pathToFileURL(join(REPO, "shared", "connector-signin-probe.mjs")).href);
2349
2327
  say("");
2350
2328
  say(" --probe-connector: asking this door's sign-in whether each assistant vendor could register.");
2351
2329
  say(" Each attempt that SUCCEEDS creates a throwaway OAuth client on your account, which you may");
@@ -2533,7 +2511,7 @@ try {
2533
2511
  // is DERIVED: the engines from ENGINE_BINARIES, the search vendors from the same adapter tables the
2534
2512
  // prompts loop over, each wearing its own table row's where-to-get line. A hand-kept copy here would
2535
2513
  // be the SERPAPI defect again, one screen earlier. Everything is skippable; the list says so.
2536
- // THE BANNER — once, on entry, named (, owner ruling 2026-08-31). Not on every
2514
+ // THE BANNER — once, on entry, named (owner ruling 2026-08-31). Not on every
2537
2515
  // command: a banner every verb prints is how a product becomes tiresome to use twice. It sits here
2538
2516
  // rather than at the top of main() so that `--check`, which writes nothing and is run repeatedly,
2539
2517
  // does not wear it either.
@@ -2543,7 +2521,7 @@ try {
2543
2521
  say("");
2544
2522
  say(` ${style.bold("Before you start")} — what this setup can take, so nothing here surprises you:`);
2545
2523
  // `vendor`, not `label`: the labels are engineer sentences carrying flag names, and a question a
2546
- // lawyer reads may not ('s first rule).
2524
+ // lawyer reads may not (the first rule).
2547
2525
  say(` · Which AI runs the searches (${Object.values(ENGINE_BINARIES).map((e) => e.vendor).join(" or ")}),`);
2548
2526
  say(" and how it bills — the subscription you already sign in with, or an API key.");
2549
2527
  say(" · Your trademark register vendor's credential, if you have one (a register can be chosen later).");
@@ -2817,7 +2795,7 @@ try {
2817
2795
  }
2818
2796
  }
2819
2797
  }
2820
- // — bb8's F9, and the same trap closed one prompt over. The default
2798
+ // — found in review, and the same trap closed one prompt over. The default
2821
2799
  // was YES, so Enter re-ran a probe that CANNOT succeed until the reader has signed in somewhere
2822
2800
  // else — and the wizard's own header tells them Enter is the safe key. Driven with Enter it went
2823
2801
  // 19 attempts, no cap and no escape, in a wizard whose header says everything here is skippable.
@@ -3011,7 +2989,7 @@ try {
3011
2989
  const baseDefault = join(homedir(), "trademark");
3012
2990
  prose("Reports, run workspaces, queues and locks all live under one directory.");
3013
2991
  if (poolDefault.refusal) {
3014
- prose(`Enter accepts ${baseDefault}. There is no built-in default for the pool — left unset a run`,
2992
+ prose(`Enter accepts ${baseDefault}. There is no built-in default for the reports folder — left unset a run`,
3015
2993
  "refuses and names it rather than guessing — so setup gives it a real path under your home,",
3016
2994
  "and this install publishes only where you own the disk.");
3017
2995
  } else {
@@ -3057,7 +3035,7 @@ try {
3057
3035
  // The escape goes in the BRACKETS and the consequence in `skipped`, matching the two prompts that
3058
3036
  // already take this mode — the question no longer carries "(empty for none)" because the bracket now
3059
3037
  // says it, and a prompt that says it twice in two different wordings is how the two drift apart.
3060
- const reportsUrl = await askValue("Public base URL for the pool:", {
3038
+ const reportsUrl = await askValue("Public base URL for the reports folder:", {
3061
3039
  skippable: true,
3062
3040
  skipped: "CLEAROTRON_REPORTS_URL left unset — runs will deliver, and their notifications will carry no link",
3063
3041
  });
@@ -3096,7 +3074,7 @@ try {
3096
3074
  prose("No default — it is your hostname. Skip it and this stays a local install: everything works",
3097
3075
  "here, and the Use-your-AI page says so rather than handing out an address that fails.");
3098
3076
  prose("The usual shape, and why: mcp-server/CONNECT.md.");
3099
- const { clientDoorReachability } = await import(join(REPO, "shared", "client-door.mjs"));
3077
+ const { clientDoorReachability } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
3100
3078
  for (;;) {
3101
3079
  const clientUrl = await askValue("Public connector address:", {
3102
3080
  skippable: true,
@@ -3139,7 +3117,7 @@ try {
3139
3117
  // making a decision about where their customer data lives without being told they had made it.
3140
3118
  const cfgDefault = join(base, "config");
3141
3119
  say("\n Where this install keeps its own configuration");
3142
- prose("Your customers and any doctrine you override live here, outside the checkout — which is what",
3120
+ prose("Your customers and any instructions you override live here, outside the checkout — which is what",
3143
3121
  "lets you take updates with `git pull` instead of merging into files you never meant to own.");
3144
3122
  prose(`Enter accepts ${cfgDefault}, and your customers are written there.`);
3145
3123
  const cfg = await askValue("Configuration directory:", { def: cfgDefault });
@@ -3164,7 +3142,7 @@ try {
3164
3142
  candidate.PROFILE_REPO_ROOT = cfg; // no alias row — this name is current
3165
3143
  for (const k of ["CLEAROTRON_CUSTOMERS_DIR", "PROFILE_REPO_ROOT"]) ok(`${k}=${candidate[k]}`);
3166
3144
 
3167
- // CLEAROTRON_INSTRUCTIONS_DIR IS DELIBERATELY NOT WRITTEN ( bb8's F25).
3145
+ // CLEAROTRON_INSTRUCTIONS_DIR IS DELIBERATELY NOT WRITTEN (found in review).
3168
3146
  //
3169
3147
  // Setup used to point it at `<cfg>/skills` and create that directory empty. `clearotron start` then
3170
3148
  // makes `<cfg>` a git repository for saved searches — so the doctrine store ends up INSIDE a checkout
@@ -3180,7 +3158,7 @@ try {
3180
3158
  // Note for whoever adds an overlay later: it needs this name set, which is why the line below says so
3181
3159
  // rather than leaving a reader to discover that files they dropped in are being ignored.
3182
3160
  info(`doctrine: this install overrides nothing, so CLEAROTRON_INSTRUCTIONS_DIR stays unset and the `
3183
- + `product's own files are used. To override a doctrine file later, put it in ${join(cfg, "skills")}, `
3161
+ + `product's own files are used. To override an instruction file later, put it in ${join(cfg, "skills")}, `
3184
3162
  + `COMMIT it in ${cfg}, and set CLEAROTRON_INSTRUCTIONS_DIR to that directory — an uncommitted store `
3185
3163
  + "cannot be identified, and a run says so rather than guessing.");
3186
3164
 
@@ -3193,7 +3171,7 @@ try {
3193
3171
  // PRECISELY what shows through, because the last wording said "bundled customers" and the loader
3194
3172
  // says otherwise: the demo roster never layers into a deployment (a typo'd key must not resolve to
3195
3173
  // our fixtures), generic.json falls through BY NAME, and doctrine resolves file-by-file.
3196
- say(" Left empty. The house doctrine shows through file-by-file, and generic.json — the universal");
3174
+ say(" Left empty. The bundled instructions show through file-by-file, and generic.json — the universal");
3197
3175
  say(" fallback — falls through by name, so an empty store is a working install. Your own customers");
3198
3176
  say(" are added here by name; the bundled demo customers never show through into your roster.");
3199
3177
 
@@ -3251,7 +3229,7 @@ try {
3251
3229
  // rather than fall back, so a permissions fault can never silently swap a customer's framework for the
3252
3230
  // Generic default). Nothing is written INTO them — see the note at step 7b.
3253
3231
  for (const k of ["CLEAROTRON_CUSTOMERS_DIR"]) mkdirSync(candidate[k], { recursive: true });
3254
- ok(`configuration directories created under ${cfg} (empty — doctrine and the generic fallback show through; customers are yours to add)`);
3232
+ ok(`configuration directories created under ${cfg} (empty — the bundled instructions and the generic fallback show through; customers are yours to add)`);
3255
3233
 
3256
3234
  // 9a ── PUT THE VERB ON THIS OPERATOR'S PATH
3257
3235
  //
@@ -3291,17 +3269,17 @@ try {
3291
3269
  // They are `clearotron` verbs now for a second reason as well: from an INSTALLED package there is
3292
3270
  // no `npm run example` to type — no package.json, no scripts block — so the old advice was not
3293
3271
  // merely misordered there, it was unrunnable.
3294
- // ONE COMMAND, AND WHAT TO EXPECT FROM IT (, the owner's point 10). This screen
3272
+ // ONE COMMAND, AND WHAT TO EXPECT FROM IT (the owner's point 10). This screen
3295
3273
  // offered three, each with a sentence, and a reader who has just answered a page of questions is
3296
3274
  // being asked to make one more choice at the moment they most want to be told what to do. Three
3297
3275
  // equally-weighted options is not generosity; it is the decision handed back.
3298
3276
  //
3299
3277
  // `start` is the one, because it is the product — the other two were already ordered behind it for
3300
- // that reason (, when this screen offered `npm run example` and a raw pipeline invocation and
3278
+ // that reason (when this screen offered `npm run example` and a raw pipeline invocation and
3301
3279
  // named the product nowhere). They keep their place as an afterthought line rather than an option.
3302
3280
  // THE COMMAND LINE STAYS A PLAIN LITERAL, DELIBERATELY. onboard-wizard.test.mjs reads this screen
3303
3281
  // STATICALLY — it extracts every say() literal and asserts which command leads — and that guard is
3304
- // the only thing standing between this screen and 's defect coming back. Wrapping the command in
3282
+ // the only thing standing between this screen and the defect coming back. Wrapping the command in
3305
3283
  // style.bold() puts a nested template literal inside the say(), the extractor stops matching, and the
3306
3284
  // corpus goes empty. Its own comment records the previous generation of exactly this: the arms went
3307
3285
  // vacuous the moment these lines became template literals.
@@ -3322,7 +3300,7 @@ try {
3322
3300
  say(" What this box has now:");
3323
3301
  for (const line of [
3324
3302
  stateLine("register", candidate.CLEAROTRON_DATABASE, "no register, so every search refuses until one is chosen"),
3325
- stateLine("web research", present(candidate.PERPLEXITY_API_KEY) ? "a key" : "", "a clearance refuses at preflight; a knockout search runs and discloses the half it skipped"),
3303
+ stateLine("web research", present(candidate.PERPLEXITY_API_KEY) ? "a key" : "", "a clearance stops before it starts, and names the missing key; a knockout search runs and discloses the half it skipped"),
3326
3304
  stateLine("data directory", candidate.CLEAROTRON_REPORTS_DIR, "unset"),
3327
3305
  stateLine("configuration store", candidate.CLEAROTRON_CUSTOMERS_DIR, "the bundled demo roster"),
3328
3306
  stateLine("notification links", candidate.CLEAROTRON_REPORTS_URL, "notifications carry no link into the report"),