clearotron 0.2.1 → 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 +54 -1
- package/CONTRIBUTING.md +3 -3
- package/INSTALL.md +53 -49
- package/bin/brandowner.mjs +1 -1
- package/bin/clearotron.mjs +4 -4
- package/bin/connect.mjs +2 -2
- package/bin/example.mjs +27 -11
- package/bin/grant.mjs +3 -3
- package/bin/key.mjs +1 -1
- package/bin/onboard.mjs +58 -118
- package/bin/start.mjs +22 -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/architecture/01-product-overview.md +2 -2
- package/docs/architecture/02-architecture.md +2 -2
- package/docs/architecture/04-configuration-reference.md +6 -3
- 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 +65 -1
- package/driver/README.md +2 -2
- package/driver/ask-ledger.mjs +3 -3
- 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 +175 -62
- 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 +28 -10
- 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/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 +5 -5
- package/driver/recording-agreement.mjs +3 -3
- package/driver/reference-score.mjs +7 -7
- package/driver/refusal-bound.mjs +3 -3
- package/driver/register-availability.mjs +2 -2
- package/driver/register-count.mjs +1 -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 +6 -6
- 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 +146 -32
- 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 +12 -12
- 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 +4 -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 +3 -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 +4 -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 +1 -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 +3 -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 +7 -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 +51 -2
- package/scripts/home-render-check.mjs +2 -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-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 +6 -4
- package/scripts/release-version-pr-checks.mjs +1 -1
- package/scripts/release-version.mjs +2 -2
- package/scripts/render-check.mjs +66 -7
- package/scripts/report-frame-check.mjs +1 -1
- package/scripts/report-screenshot.mjs +1 -1
- package/scripts/revisit-render-check.mjs +1 -1
- package/scripts/score.mjs +4 -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 +1 -1
- 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/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/bin/onboard.mjs
CHANGED
|
@@ -133,7 +133,7 @@ const PROBE_ENGINE = has("--probe-engine");
|
|
|
133
133
|
// issue 1871 — the same opt-in shape, for the credentials that had no proof at all. Never implied by
|
|
134
134
|
// a plain --check: this SPENDS, and on two of the register adapters the count IS a billable search.
|
|
135
135
|
const PROBE_PROVIDERS = has("--probe-providers");
|
|
136
|
-
//
|
|
136
|
+
// the same opt-in shape again, and this one WRITES: every registration it gets
|
|
137
137
|
// accepted CREATES an OAuth client on the operator's account. `doctor` promises in INSTALL.md that it
|
|
138
138
|
// writes nothing, and that promise is why a reader runs it on a production box without thinking. So
|
|
139
139
|
// this is never implied, it says what it is about to create before it creates it, and it reports what
|
|
@@ -141,7 +141,7 @@ const PROBE_PROVIDERS = has("--probe-providers");
|
|
|
141
141
|
const PROBE_CONNECTOR = has("--probe-connector");
|
|
142
142
|
|
|
143
143
|
// ── output ───────────────────────────────────────────────────────────────────────────────────────────
|
|
144
|
-
// WEIGHT WHERE THE MEANING IS (
|
|
144
|
+
// WEIGHT WHERE THE MEANING IS (owner ruling 2026-08-31). Every line here used to
|
|
145
145
|
// be the same weight, which is why the passphrase and the coverage reason both disappeared into their
|
|
146
146
|
// surroundings — two defects on that issue that are formatting defects wearing other clothes.
|
|
147
147
|
//
|
|
@@ -693,8 +693,8 @@ export async function preflightCandidate(candidate) {
|
|
|
693
693
|
/** Ask EUIPO for a token. This is the check that makes "refuses to persist a bad secret" true. */
|
|
694
694
|
export async function validateEuipo({ clientId, clientSecret, environment }) {
|
|
695
695
|
try {
|
|
696
|
-
const { resolveConfig } = await import(join(REPO, "providers", "euipo", "src", "core.js"));
|
|
697
|
-
const { getAccessToken } = await import(join(REPO, "providers", "euipo", "src", "euipo-client.js"));
|
|
696
|
+
const { resolveConfig } = await import(pathToFileURL(join(REPO, "providers", "euipo", "src", "core.js")).href);
|
|
697
|
+
const { getAccessToken } = await import(pathToFileURL(join(REPO, "providers", "euipo", "src", "euipo-client.js")).href);
|
|
698
698
|
await getAccessToken(resolveConfig({ clientId, clientSecret, environment }), { force: true });
|
|
699
699
|
return { ok: true };
|
|
700
700
|
} catch (e) {
|
|
@@ -705,7 +705,7 @@ export async function validateEuipo({ clientId, clientSecret, environment }) {
|
|
|
705
705
|
/** One minimal Perplexity call. Costs a request, so it is never made without being asked for. */
|
|
706
706
|
export async function validatePerplexity(apiKey) {
|
|
707
707
|
try {
|
|
708
|
-
const { buildRequestBody, callAgentAPI } = await import(join(REPO, "providers", "perplexity", "src", "core.js"));
|
|
708
|
+
const { buildRequestBody, callAgentAPI } = await import(pathToFileURL(join(REPO, "providers", "perplexity", "src", "core.js")).href);
|
|
709
709
|
await callAgentAPI(apiKey, buildRequestBody({ task: "Reply with the single word: ok.", preset: "fast-search" }), { retries: 0 });
|
|
710
710
|
return { ok: true };
|
|
711
711
|
} catch (e) {
|
|
@@ -1053,7 +1053,7 @@ export async function runCheck() {
|
|
|
1053
1053
|
// deliberate — a second reader would drift from this one exactly as the composer and the checker did
|
|
1054
1054
|
// in F41, and the drift is invisible because both sides keep passing their own arms.
|
|
1055
1055
|
const unitDir = join(homedir(), ".config", "systemd", "user");
|
|
1056
|
-
const { BACKGROUND_UNITS } = await import(join(REPO, "bin", "start.mjs"));
|
|
1056
|
+
const { BACKGROUND_UNITS } = await import(pathToFileURL(join(REPO, "bin", "start.mjs")).href);
|
|
1057
1057
|
const hosted = BACKGROUND_UNITS.some((u) => existsSync(join(unitDir, u)));
|
|
1058
1058
|
const unitEnv = hosted
|
|
1059
1059
|
? unitEnvironment({
|
|
@@ -1166,8 +1166,8 @@ export async function runCheck() {
|
|
|
1166
1166
|
+ "and the MCP connection are live right now; `npm run example` needs no engine.");
|
|
1167
1167
|
info(`To leave demo: install ${engSpec.vendor}'s CLI (\`${engSpec.fallback}\`), then ${engSpec.signIn}.`);
|
|
1168
1168
|
} else {
|
|
1169
|
-
info("
|
|
1170
|
-
+ "
|
|
1169
|
+
info("The engine program is installed. Whether it is signed in cannot be read from disk: run "
|
|
1170
|
+
+ "clearotron doctor --probe-engine to find out.");
|
|
1171
1171
|
}
|
|
1172
1172
|
|
|
1173
1173
|
// item 5 — WHICH BILLING LANE, reported rather than left to be inferred from a variable's
|
|
@@ -1188,8 +1188,8 @@ export async function runCheck() {
|
|
|
1188
1188
|
if (e) envForResolve[k] = e.v;
|
|
1189
1189
|
}
|
|
1190
1190
|
const auth = resolveAuthMode({ engineName: engineId, env: envForResolve });
|
|
1191
|
-
if (auth.mode === "unknown") info(`billing
|
|
1192
|
-
else ok(`billing
|
|
1191
|
+
if (auth.mode === "unknown") info(`billing: no policy for ${engineId} — this engine declares no sign-in modes`);
|
|
1192
|
+
else ok(`billing: ${auth.mode}${auth.apiBilled ? ` — charged per token against ${engSpec.apiKeyEnv}` : " — charged to the signed-in subscription, not per token"}`);
|
|
1193
1193
|
} catch (e) {
|
|
1194
1194
|
problem(String(e?.message ?? e));
|
|
1195
1195
|
}
|
|
@@ -1366,7 +1366,7 @@ export async function runCheck() {
|
|
|
1366
1366
|
// Both lines were honest about their own source and neither said what it was. The first reads this
|
|
1367
1367
|
// command's env file; the second reads THIS PROCESS's resolution, and a CLI is started by a login
|
|
1368
1368
|
// shell that carries none of the units' `EnvironmentFile`. The deployment was correct and served
|
|
1369
|
-
//
|
|
1369
|
+
// zephyr, aurora and generic throughout.
|
|
1370
1370
|
//
|
|
1371
1371
|
// THE UNITS' ENV IS NOT PASSED INTO `profileStoreResolution`, deliberately. `PROFILES_OVERLAY_DIR`
|
|
1372
1372
|
// is captured when profiles.mjs LOADS, so handing it the units' value would set `live` with no
|
|
@@ -1513,7 +1513,7 @@ export async function runCheck() {
|
|
|
1513
1513
|
//
|
|
1514
1514
|
// REPORTS, NEVER JUDGES: nothing here sets `problem()`. Drift is information for the reader, not a
|
|
1515
1515
|
// fault in their install, and a doctor that called their own overrides broken would be wrong.
|
|
1516
|
-
say("\n
|
|
1516
|
+
say("\n Custom instructions");
|
|
1517
1517
|
try {
|
|
1518
1518
|
const report = overlayReport({ baseRoot: config.skillsBaseDir, overlayRoot: config.skillsOverlayDir });
|
|
1519
1519
|
for (const line of renderOverlayReport(report, { indent: "" })) say(` ${line}`);
|
|
@@ -1528,7 +1528,7 @@ export async function runCheck() {
|
|
|
1528
1528
|
// answer for somebody running the engine by hand. This line is what the services see.
|
|
1529
1529
|
const svcDoctrine = effectiveForService("CLEAROTRON_INSTRUCTIONS_DIR");
|
|
1530
1530
|
if (hosted && serviceKnown && svcDoctrine?.v && svcDoctrine.v !== config.skillsOverlayDir) {
|
|
1531
|
-
info(`the services read
|
|
1531
|
+
info(`the services read custom instructions this process does not: ${svcDoctrine.v} `
|
|
1532
1532
|
+ `(${svcDoctrine.from}). The lines above are this command's own environment — a CLI is not `
|
|
1533
1533
|
+ "started by the units' EnvironmentFile, so \"none configured\" here is not a statement about "
|
|
1534
1534
|
+ "the deployment");
|
|
@@ -1541,7 +1541,7 @@ export async function runCheck() {
|
|
|
1541
1541
|
// An unreadable overlay THROWS by design (config.resolveSkillPath refuses rather than falling back
|
|
1542
1542
|
// to the product's copy). Surfaced here rather than allowed to abort the whole check: the doctor's
|
|
1543
1543
|
// job is to report every section, and a section that kills the run tells the reader least.
|
|
1544
|
-
problem(`the
|
|
1544
|
+
problem(`the custom instructions could not be read — ${e.message}`);
|
|
1545
1545
|
}
|
|
1546
1546
|
|
|
1547
1547
|
say("\n Register provider");
|
|
@@ -1585,7 +1585,7 @@ export async function runCheck() {
|
|
|
1585
1585
|
say("\n Research provider");
|
|
1586
1586
|
const px = effective("PERPLEXITY_API_KEY");
|
|
1587
1587
|
if (px) ok(`PERPLEXITY_API_KEY present (${px.from}) — presence only; add --probe-providers to prove it answers`);
|
|
1588
|
-
else info("PERPLEXITY_API_KEY is not set — the three clearance searches carry the common-law grid and cannot switch it off, so a clearance
|
|
1588
|
+
else info("PERPLEXITY_API_KEY is not set — the three clearance searches carry the common-law grid and cannot switch it off, so a clearance stops before it starts, and names the missing key; a Knockout search still runs and discloses the half it skipped");
|
|
1589
1589
|
|
|
1590
1590
|
// ── — THE LANES A PRODUCT DECLARES IT NEEDS, BEFORE A REPORT NAMES THEM ──
|
|
1591
1591
|
//
|
|
@@ -1663,7 +1663,7 @@ export async function runCheck() {
|
|
|
1663
1663
|
// could print, and the portal's own config view does — is deliberately not printed here: `doctor` goes
|
|
1664
1664
|
// to a terminal, into a paste, into an issue.
|
|
1665
1665
|
// THE ONE CONDITION THAT STOPS THE PORTAL RENDERING, and `doctor` said nothing about it at all
|
|
1666
|
-
// (
|
|
1666
|
+
// (found in review). `portal-ui/dist` is committed, so an absent bundle means a bad checkout on
|
|
1667
1667
|
// a deployment and an unbuilt tree on a source clone; the service already answers 503 and says so in
|
|
1668
1668
|
// its boot log, but a reader who runs `doctor` BEFORE `start` — which is the order every document
|
|
1669
1669
|
// gives — had no way to learn it. The product's OWN predicate decides rather than a second existence
|
|
@@ -1770,7 +1770,7 @@ export async function runCheck() {
|
|
|
1770
1770
|
}
|
|
1771
1771
|
}
|
|
1772
1772
|
|
|
1773
|
-
say("\n Portal
|
|
1773
|
+
say("\n Portal sign-in");
|
|
1774
1774
|
{
|
|
1775
1775
|
const { authView } = await import("../driver/portal-config-view.mjs");
|
|
1776
1776
|
const door = authView({
|
|
@@ -1785,10 +1785,11 @@ export async function runCheck() {
|
|
|
1785
1785
|
// NOT A TICK, AND THAT IS THE POINT. This reads the environment THIS command is
|
|
1786
1786
|
// typed in. `bin/start.mjs` INJECTS `PORTAL_AUTH_MODE: "local"` into the portal's own environment,
|
|
1787
1787
|
// and a systemd unit's EnvironmentFile can name a third thing — so a green tick here was a
|
|
1788
|
-
// confident claim about a door the running service may not be serving. Measured on the test
|
|
1789
|
-
// doctor said `auth-proxy door (PORTAL_AUTH_MODE is
|
|
1790
|
-
// cf-access, and said `local passphrase door` with a
|
|
1791
|
-
// green, neither the door a caller meets.
|
|
1788
|
+
// confident claim about a door the running service may not be serving. Measured on the test
|
|
1789
|
+
// machine, in the wording doctor used at the time: it said `auth-proxy door (PORTAL_AUTH_MODE is
|
|
1790
|
+
// unset)` with a tick while the machine served cf-access, and said `local passphrase door` with a
|
|
1791
|
+
// tick while it still served cf-access. Both green, neither the door a caller meets. Those two
|
|
1792
|
+
// lines read differently now; what they claimed is the point, not how they were worded.
|
|
1792
1793
|
//
|
|
1793
1794
|
// The reading is still worth printing — it is what a hand-run process here would use, and it is
|
|
1794
1795
|
// what `clearotron start` would launch from. It is stated as that, and the sentence below says
|
|
@@ -1808,7 +1809,7 @@ export async function runCheck() {
|
|
|
1808
1809
|
say(` · local passphrase door (${typed}) — one operator, one passphrase, no identity provider`);
|
|
1809
1810
|
info(`a lost passphrase is recoverable: ${invocationPrefix()}clearotron passphrase --reset`);
|
|
1810
1811
|
} else if (door.shape === "fronted") {
|
|
1811
|
-
say(` ·
|
|
1812
|
+
say(` · Sign-in: handled by a proxy in front (${typed}) — identity is proved by whatever sits in front, and this process trusts it`);
|
|
1812
1813
|
for (const v of door.proxyValues) {
|
|
1813
1814
|
if (v.present) ok(` ${v.name} present`);
|
|
1814
1815
|
else info(` ${v.name} not set`);
|
|
@@ -1908,8 +1909,8 @@ export async function runCheck() {
|
|
|
1908
1909
|
say("\n Register lane — proven, not inferred");
|
|
1909
1910
|
try {
|
|
1910
1911
|
const [{ activeProvider }, { makeLaneProbe, probeSpend, DEFAULT_CONTROLS, loadProviderCapabilities }] = await Promise.all([
|
|
1911
|
-
import(join(REPO, "driver", "driver.config.mjs")),
|
|
1912
|
-
import(join(REPO, "providers", "_shared", "lane-probe.mjs")),
|
|
1912
|
+
import(pathToFileURL(join(REPO, "driver", "driver.config.mjs")).href),
|
|
1913
|
+
import(pathToFileURL(join(REPO, "providers", "_shared", "lane-probe.mjs")).href),
|
|
1913
1914
|
]);
|
|
1914
1915
|
const adapter = activeProvider();
|
|
1915
1916
|
// NOT `adapter.capabilities` — that is null on every adapter, and reading it announced a LOCAL
|
|
@@ -1952,7 +1953,7 @@ export async function runCheck() {
|
|
|
1952
1953
|
}
|
|
1953
1954
|
}
|
|
1954
1955
|
|
|
1955
|
-
say("\n
|
|
1956
|
+
say("\n Where files are stored");
|
|
1956
1957
|
// Each entry is a FUNCTION, called only on the branch that prints it, so a getter is read at access
|
|
1957
1958
|
// time and never captured as a constant here. The reader of this command is deciding what to
|
|
1958
1959
|
// provision; a default quoted from memory is the one thing that can send them to the wrong path and
|
|
@@ -1963,7 +1964,7 @@ export async function runCheck() {
|
|
|
1963
1964
|
// whole rather than summarised: a summary is a second copy, and a second copy is what drifted.
|
|
1964
1965
|
["CLEAROTRON_REPORTS_DIR", (name) => {
|
|
1965
1966
|
const d = defaultWith(name, () => config.poolRoot);
|
|
1966
|
-
return d.refusal ?? `${name} is not set — the published-
|
|
1967
|
+
return d.refusal ?? `${name} is not set — the published-reports folder falls back to ${d.value}`;
|
|
1967
1968
|
}],
|
|
1968
1969
|
["CLEAROTRON_WORK_DIR", (name) => {
|
|
1969
1970
|
const d = defaultWith(name, () => config.workspaceRoot);
|
|
@@ -1985,67 +1986,6 @@ export async function runCheck() {
|
|
|
1985
1986
|
// The status surface the ruling names: "status should say whether a key is still valid". Stopping
|
|
1986
1987
|
// the door revokes nothing — a key outlives every teardown until it expires or its id is denylisted —
|
|
1987
1988
|
// so a doctor that reported the unit and stayed silent about the keys would bless exactly the state
|
|
1988
|
-
// the issue was filed about. Judged by the verifier's own pieces (`connectKeyReport` takes the real
|
|
1989
|
-
// `isRevoked`), never by a second opinion written here.
|
|
1990
|
-
// ── THE PROFILE STORE RESOLVES, OR THE PORTAL 500s ────────────────────────
|
|
1991
|
-
//
|
|
1992
|
-
// Asked by RUNNING the engine's own resolution, not by re-deriving it: loadProfiles() layers the
|
|
1993
|
-
// configured store over the bundled base with generic falling through by name, and its refusal text
|
|
1994
|
-
// is the exact line the portal prints on every screen when this is broken. A doctor that stayed
|
|
1995
|
-
// green over that state would bless the owner's fresh-install 500.
|
|
1996
|
-
say("\n Profile store");
|
|
1997
|
-
try {
|
|
1998
|
-
const { loadProfiles } = await import(join(REPO, "driver", "profiles.mjs"));
|
|
1999
|
-
const resolved = loadProfiles({ force: true });
|
|
2000
|
-
const named = [...resolved.keys()];
|
|
2001
|
-
ok(`resolves: ${named.length} profile(s) (${named.slice(0, 6).join(", ")}${named.length > 6 ? ", …" : ""}) — the universal fallback is present`);
|
|
2002
|
-
} catch (e) {
|
|
2003
|
-
problem(`the profile store does NOT resolve — every portal profile screen and every run refuses on this: ${e.message}`);
|
|
2004
|
-
}
|
|
2005
|
-
|
|
2006
|
-
// ── THE SUBMIT LANE, WALKED (the owner's 502, 2026-09-02) ────────────────────────────────────────
|
|
2007
|
-
//
|
|
2008
|
-
// Every surface on that box was green while the portal's Start button had no engine to call. This is
|
|
2009
|
-
// the only check that asks the question the client's own path asks, so it goes before the connector
|
|
2010
|
-
// section: a dead submit lane matters more than a connector nobody has configured yet.
|
|
2011
|
-
// ── SETTINGS THIS BUILD DOES NOT READ ( tracker issue 168) ────────────────────────────────────────
|
|
2012
|
-
//
|
|
2013
|
-
// THE SURFACE AN OPERATOR CHECKS AFTER AN UPGRADE, and until now the surface that told them
|
|
2014
|
-
// everything was fine. Upgrading the production install across the `PRELIM_*` rename left thirteen
|
|
2015
|
-
// configured settings with no reader in the new build; doctor exited 0 and mentioned none of them.
|
|
2016
|
-
//
|
|
2017
|
-
// EVERY ENVIRONMENT THE DEPLOYMENT ACTUALLY READS, not this shell's alone — the F34 lesson one step
|
|
2018
|
-
// on. A hosted box's values live in the file the units load, so checking `process.env` here would
|
|
2019
|
-
// pass a box whose units carry thirteen dead lines. Each source is named in its own row: "it is in
|
|
2020
|
-
// your env file" and "it is in the units' environment" are different fixes.
|
|
2021
|
-
//
|
|
2022
|
-
// A source that could not be read is NOT reported as clean. `unitEnvironment` already distinguishes
|
|
2023
|
-
// that, and an unreadable unit environment is said out loud rather than counted as zero dead names —
|
|
2024
|
-
// an absence of evidence is not evidence of absence, and this whole check exists because something
|
|
2025
|
-
// invisible was being read as fine.
|
|
2026
|
-
{
|
|
2027
|
-
const { retiredSpellingsIn, retiredSpellingLine } = await import(join(REPO, "shared", "env-aliases.mjs"));
|
|
2028
|
-
const sources = [
|
|
2029
|
-
{ label: "your environment file", env: fileEnv, known: true },
|
|
2030
|
-
{ label: "this shell's environment", env: process.env, known: true },
|
|
2031
|
-
];
|
|
2032
|
-
if (hosted) sources.push({ label: "the units' environment", env: unitEnv?.env, known: unitEnv?.known === true });
|
|
2033
|
-
|
|
2034
|
-
const seen = new Set();
|
|
2035
|
-
let anyUnknown = false;
|
|
2036
|
-
for (const src of sources) {
|
|
2037
|
-
if (!src.known || !src.env) { if (src.label === "the units' environment") anyUnknown = true; continue; }
|
|
2038
|
-
for (const row of retiredSpellingsIn(src.env)) {
|
|
2039
|
-
// One row per NAME, not per source: a name set in both the file and the units is one thing to
|
|
2040
|
-
// fix, and two rows would read as two faults.
|
|
2041
|
-
if (seen.has(row.name)) continue;
|
|
2042
|
-
seen.add(row.name);
|
|
2043
|
-
inertSetting(`${retiredSpellingLine(row)} (found in ${src.label})`);
|
|
2044
|
-
}
|
|
2045
|
-
}
|
|
2046
|
-
if (anyUnknown) warn(couldNotDetermine("retired setting names", unitEnv));
|
|
2047
|
-
if (!seen.size && !anyUnknown) ok("no retired setting names — every configured name is one this build reads");
|
|
2048
|
-
}
|
|
2049
1989
|
|
|
2050
1990
|
// LINGERING, WHICH NOTHING ELSE CHECKS ( — F9). `--background` installs USER units,
|
|
2051
1991
|
// and a user manager without lingering is torn down at logout: the units stop with the session and
|
|
@@ -2075,9 +2015,9 @@ export async function runCheck() {
|
|
|
2075
2015
|
+ "failing to look, not a report that it is off.");
|
|
2076
2016
|
}
|
|
2077
2017
|
|
|
2078
|
-
say("\n
|
|
2018
|
+
say("\n Start-button path");
|
|
2079
2019
|
try {
|
|
2080
|
-
const { triggerLaneVerdict, HOSTED, SUPERVISED } = await import(join(REPO, "shared", "trigger-lane.mjs"));
|
|
2020
|
+
const { triggerLaneVerdict, HOSTED, SUPERVISED } = await import(pathToFileURL(join(REPO, "shared", "trigger-lane.mjs")).href);
|
|
2081
2021
|
// POSTURE FROM THE BOX, NOT FROM A FLAG. Units installed means the units serve, and the units read
|
|
2082
2022
|
// %h/.env — so an absent value there is the incident. No units means `start` supervises and derives
|
|
2083
2023
|
// the value at runtime, where reading this process's environment says nothing either way.
|
|
@@ -2117,7 +2057,7 @@ export async function runCheck() {
|
|
|
2117
2057
|
// Stop control's availability on — one reader, two surfaces.
|
|
2118
2058
|
let verbs = null;
|
|
2119
2059
|
try {
|
|
2120
|
-
const { opsTokenPosture } = await import(join(REPO, "driver", "portal-service.mjs"));
|
|
2060
|
+
const { opsTokenPosture } = await import(pathToFileURL(join(REPO, "driver", "portal-service.mjs")).href);
|
|
2121
2061
|
verbs = opsTokenPosture(opsToken).verbs;
|
|
2122
2062
|
} catch { /* unreadable posture leaves verbs null, which reads as full ops — see the verdict */ }
|
|
2123
2063
|
let probe = null;
|
|
@@ -2153,12 +2093,12 @@ export async function runCheck() {
|
|
|
2153
2093
|
} catch (e) { warn(`the submit lane could not be read: ${e.message}`); }
|
|
2154
2094
|
|
|
2155
2095
|
say("\n Client connector");
|
|
2156
|
-
// THE REVOCATION LIST, REPORTED (
|
|
2096
|
+
// THE REVOCATION LIST, REPORTED (found in review). `isRevoked` treats an unreadable
|
|
2157
2097
|
// denylist as "not revoked", so a named-but-absent file makes every revocation silently ineffective:
|
|
2158
2098
|
// measured on a default install, a revoked key completed a full handshake with nothing logged. Nothing
|
|
2159
2099
|
// surfaced that state anywhere, which is why it survived to be found by hand.
|
|
2160
2100
|
{
|
|
2161
|
-
const { defaultDenylistPath } = await import(join(REPO, "shared", "client-door.mjs"));
|
|
2101
|
+
const { defaultDenylistPath } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
|
|
2162
2102
|
const dl = effective("TRADEMARK_MCP_TOKEN_DENYLIST")?.v || defaultDenylistPath(homedir());
|
|
2163
2103
|
try {
|
|
2164
2104
|
const n = readFileSync(dl, "utf8").split("\n").map((l) => l.trim()).filter((l) => l && !l.startsWith("#")).length;
|
|
@@ -2172,8 +2112,8 @@ export async function runCheck() {
|
|
|
2172
2112
|
}
|
|
2173
2113
|
}
|
|
2174
2114
|
try {
|
|
2175
|
-
const { clientDoorState: doorState, describeDoorState, connectKeyReport, CLIENT_DOOR_UNIT: doorUnit } = await import(join(REPO, "shared", "client-door.mjs"));
|
|
2176
|
-
const { loadGrants: readGrantsFile, isRevoked: revokedCheck } = await import(join(REPO, "shared", "scope.mjs"));
|
|
2115
|
+
const { clientDoorState: doorState, describeDoorState, connectKeyReport, CLIENT_DOOR_UNIT: doorUnit } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
|
|
2116
|
+
const { loadGrants: readGrantsFile, isRevoked: revokedCheck } = await import(pathToFileURL(join(REPO, "shared", "scope.mjs")).href);
|
|
2177
2117
|
// ── CONFIGURED IS NOT RUNNING, AND THIS IS THE SURFACE IT WAS MEASURED ON ──
|
|
2178
2118
|
//
|
|
2179
2119
|
// `describeDoorState` was written for exactly this block and then never called from it: the split
|
|
@@ -2242,14 +2182,14 @@ export async function runCheck() {
|
|
|
2242
2182
|
const doorEnvKnown = !hosted || unitEnv?.known === true;
|
|
2243
2183
|
const doorEnv = hosted && unitEnv?.known === true ? unitEnv.env : process.env;
|
|
2244
2184
|
if (!doorEnvKnown) warn(couldNotDetermine("CLIENT_MCP_ACCOUNT_ACCESS", unitEnv));
|
|
2245
|
-
// THE PORT AND ITS ALLOW-LIST ARE ONE SETTING, AND NOTHING SAID SO (
|
|
2246
|
-
//
|
|
2185
|
+
// THE PORT AND ITS ALLOW-LIST ARE ONE SETTING, AND NOTHING SAID SO (found in an operator pass).
|
|
2186
|
+
// `start` derives CLIENT_MCP_ALLOWED_HOSTS from the port it resolved, so moving the
|
|
2247
2187
|
// port THROUGH start works. Moving it in the env file the units load does not: the door binds the
|
|
2248
2188
|
// new port and then answers "403 Invalid Host header" on every request, because the allow-list still
|
|
2249
2189
|
// names the old one. A door that is up, listening, and refuses everything is the worst of the three
|
|
2250
2190
|
// states to debug, and nothing surfaced the mismatch.
|
|
2251
2191
|
{
|
|
2252
|
-
const { clientDoorPort: portOf, allowedHosts: hostsFor } = await import(join(REPO, "shared", "client-door.mjs"));
|
|
2192
|
+
const { clientDoorPort: portOf, allowedHosts: hostsFor } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
|
|
2253
2193
|
const declared = String(effective("CLIENT_MCP_ALLOWED_HOSTS")?.v ?? "").trim();
|
|
2254
2194
|
if (declared) {
|
|
2255
2195
|
const port = portOf(doorEnv);
|
|
@@ -2265,14 +2205,14 @@ export async function runCheck() {
|
|
|
2265
2205
|
}
|
|
2266
2206
|
}
|
|
2267
2207
|
|
|
2268
|
-
// IS ANYTHING ANSWERING? (
|
|
2208
|
+
// IS ANYTHING ANSWERING? (found in review) The unit file is evidence about the
|
|
2269
2209
|
// background shape only. A foreground `clearotron start` runs the door as its own child with no unit
|
|
2270
2210
|
// at all, and this section then told a reader whose door was listening that it "is not set up here",
|
|
2271
2211
|
// pointing them at the command they had just run. One loopback connect settles it, and null stays
|
|
2272
2212
|
// null — a probe that could not be made is not a door that is absent.
|
|
2273
2213
|
let doorListening = null;
|
|
2274
2214
|
try {
|
|
2275
|
-
const { clientDoorPort: portOf } = await import(join(REPO, "shared", "client-door.mjs"));
|
|
2215
|
+
const { clientDoorPort: portOf } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
|
|
2276
2216
|
const { createConnection } = await import("node:net");
|
|
2277
2217
|
doorListening = await new Promise((resolve) => {
|
|
2278
2218
|
const sock = createConnection({ host: "127.0.0.1", port: portOf(doorEnv), timeout: 700 });
|
|
@@ -2307,10 +2247,10 @@ export async function runCheck() {
|
|
|
2307
2247
|
problem("a valid key is on record but NO revocation list is configured (TRADEMARK_MCP_TOKEN_DENYLIST unset) "
|
|
2308
2248
|
+ `— \`${invoke("disconnect")}\` could not actually revoke it. \`${invoke("connect")}\` arms one; set the variable or reconnect.`);
|
|
2309
2249
|
}
|
|
2310
|
-
// THE PUBLISHED ADDRESS, AND WHETHER IT ANSWERS (
|
|
2250
|
+
// THE PUBLISHED ADDRESS, AND WHETHER IT ANSWERS (acceptance 2). Reported here
|
|
2311
2251
|
// rather than beside the unit, because the unit running and the address being reachable are
|
|
2312
2252
|
// different facts and the second is the one a client depends on.
|
|
2313
|
-
const { clientDoorReachability } = await import(join(REPO, "shared", "client-door.mjs"));
|
|
2253
|
+
const { clientDoorReachability } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
|
|
2314
2254
|
// FROM THE FILE THE UNITS LOAD, NOT THE SHELL THIS COMMAND WAS TYPED IN (the tracker issue 226
|
|
2315
2255
|
// family, met again here). On a hosted box the published address lives in the units' environment,
|
|
2316
2256
|
// and reading `process.env` reported "no client connector address is published — that is correct
|
|
@@ -2357,7 +2297,7 @@ export async function runCheck() {
|
|
|
2357
2297
|
// No new credential and no provider API: the audience is in the redirect handed to a caller with
|
|
2358
2298
|
// no session at all, which is the request just made.
|
|
2359
2299
|
{
|
|
2360
|
-
const { readAudience, audienceVerdict } = await import(join(REPO, "shared", "access-audience.mjs"));
|
|
2300
|
+
const { readAudience, audienceVerdict } = await import(pathToFileURL(join(REPO, "shared", "access-audience.mjs")).href);
|
|
2361
2301
|
const configuredAud = effectiveForService("CLEAROTRON_OIDC_AUDIENCE")?.v ?? "";
|
|
2362
2302
|
const read = readAudience(probe ?? { error: "the published address was never asked" });
|
|
2363
2303
|
// NOTHING IS CLAIMED ABOUT A BOX THAT USES NO EDGE. With no audience configured AND no Access
|
|
@@ -2383,7 +2323,7 @@ export async function runCheck() {
|
|
|
2383
2323
|
// announces the side effect first, and its control runs before any vendor.
|
|
2384
2324
|
if (PROBE_CONNECTOR && String(published ?? "").trim()) {
|
|
2385
2325
|
const { registrationEndpointFrom, probeRegistration, describeRegistration } =
|
|
2386
|
-
await import(join(REPO, "shared", "connector-signin-probe.mjs"));
|
|
2326
|
+
await import(pathToFileURL(join(REPO, "shared", "connector-signin-probe.mjs")).href);
|
|
2387
2327
|
say("");
|
|
2388
2328
|
say(" --probe-connector: asking this door's sign-in whether each assistant vendor could register.");
|
|
2389
2329
|
say(" Each attempt that SUCCEEDS creates a throwaway OAuth client on your account, which you may");
|
|
@@ -2571,7 +2511,7 @@ try {
|
|
|
2571
2511
|
// is DERIVED: the engines from ENGINE_BINARIES, the search vendors from the same adapter tables the
|
|
2572
2512
|
// prompts loop over, each wearing its own table row's where-to-get line. A hand-kept copy here would
|
|
2573
2513
|
// be the SERPAPI defect again, one screen earlier. Everything is skippable; the list says so.
|
|
2574
|
-
// THE BANNER — once, on entry, named (
|
|
2514
|
+
// THE BANNER — once, on entry, named (owner ruling 2026-08-31). Not on every
|
|
2575
2515
|
// command: a banner every verb prints is how a product becomes tiresome to use twice. It sits here
|
|
2576
2516
|
// rather than at the top of main() so that `--check`, which writes nothing and is run repeatedly,
|
|
2577
2517
|
// does not wear it either.
|
|
@@ -2581,7 +2521,7 @@ try {
|
|
|
2581
2521
|
say("");
|
|
2582
2522
|
say(` ${style.bold("Before you start")} — what this setup can take, so nothing here surprises you:`);
|
|
2583
2523
|
// `vendor`, not `label`: the labels are engineer sentences carrying flag names, and a question a
|
|
2584
|
-
// lawyer reads may not (
|
|
2524
|
+
// lawyer reads may not (the first rule).
|
|
2585
2525
|
say(` · Which AI runs the searches (${Object.values(ENGINE_BINARIES).map((e) => e.vendor).join(" or ")}),`);
|
|
2586
2526
|
say(" and how it bills — the subscription you already sign in with, or an API key.");
|
|
2587
2527
|
say(" · Your trademark register vendor's credential, if you have one (a register can be chosen later).");
|
|
@@ -2855,7 +2795,7 @@ try {
|
|
|
2855
2795
|
}
|
|
2856
2796
|
}
|
|
2857
2797
|
}
|
|
2858
|
-
// —
|
|
2798
|
+
// — found in review, and the same trap closed one prompt over. The default
|
|
2859
2799
|
// was YES, so Enter re-ran a probe that CANNOT succeed until the reader has signed in somewhere
|
|
2860
2800
|
// else — and the wizard's own header tells them Enter is the safe key. Driven with Enter it went
|
|
2861
2801
|
// 19 attempts, no cap and no escape, in a wizard whose header says everything here is skippable.
|
|
@@ -3049,7 +2989,7 @@ try {
|
|
|
3049
2989
|
const baseDefault = join(homedir(), "trademark");
|
|
3050
2990
|
prose("Reports, run workspaces, queues and locks all live under one directory.");
|
|
3051
2991
|
if (poolDefault.refusal) {
|
|
3052
|
-
prose(`Enter accepts ${baseDefault}. There is no built-in default for the
|
|
2992
|
+
prose(`Enter accepts ${baseDefault}. There is no built-in default for the reports folder — left unset a run`,
|
|
3053
2993
|
"refuses and names it rather than guessing — so setup gives it a real path under your home,",
|
|
3054
2994
|
"and this install publishes only where you own the disk.");
|
|
3055
2995
|
} else {
|
|
@@ -3095,7 +3035,7 @@ try {
|
|
|
3095
3035
|
// The escape goes in the BRACKETS and the consequence in `skipped`, matching the two prompts that
|
|
3096
3036
|
// already take this mode — the question no longer carries "(empty for none)" because the bracket now
|
|
3097
3037
|
// says it, and a prompt that says it twice in two different wordings is how the two drift apart.
|
|
3098
|
-
const reportsUrl = await askValue("Public base URL for the
|
|
3038
|
+
const reportsUrl = await askValue("Public base URL for the reports folder:", {
|
|
3099
3039
|
skippable: true,
|
|
3100
3040
|
skipped: "CLEAROTRON_REPORTS_URL left unset — runs will deliver, and their notifications will carry no link",
|
|
3101
3041
|
});
|
|
@@ -3134,7 +3074,7 @@ try {
|
|
|
3134
3074
|
prose("No default — it is your hostname. Skip it and this stays a local install: everything works",
|
|
3135
3075
|
"here, and the Use-your-AI page says so rather than handing out an address that fails.");
|
|
3136
3076
|
prose("The usual shape, and why: mcp-server/CONNECT.md.");
|
|
3137
|
-
const { clientDoorReachability } = await import(join(REPO, "shared", "client-door.mjs"));
|
|
3077
|
+
const { clientDoorReachability } = await import(pathToFileURL(join(REPO, "shared", "client-door.mjs")).href);
|
|
3138
3078
|
for (;;) {
|
|
3139
3079
|
const clientUrl = await askValue("Public connector address:", {
|
|
3140
3080
|
skippable: true,
|
|
@@ -3177,7 +3117,7 @@ try {
|
|
|
3177
3117
|
// making a decision about where their customer data lives without being told they had made it.
|
|
3178
3118
|
const cfgDefault = join(base, "config");
|
|
3179
3119
|
say("\n Where this install keeps its own configuration");
|
|
3180
|
-
prose("Your customers and any
|
|
3120
|
+
prose("Your customers and any instructions you override live here, outside the checkout — which is what",
|
|
3181
3121
|
"lets you take updates with `git pull` instead of merging into files you never meant to own.");
|
|
3182
3122
|
prose(`Enter accepts ${cfgDefault}, and your customers are written there.`);
|
|
3183
3123
|
const cfg = await askValue("Configuration directory:", { def: cfgDefault });
|
|
@@ -3202,7 +3142,7 @@ try {
|
|
|
3202
3142
|
candidate.PROFILE_REPO_ROOT = cfg; // no alias row — this name is current
|
|
3203
3143
|
for (const k of ["CLEAROTRON_CUSTOMERS_DIR", "PROFILE_REPO_ROOT"]) ok(`${k}=${candidate[k]}`);
|
|
3204
3144
|
|
|
3205
|
-
// CLEAROTRON_INSTRUCTIONS_DIR IS DELIBERATELY NOT WRITTEN (
|
|
3145
|
+
// CLEAROTRON_INSTRUCTIONS_DIR IS DELIBERATELY NOT WRITTEN (found in review).
|
|
3206
3146
|
//
|
|
3207
3147
|
// Setup used to point it at `<cfg>/skills` and create that directory empty. `clearotron start` then
|
|
3208
3148
|
// makes `<cfg>` a git repository for saved searches — so the doctrine store ends up INSIDE a checkout
|
|
@@ -3218,7 +3158,7 @@ try {
|
|
|
3218
3158
|
// Note for whoever adds an overlay later: it needs this name set, which is why the line below says so
|
|
3219
3159
|
// rather than leaving a reader to discover that files they dropped in are being ignored.
|
|
3220
3160
|
info(`doctrine: this install overrides nothing, so CLEAROTRON_INSTRUCTIONS_DIR stays unset and the `
|
|
3221
|
-
+ `product's own files are used. To override
|
|
3161
|
+
+ `product's own files are used. To override an instruction file later, put it in ${join(cfg, "skills")}, `
|
|
3222
3162
|
+ `COMMIT it in ${cfg}, and set CLEAROTRON_INSTRUCTIONS_DIR to that directory — an uncommitted store `
|
|
3223
3163
|
+ "cannot be identified, and a run says so rather than guessing.");
|
|
3224
3164
|
|
|
@@ -3231,7 +3171,7 @@ try {
|
|
|
3231
3171
|
// PRECISELY what shows through, because the last wording said "bundled customers" and the loader
|
|
3232
3172
|
// says otherwise: the demo roster never layers into a deployment (a typo'd key must not resolve to
|
|
3233
3173
|
// our fixtures), generic.json falls through BY NAME, and doctrine resolves file-by-file.
|
|
3234
|
-
say(" Left empty. The
|
|
3174
|
+
say(" Left empty. The bundled instructions show through file-by-file, and generic.json — the universal");
|
|
3235
3175
|
say(" fallback — falls through by name, so an empty store is a working install. Your own customers");
|
|
3236
3176
|
say(" are added here by name; the bundled demo customers never show through into your roster.");
|
|
3237
3177
|
|
|
@@ -3289,7 +3229,7 @@ try {
|
|
|
3289
3229
|
// rather than fall back, so a permissions fault can never silently swap a customer's framework for the
|
|
3290
3230
|
// Generic default). Nothing is written INTO them — see the note at step 7b.
|
|
3291
3231
|
for (const k of ["CLEAROTRON_CUSTOMERS_DIR"]) mkdirSync(candidate[k], { recursive: true });
|
|
3292
|
-
ok(`configuration directories created under ${cfg} (empty —
|
|
3232
|
+
ok(`configuration directories created under ${cfg} (empty — the bundled instructions and the generic fallback show through; customers are yours to add)`);
|
|
3293
3233
|
|
|
3294
3234
|
// 9a ── PUT THE VERB ON THIS OPERATOR'S PATH
|
|
3295
3235
|
//
|
|
@@ -3329,17 +3269,17 @@ try {
|
|
|
3329
3269
|
// They are `clearotron` verbs now for a second reason as well: from an INSTALLED package there is
|
|
3330
3270
|
// no `npm run example` to type — no package.json, no scripts block — so the old advice was not
|
|
3331
3271
|
// merely misordered there, it was unrunnable.
|
|
3332
|
-
// ONE COMMAND, AND WHAT TO EXPECT FROM IT (
|
|
3272
|
+
// ONE COMMAND, AND WHAT TO EXPECT FROM IT (the owner's point 10). This screen
|
|
3333
3273
|
// offered three, each with a sentence, and a reader who has just answered a page of questions is
|
|
3334
3274
|
// being asked to make one more choice at the moment they most want to be told what to do. Three
|
|
3335
3275
|
// equally-weighted options is not generosity; it is the decision handed back.
|
|
3336
3276
|
//
|
|
3337
3277
|
// `start` is the one, because it is the product — the other two were already ordered behind it for
|
|
3338
|
-
// that reason (
|
|
3278
|
+
// that reason (when this screen offered `npm run example` and a raw pipeline invocation and
|
|
3339
3279
|
// named the product nowhere). They keep their place as an afterthought line rather than an option.
|
|
3340
3280
|
// THE COMMAND LINE STAYS A PLAIN LITERAL, DELIBERATELY. onboard-wizard.test.mjs reads this screen
|
|
3341
3281
|
// STATICALLY — it extracts every say() literal and asserts which command leads — and that guard is
|
|
3342
|
-
// the only thing standing between this screen and
|
|
3282
|
+
// the only thing standing between this screen and the defect coming back. Wrapping the command in
|
|
3343
3283
|
// style.bold() puts a nested template literal inside the say(), the extractor stops matching, and the
|
|
3344
3284
|
// corpus goes empty. Its own comment records the previous generation of exactly this: the arms went
|
|
3345
3285
|
// vacuous the moment these lines became template literals.
|
|
@@ -3360,7 +3300,7 @@ try {
|
|
|
3360
3300
|
say(" What this box has now:");
|
|
3361
3301
|
for (const line of [
|
|
3362
3302
|
stateLine("register", candidate.CLEAROTRON_DATABASE, "no register, so every search refuses until one is chosen"),
|
|
3363
|
-
stateLine("web research", present(candidate.PERPLEXITY_API_KEY) ? "a key" : "", "a clearance
|
|
3303
|
+
stateLine("web research", present(candidate.PERPLEXITY_API_KEY) ? "a key" : "", "a clearance stops before it starts, and names the missing key; a knockout search runs and discloses the half it skipped"),
|
|
3364
3304
|
stateLine("data directory", candidate.CLEAROTRON_REPORTS_DIR, "unset"),
|
|
3365
3305
|
stateLine("configuration store", candidate.CLEAROTRON_CUSTOMERS_DIR, "the bundled demo roster"),
|
|
3366
3306
|
stateLine("notification links", candidate.CLEAROTRON_REPORTS_URL, "notifications carry no link into the report"),
|