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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
3
|
// declination-call.mjs — a record that reached the findings surface leaves it BY A STATED DECISION.
|
|
4
4
|
//
|
|
5
|
-
// ── THE DEFECT THIS CLOSES (
|
|
5
|
+
// ── THE DEFECT THIS CLOSES (and the half of the same seam) ────────────────────────────────
|
|
6
6
|
//
|
|
7
7
|
// `record-carry.json` on R2 round `e48f7056` read `unreasoned: 0` and was telling the truth in the weak
|
|
8
8
|
// sense only: every drop had a LABEL, and on 102 of them the label was inferred from where the record
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
// that a note describing the material instead of stating a ground is the defect one artifact over.
|
|
71
71
|
// Measured against seven realistic declinations before anything was built on it, that classifier refused
|
|
72
72
|
// ALL SEVEN as `unclear` — including "already delivered as finding 4 under the EUIPO record for the same
|
|
73
|
-
// proprietor". It is not a bug in the classifier. It answers a different question:
|
|
73
|
+
// proprietor". It is not a bug in the classifier. It answers a different question: the notes must say
|
|
74
74
|
// what could NOT BE ESTABLISHED about a charged rating, and a declination says why a record does not earn
|
|
75
75
|
// a line. Two different speech acts, and a grammar built for one rejects the other on sight.
|
|
76
76
|
//
|
|
@@ -210,6 +210,38 @@ export function contradictionFor(reason, row, scope) {
|
|
|
210
210
|
+ `own-right or duplicate-of-delivered.`;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
+
// ── ECONOMY IS NOT A REASON ABOUT A LIVE IN-CLASS MARK (owner ruling 2026-09-07) ─────────────────
|
|
214
|
+
//
|
|
215
|
+
// `not-worth-the-line` means "it fits none of the four manageable categories and is not relevant
|
|
216
|
+
// enough to drive the read". That is a statement about the REPORT'S BUDGET, not about the record. On a
|
|
217
|
+
// live registration inside one of the matter's own instructed classes it is the one thing the seat may
|
|
218
|
+
// not say: the reader is paying for a judgment about that mark, and "there was no room" is not one.
|
|
219
|
+
//
|
|
220
|
+
// Measured on the run that prompted the ruling: 26 of 49 declinations at this seam were this token,
|
|
221
|
+
// and two of the lawyer's own reference marks were among them — one carried on every earlier run.
|
|
222
|
+
//
|
|
223
|
+
// ✕ WHY THIS IS NOT THE REFUSAL THAT WAS REMOVED BELOW, and the difference is the whole reason it can
|
|
224
|
+
// stand. That one refused `unrelated-goods` and `off-field-not-major` on class overlap, fired on 170
|
|
225
|
+
// of 170 records, and made the ENGINE decide relatedness — the lawyer's call. This one refuses ONE
|
|
226
|
+
// token and leaves every substantive reason available. The seat may still decline this record: it may
|
|
227
|
+
// say the goods are unrelated, that it is off-field and not a major brand, that it is the applicant's
|
|
228
|
+
// own right, or that it is already delivered. What it may no longer do is decline it for taking up
|
|
229
|
+
// space. The refusal is about the SHAPE of the reason, not about whether the record is relevant, so
|
|
230
|
+
// the relatedness judgment stays exactly where it was.
|
|
231
|
+
//
|
|
232
|
+
// It does effectively retire this token for live in-class records, because the sweep is already scoped
|
|
233
|
+
// to the instructed classes. That was put to the owner as the consequence and ruled anyway.
|
|
234
|
+
if (reason === "not-worth-the-line" && isLive(row?.status) && shared.length) {
|
|
235
|
+
return `this record is ${String(row?.status ?? "").trim() || "live"} and sits in class `
|
|
236
|
+
+ `${shared.join(", ")} — one of the matter's own instructed classes. "not worth the line" is a `
|
|
237
|
+
+ `statement about the report's budget, not about this mark, and a live registration in an `
|
|
238
|
+
+ `instructed class is never omitted for want of room. Either carry it, or decline it on something `
|
|
239
|
+
+ `true of THIS MARK: unrelated-goods if its goods do not meet the matter's, off-field-not-major `
|
|
240
|
+
+ `if it is off-field and not a major brand, an active dispute or a well-known enforcer, `
|
|
241
|
+
+ `own-right if it belongs to the applicant, duplicate-of-delivered if the same right is already `
|
|
242
|
+
+ `reported. Say what makes this mark distant, or give it its line.`;
|
|
243
|
+
}
|
|
244
|
+
|
|
213
245
|
// THERE IS NO CLASS-OVERLAP REFUSAL, AND THE FIRST DRAFT HAD ONE. It refused `unrelated-goods` and
|
|
214
246
|
// `off-field-not-major` over any record sharing one of the matter's filed classes, on the reasoning
|
|
215
247
|
// that the driver holds both class lists and they disagree with the stated reason.
|
|
@@ -231,7 +263,7 @@ export function contradictionFor(reason, row, scope) {
|
|
|
231
263
|
}
|
|
232
264
|
|
|
233
265
|
/**
|
|
234
|
-
* THE SEAM'S DECISION, AS A PURE FUNCTION —
|
|
266
|
+
* THE SEAM'S DECISION, AS A PURE FUNCTION — the guarantee, in the one place it can be asserted.
|
|
235
267
|
*
|
|
236
268
|
* `recordSynthesisSeam` is module-private in pipeline.mjs and always will be; it does file I/O and takes
|
|
237
269
|
* a run context. The JUDGMENT it makes about each discarded record is this, and it is extracted so a test
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
3
|
// declination-duty.mjs — every record handed to synthesis left by a NAMED EXIT, or the run says which
|
|
4
|
-
// ones did not. (
|
|
4
|
+
// ones did not. (the missing half; the R2 round on is the incident.)
|
|
5
5
|
//
|
|
6
6
|
// THE RULE IS ALREADY DICTATED, AND IT WAS NEVER CHECKED. synthesis's own contract states it in one
|
|
7
7
|
// line — "a record that reached your findings surface leaves this stage as a finding in findings.json
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# v2 (pure-MCP courier, docs/DELIVERY.md): the outbox carries EVERY requester-facing event — delivered
|
|
5
5
|
# markers (body = the forwarding agent id) AND self-contained JSON packets (run-failed / intake-rejected /
|
|
6
6
|
# duplicate-skipped / late-bind-ack, each with an "agent" field). For each DISTINCT agent named across
|
|
7
|
-
# pending events, wake it ONCE to run the
|
|
7
|
+
# pending events, wake it ONCE to run the clearotron-deliver skill, which routes everything over the ops MCP
|
|
8
8
|
# (list_outbox_events → get_delivery_packet → send → mark_sent/ack_event).
|
|
9
9
|
#
|
|
10
10
|
# THE TRIGGER NEVER DELETES EVENTS: consumption belongs to mark_sent (delivered) and ack_event (the rest),
|
|
@@ -35,7 +35,7 @@ DRAIN_WAIT="${CLEAROTRON_OUTBOX_DRAIN_WAIT:-180}"
|
|
|
35
35
|
# (openclaw models); set CLEAROTRON_OUTBOX_WAKE_MODEL="" to fall back to the agent default. `-` (not `:-`) so
|
|
36
36
|
# an explicit empty value disables the override, while unset keeps the Haiku default.
|
|
37
37
|
WAKE_MODEL="${CLEAROTRON_OUTBOX_WAKE_MODEL-anthropic/claude-haiku-4-5}"
|
|
38
|
-
MSG="The trademark engine's outbox has pending events. Run the
|
|
38
|
+
MSG="The trademark engine's outbox has pending events. Run the clearotron-deliver skill now: list_outbox_events, route each event (delivered → get_delivery_packet + send VERBATIM + mark_sent; every other kind → relay its text + ack_event)."
|
|
39
39
|
|
|
40
40
|
# THE WALL, RESOLVED ONCE AND NAMED WHEN IT IS ABSENT (tracker issue 820).
|
|
41
41
|
#
|
|
@@ -112,7 +112,7 @@ for agent in "${!by_agent[@]}"; do
|
|
|
112
112
|
continue
|
|
113
113
|
fi
|
|
114
114
|
|
|
115
|
-
echo "prelim-outbox: waking $agent to run
|
|
115
|
+
echo "prelim-outbox: waking $agent to run clearotron-deliver"
|
|
116
116
|
# timeout(1) is the enforced wall: the 2026-07-04 incident proved the CLI's own --timeout does not
|
|
117
117
|
# guarantee process EXIT (the agent turn finished; the process idled 19h and wedged the lane).
|
|
118
118
|
# SIGTERM at 840s (inside the unit's TimeoutStartSec budget so the failure is OURS and logged),
|
|
@@ -37,7 +37,7 @@ function listDir(dir) {
|
|
|
37
37
|
* Everything holding this deployment open, named.
|
|
38
38
|
*
|
|
39
39
|
* @param {object} a
|
|
40
|
-
* @param {string} a.queueDirs EVERY queue tree, not the one this box thinks it uses.
|
|
40
|
+
* @param {string} a.queueDirs EVERY queue tree, not the one this box thinks it uses. That lesson:
|
|
41
41
|
* a headless CLEAROTRON_QUEUE_DIR and the agent workspace queues are both
|
|
42
42
|
* real, and a guard that reads one of them passes over work sitting in
|
|
43
43
|
* the other.
|
|
@@ -66,7 +66,11 @@ export function liveRunHolds({ queueDirs = [], lockDir = null, isAlive = claimer
|
|
|
66
66
|
const { names, error } = listDir(lockDir);
|
|
67
67
|
if (error) unreadable.push({ path: lockDir, error });
|
|
68
68
|
for (const n of names) {
|
|
69
|
-
|
|
69
|
+
// `draw-` alongside `slot-`: a direct --experiment invocation is work on this box and the guard's
|
|
70
|
+
// question is whether the box is busy, so a draw has to answer yes. It holds its own prefix rather
|
|
71
|
+
// than a run slot, because a run slot is admission-controlled and taking one would make a draw wait
|
|
72
|
+
// behind clearances — changing what a draw IS in order to fix what this can see.
|
|
73
|
+
if (!/^(slot|draw)-/.test(n) || !n.endsWith(".lock")) continue;
|
|
70
74
|
let raw = null;
|
|
71
75
|
try { raw = readFileSync(join(lockDir, n), "utf8"); } catch { continue; } // released mid-scan
|
|
72
76
|
const pid = Number(String(raw).split(":")[0]);
|
package/driver/dev-portal.mjs
CHANGED
|
@@ -373,7 +373,7 @@ export function startPortal({ poolRoot = null, port = 18899, host = "127.0.0.1",
|
|
|
373
373
|
if (url.pathname === "/dev/enqueue" && req.method === "POST") {
|
|
374
374
|
let body;
|
|
375
375
|
try { body = await readJsonBody(req); } catch (e) { return sendJson(res, 400, { ok: false, error: e.message }); }
|
|
376
|
-
// `searchLevel` IS REFUSED, NOT DROPPED. This form offered a "Search level" menu (
|
|
376
|
+
// `searchLevel` IS REFUSED, NOT DROPPED. This form offered a "Search level" menu (clearotron · Depth 4
|
|
377
377
|
// / knockout · Depth 1) and posted the field to an assembler that stopped reading it, so picking
|
|
378
378
|
// "knockout" enqueued a job naming no product at all and ran whatever the account default or the
|
|
379
379
|
// request's own territories named — a silent product substitution at a live door, from a control
|
|
@@ -145,7 +145,7 @@ export const CALL_REFUSALS = Object.freeze([
|
|
|
145
145
|
"obstacle_absent", // an obstacle was claimed with nothing said about what blocks the proof
|
|
146
146
|
]);
|
|
147
147
|
|
|
148
|
-
// The proof-of-reading arms, and ONLY those.
|
|
148
|
+
// The proof-of-reading arms, and ONLY those. That obstacle waives this duty and no other, so this set
|
|
149
149
|
// is the exact boundary between "you have not proved you read it" and "you have not judged it" — derived
|
|
150
150
|
// by prefix from the vocabulary above rather than retyped, so a new evidence arm joins it automatically
|
|
151
151
|
// and a new judgment arm cannot wander in.
|
|
@@ -183,7 +183,7 @@ export const RETIRED_CALL_REFUSALS = Object.freeze([
|
|
|
183
183
|
// and it must never appear in the same bucket, because the two demand opposite responses — one says
|
|
184
184
|
// "change your answer", the other says "stop asking, it is ours".
|
|
185
185
|
//
|
|
186
|
-
//
|
|
186
|
+
// That leading unproven hypothesis lives here. The accumulator's rows and candidates are REGENERATED
|
|
187
187
|
// on every pass, and `seatFields` re-resolves an already-resolved row against whatever the current pass
|
|
188
188
|
// holds (`disposition-union.mjs:98`, which discards `resolveCandidate`'s `state`). If that second
|
|
189
189
|
// resolution misses, a row the tool accepted lands with an empty receipt and reads as unruled. This
|
|
@@ -442,7 +442,7 @@ export function detectRulingDrift(ledger) {
|
|
|
442
442
|
*
|
|
443
443
|
* ── WHY THE TOTAL IS RETURNED TOO ───────────────────────────────────────────────────────────────────
|
|
444
444
|
*
|
|
445
|
-
*
|
|
445
|
+
* That warning sits in this exact number: filtering it after a split reported
|
|
446
446
|
* `obligationsNeverAddressed: 0` on the run that died owing 75. So the total comes back as its own field
|
|
447
447
|
* and the two parts must sum to it. Nothing can go to zero without a companion number rising to meet it.
|
|
448
448
|
*
|
|
@@ -822,7 +822,7 @@ export function validateDispositionCall(rows, recorded, { told = null } = {}) {
|
|
|
822
822
|
/**
|
|
823
823
|
* CAN THIS ROW'S EVIDENCE DEMAND EVER BE SATISFIED?
|
|
824
824
|
*
|
|
825
|
-
* — the agreement guard for the `evidence_owed` seam, and it is
|
|
825
|
+
* — the agreement guard for the `evidence_owed` seam, and it is the shape one module over. The
|
|
826
826
|
* demand (`quote_required`) is SET at form-build against candidates that carried text; the satisfaction is
|
|
827
827
|
* enforced by `segmentBinding` against the candidate's snippet AS IT IS NOW. Between the two, candidates
|
|
828
828
|
* regenerate. When they come back without quotable passages the flag survives and its justification does
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
// decided, which is the thing already in the record, rather than what we were given.
|
|
20
20
|
//
|
|
21
21
|
// THE INDEX IS WRITTEN BY THE RECEIVER, NEVER BY THE CONSUMER. This handler writes both the payload and
|
|
22
|
-
// the line naming it, in that order, before it validates anything.
|
|
22
|
+
// the line naming it, in that order, before it validates anything. That three snapshot sites all
|
|
23
23
|
// discard their return, so no attempt row names its snapshot and correlation is by mtime — which is
|
|
24
24
|
// precisely how the union discard had to be diagnosed. A consumer-written index can only ever name the
|
|
25
25
|
// payloads the consumer got to; a call that dies mid-flight writes no index line, and its absence is
|
|
@@ -46,7 +46,7 @@ const CALLS_DIR = "disposition-calls";
|
|
|
46
46
|
/**
|
|
47
47
|
* The obligations sidecar — what the seat was TOLD it owed, written when the block was rendered.
|
|
48
48
|
*
|
|
49
|
-
*
|
|
49
|
+
* That rule, applied to this filename: the path is derived ONCE and imported, never re-derived at the
|
|
50
50
|
* other end. perplexity-server.mjs writes this file and this module reads it; two spellings of one name
|
|
51
51
|
* is the drift cost weeks, and the reader would fail OPEN — it would simply find no file, fall back
|
|
52
52
|
* to the live derivation, and renumber the seat's page without anyone being told.
|
|
@@ -338,7 +338,7 @@ export function outstandingWithAnchors(canonicalRows, formRows) {
|
|
|
338
338
|
* Record one typed call. The tool handler's core.
|
|
339
339
|
*
|
|
340
340
|
* `spec` is the DRIVER-WRITTEN grid spec — the same file the grid tool was given. The seat names no path
|
|
341
|
-
* of its own:
|
|
341
|
+
* of its own: the rule is that the path is the driver's, taken from the spec it wrote, because two
|
|
342
342
|
* derivations of one filename is the drift that cost weeks.
|
|
343
343
|
*/
|
|
344
344
|
export function recordDispositions(spec, received, { now = () => new Date().toISOString() } = {}) {
|
|
@@ -415,7 +415,7 @@ export function recordDispositions(spec, received, { now = () => new Date().toIS
|
|
|
415
415
|
// accumulator" are two different facts and nothing compared them.
|
|
416
416
|
//
|
|
417
417
|
// This compares them, per call, and records any disagreement as OURS. It is deliberately not a throw:
|
|
418
|
-
//
|
|
418
|
+
// That silent-drop hypothesis is unproven, and an instrument that crashes the run it is measuring
|
|
419
419
|
// cannot measure it. If the count is always zero the hypothesis is dead and we will be able to say so
|
|
420
420
|
// from the artifact — which is the point of building it before the cure.
|
|
421
421
|
const landed = new Map((Array.isArray(u.form?.rows) ? u.form.rows : [])
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
// definition of "ruled" and — since the review of this build — no row LOOKUP either. `obligationRows`,
|
|
22
22
|
// `formRowFinder` and `isRuled` all come from connotation-search.mjs, the same code the GATE
|
|
23
23
|
// judges with. A union that preserved a ruling the gate would refuse, or dropped one it would accept,
|
|
24
|
-
// would make the outstanding count mean two different things in two places, which is
|
|
24
|
+
// would make the outstanding count mean two different things in two places, which is the defect
|
|
25
25
|
// exactly: one calculation running twice, silently disagreeing, both copies looking correct. The lookup
|
|
26
26
|
// had been written out twice — here and in the gate — and both copies carried the same punctuation defect.
|
|
27
27
|
|
|
@@ -160,7 +160,7 @@ export function unionDispositionForm(prior, submitted, ob, { half = null, genera
|
|
|
160
160
|
const findSubmitted = formRowFinder(submitted, form.rows);
|
|
161
161
|
// — a park is STICKY, for the same reason a ruling is. This module exists because the outstanding
|
|
162
162
|
// count churned instead of shrinking (see the header): a park that could lift would let the count rise
|
|
163
|
-
// again, which is
|
|
163
|
+
// again, which is the defect in new clothes. So the prior form's park is authority, and `parkedIds`
|
|
164
164
|
// only ever ADDS.
|
|
165
165
|
const newlyParked = new Set((parkedIds ?? []).map((x) => String(x ?? "").trim()).filter(Boolean));
|
|
166
166
|
let ruled = 0, carried = 0, parked = 0;
|
package/driver/doc-constants.mjs
CHANGED
|
@@ -350,7 +350,7 @@ export const DOC_CONSTANTS = [
|
|
|
350
350
|
doc: "providers/uspto-local/README.md",
|
|
351
351
|
pattern: /last successful sync goes past (\d+) hours/,
|
|
352
352
|
},
|
|
353
|
-
// The same figure, twice in the same file —
|
|
353
|
+
// The same figure, twice in the same file — the shape, and the reason each occurrence is a row.
|
|
354
354
|
{
|
|
355
355
|
constant: "FRESHNESS_HOURS.sync",
|
|
356
356
|
source: { file: "providers/uspto-local/src/index-store.js", symbol: "FRESHNESS_HOURS.sync" },
|
package/driver/door-gates.mjs
CHANGED
|
@@ -97,7 +97,7 @@ export function gateResolvedRequest({ job = null, profile = null, resolved = nul
|
|
|
97
97
|
// A resolution that could not be taken is not a refusal — see the fail-open note in the header.
|
|
98
98
|
if (!resolved) return out;
|
|
99
99
|
// A CLARIFY IS RELAYED VERBATIM. It is already an actionable sentence naming the selector that could
|
|
100
|
-
// not be honoured ("product \"
|
|
100
|
+
// not be honoured ("product \"clearotron\" names no search we offer — one of: … (or omit it for the
|
|
101
101
|
// account's default)"), and flattening it into a cause would lose the remedy clause.
|
|
102
102
|
if (resolved.clarify) { out.errors.push(resolved.clarify); return out; }
|
|
103
103
|
// deliveryRoute "portal" — DECLARED but not BUILT. It validates shape-wise, has no consumer (the
|
|
@@ -133,7 +133,7 @@ export function doorGates(job, opts = {}) {
|
|
|
133
133
|
return { ...r, ...gateResolvedRequest({ job, ...r }, opts) };
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
// ── WHY
|
|
136
|
+
// ── WHY THE CONFIGURED-TO-SEARCH REFUSAL IS NOT ALSO A DOOR GATE ─────────────────────────────────────────
|
|
137
137
|
//
|
|
138
138
|
// It was, briefly, and it was removed with a measurement rather than an opinion. Adding "is this box
|
|
139
139
|
// configured to search at all" here reddened `driver/test/doors-agree.test.mjs` — nineteen arms green
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2026 Cordillera Sàrl. Additional terms under section 7 of the AGPL-3.0 apply — see ADDITIONAL-TERMS.md
|
|
3
3
|
// doubt-selection.mjs — which OPEN doubts the closure seat is asked about, chosen by the DRIVER.
|
|
4
4
|
//
|
|
5
|
-
//
|
|
5
|
+
// That architecture, one lane over from profile-selection.mjs: "prefer driver selection wherever the
|
|
6
6
|
// key precedes the dispatch." The key is on the doubt before doubt-closure is dispatched, so there is
|
|
7
7
|
// nothing here for a directive to ask a seat to judge — the driver lists the ids, and a doubt it does
|
|
8
8
|
// not list is never mentioned.
|
|
@@ -68,7 +68,7 @@ export function keptTiersFor(doubtClosure) {
|
|
|
68
68
|
* WHICH OF THE THREE SILENCES THIS IS. `keptTiersFor` returns null for `every-doubt` AND for a word it
|
|
69
69
|
* does not know, deliberately — a typo must not silently drop every keyed doubt. But that makes the two
|
|
70
70
|
* indistinguishable in the run's event: a misspelt cut records exactly what the shipped cut records, and
|
|
71
|
-
* the product row looks graded while the dispatch is not.
|
|
71
|
+
* the product row looks graded while the dispatch is not. That arm catches a bad word on the ROW; this
|
|
72
72
|
* is the runtime face of the same question, on the run that actually happened.
|
|
73
73
|
*
|
|
74
74
|
* `hasOwnProperty` rather than a truthiness test on the lookup, because `TIER_CUTS[w]` reaches the
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
import { readFileSync, writeFileSync, mkdirSync, renameSync } from "node:fs";
|
|
35
35
|
import { execFileSync } from "node:child_process";
|
|
36
36
|
import { join, dirname } from "node:path";
|
|
37
|
-
import { drainPosture, absentDrainerIsNormal } from "./drain-posture.mjs"; //
|
|
37
|
+
import { drainPosture, absentDrainerIsNormal } from "./drain-posture.mjs"; // one rule about the box
|
|
38
38
|
|
|
39
39
|
export const STAMP_BASENAME = "_drainer-identity.json";
|
|
40
40
|
|
package/driver/driver.config.mjs
CHANGED
|
@@ -115,7 +115,7 @@ export const config = {
|
|
|
115
115
|
// configured, because a whitespace-only string is TRUTHY in JavaScript — so a variable set to spaces
|
|
116
116
|
// did not fall through to the default, it BECAME the path. `poolRoot` alone trimmed, so "blank" meant
|
|
117
117
|
// two different things depending on which accessor you asked, and `queueDirs` resolved a RELATIVE
|
|
118
|
-
// queue directory under the process cwd, which is
|
|
118
|
+
// queue directory under the process cwd, which is its own incident shape.
|
|
119
119
|
//
|
|
120
120
|
// Owner ruling 2026-08-19: a whitespace-only value counts as UNSET, everywhere. `X=` already meant
|
|
121
121
|
// "not configured" and this is that rule finishing its sentence — not a reversal of it, which
|
|
@@ -229,7 +229,7 @@ export const config = {
|
|
|
229
229
|
/**
|
|
230
230
|
* Every skills root handed to the engine's file tools (overlay + base, deduped).
|
|
231
231
|
*
|
|
232
|
-
* NAMED FOR WHAT IT IS, not what we want it to be (
|
|
232
|
+
* NAMED FOR WHAT IT IS, not what we want it to be (2026-08-14): it was `skillsReadRoots`, and the
|
|
233
233
|
* engine passes it to `--add-dir`, which has no read-only form. The read-only INTENT is real and is
|
|
234
234
|
* enforced by the deny-hook at driver/engine/deny-authority-write.mjs — not by this name.
|
|
235
235
|
*/
|
|
@@ -252,7 +252,7 @@ export const config = {
|
|
|
252
252
|
get skillsRoot() { return dirname(this.skillsDir); },
|
|
253
253
|
|
|
254
254
|
// ── Per-agent paths ───────────────────────────────────────────────────────
|
|
255
|
-
// A
|
|
255
|
+
// A clearotron job is enqueued into the FORWARDING agent's OWN workspace queue (that agent's `write` tool
|
|
256
256
|
// is sandboxed there), and we run the whole pipeline as that same agent so the reply tool
|
|
257
257
|
// (`clawdi_send_<user>`), the run-dir, and the agent's memory all line up. The queue LOCATION therefore
|
|
258
258
|
// encodes the agent identity — the driver derives {agentId, studioRoot} from where it claimed the job,
|
|
@@ -269,6 +269,13 @@ export const config = {
|
|
|
269
269
|
},
|
|
270
270
|
// Escaped prefix for the reverse regexes below (a custom prefix may carry regex metachars).
|
|
271
271
|
get workspacePrefixRe() { return this.workspacePrefix.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); },
|
|
272
|
+
// `prelim-search` IS NOT A PRODUCT NAME HERE and does not follow the product rename. It is a
|
|
273
|
+
// directory segment on disk, and every archived run — its slug dirs, its `archive/`, its matter
|
|
274
|
+
// ledger — was written under it. Renaming the segment does not move those runs; it points the
|
|
275
|
+
// reader somewhere empty, and an empty directory reads as "no runs" rather than as an error.
|
|
276
|
+
// The rule the tree already enforces elsewhere: a token that is read back out of an archive keeps
|
|
277
|
+
// its old spelling, or the code refuses its own archive. Thirteen sites compute this segment and
|
|
278
|
+
// all thirteen stay.
|
|
272
279
|
studioRootForAgent(agentId) {
|
|
273
280
|
return join(this.workspaceRoot, this.workspaceDirName(agentId), "studio", "prelim-search");
|
|
274
281
|
},
|
|
@@ -283,7 +290,7 @@ export const config = {
|
|
|
283
290
|
const m = new RegExp(`(?:^|/)${this.workspacePrefixRe}([^/]+)/studio/prelim-search/queue/?$`).exec(qdir);
|
|
284
291
|
return m ? m[1] : null;
|
|
285
292
|
},
|
|
286
|
-
// Every agent workspace's
|
|
293
|
+
// Every agent workspace's clearotron queue. The systemd `.path` watches these and the runner drains ALL of
|
|
287
294
|
// them on each trigger (+ a timer fallback), so a request from ANY forwarder runs. (Pre-fix the watcher
|
|
288
295
|
// and runner only looked at workspace-clawdi, silently orphaning every Alex/Sam job — the bug this fixes.)
|
|
289
296
|
//
|
|
@@ -485,7 +492,7 @@ export const config = {
|
|
|
485
492
|
// jobs AND manual pipeline.mjs invocations alike. WS-C raised the V4-7 stopgap's 1 → 3 (one per agent).
|
|
486
493
|
// Phase-4: 3 → 6 + per-agent admission LIFTED (pipeline.acquireRunSlot no longer tags by agent). The
|
|
487
494
|
// 2026-06-12 starvation that forced one-run-at-a-time (parallel runs → every gateway lane busy → 75s
|
|
488
|
-
// heartbeat timeouts → a lost mid-run reply) was a GATEWAY phenomenon;
|
|
495
|
+
// heartbeat timeouts → a lost mid-run reply) was a GATEWAY phenomenon; clearotron COMPUTE now runs off the
|
|
489
496
|
// gateway on the standalone claude -p engine, so concurrent runs no longer starve the heartbeat. The TURN
|
|
490
497
|
// cap below still bounds the (now light) intake/delivery gateway demand. The runner serializes only the
|
|
491
498
|
// cheap claim+dedup per queue and runs pipelines concurrently up to this cap (same-matter dedup stays
|
|
@@ -493,14 +500,22 @@ export const config = {
|
|
|
493
500
|
// if the env is unset — keep the two in sync). Set to 2 on 2026-06-18 (was 6): 2 parallel is enough for now,
|
|
494
501
|
// and bounds Max-5x rate-limit thrash. To change the live cap, set the env on the VM (no code deploy needed).
|
|
495
502
|
get maxConcurrentRuns() { return Math.max(1, numericSetting("CLEAROTRON_MAX_CONCURRENT_RUNS")); },
|
|
503
|
+
// ON-DISK NAME, NOT A PRODUCT NAME: an install that never set the variable is already using this
|
|
504
|
+
// directory, so renaming the default moves the install to an empty one and nothing migrates. Here
|
|
505
|
+
// the orphaned files are run-slot locks, so a live run's slot goes unseen and the global cap is
|
|
506
|
+
// silently exceeded rather than enforced. Owner ruling, tracker issue 308.
|
|
496
507
|
get runLockDir() { return this.envValue("CLEAROTRON_RUN_LOCK_DIR") || join(this.workspaceRoot, "prelim-run-locks"); },
|
|
497
508
|
|
|
498
509
|
// Delivery outbox (Workstream B). On a handoff-mode finish the driver drops <runId>.pending here (naming
|
|
499
|
-
// the forwarder agent); the systemd-user prelim-outbox.path unit fires an INSTANT
|
|
510
|
+
// the forwarder agent); the systemd-user prelim-outbox.path unit fires an INSTANT clearotron-deliver wake off
|
|
500
511
|
// it, so a finished run sends in seconds instead of waiting ≤55m for the HEARTBEAT completion-watch (which
|
|
501
512
|
// stays as the backstop). Mirrors runLockDir's derivation; env-overridable for dev/prod parity.
|
|
502
513
|
// Phase 2: the outbox is ALSO the event seam for every other requester-facing event (run-failed,
|
|
503
514
|
// intake-rejected, duplicate-skipped, late-bind-ack) — self-contained JSON packets via outbox.mjs.
|
|
515
|
+
// ON-DISK NAME, NOT A PRODUCT NAME: an install that never set the variable is already using this
|
|
516
|
+
// directory, so renaming the default moves the install to an empty one and nothing migrates. Here
|
|
517
|
+
// the orphaned files are requester-facing events — delivered, run-failed, intake-rejected — so the
|
|
518
|
+
// visible failure is a requester never told their run finished. Owner ruling, tracker issue 308.
|
|
504
519
|
get outboxDir() { return this.envValue("CLEAROTRON_OUTBOX_DIR") || join(this.workspaceRoot, "prelim-outbox"); },
|
|
505
520
|
|
|
506
521
|
// ── Delivery/comms (Phase 2, standalone product) ─────────────────────────────────────────────────
|
|
@@ -516,8 +531,25 @@ export const config = {
|
|
|
516
531
|
|
|
517
532
|
// Fallback execution agent when a job's origin agent can't be derived from its queue dir (shouldn't
|
|
518
533
|
// happen in normal operation). The real per-run agent is the forwarding agent, derived from the queue
|
|
519
|
-
// LOCATION (see studioRootForAgent / agentIdFromQueueDir above).
|
|
520
|
-
|
|
534
|
+
// LOCATION (see studioRootForAgent / agentIdFromQueueDir above).
|
|
535
|
+
//
|
|
536
|
+
// THE DEFAULT IS PART OF A PATH, so changing it moves where an install looks for its own runs:
|
|
537
|
+
// every run dir is `<workspaceRoot>/workspace-<agent>/studio/prelim-search/…`. An install created
|
|
538
|
+
// before this default changed keeps its runs under the old id and must pin it — both spellings,
|
|
539
|
+
// because the gather servers read their own variable:
|
|
540
|
+
//
|
|
541
|
+
// CLEAROTRON_DEFAULT_AGENT=clawdi
|
|
542
|
+
// CLEAROTRON_GATHER_AGENT=clawdi
|
|
543
|
+
//
|
|
544
|
+
// Unpinned, such an install starts a fresh empty workspace and its existing runs read as absent
|
|
545
|
+
// rather than as an error. Said again where upgrades are described (INSTALL.md, ops runbook).
|
|
546
|
+
//
|
|
547
|
+
// THE ID IS ALSO A KEY, not only a path segment. `AGENT_WHATSAPP` in stages.mjs is keyed by agent
|
|
548
|
+
// id, so the demo roster has to carry this value or the reference deployment resolves no operator
|
|
549
|
+
// number and the hole reads as "no copy configured" rather than as a miss. Both ids are in that
|
|
550
|
+
// roster for the same reason the pin above exists. (The roster stays one line: 32 backlog rows
|
|
551
|
+
// cite line numbers in stages.mjs, so a comment added there repoints all of them.)
|
|
552
|
+
get defaultAgent() { return process.env.CLEAROTRON_DEFAULT_AGENT || "localagent"; },
|
|
521
553
|
|
|
522
554
|
// Per-stage retry budget (fresh session key per retry).
|
|
523
555
|
get maxRetries() { return numericSetting("CLEAROTRON_MAX_RETRIES"); },
|
|
@@ -612,6 +644,26 @@ const MODEL_FAMILY_RE = /(?:^|\/)(?:claude-)?(opus|sonnet|haiku)(?:[-.]|$)/i;
|
|
|
612
644
|
// mini one would then read as agreement, which is exactly the corruption this gauge exists to catch.
|
|
613
645
|
const OPENAI_ID_RE = /^(?:openai\/)?(gpt-[\w.-]+|o\d[\w.-]*)$/i;
|
|
614
646
|
const DATE_SUFFIX_RE = /-(?:\d{8}|\d{4}-\d{2}-\d{2})$/;
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Is this model id a DATED SNAPSHOT, or an undated alias that a provider may repoint?
|
|
650
|
+
*
|
|
651
|
+
* `modelBasis: "actual"` says the provider answered rather than that we guessed — it does not say the
|
|
652
|
+
* answer names a fixed build. Measured across three archived runs: haiku came back
|
|
653
|
+
* `claude-haiku-4-5-20251001`, opus and sonnet came back `claude-opus-5` and `claude-sonnet-5`. All
|
|
654
|
+
* three were recorded identically as observed, and two of them name something the provider can move
|
|
655
|
+
* underneath us. A snapshot rotation behind either alias between two runs leaves EXACTLY that record and
|
|
656
|
+
* is invisible, which is how an A/B across time ends up eliminating the seat on evidence that could not
|
|
657
|
+
* have shown it either way.
|
|
658
|
+
*
|
|
659
|
+
* Returns "snapshot", "alias", or null when there is no id to judge — null is a could-not-look and is
|
|
660
|
+
* never collapsed into "alias". PURE.
|
|
661
|
+
*/
|
|
662
|
+
export function modelSnapshotKind(model) {
|
|
663
|
+
const id = String(model ?? "").trim();
|
|
664
|
+
if (!id) return null;
|
|
665
|
+
return DATE_SUFFIX_RE.test(id) ? "snapshot" : "alias";
|
|
666
|
+
}
|
|
615
667
|
export function modelFamily(model) {
|
|
616
668
|
if (!model) return null;
|
|
617
669
|
const resolved = resolveModel(String(model));
|
|
@@ -714,7 +766,7 @@ export const REGISTER_PROVIDER = (() => {
|
|
|
714
766
|
// created this constant, so neither branch's tests covered it — it surfaced from reading the two diffs
|
|
715
767
|
// side by side, not from a red run.
|
|
716
768
|
//
|
|
717
|
-
// SIX values now:
|
|
769
|
+
// SIX values now: the `free-tier` composes the two free sources into ONE register, so an EU+US
|
|
718
770
|
// clearance needs no paid vendor. It is a TIER, not a fourth free source — precedence runs between
|
|
719
771
|
// tiers, never within one: a paid vendor configured IS the register alone, and the free sources are not
|
|
720
772
|
// run beside it (corsearch and clarivate already aggregate both offices, so the second call buys
|
|
@@ -1314,7 +1366,7 @@ export const PROVIDERS = {
|
|
|
1314
1366
|
// It also gated the wrong thing in practice. The US index is the one piece of this tier an operator
|
|
1315
1367
|
// cannot get in a minute — it is a 41.5 GB build over two bulk products, behind an account with ID.me
|
|
1316
1368
|
// identity verification, and it takes hours — so requiring it made the free tier unusable for exactly
|
|
1317
|
-
// the person it exists for.
|
|
1369
|
+
// the person it exists for. That CODE was merged; the INDEX is what no box had, and that was enough
|
|
1318
1370
|
// to keep and from ever being exercised.
|
|
1319
1371
|
//
|
|
1320
1372
|
// The EU pair stays REQUIRED: a free tier with no configured member at all is not degraded, it is
|
|
@@ -1419,7 +1471,7 @@ export function providerIdFrom(env) {
|
|
|
1419
1471
|
// the CURRENT spelling, through `currentName`, on purpose. Reading only the legacy name answered
|
|
1420
1472
|
// `null` for a file that names the provider on the one line an operator can see, and `activeProvider`
|
|
1421
1473
|
// reads that null as "this environment said nothing" and falls back to the ambient value. That is
|
|
1422
|
-
//
|
|
1474
|
+
// That defect exactly, wearing the new name.
|
|
1423
1475
|
for (const name of ["CLEAROTRON_DATABASE"]) {
|
|
1424
1476
|
const v = String(env?.[name] ?? "").trim().toLowerCase();
|
|
1425
1477
|
if (v) return v;
|
package/driver/e2e-rounds.mjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
//
|
|
5
5
|
// ── the defect this exists to remove ──────────────────────────────────────────────────────────
|
|
6
6
|
//
|
|
7
|
-
//
|
|
7
|
+
// That noise floor needs the SAME scenario run twice on one commit. Until this module, `run` wrote
|
|
8
8
|
// `_e2e-doors-<ID>.json` holding exactly one token and `report` scoped itself to whatever token it found
|
|
9
9
|
// there — so the second run of a pair OVERWROTE the only record of the first round's token, and the
|
|
10
10
|
// first half became unreportable. Silently: `report` then described the second run, thirty seconds into
|
|
@@ -305,7 +305,7 @@ function runStart(hit) {
|
|
|
305
305
|
/**
|
|
306
306
|
* The rounds visible ON DISK, grouped by round token.
|
|
307
307
|
*
|
|
308
|
-
* `untokened` counts runs whose ref carries no round token — a pre- round, or one submitted by
|
|
308
|
+
* `untokened` counts runs whose ref carries no round token — a pre-change round, or one submitted by
|
|
309
309
|
* hand. They belong to no nameable round, and saying how many there are is the difference between
|
|
310
310
|
* "these are all the rounds" and "these are the rounds I could name".
|
|
311
311
|
*/
|
package/driver/effort-model.mjs
CHANGED
|
@@ -223,7 +223,7 @@ export const costBand = (i) => Math.max(1, Math.min(5, Math.ceil(effortUnits(i)
|
|
|
223
223
|
* WHAT THIS REPLACED, and why a constant beat a model. The old quote was a base plus one adder per lane:
|
|
224
224
|
* 1.5h, +0.5 for case law, +0.5 for a native-language lane, +0.5 for a single territory. It missed the
|
|
225
225
|
* actual wall by +66%, +82% and −22% on three consecutive delivered runs, in BOTH directions, on one
|
|
226
|
-
* engine build in one night (
|
|
226
|
+
* engine build in one night (the table). Every wall I could find from either source, eight runs:
|
|
227
227
|
*
|
|
228
228
|
* quoted 1.5h ×6 → actual 2.23 2.28 2.38 2.40 2.49 2.49
|
|
229
229
|
* quoted 3.0h ×1 → actual 2.33 (the run with the MOST lanes came in SHORTER than five others)
|
|
@@ -246,7 +246,7 @@ export const TURNAROUND_QUOTE = Object.freeze({
|
|
|
246
246
|
clearance: Object.freeze({ lowHours: 1.5, highHours: 2.5 }),
|
|
247
247
|
// — OWNER RULING: a knockout quotes 5-10 MINUTES, a range, not a flat figure.
|
|
248
248
|
//
|
|
249
|
-
// The flat 0.25 came from
|
|
249
|
+
// The flat 0.25 came from the "no compute, just say it, keep it simple", and that ruling is
|
|
250
250
|
// untouched here: this is still one stated figure per pipeline with nothing computed from levers. What
|
|
251
251
|
// changed is the figure, and the shape of it.
|
|
252
252
|
//
|