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.
- package/.env.example +105 -0
- package/CONTRIBUTING.md +3 -3
- package/INSTALL.md +57 -52
- package/README.md +2 -1
- package/bin/brandowner.mjs +1 -1
- package/bin/clearotron.mjs +4 -4
- package/bin/connect.mjs +2 -2
- package/bin/example.mjs +114 -37
- package/bin/grant.mjs +3 -3
- package/bin/key.mjs +1 -1
- package/bin/onboard.mjs +97 -119
- package/bin/start.mjs +29 -25
- package/bin/stop.mjs +65 -3
- package/bin/update.mjs +7 -7
- package/bin/uspto-sync.mjs +1 -1
- package/build-info.json +2 -2
- package/docs/DELIVERY.md +6 -2
- package/docs/RELEASES.md +6 -4
- package/docs/architecture/01-product-overview.md +2 -2
- package/docs/architecture/02-architecture.md +2 -2
- package/docs/architecture/04-configuration-reference.md +7 -4
- package/docs/architecture/05-config-governance.md +38 -5
- package/docs/architecture/06-operations-runbook.md +13 -1
- package/docs/architecture/09-security-and-data.md +1 -1
- package/docs/decisions/0004-documentation-structure.md +1 -1
- package/driver/CHANGELOG.md +95 -1
- package/driver/README.md +2 -2
- package/driver/ask-ledger.mjs +72 -4
- package/driver/authority-trees.mjs +1 -1
- package/driver/call-capture.mjs +1 -1
- package/driver/card-frame.mjs +1 -1
- package/driver/case-law-ledger.mjs +1 -1
- package/driver/claim-liveness.mjs +1 -1
- package/driver/common-law-receipts.mjs +1 -1
- package/driver/commonlaw-carry.mjs +1 -1
- package/driver/config-inventory.mjs +1 -1
- package/driver/connotation-search.mjs +12 -12
- package/driver/contract-audit.mjs +5 -5
- package/driver/contract-dictation-registry.mjs +4 -4
- package/driver/contract-dictation.mjs +2 -2
- package/driver/contract-e3-backlog.mjs +6 -6
- package/driver/contract-vocabulary.mjs +3 -3
- package/driver/corrections-feedforward.mjs +1 -1
- package/driver/coverage-form-io.mjs +2 -2
- package/driver/coverage-form.mjs +4 -4
- package/driver/coverage-ledger.mjs +3 -3
- package/driver/coverage-union.mjs +1 -1
- package/driver/declination-call.mjs +35 -3
- package/driver/declination-duty.mjs +1 -1
- package/driver/deliver-trigger.sh +3 -3
- package/driver/deploy-live-run-guard.mjs +6 -2
- package/driver/dev-portal.mjs +1 -1
- package/driver/disposition-call.mjs +4 -4
- package/driver/disposition-tool.mjs +4 -4
- package/driver/disposition-union.mjs +2 -2
- package/driver/doc-constants.mjs +1 -1
- package/driver/door-gates.mjs +2 -2
- package/driver/doubt-selection.mjs +2 -2
- package/driver/drainer-identity.mjs +1 -1
- package/driver/driver.config.mjs +63 -11
- package/driver/e2e-rounds.mjs +2 -2
- package/driver/effort-model.mjs +2 -2
- package/driver/engine/anthropic-agent.mjs +24 -24
- package/driver/engine/auth.mjs +1 -1
- package/driver/engine/common.mjs +1 -1
- package/driver/engine/deny-authority-write.mjs +1 -1
- package/driver/engine/jx-turn.mjs +1 -1
- package/driver/engine/mcp/clarivate-server.mjs +1 -1
- package/driver/engine/mcp/corsearch-server.mjs +1 -1
- package/driver/engine/mcp/declination-server.mjs +1 -1
- package/driver/engine/mcp/dispositions-server.mjs +1 -1
- package/driver/engine/mcp/euipo-server.mjs +1 -1
- package/driver/engine/mcp/fetch-server.mjs +1 -1
- package/driver/engine/mcp/free-tier-server.mjs +2 -2
- package/driver/engine/mcp/gather-config.mjs +11 -11
- package/driver/engine/mcp/perplexity-server.mjs +1 -1
- package/driver/engine/mcp/recording-server.mjs +8 -4
- package/driver/engine/mcp/signa-server.mjs +1 -1
- package/driver/engine/mcp/uspto-local-server.mjs +1 -1
- package/driver/engine/openai-agent.mjs +2 -2
- package/driver/engine-build.mjs +2 -2
- package/driver/enqueue-schema.mjs +2 -2
- package/driver/enqueue.mjs +1 -1
- package/driver/envelope-settle.mjs +1 -1
- package/driver/evidence-claim-invariant.mjs +2 -2
- package/driver/findings-model.mjs +8 -8
- package/driver/floor-duty.mjs +1 -1
- package/driver/form-neighbourhood.mjs +1 -1
- package/driver/framework.mjs +1 -1
- package/driver/gateway.mjs +28 -23
- package/driver/grounds-grammar.mjs +1 -1
- package/driver/hit-list.mjs +1 -1
- package/driver/jurisdiction-systems.mjs +1 -1
- package/driver/jx-lanes.mjs +1 -1
- package/driver/jx-units.mjs +1 -1
- package/driver/jx.mjs +3 -3
- package/driver/knockout-assess-record.mjs +5 -1
- package/driver/narrative-refutation-record.mjs +3 -3
- package/driver/numeric-setting.mjs +1 -1
- package/driver/owner-use-check.mjs +184 -0
- package/driver/package.json +2 -2
- package/driver/phase0.mjs +1 -1
- package/driver/pipeline-knockout.mjs +52 -4
- package/driver/pipeline.mjs +215 -63
- package/driver/placement-diff.mjs +2 -2
- package/driver/placement-form.mjs +4 -4
- package/driver/placement-union.mjs +1 -1
- package/driver/portal-acks.mjs +1 -1
- package/driver/portal-config-view.mjs +2 -2
- package/driver/portal-local-auth.mjs +1 -1
- package/driver/portal-report.mjs +6 -6
- package/driver/portal-service.mjs +15 -15
- package/driver/predelivery-lint.mjs +29 -11
- package/driver/prelim-variants-record.mjs +2 -2
- package/driver/profile-page.html +1 -1
- package/driver/profile-selection.mjs +1 -1
- package/driver/profile-service.mjs +2 -2
- package/driver/profiles.mjs +1 -1
- package/driver/progress.mjs +6 -6
- package/driver/provider-usage.mjs +1 -1
- package/driver/publish/demo-marking.mjs +1 -1
- package/driver/publish/index.mjs +47 -6
- package/driver/publish/knockout.mjs +36 -14
- package/driver/publish/parse.mjs +4 -4
- package/driver/publish/publish-inputs.mjs +2 -2
- package/driver/publish/register-presence.mjs +1 -1
- package/driver/publish/render-knockout.mjs +198 -31
- package/driver/publish/report-data.mjs +13 -3
- package/driver/publish/seed-pool.mjs +24 -9
- package/driver/queue-watch-probe.mjs +1 -1
- package/driver/queue-watch-verdict.mjs +1 -1
- package/driver/recall-reconciliation.mjs +1 -1
- package/driver/recipe-service.mjs +1 -1
- package/driver/record-carry.mjs +141 -2
- package/driver/recording-agreement.mjs +3 -3
- package/driver/reference-score.mjs +59 -9
- package/driver/reference-strip-signatures.mjs +68 -0
- package/driver/refusal-bound.mjs +3 -3
- package/driver/register-availability.mjs +2 -2
- package/driver/register-count.mjs +1 -1
- package/driver/register-digest-record.mjs +31 -1
- package/driver/register-grant-vocabulary.mjs +2 -2
- package/driver/register-plan.mjs +8 -8
- package/driver/register-records.mjs +2 -2
- package/driver/registry-fidelity.mjs +3 -3
- package/driver/remedy-accounting.mjs +1 -1
- package/driver/repair-composers.mjs +2 -2
- package/driver/repair-digest.mjs +3 -3
- package/driver/repairs.mjs +7 -7
- package/driver/replay-archive.mjs +2 -0
- package/driver/report-card-record.mjs +2 -2
- package/driver/result-noun-fields.mjs +10 -3
- package/driver/run-economics.mjs +2 -2
- package/driver/run-integrity.mjs +1 -1
- package/driver/runner.mjs +22 -22
- package/driver/scope-rules.mjs +1 -1
- package/driver/search-policy.mjs +3 -3
- package/driver/skeptic-search.mjs +1 -1
- package/driver/skills/blind-frame/SKILL.md +1 -1
- package/driver/skills/case-law-citation/SKILL.md +2 -2
- package/driver/skills/knockout-assess/SKILL.md +10 -4
- package/driver/skills/prelim-search/SKILL.md +2 -2
- package/driver/skills/prelim-search/template-formatting.md +1 -1
- package/driver/skills/prelim-search/templates/email/generic.md +1 -1
- package/driver/skills/prelim-search/worked-examples.md +1 -1
- package/driver/skills/prelim-variants/SKILL.md +2 -2
- package/driver/stage-context.mjs +1 -1
- package/driver/stages-knockout.mjs +55 -4
- package/driver/stages.mjs +97 -40
- package/driver/stray-artifacts.mjs +2 -2
- package/driver/suite-census.json +188 -44
- package/driver/synthesis-record.mjs +1 -1
- package/driver/systemd/clearotron-client-mcp.service +1 -1
- package/driver/systemd/clearotron-portal.service +1 -1
- package/driver/systemd/render-units.mjs +1 -1
- package/driver/tokens.mjs +1 -1
- package/driver/tool-calls.mjs +1 -1
- package/driver/turnaround-bands.mjs +1 -1
- package/driver/unit-file-drift.mjs +1 -1
- package/driver/unit-inventory.mjs +121 -61
- package/driver/unit-state-verdict.mjs +20 -12
- package/driver/verify-knockout.mjs +10 -2
- package/driver/verify.mjs +14 -14
- package/driver/whatif-memo-run.mjs +46 -5
- package/driver/whatif-queue.mjs +1 -1
- package/driver/whatif-worker.mjs +1 -1
- package/mcp-server/CHANGELOG.md +12 -0
- package/mcp-server/README.md +3 -3
- package/mcp-server/http-server.mjs +44 -1
- package/mcp-server/key-socket.mjs +184 -0
- package/mcp-server/lib/audit-view.mjs +69 -2
- package/mcp-server/lib/brief.mjs +15 -0
- package/mcp-server/lib/driver.mjs +7 -1
- package/mcp-server/lib/events.mjs +1 -1
- package/mcp-server/lib/http-handler.mjs +1 -1
- package/mcp-server/lib/knockout.mjs +435 -0
- package/mcp-server/lib/ops.mjs +4 -4
- package/mcp-server/lib/options.mjs +1 -1
- package/mcp-server/lib/plan.mjs +1 -1
- package/mcp-server/lib/runs.mjs +1 -1
- package/mcp-server/lib/scrub.mjs +1 -1
- package/mcp-server/lib/whatif.mjs +12 -3
- package/mcp-server/mint-token.mjs +1 -1
- package/mcp-server/package.json +2 -2
- package/mcp-server/server.mjs +76 -11
- package/package.json +3 -3
- package/portal-ui/package.json +1 -1
- package/providers/_shared/enumerate.mjs +1 -1
- package/providers/_shared/ledger-path.mjs +3 -3
- package/providers/_shared/ledger.mjs +1 -1
- package/providers/_shared/result-shape.mjs +3 -3
- package/providers/_shared/term-shape.mjs +1 -1
- package/providers/corsearch/src/core.js +1 -1
- package/providers/jx-subclass/BUILDING.md +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +12 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
- package/scripts/README.md +1 -1
- package/scripts/added-reference-check.mjs +29 -1
- package/scripts/ai-page-render-check.mjs +2 -1
- package/scripts/authority-boundary-probe.mjs +1 -1
- package/scripts/backfill-started-at.mjs +1 -1
- package/scripts/citation-line-check.mjs +3 -3
- package/scripts/clearances-render-check.mjs +4 -3
- package/scripts/compare.mjs +2 -2
- package/scripts/composer-render-check.mjs +6 -6
- package/scripts/contract-dictation-scan.mjs +2 -2
- package/scripts/dead-names.mjs +1 -1
- package/scripts/drain-preflight.mjs +5 -5
- package/scripts/e2e-unread-terminals.mjs +1 -1
- package/scripts/e2e.mjs +8 -8
- package/scripts/env-audit.mjs +27 -7
- package/scripts/env-classify.mjs +139 -15
- package/scripts/freeze-example-run.mjs +3 -3
- package/scripts/head-arrived-gated.mjs +1 -1
- package/scripts/headless-page.mjs +274 -0
- package/scripts/home-render-check.mjs +3 -2
- package/scripts/live-surface-check.mjs +92 -19
- package/scripts/main-health.mjs +1 -1
- package/scripts/merge-presence-check.mjs +3 -3
- package/scripts/mint-reference-strip-backlog.mjs +41 -0
- package/scripts/mint-suite-census.mjs +6 -6
- package/scripts/nightly-notice.mjs +1 -1
- package/scripts/portal-lifecycle-check.mjs +3 -3
- package/scripts/reconcile-runs.mjs +1 -1
- package/scripts/release-await-cut.mjs +101 -11
- package/scripts/release-version-pr-checks.mjs +26 -2
- package/scripts/release-version.mjs +2 -2
- package/scripts/render-check.mjs +66 -7
- package/scripts/report-frame-check.mjs +12 -0
- package/scripts/report-screenshot.mjs +62 -2
- package/scripts/revisit-render-check.mjs +3 -2
- package/scripts/score.mjs +18 -4
- package/scripts/strip-tracker-citations.mjs +116 -0
- package/scripts/test-run.mjs +3 -3
- package/scripts/third-party-notices.mjs +3 -3
- package/scripts/travelling-predicates.mjs +3 -3
- package/scripts/unexecuted-asserts.mjs +2 -2
- package/scripts/verify-publishable.mjs +2 -2
- package/scripts/write-up-form-census.mjs +1 -1
- package/shared/access-audience.mjs +215 -0
- package/shared/brand.mjs +13 -13
- package/shared/citation-scan.mjs +1 -1
- package/shared/client-door.mjs +7 -7
- package/shared/driver-dir.mjs +1 -1
- package/shared/env-aliases.mjs +0 -48
- package/shared/env-local.mjs +1 -1
- package/shared/identifier-scan.mjs +3 -3
- package/shared/invocation.mjs +1 -1
- package/shared/names-in-force.mjs +2 -0
- package/shared/product-owned-names.mjs +1 -1
- package/shared/register-selection.mjs +1 -1
- package/shared/scope.mjs +5 -5
- package/shared/server-units.mjs +4 -4
- package/shared/store-in-repo.mjs +2 -2
- package/shared/suite-census.mjs +4 -4
- package/shared/tracked-files.mjs +31 -0
- package/shared/tty-style.mjs +1 -1
- package/shared/uspto-index-size.mjs +1 -1
- package/shared/vacuous-pass.mjs +1 -1
- package/skills/clearotron-account/SKILL.md +42 -13
- package/driver/systemd/prelim-driver.path +0 -69
- package/driver/systemd/prelim-driver.service +0 -86
- package/driver/systemd/prelim-driver.timer +0 -14
- package/driver/systemd/prelim-outbox.path +0 -27
- package/driver/systemd/prelim-outbox.service +0 -37
- package/driver/systemd/prelim-outbox.timer +0 -21
- package/node_modules/exceljs/README_zh.md +0 -2878
- package/node_modules/exceljs/dist/LICENSE +0 -22
- package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
- package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
- package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
- package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
- package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
- package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
- package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
- package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
- package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
- package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
- package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
- package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
- package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
- package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
- package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
- package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
- package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
- package/node_modules/exceljs/dist/es5/index.js +0 -15
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
- package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
- package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
- package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
- package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
- package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
- package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
- package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
- package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.js +0 -59900
- package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
- package/node_modules/exceljs/dist/exceljs.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
- package/scripts/deploy-test.sh +0 -309
package/shared/client-door.mjs
CHANGED
|
@@ -48,7 +48,7 @@ export const CLIENT_DOOR_UNIT = "clearotron-client-mcp.service";
|
|
|
48
48
|
/**
|
|
49
49
|
* Where revoked key ids live, and the one place that decides it.
|
|
50
50
|
*
|
|
51
|
-
* —
|
|
51
|
+
* — found in review. This literal was written out in four places (connect, start
|
|
52
52
|
* twice, disconnect). `connect` armed the variable AND created the file, with a comment saying exactly
|
|
53
53
|
* why: a named-but-absent file was the same landmine one step later, because `isRevoked` then failed
|
|
54
54
|
* OPEN on an unreadable list. It fails CLOSED now, which makes creating the file more load-bearing
|
|
@@ -63,7 +63,7 @@ export const defaultDenylistPath = (home) => join(home, ".config", "clearotron",
|
|
|
63
63
|
/**
|
|
64
64
|
* The denylist path a door should be given — the operator's, if they set one.
|
|
65
65
|
*
|
|
66
|
-
*,
|
|
66
|
+
*, a later review's sharpening of it. `defaultDenylistPath` answers "where does it live
|
|
67
67
|
* when nobody said"; this answers "where does it live", which is the question every caller actually had.
|
|
68
68
|
* The client door was composed with the default UNCONDITIONALLY while every other child inherited
|
|
69
69
|
* TRADEMARK_MCP_TOKEN_DENYLIST, so on a box where an operator had placed the list themselves:
|
|
@@ -173,7 +173,7 @@ export function clientDoorState({ env = {}, unitDir, exists, active = null, list
|
|
|
173
173
|
// synonym for false: a caller that cannot reach systemd must not be able to report a door as down
|
|
174
174
|
// any more than it can report one as up. Same discipline as the queue-watch arm's unprobed half.
|
|
175
175
|
return {
|
|
176
|
-
// —
|
|
176
|
+
// — found in review: what is ANSWERING, which the unit file cannot say.
|
|
177
177
|
// — THE PAIR, NOT ITS BOOLEAN. `active` collapses ActiveState and SubState,
|
|
178
178
|
// so a crash loop (`activating/auto-restart`) and a unit that was never started (`inactive/dead`)
|
|
179
179
|
// reduce to the same `false` and printed the same sentence — one is a fault to read the journal for,
|
|
@@ -228,7 +228,7 @@ export function describeDoorState(door, {
|
|
|
228
228
|
text: `the client door is HALF configured — ${missing}. Something began setting it up and stopped: `
|
|
229
229
|
+ `finish with \`${connectCmd}\`, or close it with \`${closeCmd}\`.` };
|
|
230
230
|
}
|
|
231
|
-
// A DOOR THAT ANSWERS IS SET UP, WHATEVER THE UNITS SAY (
|
|
231
|
+
// A DOOR THAT ANSWERS IS SET UP, WHATEVER THE UNITS SAY (found in review).
|
|
232
232
|
//
|
|
233
233
|
// `standing` is unit-file + fence, and a FOREGROUND `clearotron start` has neither: it runs the door
|
|
234
234
|
// as its own child. Measured — the door listening on its port while this sentence said "the client
|
|
@@ -263,7 +263,7 @@ export function describeDoorState(door, {
|
|
|
263
263
|
+ "so this says the door is set up, not that it answers" };
|
|
264
264
|
}
|
|
265
265
|
if (door.active === false) {
|
|
266
|
-
// NAME THE STATE, AND NEVER ASSERT AN EMPTY PORT WITHOUT LOOKING
|
|
266
|
+
// NAME THE STATE, AND NEVER ASSERT AN EMPTY PORT WITHOUT LOOKING.
|
|
267
267
|
//
|
|
268
268
|
// This said "nothing is listening on the client door" from `active === false` alone, while a probe
|
|
269
269
|
// of that very port had already been taken and passed in — and read nowhere on this branch. With a
|
|
@@ -477,7 +477,7 @@ export function enablePlan({ env = {}, address, identity, accessFile = null, por
|
|
|
477
477
|
}
|
|
478
478
|
}
|
|
479
479
|
|
|
480
|
-
// ── THE PORT IS CHECKED, NOT ASSUMED (
|
|
480
|
+
// ── THE PORT IS CHECKED, NOT ASSUMED (and measured 2026-08-31) ──────────────────────────
|
|
481
481
|
//
|
|
482
482
|
// A default port is a guess about which instance you are. Driving this verb on a shared box found
|
|
483
483
|
// 18811 ALREADY HELD by another user's client face: the unit was installed, started, and crash-looped,
|
|
@@ -987,7 +987,7 @@ export function applyDisablePlan(plan, io) {
|
|
|
987
987
|
return { done };
|
|
988
988
|
}
|
|
989
989
|
|
|
990
|
-
// ── IS THE PUBLISHED ADDRESS REAL? (
|
|
990
|
+
// ── IS THE PUBLISHED ADDRESS REAL? (acceptance 2) ────────────────────────────────
|
|
991
991
|
//
|
|
992
992
|
// The criterion is deliberate about which question this answers: "doctor reports the door's
|
|
993
993
|
// REACHABILITY, not its configuration — the address is set AND answers from outside the box. An address
|
package/shared/driver-dir.mjs
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
// IT DOES NOT SET A MODE, and this change alters no behaviour on disk. Pinning 0o750 here in the same
|
|
44
44
|
// commit would be a semantic change riding inside a seam, and the seam is the part that has to be
|
|
45
45
|
// reviewable by reading nineteen call sites and agreeing they still mean what they meant. The mode is
|
|
46
|
-
//
|
|
46
|
+
// That business, and when it is taken it is one line in this file.
|
|
47
47
|
//
|
|
48
48
|
// IT WOULD NOT RESTRAIN THE SEAT IF IT DID. The agent runs as the same account that owns these
|
|
49
49
|
// directories, so owner bits apply whatever the group bits say. A tighter mode removes GROUP write,
|
package/shared/env-aliases.mjs
CHANGED
|
@@ -85,48 +85,6 @@ export function envFrom(env, name) {
|
|
|
85
85
|
return v === "" ? undefined : v;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
/** The prefix every retired spelling carries. The rename moved the stem and nothing else. */
|
|
89
|
-
export const RETIRED_PREFIX = "PRELIM_";
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Every retired-spelling line SET in `env`, each with the name in force where there is one.
|
|
93
|
-
*
|
|
94
|
-
* ── THE DETECTION NEEDS NO TABLE, AND THAT IS DELIBERATE ────────────────────────────────────────
|
|
95
|
-
*
|
|
96
|
-
* No product code reads a `PRELIM_*` name — nothing on this tree does, and an arm holds it that way
|
|
97
|
-
* (driver/test/retired-env-spellings.test.mjs). So a `PRELIM_*` line that is SET is dead, full stop,
|
|
98
|
-
* and this cannot go stale against a list somebody forgot to update. A table-driven detection would
|
|
99
|
-
* have exactly the failure mode the issue was filed about: silence for the name nobody wrote down.
|
|
100
|
-
*
|
|
101
|
-
* The table decides only the SECOND half of the sentence — which name to use instead — because that
|
|
102
|
-
* is the half that can be wrong. `NAMES_IN_FORCE` is derived from the build's own readers
|
|
103
|
-
* (scripts/mint-names-in-force.mjs), so a replacement is named only when something actually reads it.
|
|
104
|
-
* Where no `CLEAROTRON_` partner exists the setting did not move, it went, and `replacement` is null.
|
|
105
|
-
* Sending an operator to a variable nothing reads would replace one silent failure with another.
|
|
106
|
-
*
|
|
107
|
-
* EMPTY IS UNSET, as everywhere else here: an `X=` line in an EnvironmentFile means "not configured",
|
|
108
|
-
* so it is not reported. An operator who blanked a line has already stopped setting it.
|
|
109
|
-
*/
|
|
110
|
-
export function retiredSpellingsIn(env = process.env) {
|
|
111
|
-
const inForce = new Set(NAMES_IN_FORCE);
|
|
112
|
-
const found = [];
|
|
113
|
-
for (const name of Object.keys(env ?? {})) {
|
|
114
|
-
if (!name.startsWith(RETIRED_PREFIX) || !has(env, name)) continue;
|
|
115
|
-
const candidate = `CLEAROTRON_${name.slice(RETIRED_PREFIX.length)}`;
|
|
116
|
-
found.push({ name, replacement: inForce.has(candidate) ? candidate : null });
|
|
117
|
-
}
|
|
118
|
-
return found.sort((a, b) => a.name.localeCompare(b.name));
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/** The one sentence a retired spelling is worth, used by every surface that reports one. */
|
|
122
|
-
export function retiredSpellingLine({ name, replacement }) {
|
|
123
|
-
return replacement
|
|
124
|
-
? `${name} is a RETIRED spelling and nothing reads it — the name in force is ${replacement}. `
|
|
125
|
-
+ `Rename the line in your environment file; its value is being ignored until you do.`
|
|
126
|
-
: `${name} is a RETIRED spelling and nothing reads it — this setting no longer exists under any `
|
|
127
|
-
+ `name. Delete the line from your environment file.`;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
88
|
/**
|
|
131
89
|
* Say so when a DELETED setting is still set. Nothing is applied and nothing is translated.
|
|
132
90
|
*
|
|
@@ -141,12 +99,6 @@ export function warnRetiredEnv({ env = process.env, note = defaultNote } = {}) {
|
|
|
141
99
|
+ `environment file.\n`);
|
|
142
100
|
said.push(name);
|
|
143
101
|
}
|
|
144
|
-
// The retired SPELLINGS, on the same footing and through the same emitter — so every service that
|
|
145
|
-
// already announces its posture at boot announces this too, rather than one service happening to.
|
|
146
|
-
for (const row of retiredSpellingsIn(env)) {
|
|
147
|
-
note(`[env] ${retiredSpellingLine(row)}\n`);
|
|
148
|
-
said.push(row.name);
|
|
149
|
-
}
|
|
150
102
|
return said;
|
|
151
103
|
}
|
|
152
104
|
|
package/shared/env-local.mjs
CHANGED
|
@@ -203,7 +203,7 @@ export const NO_DOTFILE = Object.freeze([
|
|
|
203
203
|
// derived guard caught it in the same commit that created it, which is the eleventh arriving loudly.
|
|
204
204
|
"scripts/post-deploy-validate.mjs",
|
|
205
205
|
// step 4 / — THE DERIVED SCAN COULD NOT SEE THESE TWO, and the reason is worth keeping.
|
|
206
|
-
//
|
|
206
|
+
// That scan walked every shebang entry looking for a module-top `process.env` capture of a renamed
|
|
207
207
|
// name. These capture INSIDE a function, so the scan passed over them — and they were stranding an
|
|
208
208
|
// operator all the same: both read a retired spelling and reached no translation, so a box configured
|
|
209
209
|
// with the name in force handed them nothing and the read fell through to a default. `compare` printed
|
|
@@ -288,7 +288,7 @@ const COMMENT_LINE = /^\s*(\/\/|#|\*|<!--)/;
|
|
|
288
288
|
// address, and a reader sent looking for one would be looking in the wrong place.
|
|
289
289
|
// `contact` joins on the owner's ruling of 2026-08-24: the launch documents collapsed to ONE public
|
|
290
290
|
// mailbox, and counsel's pack (ADDITIONAL-TERMS.md, NOTICES.md, TRADEMARKS.md) prints it. Added here in
|
|
291
|
-
// the same PR that introduced it, per
|
|
291
|
+
// the same PR that introduced it, per the rule above — a ruled mailbox joins this list, it never gets
|
|
292
292
|
// a domain exemption. `interested` and `security` stay: they are no longer printed by any shipping
|
|
293
293
|
// document, but removing a localpart from an allowlist is how a future document that uses one again
|
|
294
294
|
// fails for a reason nobody expects.
|
|
@@ -390,7 +390,7 @@ export function scanOperatorIdentity(files, readFn, { withheld = () => false } =
|
|
|
390
390
|
// ──: THE RETIRED PLATFORM ───────────────────────────────────────────────────────────────────
|
|
391
391
|
//
|
|
392
392
|
// The sixth pattern, and the narrowest: one token, matched case-insensitively, anywhere in a tracked
|
|
393
|
-
// file. It is here rather than in a one-off script because
|
|
393
|
+
// file. It is here rather than in a one-off script because the last scope line asks for exactly
|
|
394
394
|
// this — "extend the battery so this class cannot return" — and because the class it guards is the
|
|
395
395
|
// one the other five provably could not see. An integrator platform's name is not a person, not a
|
|
396
396
|
// home path, not a classification stamp, not an audience, and not a vendor standing where a category
|
|
@@ -439,7 +439,7 @@ export const namesRetiredPlatform = (text) => RETIRED_PLATFORM.test(String(text
|
|
|
439
439
|
// reasonably concludes they need a Cloudflare account.
|
|
440
440
|
//
|
|
441
441
|
// WHY A QUALIFIER RATHER THAN A BAN. The vendor name must keep appearing — a runbook worked through
|
|
442
|
-
// one real proxy end to end is worth more to an installer than an abstract one, and
|
|
442
|
+
// one real proxy end to end is worth more to an installer than an abstract one, and the rewrite
|
|
443
443
|
// deliberately kept it. What must not happen is the name standing where the CATEGORY belongs. So the
|
|
444
444
|
// rule is: name the vendor as much as you like, provided the line (or the one either side of it) says
|
|
445
445
|
// it is an example, a reference, or what THIS deployment happens to use.
|
package/shared/invocation.mjs
CHANGED
|
@@ -263,7 +263,7 @@ export const bareInvocation = (verb) => `clearotron ${verb}`;
|
|
|
263
263
|
/**
|
|
264
264
|
* Refuse a prompt when there is nobody to answer it.
|
|
265
265
|
*
|
|
266
|
-
* —
|
|
266
|
+
* — found in review. `install` has said this since it was written; `connect`
|
|
267
267
|
* and `disconnect` prompt through readline and did not, so piped or redirected they read EOF and took
|
|
268
268
|
* it as an answer. `install`'s exit code and wording are the model, and this is that model shared
|
|
269
269
|
* rather than copied a third time.
|
|
@@ -141,6 +141,7 @@ export const NAMES_IN_FORCE = Object.freeze([
|
|
|
141
141
|
"CLEAROTRON_REPLAY_SNAPSHOT",
|
|
142
142
|
"CLEAROTRON_REPORTS_DIR",
|
|
143
143
|
"CLEAROTRON_REPORTS_URL",
|
|
144
|
+
"CLEAROTRON_REQUESTER_WHATSAPP",
|
|
144
145
|
"CLEAROTRON_REQUIRE_EXPLICIT_PORTS",
|
|
145
146
|
"CLEAROTRON_RETRY_BACKOFF_MS",
|
|
146
147
|
"CLEAROTRON_RUN_DIR",
|
|
@@ -168,6 +169,7 @@ export const NAMES_IN_FORCE = Object.freeze([
|
|
|
168
169
|
"CLEAROTRON_WARM_RETRY",
|
|
169
170
|
"CLEAROTRON_WATCH_",
|
|
170
171
|
"CLEAROTRON_WHATIF_MAX_CONCURRENT",
|
|
172
|
+
"CLEAROTRON_WHATSAPP_OPERATOR_COPY",
|
|
171
173
|
"CLEAROTRON_WORKSPACE_PREFIX",
|
|
172
174
|
"CLEAROTRON_WORK_DIR",
|
|
173
175
|
"CLEAROTRON_X",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
// Add it here and nowhere else, and only if this product genuinely owns it. A prefix added to let one
|
|
25
25
|
// awkward name through re-opens the gap for every future gather — the cost is not local.
|
|
26
26
|
export const PRODUCT_NAME_PREFIXES = Object.freeze([
|
|
27
|
-
"
|
|
27
|
+
"CLEAROTRON", "CLEAROTRON", "PORTAL", "TRADEMARK_MCP", "CLIENT_MCP", "CLIENT_ACCESS",
|
|
28
28
|
"CLIENT_CF", "PROFILE", "RECIPE", "MCP_A",
|
|
29
29
|
]);
|
|
30
30
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
// `driver/run-requirements.mjs` derives from those two fields and never restates them.
|
|
32
32
|
//
|
|
33
33
|
// The vendor sign-up steps travel WITH the table rather than staying behind in the wizard: they are
|
|
34
|
-
// facts about the register, the wizard is one reader of them, and
|
|
34
|
+
// facts about the register, the wizard is one reader of them, and the same steps are asked for on the same
|
|
35
35
|
// steps on surfaces the wizard does not own.
|
|
36
36
|
|
|
37
37
|
// The USPTO sizing figures are MEASURED and live in their own module; the warnings below quote them
|
package/shared/scope.mjs
CHANGED
|
@@ -39,7 +39,7 @@ export function isRevoked(jti, { denylistPath = process.env.TRADEMARK_MCP_TOKEN_
|
|
|
39
39
|
let text;
|
|
40
40
|
try { text = readFileSync(denylistPath, "utf8"); }
|
|
41
41
|
catch (e) {
|
|
42
|
-
// FAIL CLOSED (
|
|
42
|
+
// FAIL CLOSED (found in review; ruled and recorded for the owner's
|
|
43
43
|
// review with the reversal path, which is this function).
|
|
44
44
|
//
|
|
45
45
|
// This returned false — "not revoked" — on any unreadable list, and that is how a revoked key kept
|
|
@@ -64,7 +64,7 @@ export function isRevoked(jti, { denylistPath = process.env.TRADEMARK_MCP_TOKEN_
|
|
|
64
64
|
*
|
|
65
65
|
* NOT AN AUTHENTICATOR. This parses without verifying, which is safe for exactly one job: reading the
|
|
66
66
|
* revocation handle out of our own `mintToken` output so `clearotron connect` can write it down
|
|
67
|
-
* (
|
|
67
|
+
* (owner ruling: record key IDs, never secrets). Anything answering "is this token
|
|
68
68
|
* good" goes through `verifyToken`; a caller handing this function a token from the WIRE is the defect.
|
|
69
69
|
*
|
|
70
70
|
* Returns null rather than throwing on a malformed string — the caller is recording, and a record of
|
|
@@ -302,7 +302,7 @@ export const USER_ARTIFACTS = new Set(["report"]);
|
|
|
302
302
|
// SEALED MODEL IDENTITY, BILLED COUNTS, and THE ENGINE'S JUDGMENT OF ITS OWN OUTPUT. Which model tier
|
|
303
303
|
// ran a stage and what it cost is the firm's cost structure, not an audit fact — and
|
|
304
304
|
// `withdrawn_reason` ("confabulated attribution") is an assessment of our own quality that the
|
|
305
|
-
// client has no counterpart for, already ruled un-forwardable (
|
|
305
|
+
// client has no counterpart for, already ruled un-forwardable (scrub.mjs).
|
|
306
306
|
//
|
|
307
307
|
// That line is cheap to hold because the code had already drawn it: events.mjs says "Model identity is
|
|
308
308
|
// deliberately NOT projected here: decision_timeline / run_changes are narrative surfaces", trace.mjs and
|
|
@@ -713,7 +713,7 @@ export function attributionOf(scope, onBehalfOf = null) {
|
|
|
713
713
|
// the delegate does not widen what the token may do.
|
|
714
714
|
const delegate = typeof onBehalfOf === "string" && onBehalfOf.trim() ? onBehalfOf.trim() : null;
|
|
715
715
|
if (!delegate) return self;
|
|
716
|
-
// COUNTS AND IDENTIFIERS, NOT PROSE (
|
|
716
|
+
// COUNTS AND IDENTIFIERS, NOT PROSE (the scope note): this file is a matter record. A delegate
|
|
717
717
|
// carrying whitespace, a colon or a newline would forge the compound form or spill a sentence into the
|
|
718
718
|
// archive, so anything that is not a bare identifier is refused and the verified half stands alone.
|
|
719
719
|
if (!/^[A-Za-z0-9._%+@-]{1,128}$/.test(delegate)) return self;
|
|
@@ -759,7 +759,7 @@ export function authorize(scope, toolName, args = {}) {
|
|
|
759
759
|
}
|
|
760
760
|
// The PREVIEW only, deliberately — the same line the internal branch draws below.
|
|
761
761
|
//
|
|
762
|
-
//
|
|
762
|
+
// The defect was that the FREE call every principal makes first died on a message naming an
|
|
763
763
|
// internal doc, so that is the call the stamp exists to rescue. Extending it to start_run would
|
|
764
764
|
// quietly remove a spend gate: an ops token's sub is often a connector name or "local", buildJob
|
|
765
765
|
// fills forwarderEmail from `${forwarder}@example.com` when none is given, and the result is a real
|
package/shared/server-units.mjs
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
// today and zero right ones tomorrow. `orphanReason` cannot discriminate either — all six carry one, and
|
|
29
29
|
// `clearotron-client-mcp`'s used to say the opposite thing — never install it eagerly, because starting
|
|
30
30
|
// it was the on-demand consent that opened client-account access. That row was rewritten on 2026-09-03
|
|
31
|
-
// when the owner superseded the posture (
|
|
31
|
+
// when the owner superseded the posture (settled point 2), which does not rescue the
|
|
32
32
|
// rejected repair: the reason a skip-on-orphan filter fails is that `runsOn: []` records boxes MEASURED,
|
|
33
33
|
// and every unit here starts life unmeasured.
|
|
34
34
|
//
|
|
@@ -74,7 +74,7 @@ export const SERVER_INSTALL_SET = Object.freeze([
|
|
|
74
74
|
// "On demand is fine" — starting the door WAS the consent that opened client-account access, so an
|
|
75
75
|
// installer that placed it would have made that consent meaningless.
|
|
76
76
|
//
|
|
77
|
-
// The owner superseded that knowingly (
|
|
77
|
+
// The owner superseded that knowingly (settled point 2): the door auto-starts
|
|
78
78
|
// with the product and THE PER-ACCOUNT KEY IS THE GATE, not whether a process runs. A door with no
|
|
79
79
|
// key issued refuses everything, which is the same protection with a different mechanism — and a
|
|
80
80
|
// better one, because it does not depend on a reader finding a verb.
|
|
@@ -85,7 +85,7 @@ export const SERVER_INSTALL_SET = Object.freeze([
|
|
|
85
85
|
]);
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
|
-
* Installed and enabled ONLY by `clearotron connect`, never by an install path (
|
|
88
|
+
* Installed and enabled ONLY by `clearotron connect`, never by an install path (
|
|
89
89
|
* owner ruling 2026-08-31). Named here so a reader of this file learns it exists and learns it is
|
|
90
90
|
* excluded on purpose — an absence with no reason beside it is the thing this module is against.
|
|
91
91
|
*/
|
|
@@ -98,7 +98,7 @@ export const ON_DEMAND_UNITS = Object.freeze([]);
|
|
|
98
98
|
/**
|
|
99
99
|
* Which of the installed units a `--background` REFRESH must restart.
|
|
100
100
|
*
|
|
101
|
-
* —
|
|
101
|
+
* — A review of that fix. `enable --now` on an ALREADY-ACTIVE unit is a
|
|
102
102
|
* no-op, so a refresh over an updated checkout leaves the old process running the old files. The restart
|
|
103
103
|
* loop that exists for exactly that named a hardcoded PAIR — the same pair the health check named, three
|
|
104
104
|
* lines below it — with the same stale justification: "the oneshot and its triggers pick the new copies
|
package/shared/store-in-repo.mjs
CHANGED
|
@@ -226,7 +226,7 @@ export function commitWithAuditRow({ audit, gitCommit, files, message, by, row }
|
|
|
226
226
|
// portal-service RECIPE_REPO_ROOT || <the profile repo root> → the config store → saves work
|
|
227
227
|
// recipe-service RECIPE_REPO_ROOT || join(HERE, "..") → the PRODUCT CHECKOUT → FATAL
|
|
228
228
|
//
|
|
229
|
-
// Two ends of one contract measuring different things (
|
|
229
|
+
// Two ends of one contract measuring different things (the class). The portal consulted the profile
|
|
230
230
|
// root as a second chance and the recipe-service did not, so one door came up and the other exited 1.
|
|
231
231
|
//
|
|
232
232
|
// AND THE DIVERGENT FALLBACK IS THE DANGEROUS ONE, which is why this is not merely tidying. The product
|
|
@@ -320,7 +320,7 @@ export function makeStoreCommit({ repoRoot, log = () => {}, what = "store", retr
|
|
|
320
320
|
} catch (e) {
|
|
321
321
|
const detail = detailOf(e);
|
|
322
322
|
if (isTransientGitFault(detail) && attempt <= retries) { napping(waitMs * attempt); continue; }
|
|
323
|
-
// NAMED, not merely reported.
|
|
323
|
+
// NAMED, not merely reported. That line held that a failed commit is a permanent sync blocker
|
|
324
324
|
// and belongs in the journal; it is no longer permanent — the next save completes it — but the
|
|
325
325
|
// operator still needs to know WHICH fault, because a hook and a full disk want different people.
|
|
326
326
|
log(`${what} COMMIT FAILED after the write landed — the save is LIVE and the paths are STAGED, `
|
package/shared/suite-census.mjs
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
//
|
|
16
16
|
// ── `.test(` IS NOT COUNTED, AND THAT IS THE WHOLE CALIBRATION ─────────────────────────────────────
|
|
17
17
|
//
|
|
18
|
-
//
|
|
18
|
+
// its own thread records the miscount: 177 `RegExp.prototype.test` calls counted as subtests,
|
|
19
19
|
// genuine subtests ZERO. So this counts `assert.<something>` and a `test(` at the START of a line, and
|
|
20
20
|
// nothing else. Two independent checks that it is calibrated: on the tree it was minted from, the
|
|
21
21
|
// counted test sites match the EXECUTED totals at 415/415 for portal-ui, 382 against 386 for
|
|
@@ -105,7 +105,7 @@ export function rootScriptDisagreements(readManifest, declared = CENSUS_ROOT_SCR
|
|
|
105
105
|
//
|
|
106
106
|
// while 581 of 639 driver test files stop being collected. Both sides agreed because both sides
|
|
107
107
|
// enumerate through the list ABOVE, and nothing in this repository opened a package.json. The census
|
|
108
|
-
// was move-proof about the tests and blind to itself being pointed somewhere else, which is
|
|
108
|
+
// was move-proof about the tests and blind to itself being pointed somewhere else, which is its own
|
|
109
109
|
// doctrine line: an enumerated check is blind to the thing moving; a discovered check is blind to
|
|
110
110
|
// ITSELF moving.
|
|
111
111
|
//
|
|
@@ -237,7 +237,7 @@ export function lossBetween(prevPerFile, nextPerFile) {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
/**
|
|
240
|
-
*
|
|
240
|
+
* WHICH BUCKET EACH DIFFERENCE LANDS IN, and which of them refuses a re-stamp.
|
|
241
241
|
*
|
|
242
242
|
* `lossBetween` above answers what MOVED. This answers what that MEANS, and it is a separate question
|
|
243
243
|
* with a separate history. A rising skip count is a real difference and it used to refuse: it landed
|
|
@@ -343,7 +343,7 @@ export function countTestSites(text) {
|
|
|
343
343
|
* The 1-based LINE of every assert site, in source order. One site per `assert.<x>` occurrence, so a
|
|
344
344
|
* line carrying two of them appears twice — the same arithmetic `countTestSites` reports.
|
|
345
345
|
*
|
|
346
|
-
*
|
|
346
|
+
* That fifth member needs the LINES, not just the total: a GATED arm — `if (!process.env.X) return;`
|
|
347
347
|
* at the top of a test body — leaves every token in place, so a count cannot see it and only "did this
|
|
348
348
|
* line ever run" can. That question is answered by a coverage pass, and the two sides must ask it of the
|
|
349
349
|
* SAME sites, so the rule lives here once rather than being re-typed against the same file.
|
package/shared/tracked-files.mjs
CHANGED
|
@@ -114,5 +114,36 @@ export function grepTrackedFiles(guard, { root, args }) {
|
|
|
114
114
|
return files;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
/**
|
|
118
|
+
* The tracked corpus WITH ITS INDEX MODES, or null when this tree has no checkout to read it from.
|
|
119
|
+
*
|
|
120
|
+
* WHY THIS IS HERE RATHER THAN LEFT TO ITS ONE CALLER (tracker issue 235). The executable-bits guard
|
|
121
|
+
* needs `ls-files -s`, which carries the mode, and `trackedFiles` above deliberately returns paths
|
|
122
|
+
* only. So that guard called the helper for its skip contract and then spawned git a SECOND time,
|
|
123
|
+
* raw, for the modes — correct, because the raw call sits behind the helper's null check, but
|
|
124
|
+
* indistinguishable from an unguarded one to any reader or check looking at the call sites.
|
|
125
|
+
*
|
|
126
|
+
* The invariant is "corpus enumeration degrades to a stated skip", and `-s` is corpus enumeration.
|
|
127
|
+
* Extending the helper keeps that true by construction instead of by the ordering of two calls.
|
|
128
|
+
*
|
|
129
|
+
* @returns {Map<string,string>|null} path -> index mode ("100644", "100755", …) — null means SKIP
|
|
130
|
+
*/
|
|
131
|
+
export function trackedIndexModes(guard, { root }) {
|
|
132
|
+
const r = run(root, ["ls-files", "-s"]);
|
|
133
|
+
if (r.status !== 0) {
|
|
134
|
+
say(`${GUARD_SKIPPED_MARKER} ${guard} — ${reasonFrom(r)}; ${NO_CORPUS_REMEDY}`);
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const out = new Map();
|
|
138
|
+
for (const line of r.stdout.split("\n")) {
|
|
139
|
+
if (!line.trim()) continue;
|
|
140
|
+
// `<mode> <object> <stage>\t<path>` — the tab is the only safe separator, a path may contain spaces.
|
|
141
|
+
const [meta, path] = line.split("\t");
|
|
142
|
+
if (path) out.set(path, meta.split(" ")[0]);
|
|
143
|
+
}
|
|
144
|
+
say(`${GUARD_OK_MARKER} — ${guard}: ${out.size} tracked file(s) with modes`);
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
147
|
+
|
|
117
148
|
/** The one-line reason a guard hands to `t.skip()`, so the TAP line says it too. */
|
|
118
149
|
export const skipReason = (guard) => `${guard}: not a git checkout — ${NO_CORPUS_REMEDY}`;
|
package/shared/tty-style.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
3
|
// tty-style.mjs — weight where the meaning is, and NOTHING when the reader is not a terminal.
|
|
4
4
|
//
|
|
5
|
-
// ── why this exists (
|
|
5
|
+
// ── why this exists (owner ruling 2026-08-31) ────────────────────────────────────
|
|
6
6
|
//
|
|
7
7
|
// "new terminals can do things like bold and colours etc — good formatting impresses people because it's
|
|
8
8
|
// made clear to them someone put the time in." That is a product argument, not a decorative one: setup
|
|
@@ -102,7 +102,7 @@ export const USPTO_PEAK_GB = Math.round((USPTO_INDEX_GB + USPTO_PEAK_WAL_GB) * 1
|
|
|
102
102
|
//
|
|
103
103
|
// It was pessimistic by 4x. Charging 1.0 demanded ~43.8 GB for a build whose index came to 10.1 GB, and
|
|
104
104
|
// INSTALL.md told the reader to provision 60 GB. On the free tier that is the difference between "I can
|
|
105
|
-
// try this on the disk I have" and "I cannot", which is the whole of
|
|
105
|
+
// try this on the disk I have" and "I cannot", which is the whole of the Why.
|
|
106
106
|
//
|
|
107
107
|
// Carried at 0.35 against 0.24 measured — a 46% margin, and the margin is doing real work rather than
|
|
108
108
|
// decorating a guess:
|
package/shared/vacuous-pass.mjs
CHANGED
|
@@ -158,7 +158,7 @@ export function discoveredLoops(text) {
|
|
|
158
158
|
|
|
159
159
|
// ── THE EARLY-RETURN HALF ──────────────────────────────────────────────────────────────────
|
|
160
160
|
//
|
|
161
|
-
//
|
|
161
|
+
// That ruling names two shapes. `discoveredLoops` above is the loop half. This is the other, and
|
|
162
162
|
// the two are not alike enough to share a detector:
|
|
163
163
|
//
|
|
164
164
|
// test("the tree is clean", () => {
|
|
@@ -165,21 +165,50 @@ question to the issuing firm rather than reconstructing an answer.
|
|
|
165
165
|
|
|
166
166
|
## Asking what-if
|
|
167
167
|
|
|
168
|
-
A what-if
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
168
|
+
A what-if answers *what if this were different* about a search that has already run. There are two, and
|
|
169
|
+
the search's own state decides which one you can have:
|
|
170
|
+
|
|
171
|
+
- a **step re-run**, while the search is still live — one step runs again under a changed assumption, in
|
|
172
|
+
a sandbox;
|
|
173
|
+
- a **memo**, once the search is delivered or archived — the evidence already gathered is read again
|
|
174
|
+
under the assumption, and a short document comes back naming the report it belongs to.
|
|
175
|
+
|
|
176
|
+
Either is the wrong tool when the user wants a fresh answer about a different mark. That is a new search.
|
|
177
|
+
|
|
178
|
+
**On a delivered report, offer the memo.** A step re-run is refused there, and that refusal is the one
|
|
179
|
+
that used to end the conversation with *commission a fresh search*. It should not. A user holding a
|
|
180
|
+
report who asks *what if the Korean application were abandoned* is asking the most ordinary question
|
|
181
|
+
there is, and the memo is the answer to it — so check the search's state before you tell anyone the
|
|
182
|
+
question cannot be answered.
|
|
183
|
+
|
|
184
|
+
- **Name the step when you ask for a re-run; do not when you ask for a memo.** `what_if_plan` has to be
|
|
185
|
+
told which step, and asking without one is an error rather than a refusal you can relay. A memo re-runs
|
|
186
|
+
no step: pass the user's assumption as `instructions` and nothing else.
|
|
187
|
+
- **Plan, read the honesty note aloud, then commit.** `what_if_plan` says in plain words how complete the
|
|
188
|
+
answer will be. Re-running an early step does **not** re-run the risk read or the report on top of it,
|
|
189
|
+
and a user who is not told that will read a partial output as a new verdict. Say it before you spend,
|
|
190
|
+
not after.
|
|
191
|
+
- **It is not instant.** Both kinds queue on the server and run there. Tell the user it is running and
|
|
192
|
+
collect it with `what_if_result` rather than promising an immediate answer.
|
|
178
193
|
- **You do not choose how it runs.** There is no model or tier for you to pick, and asking for one is
|
|
179
194
|
refused. Express the change in `instructions`, in the user's own terms.
|
|
180
|
-
- **The original is untouched, and say so.**
|
|
181
|
-
Present the result as *what this
|
|
182
|
-
|
|
195
|
+
- **The original is untouched, and say so.** Neither kind edits the delivered search or its report.
|
|
196
|
+
Present the result as *what this would have said under that assumption*, never as a correction to the
|
|
197
|
+
report the user already holds.
|
|
198
|
+
|
|
199
|
+
### What a memo is, and what it is not
|
|
200
|
+
|
|
201
|
+
Say all three when you offer one, not when you deliver it. A user who learns the bounds afterwards has
|
|
202
|
+
already read it as something it is not.
|
|
203
|
+
|
|
204
|
+
- **It searches nothing.** No register is queried and no new evidence is gathered. It reasons over what
|
|
205
|
+
the search already found, and costs nothing beyond model time.
|
|
206
|
+
- **It cannot confirm the assumption.** It says what would follow *if* the assumption held, and states
|
|
207
|
+
what the smallest piece of work would be that could settle whether it does. It is not a finding that
|
|
208
|
+
the Korean application was abandoned; it is what that would mean if it were.
|
|
209
|
+
- **A stopped search takes neither kind.** A search its owner cancelled has evidence that was never
|
|
210
|
+
finished, and reasoning over a half-gathered record is how a memo comes to say more than the search
|
|
211
|
+
ever knew.
|
|
183
212
|
|
|
184
213
|
## Before you start a search
|
|
185
214
|
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
[Unit]
|
|
2
|
-
Description=Watch the prelim-search driver queue for new job files
|
|
3
|
-
Documentation=https://github.com/CordilleraSarl/Clearotron/blob/main/driver/README.md
|
|
4
|
-
|
|
5
|
-
[Path]
|
|
6
|
-
# Watch EVERY prelim-capable agent's queue (inotify-backed). When a *.json job lands in any of them, start
|
|
7
|
-
# the drain service — which runs the job as the agent whose workspace it sits in. One PathExistsGlob per
|
|
8
|
-
# watched queue ("Multiple directives may be combined … to watch multiple paths" — systemd.path(5)).
|
|
9
|
-
# Event-driven, sub-second; nothing of ours runs except while a job is being processed. The
|
|
10
|
-
# prelim-driver.timer fallback re-drains every ~90s so a queue NOT listed here (e.g. a brand-new agent, or
|
|
11
|
-
# a mid-path glob systemd fails to arm) still gets picked up — the watcher is an optimisation over the timer,
|
|
12
|
-
# never the sole drain path.
|
|
13
|
-
#
|
|
14
|
-
# These lines MUST mirror config.queueDirs (driver.config.mjs) — the runner drains those regardless, so any
|
|
15
|
-
# queue the runner scans but the watcher misses only pays the ≤90s timer latency (the pre-fix bug: this unit
|
|
16
|
-
# watched only the headless dir below, which does not exist in an agent-workspace deployment, so event-driven
|
|
17
|
-
# pickup was dead and the queue drained on the timer alone — and wedged entirely whenever the timer was down).
|
|
18
|
-
#
|
|
19
|
-
# ── tracker issue 774 — THESE GLOBS ARE THIS DEPLOYMENT'S WORKSPACE ROOT, NOT THE CODE DEFAULT ────────────────────
|
|
20
|
-
#
|
|
21
|
-
# A .path unit CANNOT read an environment variable. There is no `%E`, no EnvironmentFile, no expansion:
|
|
22
|
-
# the prefix below is a literal, and it is the one thing in the queue lane that CLEAROTRON_WORK_DIR
|
|
23
|
-
# cannot reach. So this file and `CLEAROTRON_WORK_DIR` in %h/.env are two spellings of one fact, and
|
|
24
|
-
# nothing at runtime notices when they stop agreeing.
|
|
25
|
-
#
|
|
26
|
-
# WHAT DISAGREEMENT LOOKS LIKE: the runner drains $CLEAROTRON_WORK_DIR; this watcher arms an inotify on
|
|
27
|
-
# a path nothing writes to. Jobs land, the watcher never fires, no unit fails, no log line appears, and
|
|
28
|
-
# the only thing still draining is the 90s prelim-driver.timer — so the lane looks alive and every job is
|
|
29
|
-
# late. If the timer is also down, the queue simply stops.
|
|
30
|
-
#
|
|
31
|
-
# tracker issue 774 moved the CODE default for CLEAROTRON_WORK_DIR from `$HOME/.openclaw` to
|
|
32
|
-
# `$HOME/trademark/workspace`. These globs did NOT move with it, and that is correct: they must track the
|
|
33
|
-
# deployment, and the deployment pins `CLEAROTRON_WORK_DIR=<home>/.openclaw` in its EnvironmentFile
|
|
34
|
-
# (the production env example) precisely so its run directories do not move under a live queue. Change one of
|
|
35
|
-
# these three lines only together with that variable, on the same box, in the same change.
|
|
36
|
-
# driver/test/data-plane-defaults.test.mjs asserts this file and the production env example still agree.
|
|
37
|
-
#
|
|
38
|
-
# AGENT-WORKSPACE deployment (this VM): one line per prelim-capable agent. We watch each CONCRETE queue dir
|
|
39
|
-
# (only the final *.json is a wildcard) so systemd arms an inotify watch directly on the queue directory —
|
|
40
|
-
# a mid-path `workspace-*` glob is not reliably armed. Add a line when a new prelim agent is onboarded; until
|
|
41
|
-
# then the 90s timer + dynamic config.queueDirs still pick its jobs up.
|
|
42
|
-
# ── RESOLVED AT INSTALL (tracker issue 1876 option B) ────────────────────────────────────────
|
|
43
|
-
# `@CLEAROTRON_WORK_DIR@` is substituted by render-units.mjs when it writes the resolved copy into
|
|
44
|
-
# ~/.config/systemd/user/. That closes the half of the disagreement above that VARIES BY MACHINE: the
|
|
45
|
-
# workspace root is now taken from the same value the runner drains, so the two spellings cannot drift
|
|
46
|
-
# apart on an install.
|
|
47
|
-
#
|
|
48
|
-
# THE AGENT SEGMENT IS NOT SUBSTITUTED, AND THAT IS A LIMIT WORTH STATING RATHER THAN HIDING.
|
|
49
|
-
# `driver.config.mjs` builds the queue as join(workspaceRoot, workspaceDirName(agent), "studio",
|
|
50
|
-
# "prelim-search", "queue") — so the root is configuration and `workspace-clawdi` is a per-deployment
|
|
51
|
-
# choice, already documented by the commented alternative below. Substituting it would need a variable
|
|
52
|
-
# nothing sets today, and inventing one to make this line look fully resolved would be the more
|
|
53
|
-
# dangerous kind of fix: it would read as configured while resolving to whatever the default happened
|
|
54
|
-
# to be. One real value substituted beats two that look substituted.
|
|
55
|
-
PathExistsGlob=@CLEAROTRON_WORK_DIR@/workspace-clawdi/studio/prelim-search/queue/*.json
|
|
56
|
-
# One line per ADDITIONAL prelim-capable agent this deployment onboards, e.g.
|
|
57
|
-
#PathExistsGlob=%h/.openclaw/workspace-<agent>/studio/prelim-search/queue/*.json
|
|
58
|
-
# Two lines here named individual people at this firm and shipped their identities to every clone
|
|
59
|
-
# (tracker issue 1014). They are a deployment's own roster, not the product's. Omitting a line costs LATENCY and
|
|
60
|
-
# not correctness: as the note above says, the 90s timer and the dynamic config.queueDirs still
|
|
61
|
-
# collect that agent's jobs — the watch only makes them immediate.
|
|
62
|
-
# HEADLESS deployment (docs/INTAKE.md): a standalone product with no agent workspaces instead watches the one
|
|
63
|
-
# explicit queue named by CLEAROTRON_QUEUE_DIR (default ~/prelim-queue). Uncomment for that mode; harmless to
|
|
64
|
-
# leave active in a mixed deployment (never matches when the dir is absent), mirroring the additive queueDirs.
|
|
65
|
-
#PathExistsGlob=%h/prelim-queue/*.json
|
|
66
|
-
Unit=prelim-driver.service
|
|
67
|
-
|
|
68
|
-
[Install]
|
|
69
|
-
WantedBy=default.target
|