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/.env.example
CHANGED
|
@@ -446,7 +446,12 @@ CLEAROTRON_CHECKOUT_DIR=
|
|
|
446
446
|
# checkout may have moved on since, and a decision made about "whatever HEAD is now" tried to republish
|
|
447
447
|
# an already-released version. Unset falls back to HEAD, which is correct for the cron and for a hand
|
|
448
448
|
# run, where nothing has moved. Read by scripts/release-cut-decision.mjs.
|
|
449
|
-
#
|
|
449
|
+
#
|
|
450
|
+
# DECLARED `deployment` FIRST, AND THAT WAS THE WRONG HALF OF THE DEFINITION. `deployment` is "where
|
|
451
|
+
# input and output live" — a pool root, an outbox, a database path. A git ref is not a location any
|
|
452
|
+
# input or output lives at; it is which subject the decision is taken about, and it changes only whether
|
|
453
|
+
# the pipeline republishes something it already shipped. Nothing a clearance run produces moves.
|
|
454
|
+
# effect: tuning
|
|
450
455
|
CLEAROTRON_CUT_REF=
|
|
451
456
|
|
|
452
457
|
# How long publishing waits for a parked version run, in whole milliseconds. Unset uses the built-in
|
|
@@ -455,3 +460,51 @@ CLEAROTRON_CUT_REF=
|
|
|
455
460
|
# entirely, which is that script not running at all. Read by scripts/release-await-cut.mjs.
|
|
456
461
|
# effect: tuning
|
|
457
462
|
CLEAROTRON_RELEASE_WAIT_MS=
|
|
463
|
+
|
|
464
|
+
# ── The local key door's socket ───────────────────────────────
|
|
465
|
+
# Same shape as the two below: read by product code, in neither this file nor the governance table
|
|
466
|
+
# until a private environment-contract ratchet caught it.
|
|
467
|
+
|
|
468
|
+
# WHERE the local key door listens. Unset means there is no key door and a deployment gets exactly the
|
|
469
|
+
# door it had before — this adds a path, it does not widen the existing one.
|
|
470
|
+
#
|
|
471
|
+
# WHY A SOCKET AND NOT A PORT. This interface serves two populations that authenticate differently:
|
|
472
|
+
# people arriving through a tunnel, who prove themselves with a proxy identity, and programs on the same
|
|
473
|
+
# machine holding a scoped access key, which can never produce one. "Only accept a key from loopback"
|
|
474
|
+
# does not separate them — the tunnel daemon runs on the same machine, so a request forwarded from the
|
|
475
|
+
# internet and one from the local portal arrive with the same peer address. A tunnel forwards to a port;
|
|
476
|
+
# it cannot reach a socket, so the transport is the discriminator.
|
|
477
|
+
#
|
|
478
|
+
# The socket is created 0660, owner and group only, and the mode is set after listen because listen
|
|
479
|
+
# creates the file and the umask decides what it starts as. The door refuses to open at all without a
|
|
480
|
+
# grants file, alongside the authentication bypass, or in token mode — that mode makes the NETWORK door
|
|
481
|
+
# take a key too, which is the thing this exists to prevent.
|
|
482
|
+
#
|
|
483
|
+
# Read by mcp-server/key-socket.mjs.
|
|
484
|
+
# effect: deployment
|
|
485
|
+
TRADEMARK_MCP_KEY_SOCKET=
|
|
486
|
+
|
|
487
|
+
# ── Who the completion notice reaches ────────────────────────────────────────────────────────────
|
|
488
|
+
# Both arrived with tracker issue 289 and shipped undeclared: they are read by product code and were in
|
|
489
|
+
# neither this file nor the governance table, which six private environment-contract ratchets caught on
|
|
490
|
+
# the next overlay run. Catalogued here on the same terms as the release names above — they are OUR
|
|
491
|
+
# names, read by code that ships.
|
|
492
|
+
|
|
493
|
+
# WHO the chat notice is addressed to: a JSON object of requester email or handle → number, e.g.
|
|
494
|
+
# {"lisa@tenant.example":"+41...","jordan":"+41..."}. Before this, the notice went to a map keyed by
|
|
495
|
+
# AGENT id, and every user of a deployment shares one agent — so the operator was notified about work
|
|
496
|
+
# other people ordered and the requester was told nothing.
|
|
497
|
+
#
|
|
498
|
+
# UNSET IS AN EMPTY ROSTER, never a demo one. A deployment that configures nothing routes no notice and
|
|
499
|
+
# the delivery record says whose number is missing, by name. The sibling agent map carries invented
|
|
500
|
+
# numbers for offline tests; doing that here would aim a real client's completion notice at a fixture.
|
|
501
|
+
#
|
|
502
|
+
# It holds contact data. Read by driver/stages.mjs (whatsappRouting).
|
|
503
|
+
# effect: deployment
|
|
504
|
+
CLEAROTRON_REQUESTER_WHATSAPP=
|
|
505
|
+
|
|
506
|
+
# The operator's own copy of the same notice, ON unless this is `0`, `false` or `no`. Independent of the
|
|
507
|
+
# roster above: an operator can stop receiving copies of everyone else's runs without touching who the
|
|
508
|
+
# requester notice reaches. Read by driver/stages.mjs (whatsappRouting).
|
|
509
|
+
# effect: deployment
|
|
510
|
+
CLEAROTRON_WHATSAPP_OPERATOR_COPY=
|
package/CONTRIBUTING.md
CHANGED
|
@@ -91,9 +91,9 @@ any writing pass over the documentation, applies to them.
|
|
|
91
91
|
|
|
92
92
|
## The three rules that fail CI
|
|
93
93
|
|
|
94
|
-
**1. Rebuild `portal-ui/dist`
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
**1. Rebuild `portal-ui/dist` before you push.** The bundle is not committed — CI builds it from
|
|
95
|
+
source and requires byte equality, so a change under `portal-ui/src` that does not build cleanly
|
|
96
|
+
fails:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
99
|
npm run build:ui
|
package/INSTALL.md
CHANGED
|
@@ -41,10 +41,11 @@ run is [mcp-server/CONNECT.md](mcp-server/CONNECT.md), and why something is the
|
|
|
41
41
|
- **Node.js >= 22**, and npm. A hard floor: `package.json` declares it, `.nvmrc` pins it, and the free
|
|
42
42
|
US register runs on `node:sqlite`, which ships with FTS5 from Node 22. Node 20 installs and then fails
|
|
43
43
|
at the first US search. `nvm use` picks the pin up.
|
|
44
|
-
- **macOS, Linux, or Windows
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
- **macOS, Linux, or native Windows for the demo; WSL2 with Node 22 for a clearance.** `npx clearotron
|
|
45
|
+
demo` runs anywhere Node does, native Windows included. A real clearance does not: the engine resolves
|
|
46
|
+
the reasoning CLI the POSIX way, so a native-Windows clearance refuses at preflight even with the CLI
|
|
47
|
+
on `PATH`. On Windows, `wsl --install`, then install Node 22 **inside** the Linux distribution and work
|
|
48
|
+
through this page from there. A *hosted*
|
|
48
49
|
deployment needs Linux for one further thing, the systemd outbox trigger —
|
|
49
50
|
[driver/systemd/README.md](driver/systemd/README.md).
|
|
50
51
|
- **A reasoning CLI on your `PATH`, signed in.** This is the prerequisite people miss. Every stage runs
|
|
@@ -126,6 +127,20 @@ passed, and nothing has driven a live register through it.
|
|
|
126
127
|
**Upgrade production to stables only.** What each channel promises and how often one is cut:
|
|
127
128
|
**[docs/RELEASES.md](docs/RELEASES.md)**.
|
|
128
129
|
|
|
130
|
+
**Upgrading an install made before 0.2.2: pin the agent id first.** The default agent id changed from
|
|
131
|
+
`clawdi` to `localagent`, and that id is part of a path — your runs live under
|
|
132
|
+
`<workspaceRoot>/workspace-<agent>/studio/prelim-search/`. If you never set an agent id, the upgraded
|
|
133
|
+
install reads a workspace that does not exist yet, and an empty workspace looks like an account with no
|
|
134
|
+
runs rather than like a misconfiguration. Set **both** names in your environment file before starting
|
|
135
|
+
it, because the register-search servers read their own:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
CLEAROTRON_DEFAULT_AGENT=clawdi
|
|
139
|
+
CLEAROTRON_GATHER_AGENT=clawdi
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
If your environment file already sets them, nothing changes. A first-time install needs neither.
|
|
143
|
+
|
|
129
144
|
The rest of this section is about the two ways a package reaches you, which is a separate question from
|
|
130
145
|
which version it is.
|
|
131
146
|
|
|
@@ -230,9 +245,9 @@ the line between them. Either way nothing is contacted and nothing is billed —
|
|
|
230
245
|
it starts. Neither runs on a packaged install: the test files are not in the package.
|
|
231
246
|
|
|
232
247
|
The engine itself has no build step. The **portal UI does** — `portal-ui/` is React + Vite — but its
|
|
233
|
-
built bundle (`portal-ui/dist/`) is **committed to git
|
|
234
|
-
tarball install
|
|
235
|
-
changing something under `portal-ui/src`:
|
|
248
|
+
built bundle (`portal-ui/dist/`) is **not committed to git**: it travels in the published package and
|
|
249
|
+
CI builds it, so a tarball install is already runnable while a clone needs one build first. You also
|
|
250
|
+
need to build after changing something under `portal-ui/src`:
|
|
236
251
|
|
|
237
252
|
```
|
|
238
253
|
npm run tokens # regenerate the design tokens from shared/brand.mjs, if colours changed
|
|
@@ -276,45 +291,6 @@ Three more things about it are worth knowing before you write one:
|
|
|
276
291
|
**Or the environment directly** — your shell, a container spec, a systemd `EnvironmentFile`. This is
|
|
277
292
|
what production does, and nothing about it changed.
|
|
278
293
|
|
|
279
|
-
### An install that used `PRELIM_*` names
|
|
280
|
-
|
|
281
|
-
The variables an installer types are `CLEAROTRON_*`, and they are the only spelling. The old names are
|
|
282
|
-
not read, not translated and not looked for — a line using one is a line nothing reads.
|
|
283
|
-
|
|
284
|
-
**Rebuilding is the supported path**, and it is the only one that is tested: `npx clearotron install`
|
|
285
|
-
writes a correct file from scratch, which is the path a new reader walks. If you would rather edit the
|
|
286
|
-
file you have, rename every line in one pass and use the table below — a half-renamed file leaves the
|
|
287
|
-
un-renamed half unset.
|
|
288
|
-
|
|
289
|
-
| Old name | Write instead |
|
|
290
|
-
|---|---|
|
|
291
|
-
| `PRELIM_ENGINE` | `CLEAROTRON_AI` |
|
|
292
|
-
| `PRELIM_ANTHROPIC_AUTH` · `PRELIM_OPENAI_AUTH` | `CLEAROTRON_AI_BILLING` |
|
|
293
|
-
| `PRELIM_CLAUDE_BIN` | `CLEAROTRON_CLAUDE_PATH` |
|
|
294
|
-
| `PRELIM_CODEX_BIN` | `CLEAROTRON_CODEX_PATH` |
|
|
295
|
-
| `PRELIM_REGISTER_PROVIDER` | `CLEAROTRON_DATABASE` |
|
|
296
|
-
| `PRELIM_POOL_ROOT` · `PRELIM_POOL_URL` | `CLEAROTRON_REPORTS_DIR` · `CLEAROTRON_REPORTS_URL` |
|
|
297
|
-
| `PRELIM_WORKSPACE_ROOT` | `CLEAROTRON_WORK_DIR` |
|
|
298
|
-
| `PRELIM_PROFILES_DIR` | `CLEAROTRON_CUSTOMERS_DIR` |
|
|
299
|
-
| `PRELIM_SKILLS_DIR` | `CLEAROTRON_INSTRUCTIONS_DIR` |
|
|
300
|
-
| `PRELIM_QUEUE_DIR` · `PRELIM_OUTBOX_DIR` | `CLEAROTRON_QUEUE_DIR` · `CLEAROTRON_OUTBOX_DIR` |
|
|
301
|
-
| `PRELIM_GRANTS_FILE` | `CLEAROTRON_ACCESS_FILE` |
|
|
302
|
-
| `PRELIM_NO_ENV_FILE` | `CLEAROTRON_NO_ENV_FILE` |
|
|
303
|
-
| `CF_ACCESS_AUD` · `CLIENT_CF_ACCESS_AUD` | `CLEAROTRON_OIDC_AUDIENCE` · `CLEAROTRON_CLIENT_OIDC_AUDIENCE` |
|
|
304
|
-
| `PRELIM_BRAND_NAME` · `PRELIM_BRAND_TAGLINE` · `PRELIM_BRAND_PRODUCT` | `CLEAROTRON_BRAND_*` |
|
|
305
|
-
| `PRELIM_LANE_<code>` | `CLEAROTRON_NATIVE_LANGUAGE_<code>` |
|
|
306
|
-
| `PRELIM_DELIVERY` | nothing — **retired, see below** |
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
> **A note on the 2026-09-04 rename.** The left column above is HISTORY and keeps the dead spelling on
|
|
310
|
-
> purpose — it is the only thing that makes the table usable, and a text sweep that "corrects" it turns
|
|
311
|
-
> a migration guide into two identical columns. On 2026-09-04 the owner extended the rename to the whole
|
|
312
|
-
> namespace, including the internal variables an installer never types and the two names the August
|
|
313
|
-
> sweep had deliberately exempted as engine internals. There is one prefix now, everywhere, with no
|
|
314
|
-
> compatibility layer and no alias reading: greenfield, no public installs, our own boxes rebuilt rather
|
|
315
|
-
> than migrated. If you are reading this holding a file older than that, the rule is unchanged and
|
|
316
|
-
> simpler than the table: rebuild.
|
|
317
|
-
|
|
318
294
|
Vendor credentials keep their vendor’s name — `SIGNA_API_KEY`, `PERPLEXITY_API_KEY`,
|
|
319
295
|
`ANTHROPIC_API_KEY` — because those already say who you bought them from.
|
|
320
296
|
|
|
@@ -668,7 +644,7 @@ A run stopped by a **provider rate limit** or parked for **automatic recovery**
|
|
|
668
644
|
that is the systemd units in `driver/systemd/`. Everywhere else, run the watcher yourself:
|
|
669
645
|
|
|
670
646
|
```
|
|
671
|
-
npx clearotron
|
|
647
|
+
npx clearotron run-queue --watch
|
|
672
648
|
```
|
|
673
649
|
|
|
674
650
|
That polls every 90 seconds for queued jobs and for parked runs whose window has elapsed, and it resumes
|
|
@@ -777,11 +753,11 @@ Before the worker ran, that promise was untrue in your favour: confirming queued
|
|
|
777
753
|
spent until you gave a second command in another terminal.
|
|
778
754
|
|
|
779
755
|
If you want the old separation — order here, drain deliberately over there — start with `--no-worker` and
|
|
780
|
-
run the
|
|
756
|
+
run the queue yourself:
|
|
781
757
|
|
|
782
758
|
```
|
|
783
759
|
npx clearotron start --no-worker
|
|
784
|
-
npx clearotron
|
|
760
|
+
npx clearotron run-queue --watch
|
|
785
761
|
```
|
|
786
762
|
|
|
787
763
|
A queued job whose worker is not running says so on the portal rather than sitting at "Waiting to start".
|
|
@@ -949,6 +925,30 @@ you.
|
|
|
949
925
|
`TRADEMARK_MCP_AUTH_MODE=cf-access` so the origin re-validates the proxy's JWT rather than trusting
|
|
950
926
|
it — the mechanism is generic, whichever proxy is in front.
|
|
951
927
|
|
|
928
|
+
**One process, two doors.** A deployment that serves both people arriving through a tunnel and programs
|
|
929
|
+
on the same machine no longer needs to run this service twice. Set `TRADEMARK_MCP_KEY_SOCKET` to a
|
|
930
|
+
socket path and the service listens for a scoped access key there, while its network port continues to
|
|
931
|
+
take the proxy identity and never honours a key. A tunnel forwards to a port and cannot reach a socket,
|
|
932
|
+
so the key path is not addressable from outside the machine; who may present a key is stated by the
|
|
933
|
+
socket's permissions, which the startup lines print beside its path.
|
|
934
|
+
|
|
935
|
+
This replaces a **second unit run for its authentication shape** — a loopback port in key mode beside
|
|
936
|
+
the tunnel-fronted one — and nothing else. It is not the test-instance-beside-a-live-one arrangement
|
|
937
|
+
described in §8: that separation is about data and ports, it is unaffected, and its seven variables are
|
|
938
|
+
still all required. Removing the auth-shape duplicate is a deployment decision and nothing here does it
|
|
939
|
+
for you.
|
|
940
|
+
|
|
941
|
+
**Do not set `TRADEMARK_MCP_AUTH_MODE=token` alongside the socket.** That mode makes the network port
|
|
942
|
+
take a key as well, which is what the socket exists to avoid; the service refuses to start and says so.
|
|
943
|
+
|
|
944
|
+
**Put the socket somewhere only the service's own group can write.** The socket's own permissions decide
|
|
945
|
+
who may *present* a key. Whether the socket can be *replaced* is decided by the directory holding it — a
|
|
946
|
+
process that can remove the file can bind its own listener on the same path, and callers would then
|
|
947
|
+
present their keys to it. That is a different permission from the socket's and it is the one worth
|
|
948
|
+
checking. The service refuses to start if that directory is writable by everyone without the sticky bit,
|
|
949
|
+
and prints the directory's mode beside the socket's on its startup line so the number is readable without
|
|
950
|
+
going to look.
|
|
951
|
+
|
|
952
952
|
> ⚠ **What does not work is an INTERACTIVE-only sign-in policy on a route an assistant must reach
|
|
953
953
|
> without a browser.** Such a policy demands a login the vendor's servers cannot complete: they present
|
|
954
954
|
> a credential and get a login page back, and the connection fails with nothing useful said on either
|
|
@@ -1113,6 +1113,10 @@ that fails at boot, which reads as a broken install rather than as a port alread
|
|
|
1113
1113
|
|
|
1114
1114
|
Set all seven. Nothing else separates them.
|
|
1115
1115
|
|
|
1116
|
+
A deployment that once ran the service twice for a different reason — one door needing a key and the
|
|
1117
|
+
other a proxy identity — no longer has to; see *One process, two doors* in §9. That is an
|
|
1118
|
+
authentication arrangement and has nothing to do with this one. The seven above are still all required.
|
|
1119
|
+
|
|
1116
1120
|
## 9. What the integrator supplies
|
|
1117
1121
|
|
|
1118
1122
|
The engine is complete as a clearance-and-report producer. A deployment adds:
|
package/bin/brandowner.mjs
CHANGED
|
@@ -288,7 +288,7 @@ export async function add(argv, {
|
|
|
288
288
|
} = {}) {
|
|
289
289
|
const args = parseArgs(argv);
|
|
290
290
|
if (!args.key) throw new Refusal(`this command needs a brand owner key.${USAGE}`);
|
|
291
|
-
// A REFUSAL, NOT A STACK (
|
|
291
|
+
// A REFUSAL, NOT A STACK (acceptance: "refuses malformed input BY NAME — key
|
|
292
292
|
// pattern"). `assertProfileKey` throws a plain Error, and main() deliberately lets a non-Refusal keep
|
|
293
293
|
// its stack because an unexpected throw here is a defect worth debugging. A key an operator typed is
|
|
294
294
|
// not that: it is the first thing this command validates and the most likely thing to get wrong, and
|
package/bin/clearotron.mjs
CHANGED
|
@@ -52,7 +52,7 @@ export const VERBS = {
|
|
|
52
52
|
connect: ["bin/connect.mjs"],
|
|
53
53
|
disconnect: ["bin/disconnect.mjs"],
|
|
54
54
|
run: ["driver/pipeline.mjs"],
|
|
55
|
-
|
|
55
|
+
"run-queue": ["driver/runner.mjs"],
|
|
56
56
|
cancel: ["bin/cancel.mjs"],
|
|
57
57
|
grant: ["bin/grant.mjs"],
|
|
58
58
|
key: ["bin/key.mjs"],
|
|
@@ -73,7 +73,7 @@ export const SUMMARY = {
|
|
|
73
73
|
connect: "connect the assistant you already use — pick it by name and get the one thing it needs",
|
|
74
74
|
disconnect: "close what connect opened and revoke the key it issued — the enrolment stays",
|
|
75
75
|
run: "run one clearance from a job file",
|
|
76
|
-
|
|
76
|
+
"run-queue": "do the queued work. THIS SPENDS: hours of model time and real register calls",
|
|
77
77
|
cancel: "stop one run by name. The rest of the product keeps running, and nothing resumes it",
|
|
78
78
|
grant: "enrol a client, or list who may see what",
|
|
79
79
|
key: "issue the key a person's own assistant presents — after you have enrolled them with `grant`",
|
|
@@ -135,7 +135,7 @@ const [verb, ...rest] = process.argv.slice(2);
|
|
|
135
135
|
|
|
136
136
|
// — EVERY VERB ANSWERS --help, INCLUDING THE TWO WHOSE CHILDREN REFUSE IT.
|
|
137
137
|
//
|
|
138
|
-
// `run` and `
|
|
138
|
+
// `run` and `run-queue` dispatch to driver/pipeline.mjs and driver/runner.mjs, orchestrator entry points
|
|
139
139
|
// with strict argument parsers and no help path: `--help` came back as `error: unknown flag --help`,
|
|
140
140
|
// exit non-zero. Their parsers are RIGHT to refuse what they do not understand -- that is what makes
|
|
141
141
|
// them fail safe, and showed what the permissive alternative costs (`update --help` performed
|
|
@@ -149,7 +149,7 @@ const [verb, ...rest] = process.argv.slice(2);
|
|
|
149
149
|
console.log(`\n ${invocationPrefix()}clearotron ${verb} — ${SUMMARY[verb]}\n`);
|
|
150
150
|
console.log(` Options after the verb are passed through to ${VERBS[verb][0]}, which has no --help of`);
|
|
151
151
|
console.log(` its own. Run it with no arguments to see what it requires.\n`);
|
|
152
|
-
if (verb === "run" || verb === "
|
|
152
|
+
if (verb === "run" || verb === "run-queue") {
|
|
153
153
|
console.log(` THIS SPENDS: hours of model time and real register calls. See INSTALL.md §5 and §6.\n`);
|
|
154
154
|
}
|
|
155
155
|
process.exit(0);
|
package/bin/connect.mjs
CHANGED
|
@@ -58,7 +58,7 @@ import { checkoutMove, movePosture, describeMove, describeConflict } from "../sh
|
|
|
58
58
|
import { unitEnvironment, unitValue, couldNotDetermine } from "../driver/unit-environment.mjs";
|
|
59
59
|
import { isEntrypoint } from "../shared/is-entrypoint.mjs";
|
|
60
60
|
import { looksLikeBusFailure, systemdSaid, userBusEnv, CAPTURE_STDERR,
|
|
61
|
-
systemdFailure as sharedSystemdFailure } from "../shared/systemd-failure.mjs"; //
|
|
61
|
+
systemdFailure as sharedSystemdFailure } from "../shared/systemd-failure.mjs"; // `start` needed the same three answers
|
|
62
62
|
|
|
63
63
|
const REPO = join(dirname(fileURLToPath(import.meta.url)), "..");
|
|
64
64
|
// `userBusEnv` and `busRemedy` MOVED TO shared/systemd-failure.mjs, unchanged, because
|
|
@@ -372,7 +372,7 @@ export function unitIsHealthy(name, { show = showUnit, pause = settle } = {}) {
|
|
|
372
372
|
if (error) {
|
|
373
373
|
// ── A BUS THAT COULD NOT BE REACHED IS NOT A DOOR THAT IS DOWN (tracker issue 130) ────────────
|
|
374
374
|
//
|
|
375
|
-
// Returning false here is what made the operator worse off than before
|
|
375
|
+
// Returning false here is what made the operator worse off than before that fix.
|
|
376
376
|
// The caller renders false as "the door is not open, so no key was issued" — a confident, wrong,
|
|
377
377
|
// client-facing sentence about a door that is `active`, with the real cause discarded. And it is
|
|
378
378
|
// reachable on the ordinary path: a box whose door is already installed and running never calls
|
package/bin/example.mjs
CHANGED
|
@@ -41,7 +41,7 @@ import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, realpathSync,
|
|
|
41
41
|
import { homedir, tmpdir } from "node:os";
|
|
42
42
|
import { invoke } from "../shared/invocation.mjs"; // — the printed command is resolved once, for the reader who is actually standing there
|
|
43
43
|
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
44
|
-
import { fileURLToPath } from "node:url";
|
|
44
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
45
45
|
import { spawn } from "node:child_process";
|
|
46
46
|
import { BRAND } from "../shared/brand.mjs"; // — the installer's own name, from the tenant seam
|
|
47
47
|
import { envFrom } from "../shared/env-aliases.mjs"; // — resolves EITHER spelling; names the retired one because that is the live-writable half
|
|
@@ -68,7 +68,11 @@ if (has("--help") || has("-h")) {
|
|
|
68
68
|
const shipped = demoChildren(join(REPO, "demo"));
|
|
69
69
|
if (shipped.length) {
|
|
70
70
|
console.log(`\n --product takes one of:`);
|
|
71
|
-
|
|
71
|
+
// NO "DEFAULT" MARKER (tracker issue 277). This printed "(the default, when --product is not given)"
|
|
72
|
+
// beside the first id, and kept printing it after the default became ALL of them — so `--help` taught
|
|
73
|
+
// a reader the exact belief the change removed, in the command it was reported against.
|
|
74
|
+
for (const id of shipped) console.log(` ${id}`);
|
|
75
|
+
console.log(`\n With no --product, every one of them is published.`);
|
|
72
76
|
console.log("");
|
|
73
77
|
} else {
|
|
74
78
|
// An absence is a finding: a tree with no demo says so rather than printing an empty list.
|
|
@@ -96,8 +100,8 @@ const DEMO_ROOT = join(REPO, "demo");
|
|
|
96
100
|
// disagreed. That file records what a knockout demo carries instead of a report.md, and why this line
|
|
97
101
|
// once let `demo/knockout-search` ship and stay unopenable..
|
|
98
102
|
|
|
99
|
-
// --run-dir takes a directory outright. --product names a child. Neither given:
|
|
100
|
-
//
|
|
103
|
+
// --run-dir takes a directory outright. --product names a child. Neither given: EVERY child, and the
|
|
104
|
+
// names are PRINTED below rather than assumed, because "the demo" means several.
|
|
101
105
|
const wanted = flag("--product");
|
|
102
106
|
const children = demoChildren(DEMO_ROOT);
|
|
103
107
|
|
|
@@ -180,7 +184,7 @@ const demoBase = resolve(flag("--base") ?? join(homedir(), "trademark-demo"));
|
|
|
180
184
|
if (flag("--pool") && !has("--once")) die(
|
|
181
185
|
"demo: --pool is for --once, which publishes and exits.",
|
|
182
186
|
"",
|
|
183
|
-
"The demo serves the portal's own archive, which lives inside its base directory, so a
|
|
187
|
+
"The demo serves the portal's own archive, which lives inside its base directory, so a reports folder chosen",
|
|
184
188
|
"somewhere else would be published to and never served. Move the whole demo instead:",
|
|
185
189
|
` ${invoke("demo")} --base <dir>`,
|
|
186
190
|
);
|
|
@@ -217,10 +221,10 @@ console.log(`\n ${BRAND.name} ${BRAND.product.toLowerCase()} — demo\n`);
|
|
|
217
221
|
console.log(samples.length === 1
|
|
218
222
|
? ` sample: ${samples[0].dir}`
|
|
219
223
|
: ` samples: ${samples.length} — ${samples.map((x) => x.name).join(", ")}`);
|
|
220
|
-
console.log(`
|
|
224
|
+
console.log(` reports folder: ${poolRoot}\n`);
|
|
221
225
|
|
|
222
226
|
mkdirSync(poolRoot, { recursive: true });
|
|
223
|
-
const { republishRun } = await import(join(REPO, "driver", "publish", "report-registry.mjs"));
|
|
227
|
+
const { republishRun } = await import(pathToFileURL(join(REPO, "driver", "publish", "report-registry.mjs")).href);
|
|
224
228
|
|
|
225
229
|
// ── ONE FAILURE MUST NOT COST THE OTHERS, AND MUST NOT BE A QUIET COUNT (tracker issue 277) ─────────
|
|
226
230
|
//
|
|
@@ -274,7 +278,7 @@ console.log(" re-rendered from its artifacts. It is an example, not advice.\n")
|
|
|
274
278
|
// times.
|
|
275
279
|
const spineOf = (pub) =>
|
|
276
280
|
Number.isFinite(pub.counts?.findings)
|
|
277
|
-
? `${pub.counts.findings} finding(s) recorded in the run's audit
|
|
281
|
+
? `${pub.counts.findings} finding(s) recorded in the run's audit trail; the report shows
|
|
278
282
|
the ones it retains`
|
|
279
283
|
: Number.isFinite(pub.receipts?.findings)
|
|
280
284
|
? `${pub.receipts.findings} finding(s) with citations traced to this run's own held
|
|
@@ -367,9 +371,21 @@ child.on("error", (e) => die(`demo: could not start the portal: ${String(e?.mess
|
|
|
367
371
|
// Its exit code is the demo's. A supervisor that swallowed a child's refusal would report a demo that
|
|
368
372
|
// is up when nothing is listening.
|
|
369
373
|
child.on("exit", (code, signal) => process.exit(signal ? 1 : (code ?? 0)));
|
|
370
|
-
//
|
|
371
|
-
//
|
|
372
|
-
|
|
374
|
+
// ── SIGINT IS FORWARDED, FOR THE SAME REASON SIGTERM IS ─────────────────────────────────────────
|
|
375
|
+
//
|
|
376
|
+
// This was a no-op, on the reasoning that a terminal delivers SIGINT to the whole foreground process
|
|
377
|
+
// group so `start.mjs` gets its own copy. That is true of a terminal and it is the only case it is true
|
|
378
|
+
// of. MEASURED on this tree: with the demo running on three ports, a SIGINT delivered to THIS PID ALONE
|
|
379
|
+
// left all three still bound and both processes alive, because the no-op tore nothing down and the
|
|
380
|
+
// services sit in their own process group where a group signal aimed at the terminal never reaches
|
|
381
|
+
// them. A SIGINT sent to the group tears everything down correctly; only the pid-alone case leaked.
|
|
382
|
+
//
|
|
383
|
+
// That is the same defect, and the same shape, as the SIGTERM case recorded below — which was found by
|
|
384
|
+
// somebody killing the one pid a reader can see. This half was left as a no-op then.
|
|
385
|
+
//
|
|
386
|
+
// Forwarding is safe when the terminal ALSO delivered its own copy: `start.mjs`'s shutdown is
|
|
387
|
+
// re-entrant (`if (stopping) return`), so the second signal is ignored rather than racing the first.
|
|
388
|
+
process.on("SIGINT", () => { try { child.kill("SIGINT"); } catch { /* already gone */ } });
|
|
373
389
|
// ── AND SIGTERM, WHICH DOES NOT REACH THE CHILD ─────────────────────────────────────────────────
|
|
374
390
|
//
|
|
375
391
|
// SIGINT is delivered to the whole foreground process group by the terminal, so the no-op above is
|
package/bin/grant.mjs
CHANGED
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
//
|
|
47
47
|
// It is also why FILE below reads the CLEAROTRON_* spelling. An operator sets CLEAROTRON_ACCESS_FILE;
|
|
48
48
|
// `applyEnvAliases` translates it. Reading the operator's spelling directly would work — and would put
|
|
49
|
-
// the first direct CLEAROTRON_* product read in the tree, which
|
|
49
|
+
// the first direct CLEAROTRON_* product read in the tree, which the arm catches, because the
|
|
50
50
|
// declaration ratchet is keyed on the CLEAROTRON_* prefix and goes blind the moment that premise stops
|
|
51
51
|
// holding. One reader, one spelling.
|
|
52
52
|
import "../shared/env-local.mjs";
|
|
@@ -59,7 +59,7 @@ import { makePrincipal } from "../driver/portal-access.mjs";
|
|
|
59
59
|
import { envFrom } from "../shared/env-aliases.mjs"; // — resolves EITHER spelling; names the retired one because that is the live-writable half
|
|
60
60
|
import { defaultGrantsPath } from "./start.mjs"; // — one owner for the roster's path
|
|
61
61
|
|
|
62
|
-
// —
|
|
62
|
+
// — found in review. This read the variable and nothing else, so it refused with
|
|
63
63
|
// "Set CLEAROTRON_ACCESS_FILE" — a name NOTHING writes. `start` injects it into the environment of the
|
|
64
64
|
// services it supervises and never persists it, so the door found the roster and this command, run in
|
|
65
65
|
// the operator's own shell, could not. Enrolling a client had no working path at all.
|
|
@@ -184,7 +184,7 @@ if (cmd === "add") {
|
|
|
184
184
|
// The route exists — it is the file — and `grant --help` documents it. What was missing is that the
|
|
185
185
|
// refusal which STOPS you did not carry it, so the shape of the object is printed here, against this
|
|
186
186
|
// install's own path, rather than left to a reader to find in another command's help.
|
|
187
|
-
// —
|
|
187
|
+
// — found in review. THE FIRST TENANT IS CREATED HERE. Before this, enrolling anyone
|
|
188
188
|
// on a fresh install ran out of road: the file is {"tenants":{}}, `brandowner` does not write tenants,
|
|
189
189
|
// and this command refused because none existed. 2176's F38 fix printed the JSON shape into the
|
|
190
190
|
// refusal, which is better than a bare stop and still asks a person to hand-edit the file the product
|
package/bin/key.mjs
CHANGED
|
@@ -84,7 +84,7 @@ try {
|
|
|
84
84
|
|
|
85
85
|
for (const line of minted.notes) console.error(line);
|
|
86
86
|
|
|
87
|
-
// —
|
|
87
|
+
// — found in review. A KEY FOR AN IDENTITY ON NO LIST IS A KEY THAT 403s. This command
|
|
88
88
|
// minted rc 0 for any address, printed the token once — it cannot be shown again — and the operator
|
|
89
89
|
// handed it to a client whose first request was refused, with nothing on either side saying why.
|
|
90
90
|
//
|