clearotron 0.2.1 → 0.2.3

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 (676) hide show
  1. package/.env.example +82 -1
  2. package/.nvmrc +1 -1
  3. package/CONTRIBUTING.md +3 -3
  4. package/INSTALL.md +64 -58
  5. package/README.md +11 -16
  6. package/THIRD-PARTY-NOTICES.md +1 -1
  7. package/bin/brandowner.mjs +1 -1
  8. package/bin/clearotron.mjs +26 -4
  9. package/bin/connect.mjs +2 -2
  10. package/bin/example.mjs +31 -11
  11. package/bin/grant.mjs +3 -3
  12. package/bin/key.mjs +1 -1
  13. package/bin/onboard.mjs +252 -136
  14. package/bin/start.mjs +176 -33
  15. package/bin/stop.mjs +65 -3
  16. package/bin/update.mjs +7 -7
  17. package/bin/uspto-sync.mjs +1 -1
  18. package/build-info.json +2 -2
  19. package/demo/full-country-search/run/_driver/framework.json +1 -1
  20. package/demo/global-preliminary-search/run/_driver/framework.json +1 -1
  21. package/demo/knockout-search/run/_driver/framework.json +1 -1
  22. package/demo/multi-country-focus-search/run/_driver/framework.json +1 -1
  23. package/docs/DELIVERY.md +6 -2
  24. package/docs/E2E.md +5 -5
  25. package/docs/PORTAL.md +2 -2
  26. package/docs/README.md +5 -4
  27. package/docs/SECURITY.md +17 -0
  28. package/docs/architecture/01-product-overview.md +2 -2
  29. package/docs/architecture/02-architecture.md +2 -2
  30. package/docs/architecture/04-configuration-reference.md +8 -3
  31. package/docs/architecture/05-config-governance.md +52 -5
  32. package/docs/architecture/05-customer-profiles.md +2 -2
  33. package/docs/architecture/06-operations-runbook.md +13 -1
  34. package/docs/architecture/09-security-and-data.md +1 -1
  35. package/docs/configuration.md +4 -3
  36. package/docs/decisions/0004-documentation-structure.md +1 -1
  37. package/driver/CHANGELOG.md +121 -1
  38. package/driver/README.md +2 -2
  39. package/driver/ask-ledger.mjs +3 -3
  40. package/driver/authority-trees.mjs +1 -1
  41. package/driver/call-capture.mjs +1 -1
  42. package/driver/card-frame.mjs +1 -1
  43. package/driver/case-law-ledger.mjs +1 -1
  44. package/driver/claim-liveness.mjs +1 -1
  45. package/driver/common-law-receipts.mjs +2 -2
  46. package/driver/commonlaw-carry.mjs +1 -1
  47. package/driver/config-inventory.mjs +1 -1
  48. package/driver/config-staleness.mjs +1 -1
  49. package/driver/connotation-search.mjs +12 -12
  50. package/driver/contract-audit.mjs +5 -5
  51. package/driver/contract-dictation-registry.mjs +4 -4
  52. package/driver/contract-dictation.mjs +2 -2
  53. package/driver/contract-e3-backlog.mjs +6 -6
  54. package/driver/contract-vocabulary.mjs +3 -3
  55. package/driver/corrections-feedforward.mjs +1 -1
  56. package/driver/coverage-form-io.mjs +2 -2
  57. package/driver/coverage-form.mjs +4 -4
  58. package/driver/coverage-ledger.mjs +3 -3
  59. package/driver/coverage-union.mjs +1 -1
  60. package/driver/declination-call.mjs +35 -3
  61. package/driver/declination-duty.mjs +1 -1
  62. package/driver/deliver-trigger.sh +3 -3
  63. package/driver/deploy-live-run-guard.mjs +6 -2
  64. package/driver/dev-portal.mjs +3 -3
  65. package/driver/disposition-call.mjs +4 -4
  66. package/driver/disposition-tool.mjs +4 -4
  67. package/driver/disposition-union.mjs +2 -2
  68. package/driver/doc-constants.mjs +1 -1
  69. package/driver/door-gates.mjs +2 -2
  70. package/driver/doubt-selection.mjs +2 -2
  71. package/driver/drainer-identity.mjs +1 -1
  72. package/driver/driver.config.mjs +64 -12
  73. package/driver/e2e-rounds.mjs +2 -2
  74. package/driver/effort-model.mjs +2 -2
  75. package/driver/engine/anthropic-agent.mjs +24 -24
  76. package/driver/engine/auth.mjs +1 -1
  77. package/driver/engine/cli-version.mjs +103 -0
  78. package/driver/engine/common.mjs +1 -1
  79. package/driver/engine/deny-authority-write.mjs +1 -1
  80. package/driver/engine/jx-turn.mjs +1 -1
  81. package/driver/engine/mcp/clarivate-server.mjs +1 -1
  82. package/driver/engine/mcp/corsearch-server.mjs +1 -1
  83. package/driver/engine/mcp/declination-server.mjs +1 -1
  84. package/driver/engine/mcp/dispositions-server.mjs +1 -1
  85. package/driver/engine/mcp/euipo-server.mjs +1 -1
  86. package/driver/engine/mcp/fetch-server.mjs +1 -1
  87. package/driver/engine/mcp/free-tier-server.mjs +2 -2
  88. package/driver/engine/mcp/gather-config.mjs +11 -11
  89. package/driver/engine/mcp/perplexity-server.mjs +1 -1
  90. package/driver/engine/mcp/recording-server.mjs +8 -4
  91. package/driver/engine/mcp/signa-server.mjs +1 -1
  92. package/driver/engine/mcp/uspto-local-server.mjs +1 -1
  93. package/driver/engine/openai-agent.mjs +2 -2
  94. package/driver/engine-build.mjs +2 -2
  95. package/driver/enqueue-schema.mjs +10 -10
  96. package/driver/enqueue.mjs +1 -1
  97. package/driver/envelope-settle.mjs +1 -1
  98. package/driver/evidence-claim-invariant.mjs +2 -2
  99. package/driver/feedback-store.mjs +1 -1
  100. package/driver/findings-model.mjs +60 -10
  101. package/driver/flag-snapshot.mjs +20 -0
  102. package/driver/floor-duty.mjs +1 -1
  103. package/driver/form-neighbourhood.mjs +1 -1
  104. package/driver/framework.mjs +2 -2
  105. package/driver/gateway.mjs +45 -23
  106. package/driver/grounds-grammar.mjs +1 -1
  107. package/driver/hit-list.mjs +1 -1
  108. package/driver/jurisdiction-systems.mjs +1 -1
  109. package/driver/jx-lanes.mjs +1 -1
  110. package/driver/jx-units.mjs +1 -1
  111. package/driver/jx.mjs +3 -3
  112. package/driver/knockout-assess-record.mjs +5 -1
  113. package/driver/narrative-refutation-record.mjs +3 -3
  114. package/driver/numeric-setting.mjs +1 -1
  115. package/driver/owner-use-check.mjs +184 -0
  116. package/driver/package.json +4 -4
  117. package/driver/party-facts.mjs +2 -2
  118. package/driver/phase0.mjs +2 -2
  119. package/driver/pipeline-knockout.mjs +52 -4
  120. package/driver/pipeline.mjs +180 -67
  121. package/driver/placement-diff.mjs +2 -2
  122. package/driver/placement-form.mjs +4 -4
  123. package/driver/placement-union.mjs +1 -1
  124. package/driver/plain-register.mjs +120 -0
  125. package/driver/portal-access.mjs +1 -1
  126. package/driver/portal-acks.mjs +1 -1
  127. package/driver/portal-config-view.mjs +42 -3
  128. package/driver/portal-families.mjs +1 -1
  129. package/driver/portal-local-auth.mjs +1 -1
  130. package/driver/portal-report.mjs +7 -7
  131. package/driver/portal-service.mjs +41 -22
  132. package/driver/portal-upstream.mjs +2 -2
  133. package/driver/predelivery-lint.mjs +149 -11
  134. package/driver/prelim-variants-record.mjs +2 -2
  135. package/driver/profile-page.html +11 -3
  136. package/driver/profile-selection.mjs +1 -1
  137. package/driver/profile-service.mjs +6 -6
  138. package/driver/profiles/README.md +3 -3
  139. package/driver/profiles.mjs +145 -13
  140. package/driver/progress.mjs +6 -6
  141. package/driver/provider-usage.mjs +1 -1
  142. package/driver/publish/demo-marking.mjs +1 -1
  143. package/driver/publish/index.mjs +49 -8
  144. package/driver/publish/knockout.mjs +42 -14
  145. package/driver/publish/parse.mjs +4 -4
  146. package/driver/publish/publish-inputs.mjs +2 -2
  147. package/driver/publish/register-presence.mjs +1 -1
  148. package/driver/publish/render-knockout.mjs +646 -144
  149. package/driver/publish/render.mjs +2 -2
  150. package/driver/publish/report-data.mjs +13 -3
  151. package/driver/queue-watch-probe.mjs +1 -1
  152. package/driver/queue-watch-verdict.mjs +1 -1
  153. package/driver/recall-reconciliation.mjs +1 -1
  154. package/driver/recipe-service.mjs +1 -1
  155. package/driver/record-carry.mjs +5 -5
  156. package/driver/recording-agreement.mjs +3 -3
  157. package/driver/reference-score.mjs +7 -7
  158. package/driver/reference-strip-signatures.mjs +20 -0
  159. package/driver/refusal-bound.mjs +3 -3
  160. package/driver/register-availability.mjs +2 -2
  161. package/driver/register-count.mjs +1 -1
  162. package/driver/register-grant-vocabulary.mjs +2 -2
  163. package/driver/register-plan.mjs +8 -8
  164. package/driver/register-records.mjs +2 -2
  165. package/driver/registry-fidelity.mjs +3 -3
  166. package/driver/remedy-accounting.mjs +1 -1
  167. package/driver/repair-composers.mjs +2 -2
  168. package/driver/repair-digest.mjs +3 -3
  169. package/driver/repairs.mjs +6 -6
  170. package/driver/replay-archive.mjs +2 -0
  171. package/driver/report-card-record.mjs +2 -2
  172. package/driver/result-noun-fields.mjs +10 -3
  173. package/driver/run-economics.mjs +2 -2
  174. package/driver/run-integrity.mjs +1 -1
  175. package/driver/runner.mjs +22 -22
  176. package/driver/scope-rules.mjs +1 -1
  177. package/driver/search-policy.mjs +5 -5
  178. package/driver/skeptic-search.mjs +1 -1
  179. package/driver/skills/blind-frame/SKILL.md +2 -2
  180. package/driver/skills/case-law-citation/SKILL.md +2 -2
  181. package/driver/skills/knockout-assess/SKILL.md +94 -4
  182. package/driver/skills/matter-frame/SKILL.md +6 -6
  183. package/driver/skills/matter-frame/watchlist-reference.md +2 -2
  184. package/driver/skills/prelim-common-law/SKILL.md +1 -1
  185. package/driver/skills/prelim-search/SKILL.md +3 -3
  186. package/driver/skills/prelim-search/report-prose.md +82 -0
  187. package/driver/skills/prelim-search/risk-framework-demo.manifest.json +1 -1
  188. package/driver/skills/prelim-search/risk-framework-triage.manifest.json +1 -1
  189. package/driver/skills/prelim-search/risk-framework.manifest.json +1 -1
  190. package/driver/skills/prelim-search/synthesis-rules.md +1 -1
  191. package/driver/skills/prelim-search/template-formatting.md +1 -1
  192. package/driver/skills/prelim-search/templates/email/generic.md +1 -1
  193. package/driver/skills/prelim-search/worked-examples.md +1 -1
  194. package/driver/skills/prelim-variants/SKILL.md +5 -5
  195. package/driver/stage-context.mjs +1 -1
  196. package/driver/stages-knockout.mjs +55 -4
  197. package/driver/stages.mjs +101 -44
  198. package/driver/stray-artifacts.mjs +2 -2
  199. package/driver/suite-census.json +275 -65
  200. package/driver/synthesis-record.mjs +1 -1
  201. package/driver/systemd/clearotron-client-mcp.service +1 -1
  202. package/driver/systemd/clearotron-portal.service +1 -1
  203. package/driver/systemd/render-units.mjs +1 -1
  204. package/driver/tokens.mjs +1 -1
  205. package/driver/tool-calls.mjs +1 -1
  206. package/driver/turnaround-bands.mjs +1 -1
  207. package/driver/unit-file-drift.mjs +1 -1
  208. package/driver/unit-inventory.mjs +297 -80
  209. package/driver/unit-state-verdict.mjs +20 -12
  210. package/driver/verify-knockout.mjs +10 -2
  211. package/driver/verify.mjs +13 -13
  212. package/driver/whatif-memo-run.mjs +72 -9
  213. package/driver/whatif-memo.mjs +19 -1
  214. package/driver/whatif-queue.mjs +1 -1
  215. package/driver/whatif-worker.mjs +1 -1
  216. package/examples/README.md +2 -2
  217. package/examples/grants.example.json +6 -7
  218. package/mcp-server/CHANGELOG.md +6 -0
  219. package/mcp-server/README.md +3 -3
  220. package/mcp-server/http-server.mjs +44 -1
  221. package/mcp-server/key-socket.mjs +184 -0
  222. package/mcp-server/lib/audit-view.mjs +69 -2
  223. package/mcp-server/lib/brief.mjs +15 -0
  224. package/mcp-server/lib/driver.mjs +7 -1
  225. package/mcp-server/lib/events.mjs +1 -1
  226. package/mcp-server/lib/http-handler.mjs +1 -1
  227. package/mcp-server/lib/knockout.mjs +435 -0
  228. package/mcp-server/lib/ops.mjs +4 -4
  229. package/mcp-server/lib/options.mjs +1 -1
  230. package/mcp-server/lib/plan.mjs +1 -1
  231. package/mcp-server/lib/runs.mjs +1 -1
  232. package/mcp-server/lib/scrub.mjs +2 -2
  233. package/mcp-server/lib/whatif.mjs +5 -5
  234. package/mcp-server/mint-token.mjs +1 -1
  235. package/mcp-server/package.json +2 -2
  236. package/mcp-server/packs/ops/EXAMPLES.md +2 -2
  237. package/mcp-server/server.mjs +77 -12
  238. package/package.json +30 -12
  239. package/portal-ui/dist/assets/{index-Ct3iQtZ2.css → index-1ziUJX1E.css} +43 -2
  240. package/portal-ui/dist/assets/{index-BUGgiYtF.js → index-CEYvXdqH.js} +226 -49
  241. package/portal-ui/dist/index.html +2 -2
  242. package/portal-ui/package.json +1 -1
  243. package/providers/_shared/enumerate.mjs +1 -1
  244. package/providers/_shared/ledger-path.mjs +3 -3
  245. package/providers/_shared/ledger.mjs +1 -1
  246. package/providers/_shared/result-shape.mjs +3 -3
  247. package/providers/_shared/term-shape.mjs +2 -2
  248. package/providers/corsearch/src/core.js +1 -1
  249. package/providers/jx-subclass/BUILDING.md +1 -1
  250. package/providers/oauth-mcp-bridge/CHANGELOG.md +6 -0
  251. package/providers/oauth-mcp-bridge/package.json +1 -1
  252. package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
  253. package/providers/uspto-local/src/index-store.js +2 -2
  254. package/scripts/README.md +1 -1
  255. package/scripts/added-reference-check.mjs +29 -1
  256. package/scripts/authority-boundary-probe.mjs +1 -1
  257. package/scripts/backfill-started-at.mjs +1 -1
  258. package/scripts/citation-line-check.mjs +124 -5
  259. package/scripts/compare.mjs +2 -2
  260. package/scripts/contract-dictation-scan.mjs +2 -2
  261. package/scripts/dead-names.mjs +1 -1
  262. package/scripts/drain-preflight.mjs +5 -5
  263. package/scripts/e2e-unread-terminals.mjs +1 -1
  264. package/scripts/e2e.mjs +8 -8
  265. package/scripts/env-audit.mjs +7 -7
  266. package/scripts/env-classify.mjs +206 -18
  267. package/scripts/freeze-example-run.mjs +3 -3
  268. package/scripts/head-arrived-gated.mjs +1 -1
  269. package/scripts/headless-page.mjs +51 -2
  270. package/scripts/live-surface-check.mjs +129 -19
  271. package/scripts/main-health.mjs +1 -1
  272. package/scripts/merge-presence-check.mjs +3 -3
  273. package/scripts/mint-suite-census.mjs +6 -6
  274. package/scripts/nightly-notice.mjs +1 -3
  275. package/scripts/preinstall-node-check.mjs +24 -0
  276. package/scripts/reconcile-runs.mjs +1 -1
  277. package/scripts/release-await-cut.mjs +6 -4
  278. package/scripts/release-version-pr-checks.mjs +1 -1
  279. package/scripts/release-version.mjs +2 -2
  280. package/scripts/render-check.mjs +66 -7
  281. package/scripts/report-frame-check.mjs +1 -1
  282. package/scripts/report-screenshot.mjs +1 -1
  283. package/scripts/revisit-render-check.mjs +1 -1
  284. package/scripts/score.mjs +4 -4
  285. package/scripts/strip-tracker-citations.mjs +139 -0
  286. package/scripts/test-run.mjs +19 -3
  287. package/scripts/third-party-notices.mjs +3 -3
  288. package/scripts/travelling-predicates.mjs +3 -3
  289. package/scripts/unexecuted-asserts.mjs +2 -2
  290. package/scripts/verify-publishable.mjs +2 -2
  291. package/scripts/write-up-form-census.mjs +1 -1
  292. package/shared/access-audience.mjs +1 -1
  293. package/shared/anon-overlay.mjs +3 -3
  294. package/shared/brand.mjs +13 -13
  295. package/shared/citation-scan.mjs +1 -1
  296. package/shared/client-door.mjs +7 -7
  297. package/shared/customer-store.mjs +1 -1
  298. package/shared/driver-dir.mjs +1 -1
  299. package/shared/env-aliases.mjs +0 -48
  300. package/shared/env-local.mjs +1 -1
  301. package/shared/identifier-scan.mjs +3 -3
  302. package/shared/invocation.mjs +29 -1
  303. package/shared/names-in-force.mjs +4 -0
  304. package/shared/node-floor.mjs +97 -0
  305. package/shared/product-owned-names.mjs +1 -1
  306. package/shared/register-selection.mjs +1 -1
  307. package/shared/scope.mjs +5 -5
  308. package/shared/server-units.mjs +4 -4
  309. package/shared/staff-domain.mjs +154 -0
  310. package/shared/store-in-repo.mjs +25 -4
  311. package/shared/suite-census.mjs +4 -4
  312. package/shared/tty-style.mjs +1 -1
  313. package/shared/uspto-index-size.mjs +1 -1
  314. package/shared/vacuous-pass.mjs +1 -1
  315. package/skills/clearotron-account/SKILL.md +42 -13
  316. package/skills/clearotron-ops/SKILL.md +1 -1
  317. package/driver/recipes/README.md +0 -49
  318. package/driver/skills/prelim-search/risk-framework-aurora.manifest.json +0 -19
  319. package/driver/skills/prelim-search/risk-framework-aurora.md +0 -77
  320. package/driver/skills/prelim-search/risk-framework-zephyr.manifest.json +0 -14
  321. package/driver/skills/prelim-search/risk-framework-zephyr.md +0 -33
  322. package/driver/skills/prelim-search/worked-examples-aurora.md +0 -10
  323. package/driver/skills/prelim-search/worked-examples-zephyr.md +0 -10
  324. package/driver/systemd/prelim-driver.path +0 -69
  325. package/driver/systemd/prelim-driver.service +0 -86
  326. package/driver/systemd/prelim-driver.timer +0 -14
  327. package/driver/systemd/prelim-outbox.path +0 -27
  328. package/driver/systemd/prelim-outbox.service +0 -37
  329. package/driver/systemd/prelim-outbox.timer +0 -21
  330. package/node_modules/exceljs/README_zh.md +0 -2878
  331. package/node_modules/exceljs/dist/LICENSE +0 -22
  332. package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
  333. package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
  334. package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
  335. package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
  336. package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
  337. package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
  338. package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
  339. package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
  340. package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
  341. package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
  342. package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
  343. package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
  344. package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
  345. package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
  346. package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
  347. package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
  348. package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
  349. package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
  350. package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
  351. package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
  352. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
  353. package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
  354. package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
  355. package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
  356. package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
  357. package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
  358. package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
  359. package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
  360. package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
  361. package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
  362. package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
  363. package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
  364. package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
  365. package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
  366. package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
  367. package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
  368. package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
  369. package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
  370. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
  371. package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
  372. package/node_modules/exceljs/dist/es5/index.js +0 -15
  373. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
  374. package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
  375. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
  376. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
  377. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
  378. package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
  379. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
  380. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
  381. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
  382. package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
  383. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
  384. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
  385. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
  386. package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
  387. package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
  388. package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
  389. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
  390. package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
  391. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
  392. package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
  393. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
  394. package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
  395. package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
  396. package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
  397. package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
  398. package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
  399. package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
  400. package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
  401. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
  402. package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
  403. package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
  404. package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
  405. package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
  406. package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
  407. package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
  408. package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
  409. package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
  410. package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
  411. package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
  412. package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
  413. package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
  414. package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
  415. package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
  416. package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
  417. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
  418. package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
  419. package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
  420. package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
  421. package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
  422. package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
  423. package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
  424. package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
  425. package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
  426. package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
  427. package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
  428. package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
  429. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
  430. package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
  431. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
  432. package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
  433. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
  434. package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
  435. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
  436. package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
  437. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
  438. package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
  439. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
  440. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
  441. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
  442. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
  443. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
  444. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
  445. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
  446. package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
  447. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
  448. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
  449. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
  450. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
  451. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
  452. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
  453. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
  454. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
  455. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
  456. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
  457. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
  458. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
  459. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
  460. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
  461. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
  462. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
  463. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
  464. package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
  465. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
  466. package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
  467. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
  468. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
  469. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
  470. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
  471. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
  472. package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
  473. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
  474. package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
  475. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
  476. package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
  477. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
  478. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
  479. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
  480. package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
  481. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
  482. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
  483. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
  484. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
  485. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
  486. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
  487. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
  488. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
  489. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
  490. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
  491. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
  492. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
  493. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
  494. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
  495. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
  496. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
  497. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
  498. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
  499. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
  500. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
  501. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
  502. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
  503. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
  504. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
  505. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
  506. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
  507. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
  508. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
  509. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
  510. package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
  511. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
  512. package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
  513. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
  514. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
  515. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
  516. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
  517. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
  518. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
  519. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
  520. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
  521. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
  522. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
  523. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
  524. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
  525. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
  526. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
  527. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
  528. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
  529. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
  530. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
  531. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
  532. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
  533. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
  534. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
  535. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
  536. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
  537. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
  538. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
  539. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
  540. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
  541. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
  542. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
  543. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
  544. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
  545. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
  546. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
  547. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
  548. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
  549. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
  550. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
  551. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
  552. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
  553. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
  554. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
  555. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
  556. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
  557. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
  558. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
  559. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
  560. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
  561. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
  562. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
  563. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
  564. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
  565. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
  566. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
  567. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
  568. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
  569. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
  570. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
  571. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
  572. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
  573. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
  574. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
  575. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
  576. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
  577. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
  578. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
  579. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
  580. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
  581. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
  582. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
  583. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
  584. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
  585. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
  586. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
  587. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
  588. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
  589. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
  590. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
  591. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
  592. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
  593. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
  594. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
  595. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
  596. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
  597. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
  598. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
  599. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
  600. package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
  601. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
  602. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
  603. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
  604. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
  605. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
  606. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
  607. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
  608. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
  609. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
  610. package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
  611. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
  612. package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
  613. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
  614. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
  615. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
  616. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
  617. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
  618. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
  619. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
  620. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
  621. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
  622. package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
  623. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
  624. package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
  625. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
  626. package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
  627. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
  628. package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
  629. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
  630. package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
  631. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
  632. package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
  633. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
  634. package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
  635. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
  636. package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
  637. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
  638. package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
  639. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
  640. package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
  641. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
  642. package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
  643. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
  644. package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
  645. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
  646. package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
  647. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
  648. package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
  649. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
  650. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
  651. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
  652. package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
  653. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
  654. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
  655. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
  656. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
  657. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
  658. package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
  659. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
  660. package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
  661. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
  662. package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
  663. package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
  664. package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
  665. package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
  666. package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
  667. package/node_modules/exceljs/dist/exceljs.js +0 -59900
  668. package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
  669. package/node_modules/exceljs/dist/exceljs.min.js +0 -45
  670. package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
  671. package/scripts/ai-page-render-check.mjs +0 -532
  672. package/scripts/clearances-render-check.mjs +0 -480
  673. package/scripts/composer-render-check.mjs +0 -1027
  674. package/scripts/deploy-test.sh +0 -309
  675. package/scripts/home-render-check.mjs +0 -526
  676. package/scripts/portal-lifecycle-check.mjs +0 -639
@@ -0,0 +1,103 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
3
+ //
4
+ // THE VERSION OF THE BINARY THAT SERVED A RUN, captured at dispatch.
5
+ //
6
+ // The record already says whether the model id the provider reported names a pinned build or an alias it
7
+ // may repoint. That answers "did the model move". It cannot answer "did the TOOL move", and the two are
8
+ // different questions with the same symptom: a run whose judgment differs from last week's.
9
+ //
10
+ // Nothing recorded it. Three archived runs were walked for every spelling of a version field and carried
11
+ // none — so what served them is not recoverable, and the box could have answered at any time.
12
+ //
13
+ // ── UNREADABLE IS A VALUE, NOT AN OMISSION ──────────────────────────────────────────────────────────
14
+ //
15
+ // The whole point of the field is telling three states apart, and only one of them is "we know":
16
+ //
17
+ // { version: "2.1.241", probe: "ok" } the binary answered
18
+ // { version: null, probe: "unreadable", why } it was asked and could not say
19
+ // (no field at all) this record predates the gauge
20
+ //
21
+ // An omission on failure collapses the middle into the third, and a reader comparing two runs cannot
22
+ // tell a tool that would not answer from a record written before anybody asked. That distinction is the
23
+ // reason for the field, so failing to write it is failing at the thing rather than at the edge of it.
24
+ //
25
+ // ── ONE SPAWN PER BUILD, NOT PER PROCESS ────────────────────────────────────────────────────────────
26
+ //
27
+ // A dispatch is many stages and every stage would otherwise pay. But the cache lives as long as the
28
+ // process, and the process is NOT one run: the drainer's watch loop calls the pipeline for job after job
29
+ // without exiting. A first version cached there would be reported as fact for every later run in that
30
+ // process — including runs served by a binary somebody upgraded in place underneath it.
31
+ //
32
+ // That is the exact silence this field exists to end, reintroduced by the cache meant to make it cheap,
33
+ // and it would have been invisible: the record would carry a version, confidently, and be wrong.
34
+ //
35
+ // So the key is the path AND what the filesystem says about the file — an in-place upgrade changes the
36
+ // modification time and the size, so it misses the cache and is probed again. The path alone is not
37
+ // enough (two engines can point at one binary, an engine can be repointed) and the engine id is not
38
+ // enough for the same reason.
39
+ //
40
+ // A file the filesystem cannot describe is NOT CACHED at all. Caching an unreadable probe under a key
41
+ // derived from a failed stat would pin the failure for the life of the process, so a binary that
42
+ // appeared a moment later would keep reading as absent.
43
+ // ── WHAT THIS DEPENDS ON, WHICH IS NOT ENFORCEABLE FROM HERE ────────────────────────────────────────
44
+ //
45
+ // A probe that can change what it probes is not a probe. This one spawns the engine binary, so it rests
46
+ // on `--version` being side-effect-free — true of every real CLI and not something this module can make
47
+ // true. It bit immediately: the suite's engine stand-ins fell through to their stage path, and one of
48
+ // them counts invocations to decide when to fail, so the probe consumed the failure a retry test was
49
+ // measuring and the retry never happened. The symptom was an attempt count off by one, three files away
50
+ // from the cause.
51
+ //
52
+ // The stand-ins now answer `--version` and exit, which is what the binaries they stand in for do. A new
53
+ // one that forgets will produce the same off-by-one, so `driver/test/a-run-records-the-tool-that-served-it`
54
+ // asserts every engine stand-in answers — the cheap ratchet under a condition that cannot be checked at
55
+ // the call site.
56
+ import { execFileSync } from "node:child_process";
57
+ import { statSync } from "node:fs";
58
+
59
+ /** Live for the process, keyed by resolved path. A run is one process; a probe is one spawn. */
60
+ const CACHE = new Map();
61
+
62
+ /** The first version-shaped token in the output, or the whole first line when nothing matches. */
63
+ export function parseVersion(out) {
64
+ const line = String(out ?? "").split("\n").map((l) => l.trim()).filter(Boolean)[0] ?? "";
65
+ if (!line) return null;
66
+ // These CLIs answer `2.1.241`, `codex-cli 0.5.0`, `claude 2.1.241 (Claude Code)`. Take the first
67
+ // dotted number and keep it; a build that answers in prose is recorded verbatim rather than dropped,
68
+ // because a string somebody can compare beats a null.
69
+ return (line.match(/\b\d+\.\d+(?:\.\d+)?(?:[-+][0-9A-Za-z.-]+)?\b/) ?? [line])[0];
70
+ }
71
+
72
+ /**
73
+ * Probe one binary. PURE apart from the spawn, which is injected so an arm can drive both branches
74
+ * without a binary on the box — the unreadable branch is the one that matters and it cannot be produced
75
+ * on demand from a real install.
76
+ *
77
+ * Never throws. A probe that could take down a dispatch would be a worse defect than the gap it closes.
78
+ */
79
+ export function probeCliVersion(bin, { run = null, timeoutMs = 5000, cache = CACHE, stat = statSync } = {}) {
80
+ if (!bin) return { version: null, probe: "unreadable", why: "no engine binary was resolved" };
81
+ let key = null;
82
+ try { const st = stat(bin); key = `${bin}\u0000${st.mtimeMs}:${st.size}`; } catch { /* not cacheable */ }
83
+ if (key && cache.has(key)) return cache.get(key);
84
+ const spawn = run ?? ((b) => execFileSync(b, ["--version"], {
85
+ encoding: "utf8", timeout: timeoutMs, stdio: ["ignore", "pipe", "ignore"],
86
+ }));
87
+ let result;
88
+ try {
89
+ const version = parseVersion(spawn(bin));
90
+ result = version
91
+ ? { version, probe: "ok" }
92
+ // It ran and said nothing a version could be read from. That is not the same as failing to run,
93
+ // and a reader chasing a tool change needs to know which happened.
94
+ : { version: null, probe: "unreadable", why: "the binary answered with no version-shaped token" };
95
+ } catch (e) {
96
+ result = { version: null, probe: "unreadable", why: String(e?.message ?? e).slice(0, 160) };
97
+ }
98
+ if (key) cache.set(key, result);
99
+ return result;
100
+ }
101
+
102
+ /** Drop the cache. For arms, and for a caller that has just repointed an engine deliberately. */
103
+ export function forgetCliVersions(cache = CACHE) { cache.clear(); }
@@ -157,7 +157,7 @@ export function runStreamingChild({
157
157
  // timeout; NaN/≤0 clamps to 660s so the wall never silently disables. A non-positive or unparseable
158
158
  // PIN falls through to that derivation for the same reason — a pin is an instrument, never an off
159
159
  // switch. Without it the floor here is 61 SECONDS at the shortest, which is why this clock had no arm
160
- // and why 's grace never reached the line below: no test could drive it without sitting for a
160
+ // and why the grace never reached the line below: no test could drive it without sitting for a
161
161
  // minute.
162
162
  const pinnedHard = Number(process.env.CLEAROTRON_HARD_MS);
163
163
  const hardMs = pinnedHard > 0 ? pinnedHard : (Number(timeoutSec) > 0 ? Number(timeoutSec) + 60 : 660) * 1000;
@@ -10,7 +10,7 @@
10
10
  //
11
11
  // ── WHY A HOOK, AND NOT THE THING YOU WOULD TRY FIRST ────────────────────────────────────────────────
12
12
  //
13
- // 's incident was a live clearance writing two files into the skills tree. The obvious reading is
13
+ // That incident was a live clearance writing two files into the skills tree. The obvious reading is
14
14
  // "a seat did something it should not". Reading the grant layer first says otherwise: `buildClaudeArgs`
15
15
  // grants that tree with `--add-dir`, WHICH HAS NO READ-ONLY FORM, under `--permission-mode acceptEdits`
16
16
  // which auto-approves Write/Edit so each stage can save its output without prompting. The tree was
@@ -78,7 +78,7 @@ export function readJxTuple(tuple, { vendor, authMode, engine }) {
78
78
  const usage = u ? { input: u.input ?? 0, output: u.output ?? 0, cacheRead: u.cacheRead ?? 0,
79
79
  cacheWrite: u.cacheWrite ?? 0, total: u.total ?? 0 }
80
80
  : null;
81
- // The model that actually served the turn, never the alias we asked for — 's criterion 4 is that
81
+ // The model that actually served the turn, never the alias we asked for — the criterion 4 is that
82
82
  // the receipt names who did the native-language work, and an alias does not name anyone. Both adapters
83
83
  // populate it (anthropic-agent from the assistant/init events, openai-agent from `ev.model`).
84
84
  const model = tuple?.modelWire ?? null;
@@ -38,7 +38,7 @@ const API_KEY = process.env.CLARIVATE_API_KEY || "";
38
38
  const BASE = process.env.CLARIVATE_API_BASE || DEFAULT_BASE;
39
39
  const tctx = (kind) => ({
40
40
  kind,
41
- agentId: process.env.CLEAROTRON_GATHER_AGENT || "clawdi",
41
+ agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
42
42
  sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
43
43
  sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
44
44
  });
@@ -13,7 +13,7 @@ import { proposeSupplemental } from "./supplemental.mjs";
13
13
  const COOKIE = process.env.CORSEARCH_SESSION_KEY || "";
14
14
  const tctx = (kind) => ({
15
15
  kind,
16
- agentId: process.env.CLEAROTRON_GATHER_AGENT || "clawdi",
16
+ agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
17
17
  sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
18
18
  sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
19
19
  });
@@ -65,7 +65,7 @@ function loadDeclinationSpec(runDir) {
65
65
 
66
66
  async function record_declination(params) {
67
67
  // `CLEAROTRON_BAND_RUN_DIR` at CALL TIME, and there is no `run_dir` parameter — the run is not the seat's
68
- // to name. 's lesson, where an invented fallback sat two lines under a promise never to guess.
68
+ // to name. That lesson, where an invented fallback sat two lines under a promise never to guess.
69
69
  const runDir = String(process.env.CLEAROTRON_BAND_RUN_DIR ?? "");
70
70
  if (!runDir) {
71
71
  return { error: "this server was started without a run — the driver wires it per run; there is no parameter for it and this tool never guesses one" };
@@ -66,7 +66,7 @@ import { MAX_ROWS_PER_CALL } from "../../disposition-call.mjs";
66
66
  // can have. Here the serialization is ours, so the class is gone rather than caught.
67
67
  //
68
68
  // THE SPEC PATH IS THE SEAT'S ONLY PATH ARGUMENT, and it is the same driver-written file the grid tool
69
- // was given. 's rule: the path is the DRIVER'S, taken from the spec it wrote. Two derivations of one
69
+ // was given. That rule: the path is the DRIVER'S, taken from the spec it wrote. Two derivations of one
70
70
  // filename is the drift that cost weeks.
71
71
  async function record_dispositions(params) {
72
72
  const { grid_spec_path, rows } = params ?? {};
@@ -46,7 +46,7 @@ const AUTH = {
46
46
  };
47
47
  const tctx = (kind) => ({
48
48
  kind,
49
- agentId: process.env.CLEAROTRON_GATHER_AGENT || "clawdi",
49
+ agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
50
50
  sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "",
51
51
  sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
52
52
  });
@@ -30,7 +30,7 @@ serve({
30
30
  const ctrl = new AbortController();
31
31
  const timer = setTimeout(() => ctrl.abort(), TIMEOUT_MS);
32
32
  try {
33
- const res = await fetch(url, { redirect: "follow", signal: ctrl.signal, headers: { "user-agent": "cordillera-prelim-fetch/0.1" } });
33
+ const res = await fetch(url, { redirect: "follow", signal: ctrl.signal, headers: { "user-agent": "cordillera-clearotron-fetch/0.1" } });
34
34
  const body = await res.text();
35
35
  const text = body.length > MAX_CHARS ? body.slice(0, MAX_CHARS) + `\n…[truncated at ${MAX_CHARS} chars]` : body;
36
36
  return { isError: res.ok ? undefined : true, text: `HTTP ${res.status} ${res.statusText} — ${url}\n\n${text}` };
@@ -42,7 +42,7 @@ const AUTH = null;
42
42
 
43
43
  const tctx = (kind) => ({
44
44
  kind,
45
- agentId: process.env.CLEAROTRON_GATHER_AGENT || "clawdi",
45
+ agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
46
46
  sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "",
47
47
  sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
48
48
  });
@@ -56,7 +56,7 @@ const CAPABILITY_OFFICES = CAPABILITIES.offices.covered.join("+");
56
56
  // it a third. It did. This is that third site, and it went on requiring USPTO_LOCAL_DB after the other
57
57
  // two stopped.
58
58
  //
59
- // The cost was total. On an EU-only box 's whole path worked — preflight passed, the plan compiled
59
+ // The cost was total. On an EU-only box the whole path worked — preflight passed, the plan compiled
60
60
  // with the US split off as a disclosed deferral, the EU entry was executable — and then EVERY register_*
61
61
  // tool the seat called was refused here, so the EU half never ran. Everything upstream was right and
62
62
  // nothing downstream happened, which is the least legible way for a fix to fail.
@@ -79,7 +79,7 @@ export const REGISTER_SERVERS = {
79
79
  // register_search / register_record_fetch — served since the thin days.
80
80
  // register_enumerate — SERVED and now granted. built the page loop on the shared kernel;
81
81
  // capabilities.js records the bounds it runs against as live-probed 2026-08-17 (pageSize 100 is the
82
- // API's hard refusal, verified at 200/250/500). This is the tool 's owner-window ceiling is
82
+ // API's hard refusal, verified at 200/250/500). This is the tool the owner-window ceiling is
83
83
  // passed into (OWNER_SCOPED_WINDOW → ceilingFor → makeEnumerate), so withholding it put that
84
84
  // criterion out of reach of any round.
85
85
  // register_execute_plan — SERVED and now granted. Two corrective-ladder hints name it unconditionally
@@ -188,7 +188,7 @@ export const REGISTER_SERVERS = {
188
188
  // (server-tools-granted-or-stated.test.mjs: every record tool has exactly one granting stage).
189
189
  const RECORDING_SERVER = "recording-server.mjs";
190
190
  const RECORDING = Object.freeze({
191
- // FIRST OCCUPANT — blind-frame ('s transport, wired by, dictation deleted by).
191
+ // FIRST OCCUPANT — blind-frame (the transport, wired by, dictation deleted by).
192
192
  //
193
193
  // `seatWrites: false` is the half, and it is the only thing that closes the regression door BY
194
194
  // CONSTRUCTION rather than by prose. Once the driver writes blind-frame-model.json, nothing this stage is
@@ -686,7 +686,7 @@ const LOCAL = {
686
686
  "unit-note": { script: "unit-note-server.mjs", tools: ["record_unit_note"] },
687
687
  // ── RECORDING — DERIVED from the registry above, one entry per stage, in registry order ──────────
688
688
  //
689
- // These rows were hand-written here until 's collapse. They are LAST in this object on purpose:
689
+ // These rows were hand-written here until the collapse. They are LAST in this object on purpose:
690
690
  // LOCAL_SERVER_SCRIPTS below is `Object.values(LOCAL).map(...)`, so insertion order is part of its
691
691
  // value, and `recording-server.mjs` appearing TWICE is the evidence both keys resolve to the one
692
692
  // module. recording-grant-preservation.test.mjs pins that array verbatim, duplicates included.
@@ -695,7 +695,7 @@ const LOCAL = {
695
695
  };
696
696
 
697
697
  // The scripts LOCAL grants, DERIVED. Exported because the server census would otherwise recite them, and
698
- // a recited list is one more population to keep in sync by hand — 's census derived the register
698
+ // a recited list is one more population to keep in sync by hand — the census derived the register
699
699
  // half from REGISTER_SERVERS and hardcoded this half, so wiring a new local server left it reading as
700
700
  // ungranted. Derive both halves or neither.
701
701
  export const LOCAL_SERVER_SCRIPTS = Object.freeze(Object.values(LOCAL).map((e) => e.script));
@@ -873,7 +873,7 @@ export function buildGatherMcpConfig(groups = [], { sessionKey, agent, runDir, r
873
873
  // There is no production caller to break: `driver/gateway.mjs` is the only non-test call site in the
874
874
  // tree and it always passes the run it is dispatching for. A caller that reaches this without one has
875
875
  // a defect a refusal names immediately, instead of a record body somewhere its run will never look.
876
- // ORDER MATTERS: resolve the register provider FIRST. 's "CLEAROTRON_DATABASE is not set"
876
+ // ORDER MATTERS: resolve the register provider FIRST. That "CLEAROTRON_DATABASE is not set"
877
877
  // is the more fundamental refusal and the one an operator acts on, so it must still come out ahead of
878
878
  // this one — a box with neither a provider nor a run should be told about the provider.
879
879
  if (localKeys.has("register")) {
@@ -964,7 +964,7 @@ export function toolGroupsForStage(name = "") {
964
964
  // the issue predicts, on the one matter where the confirmation step was most clearly indicated (four
965
965
  // `loaded` meaning rulings, see).
966
966
  //
967
- // This changes engine behaviour and ships `status:merged-awaiting-e2e`, which 's out-of-scope block
967
+ // This changes engine behaviour and ships `status:merged-awaiting-e2e`, which the out-of-scope block
968
968
  // anticipates in as many words. The scoping is doctrine's, not the grant's: SKILL.md already caps it at
969
969
  // one probe per review and requires the query and its result recorded verbatim.
970
970
  // ── THE ONE BRANCH THAT RETURNS RETRIEVAL *AND* RECORDING, and it has to be here ────────────────
@@ -1027,7 +1027,7 @@ export function toolGroupsForStage(name = "") {
1027
1027
  //
1028
1028
  // NOT a prefix test, for either form. A prefix would hand the grant to any future stage whose name
1029
1029
  // merely began with a recording stage's. The base row must SAY it fans out — declaration, not
1030
- // inference, the same principle as 's declared phase.
1030
+ // inference, the same principle as the declared phase.
1031
1031
  for (const [sep, flag] of SUFFIX_FORMS) {
1032
1032
  const at = name.lastIndexOf(sep);
1033
1033
  if (at <= 0) continue;
@@ -1153,7 +1153,7 @@ export function recordAxisFor(name = "") {
1153
1153
  // gains `--mcp-config`, `--strict-mcp-config` AND `--allowedTools` where it previously had none. That is
1154
1154
  // a change in KIND and the right one — these stages become constrained for the first time — but it must
1155
1155
  // be asserted at the argv level, not inferred from this map.
1156
- // FIRST OCCUPANT — blind-frame ('s transport, wired here). SECOND — skeptic.
1156
+ // FIRST OCCUPANT — blind-frame (the transport, wired here). SECOND — skeptic.
1157
1157
  //
1158
1158
  // The safety basis is a SAMPLE and is stated as one: O3c measured blind-frame at 0 Bash calls across 15
1159
1159
  // attempts, alone among the eleven tool-free stages. That is why it converted first. On attempt 16 a
@@ -1189,7 +1189,7 @@ export const RECORDING_STAGES = Object.freeze(Object.fromEntries(
1189
1189
  //
1190
1190
  // ── DELIBERATELY NOT DERIVED FROM THE REGISTRY, unlike the four declarations above it ──────────────
1191
1191
  //
1192
- // 's collapse made the LOCAL entries, the group resolution, the stage→group map and RECORDING_STAGES
1192
+ // That collapse made the LOCAL entries, the group resolution, the stage→group map and RECORDING_STAGES
1193
1193
  // derive from one registry. This table did NOT move, and the reason is the whole value of it: O1 asserts
1194
1194
  // the resolved grant EQUALS this row. Derive it from the same registry the grant derives from and O1
1195
1195
  // compares a value with itself — a guard turned tautology inside the PR that was meant to strengthen it.
@@ -1211,7 +1211,7 @@ export const RECORDING_TOOLS = Object.freeze({
1211
1211
  "mcp__recording-matter-frame__search_run_artifacts"]),
1212
1212
  skeptic: Object.freeze(["Read", "mcp__recording-skeptic__record_skeptic",
1213
1213
  "mcp__recording-skeptic__search_run_artifacts"]),
1214
- // 's third conversion. `Read` and its one record tool: the stage's reads are its two named input
1214
+ // That third conversion. `Read` and its one record tool: the stage's reads are its two named input
1215
1215
  // files, which the seeded grant serves, and it gets no search tool because a stage with an enumerable
1216
1216
  // read set does not need one. BY HAND, like every row here — deriving it from the registry would make
1217
1217
  // O1 compare a value with itself.
@@ -1370,7 +1370,7 @@ export function seatWritesForGroups(groups = []) {
1370
1370
  }
1371
1371
 
1372
1372
  /**
1373
- * THE ENUMERATION, derived and not hand-listed ('s third proof requirement).
1373
+ * THE ENUMERATION, derived and not hand-listed (the third proof requirement).
1374
1374
  *
1375
1375
  * A naive grep for `seatWrites: false` returns TEN hits and the population is EIGHT: two of the hits are
1376
1376
  * comment text — one in the blind-frame FIRST OCCUPANT note, one in `allowedToolsFor`'s own
@@ -135,7 +135,7 @@ function tellObligations(spec, ledgerJson) {
135
135
  }, null, 2) + "\n",
136
136
  );
137
137
  // B — NO SEAT-FACING FORM IS WRITTEN, ANY MORE, BY ANYONE. The -era write-back that lived here
138
- // (a union of the seat's file bytes into a rebuilt seat-facing form, plus 's whose-bytes referee)
138
+ // (a union of the seat's file bytes into a rebuilt seat-facing form, plus the whose-bytes referee)
139
139
  // died with the form path: the seat records rulings only through `record_dispositions`, the
140
140
  // accumulator in `_driver/` is the one copy and the tool is its writer mid-turn. What the seat needs
141
141
  // at this moment — the obligations, the candidates, the positions and the recording route — is all in
@@ -24,12 +24,12 @@
24
24
  //
25
25
  // `CLEAROTRON_BAND_RUN_DIR`, read at CALL TIME. `serverEnv()` (gather-config.mjs:162) sets it for every local
26
26
  // server, not only band. There is no `run_dir` parameter and there must not be one — the lesson is
27
- // 's, where an invented `CLEAROTRON_RUN_DIR` fallback sat two lines under a sentence promising the tool
27
+ // the earlier one, where an invented `CLEAROTRON_RUN_DIR` fallback sat two lines under a sentence promising the tool
28
28
  // never guesses a run. Call time rather than module load: stdio-server.mjs:29-33 states why for this
29
29
  // exact variable.
30
30
  // ── THE SECOND CAPABILITY CLASS: A SCOPED READ, and why it does not break the sentence above ────────
31
31
  //
32
- // `search_run_artifacts` is the skeptic's sanctioned read surface ('s ratification hold, unlock
32
+ // `search_run_artifacts` is the skeptic's sanctioned read surface (the ratification hold, unlock
33
33
  // path 1): a literal substring search over the calling run's OWN artifact tree, replacing the Bash
34
34
  // reads O3c measured the stage using. It still dials nothing and writes nothing — the category's
35
35
  // promise is about RETRIEVAL and writes, and a read bounded to CLEAROTRON_BAND_RUN_DIR widens neither.
@@ -464,7 +464,7 @@ serve({
464
464
  value: { type: "string", description: "The search term itself — never a label, never an enumeration." },
465
465
  // THE CANONICAL ENUM, imported — never a second copy. `parseVariantManifestModel` refuses
466
466
  // anything outside it, so a hand-typed list here could drift into promising a category the
467
- // parser rejects. 's brief reads the same constant.
467
+ // parser rejects. That brief reads the same constant.
468
468
  category: { type: "string", enum: [...VARIANT_CATEGORIES] },
469
469
  rationale: { type: "string" },
470
470
  romanization: { type: "string", description: "Latin-script form. NON-LATIN VALUES ONLY — a romanisation on a Latin value is refused as an orphan." },
@@ -848,7 +848,7 @@ serve({
848
848
  // The reviewer is the report's only check, and it wrote its own review as prose. Everything
849
849
  // downstream then parsed that prose back: the verdict token, the flag list, the `[kind:]`/`[on:]`
850
850
  // channels, and the count that decides whether a BLOCKING is degenerate. The seat chose the
851
- // enumeration style, so the parse could miss it — 's lettered flags were invisible
851
+ // enumeration style, so the parse could miss it — the lettered flags were invisible
852
852
  // for exactly that reason. Handing values makes the style the driver's, so a flag the parse cannot
853
853
  // see stops being possible rather than being detected afterwards.
854
854
  //
@@ -1120,6 +1120,10 @@ serve({
1120
1120
  properties: {
1121
1121
  recordId: { type: "string", description: "Copied VERBATIM from the filings you were given." },
1122
1122
  read: { type: "string", description: "What you concluded about THIS filing." },
1123
+ // Declared here for the reason the comment above gives: `additionalProperties: false`
1124
+ // means an undeclared key is a contradiction between the prose and the schema, and the
1125
+ // seat resolves it whichever way it happens to trust.
1126
+ band: { type: "string", description: "OPTIONAL — how you rate THIS filing, in the framework's own band words. Send it when you formed a view on the filing itself; the card prints it as that filing's rating. Omit it and your read still prints, with no rating claimed." },
1123
1127
  },
1124
1128
  },
1125
1129
  },
@@ -17,7 +17,7 @@ const API_KEY = process.env.SIGNA_API_KEY || "";
17
17
  const BASE = process.env.SIGNA_BASE_URL || DEFAULT_BASE;
18
18
  const tctx = (kind) => ({
19
19
  kind,
20
- agentId: process.env.CLEAROTRON_GATHER_AGENT || "clawdi",
20
+ agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
21
21
  sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
22
22
  sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
23
23
  });
@@ -43,7 +43,7 @@ const DB_PATH = process.env[DEFAULT_DB_ENV] || "";
43
43
  const AUTH = { dbPath: DB_PATH };
44
44
  const tctx = (kind) => ({
45
45
  kind,
46
- agentId: process.env.CLEAROTRON_GATHER_AGENT || "clawdi",
46
+ agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
47
47
  sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
48
48
  sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
49
49
  });
@@ -446,7 +446,7 @@ function settleTuple({ r, ev, resumeRef }) {
446
446
  killed, wall: r.wall,
447
447
  stdout: text, stderr: stderrOut, laneWaitMs: 0,
448
448
  json, usage,
449
- // MODEL GAUGE (,): the id codex recorded for this turn — from its session rollout under
449
+ // MODEL GAUGE (): the id codex recorded for this turn — from its session rollout under
450
450
  // this run's own CODEX_HOME, since the event stream states none. Still two states and never one:
451
451
  // null = "this engine did not report", never the requested tier wearing the word "actual".
452
452
  // gateway.mjs records the absence as modelBasis:"unknown".
@@ -478,7 +478,7 @@ function settleTuple({ r, ev, resumeRef }) {
478
478
  mcpRefused: mcpToolGauge(ev).mcpToolCallsRefused > 0 || undefined,
479
479
  rateLimited: rateLimited || undefined,
480
480
  rateLimitBasis: rateLimited ? "text-match" : undefined,
481
- // resetsAtBasis (, 2026-08-20): same honesty as rateLimitBasis one line up, for the reset
481
+ // resetsAtBasis (2026-08-20): same honesty as rateLimitBasis one line up, for the reset
482
482
  // CLOCK rather than the classification. codex states its reset as human prose with NO timezone
483
483
  // ("try again at Aug 22nd, 2026 9:06 AM"), so the ISO we derive is a reading of that prose in the
484
484
  // box's own zone — never a provider fact. Absent when no hint was found, exactly as `resetsAt` is.
@@ -87,11 +87,11 @@ export function resetEngineCommit() { cached = undefined; source = undefined; re
87
87
  // So attribution has been a reflog reconstruction: join a checkout's reflog against each run's
88
88
  // `startedAt`. That reconstruction expires with the reflog, cannot survive a re-clone, is wrong for
89
89
  // every run made while the checkout sat detached, and mixes a local-time reflog against UTC stamps.
90
- // It decided three certifications in one morning (,) and produced two near-miss
90
+ // It decided three certifications in one morning () and produced two near-miss
91
91
  // wrong rulings in two days.
92
92
  //
93
93
  // A SIBLING, NOT A WIDER RETURN TYPE. `engineCommit()` keeps its bare-string contract exactly:
94
- // 's guard pins its import line by regex AND pins the literal `engineCommit: engineCommit` in
94
+ // That guard pins its import line by regex AND pins the literal `engineCommit: engineCommit` in
95
95
  // the publisher, four consumers read the string, and `scripts/freeze-example-run.mjs` asserts in prose
96
96
  // that it "is cached to one value and cannot differ between the two". Widening it would break all of
97
97
  // that to add a field only one new caller wants.
@@ -237,7 +237,7 @@ function niceClassErrors(list, label) {
237
237
  // and reaches the report body, where it REVERSES THE DISPLAY of everything after it. The report is a
238
238
  // legal deliverable that goes to a client.
239
239
  //
240
- // A zero-width joiner makes "AUR\u200DORA" render as AURORA and compare unequal to it, so
240
+ // A zero-width joiner makes "IRON\u200DWHISK" render as IRONWHISK and compare unequal to it, so
241
241
  // `selfExclusionOwners` and dedup both miss a mark a human reads as the account's own.
242
242
  //
243
243
  // NFD "SIRÈNE" !== NFC "SIRÈNE", so one mark submitted two ways is two matters, two searches, two bills.
@@ -285,7 +285,7 @@ const markNameSites = (job) => {
285
285
  for (const f of ["markName", "name"]) if (job?.[f] != null) sites.push([f, () => job[f], (v) => { job[f] = v; }]);
286
286
  if (Array.isArray(job?.marks)) job.marks.forEach((m, i) => {
287
287
  // A BARE STRING IS A MARK NAME, and this shape reaches validateJob unconverted. `assembleFromFlags`
288
- // turns `marks: ["AURORA"]` into `[{ name: "AURORA" }]`, so every door that assembles is already
288
+ // turns `marks: ["IRONWHISK"]` into `[{ name: "IRONWHISK" }]`, so every door that assembles is already
289
289
  // covered — but the runner's wall calls validateJob({ atClaim: true }) on the MANIFEST AS IT SITS ON
290
290
  // DISK, which nothing re-assembles. The kebab-collision check below reads the same shape for exactly
291
291
  // that reason. Walking only `m.name` would leave this guard covering every door except the one it
@@ -663,7 +663,7 @@ export function validateJob(job, { atClaim = false } = {}) {
663
663
  // Every other check in this build lives at one or two of them: `checkClearanceScopeRules` runs at the
664
664
  // runner, the portal and plan_run but at neither start_run nor the CLI; the mark budget and the
665
665
  // availability gate run at the runner alone. A rule placed at a door is a rule the other doors do not
666
- // have, and 's acceptance test is that all three refuse the same request in the same words.
666
+ // have, and the acceptance test is that all three refuse the same request in the same words.
667
667
  //
668
668
  // WHAT IS JUDGED HERE: everything the REQUEST states. Each of the offering's illegal shapes is visible
669
669
  // without resolving anything — a narrowed Global preliminary, a two-country Full country search, a
@@ -778,16 +778,16 @@ export function validateJob(job, { atClaim = false } = {}) {
778
778
  // that would drop the customer's platforms, self-exclusion seed and the framework that RATES the matter".
779
779
  // A MISSING key returns generic in silence. Both produce the same wrong deliverable, and only one says so.
780
780
  //
781
- // It has already happened: a paid Zephyr Beverages clearance was rated on the Generic default scale because the
782
- // request named the customer in prose and left the account field empty. Nothing objected. A person
783
- // noticed hours later and re-ran it.
781
+ // It has already happened: a paid clearance for a test account was rated on the Generic default scale
782
+ // because the request named the customer in prose and left the account field empty. Nothing objected.
783
+ // A person noticed hours later and re-ran it.
784
784
  //
785
785
  // WHY THIS IS NOT SIMPLY "customer present, key absent". That shape is byte-identical to a LEGITIMATE
786
786
  // third-party search — a firm asking us to clear a mark for their own client, who is not our account —
787
787
  // and the applicant deliberately never selects a profile, because a third-party search must never inherit
788
788
  // a customer's exclusions. Clarifying on that shape alone would bounce real work every day.
789
789
  //
790
- // The discriminator is the ROSTER. The Zephyr Beverages request differed in one way that matters: we hold an
790
+ // The discriminator is the ROSTER. That request differed in one way that matters: we hold an
791
791
  // account by that name. A named applicant we have no account for is a third-party search and runs
792
792
  // untouched; a named applicant who IS one of our customers, with no key, is ambiguous in a way only a
793
793
  // person can settle — did intake forget to tag it, or is this genuinely a search against a name that
@@ -965,7 +965,7 @@ export const EXAMPLE_JOB = {
965
965
  rawRequest: "<the verbatim forwarded email text, untouched — archived as inbound-request.txt (§A5)>",
966
966
  brief: "<the confirmation brief exactly as sent to the requester — archived as confirmation-brief.md>",
967
967
  deadline: "2026-06-20T17:00:00Z", // optional; drives the §A3 deadline-envelope arithmetic
968
- profileKey: "aurora", // D4.1: the customer ACCOUNT the intake AI resolved → selects the
968
+ profileKey: "demo-brand-owner", // D4.1: the customer ACCOUNT the intake AI resolved → selects the
969
969
  // profile (marketplaces/classes/delivery/appetite); omit ⇒ generic
970
970
  product: "multi-country-focus-search",// WHICH OF THE FOUR (OPTIONAL): one of products.mjs PRODUCT_IDS.
971
971
  // Omit ⇒ the project/customer defaultProduct, else the product
@@ -983,11 +983,11 @@ export const EXAMPLE_JOB = {
983
983
  // deliveryRoute: "portal", // OPTIONAL: "email" (default) or "portal" — a portal-route packet
984
984
  // is mark_sent by the courier WITHOUT an email send.
985
985
  // parentRunId: "novapulse-cedar", // OPTIONAL escalation lineage: the run this one escalates from
986
- // (e.g. a knockout HIGH mark → this prelim). Recorded, not yet resolved.
986
+ // (e.g. a knockout HIGH mark → this clearotron). Recorded, not yet resolved.
987
987
  projectKey: "console-ecosystem", // spec 62 (OPTIONAL): the PROJECT/engagement under the customer whose
988
988
  // overlay (its own marketplaces/classes/sector/posture) rates this
989
989
  // matter; omit ⇒ runs on the customer profile. Unknown key ⇒ clarify.
990
- customer: "Aurora Interactive", // applicant/owner → affiliate self-exclusion set (§B3.2)
990
+ customer: "Demo Brand Owner", // applicant/owner → affiliate self-exclusion set (§B3.2)
991
991
  customerUnknown: false, // B5: true when the applicant is neither stated nor forwarder-implied —
992
992
  // arms candidate-self classification + the late-bind watch (NEVER inferred from the mark)
993
993
  // caseLaw — NOT A FIELD. The case-law and opposition reading is what a Full country search IS
@@ -245,7 +245,7 @@ async function main(argv) {
245
245
  try { job = assembleFromFlags(flags); } catch (e) { fail(`could not assemble the job: ${e.message}`); }
246
246
  if (!job.forwarder) fail("missing --forwarder — the requester/reply-routing key; the delivery packet needs it to route the report (there is deliberately no default)", 2);
247
247
  // THE EARLY --product CHECK IS GONE, and its deletion is the fix. It fired before validateJob and said
248
- // the same thing in different words — `--product "prelim"` rather than `product "prelim"`, and without
248
+ // the same thing in different words — `--product "clearotron"` rather than `product "clearotron"`, and without
249
249
  // the `(or omit it for the account's default)` clause, which is the one clause that tells a requester
250
250
  // the field is optional. So the CLI's real answer to a typo was not the shared one, and a test that
251
251
  // started at assembleFromFlags could never see it. validateJob refuses it now, in the sentence every
@@ -196,7 +196,7 @@ export async function settleReceipt({ P, plan, receipt, dispatch = null, rejoin
196
196
 
197
197
  /**
198
198
  * The settled facts a digest dispatch needs, as a message section — mechanical only, quoting the executor's
199
- * own reason. Every digest pass gets this, not just the first: 's dispatch hint reaches FRESH dispatches
199
+ * own reason. Every digest pass gets this, not just the first: the dispatch hint reaches FRESH dispatches
200
200
  * by construction (stageOnce ignores `extra` when opts.followup is set), and the flush passes it misses are
201
201
  * exactly where the evidence run burned 2,908 seconds failing the same validator twice more.
202
202
  *
@@ -26,11 +26,11 @@
26
26
  // reading only the claim misses it: the increase is in the evidence stamp.
27
27
  //
28
28
  // THE LADDER ALREADY EXISTS, so this introduces no vocabulary. `basis` is the run's own certainty
29
- // ordering and 's demotion is its enforcement; `basis-derivation.json` records every demotion with
29
+ // ordering and the demotion is its enforcement; `basis-derivation.json` records every demotion with
30
30
  // its reason and its uri. Arm B is a comparison against an artifact the driver already writes, which is
31
31
  // why it needs no fetch ledger and no new plumbing.
32
32
  //
33
- // REPORTS, NEVER THROWS. The caller decides what a violation costs — 's lesson is that a guard
33
+ // REPORTS, NEVER THROWS. The caller decides what a violation costs — the lesson is that a guard
34
34
  // which can kill a run is a guard that eventually kills a run over its own false positive.
35
35
 
36
36
  /** The run's own certainty ordering for a meter's basis. Higher is more certain. */
@@ -19,7 +19,7 @@
19
19
  // come from report-data.json; the disposition comes from findings.json beside it in the same run dir,
20
20
  // because report-data.json is the CLIENT cut and stopped serving the engine's placement key. A
21
21
  // reader who finds the ordinal now points at `KURENA / Manageable / rebuttable` when the flag says
22
- // `PETCARY / Medium / conceded` knows the run was republished, which is exactly the thing a bare id
22
+ // `BURROWELL / Medium / conceded` knows the run was republished, which is exactly the thing a bare id
23
23
  // would have hidden.
24
24
 
25
25
  import { randomUUID } from "node:crypto";