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/driver/runner.mjs
CHANGED
|
@@ -23,13 +23,13 @@ import "./engine/mcp/http-dispatcher.mjs"; // side effect: raise undici header
|
|
|
23
23
|
import { readdirSync, renameSync, existsSync, mkdirSync, readFileSync, writeFileSync, appendFileSync, rmSync, statSync } from "node:fs";
|
|
24
24
|
import { join, dirname, basename } from "node:path";
|
|
25
25
|
import { driverDir, ensureDriverDir } from "../shared/driver-dir.mjs"; // — one definition of where `_driver/` is
|
|
26
|
-
// The queue's filename vocabulary, in ONE place —
|
|
26
|
+
// The queue's filename vocabulary, in ONE place — the rule, extended by to the prose-sidecar and
|
|
27
27
|
// claim-sidecar names, because a harness check retyped four of them from memory and false-alarmed on the
|
|
28
28
|
// other nine. Behaviour here is unchanged: the same object and the same three suffixes, sourced.
|
|
29
29
|
import { isLiveQueueMarker, PROSE_PARTS, CLAIM_SIDECAR_SUFFIXES, TERMINAL_QUEUE_SUFFIXES } from "./queue-markers.mjs";
|
|
30
30
|
import { matterLedgerPath } from "./usage-ledger.mjs"; // ONE ledger-path calculation, shared with the portal pre-check
|
|
31
|
-
import { orderTimeRefusal } from "./run-requirements.mjs"; //
|
|
32
|
-
import { unitEnvPath } from "../shared/env-local.mjs"; //
|
|
31
|
+
import { orderTimeRefusal } from "./run-requirements.mjs"; // one authority for what a run needs, and when it is asked for
|
|
32
|
+
import { unitEnvPath } from "../shared/env-local.mjs"; // the file the units read, named by its one author
|
|
33
33
|
import { fileURLToPath } from "node:url";
|
|
34
34
|
import { config, preflightDeploymentUrls } from "./driver.config.mjs";
|
|
35
35
|
import { deriveSlug, todayISO, mintFreshCodename } from "./phase0.mjs";
|
|
@@ -136,7 +136,7 @@ function matterSignature(job, { product = null } = {}) {
|
|
|
136
136
|
const base = `${forwarder}|${mark}|${classes}|${customer}|${ref}`;
|
|
137
137
|
// Product dimension. ONE product adds nothing to the string, and it has to be one or every legacy
|
|
138
138
|
// ledger row would stop colliding with its own re-send: the pre-spine signature had no suffix at all,
|
|
139
|
-
// and the level that ran then was `
|
|
139
|
+
// and the level that ran then was `clearotron`. That level's SUCCESSOR is the Global preliminary search —
|
|
140
140
|
// the clearance a request with nothing named resolves to — so it is the one that stays silent, and
|
|
141
141
|
// `sigLevel`'s default reads a suffixless row as it. The key name stays `level:` for the same reason:
|
|
142
142
|
// it is a string already written into every ledger on disk.
|
|
@@ -342,7 +342,7 @@ async function intakeNotify(agentId, base, job, v) {
|
|
|
342
342
|
const what = v?.classify === "clarify"
|
|
343
343
|
? `needs clarification before it can run: ${v.errors.join("; ")}`
|
|
344
344
|
: `was rejected at intake: ${(v?.errors ?? ["unparseable job file"]).join("; ")}`;
|
|
345
|
-
const text = `⚠️
|
|
345
|
+
const text = `⚠️ Clearotron request "${mark}" ${what}. Nothing has been searched or delivered. ` +
|
|
346
346
|
`Job parked as ${base}.failed in the ${agentId} queue.`;
|
|
347
347
|
const p = writeOutboxPacket(`intake-${base}.failed`, {
|
|
348
348
|
kind: "intake-rejected", classify: v?.classify ?? "reject", base, agent: agentId,
|
|
@@ -381,7 +381,7 @@ function cleanupClaimSidecars(procPath) {
|
|
|
381
381
|
* Returns true when this call moved the marker, false when it was already gone. Any other error still
|
|
382
382
|
* throws: a permissions failure or a full disk is not a sibling.
|
|
383
383
|
*/
|
|
384
|
-
export function retireMarker(procPath, destPath, what = "") { // exported for
|
|
384
|
+
export function retireMarker(procPath, destPath, what = "") { // exported for the honesty test
|
|
385
385
|
try { renameSync(procPath, destPath); return true; }
|
|
386
386
|
catch (e) {
|
|
387
387
|
if (e?.code !== "ENOENT") throw e;
|
|
@@ -389,7 +389,7 @@ export function retireMarker(procPath, destPath, what = "") { // exported for
|
|
|
389
389
|
// <dest> is on disk. On this branch the rename did NOT happen, so <dest> was never created by this
|
|
390
390
|
// call, and the parenthetical named the outcome the caller intended rather than the one an operator
|
|
391
391
|
// would find. It is the single line an operator reads to discover where a job went, and it was
|
|
392
|
-
// pointing at a file that is not there. The reproduction (
|
|
392
|
+
// pointing at a file that is not there. The reproduction (PR) ends with the queue dir
|
|
393
393
|
// holding `job-race.processing` and `job-race.processing.pid` and NO `.json` at all, under a log
|
|
394
394
|
// line that said the orphan had been returned to the queue.
|
|
395
395
|
note(`[runner] ${basename(procPath)} was already retired by another runner — this call did NOT create ${basename(destPath)} (it wanted: ${what || "retire the marker"}); the marker is in whatever state that runner left it`);
|
|
@@ -433,13 +433,13 @@ export function retireMarker(procPath, destPath, what = "") { // exported for
|
|
|
433
433
|
* marker; the argument holds only because no `<base>.json` exists while we hold the lock (both enqueue
|
|
434
434
|
* doors refuse an id whose `.json` or `.processing` is already present, and this call is the one about
|
|
435
435
|
* to create it). The residual — a fresh enqueue of the SAME id landing between the two renames — is the
|
|
436
|
-
* window
|
|
436
|
+
* window the claim lock and `takeoverClaim` already carry, unchanged here. At a call site where a
|
|
437
437
|
* `<base>.json` CAN coexist with the marker, that argument does not transfer.
|
|
438
438
|
*
|
|
439
439
|
* Returns true when this call moved the marker to `destPath`. False means the claim was not ours to
|
|
440
440
|
* retire — and that nothing on disk was touched.
|
|
441
441
|
*/
|
|
442
|
-
export function retireClaimAndSweep(procPath, destPath, what = "", { token = claimToken() } = {}) { // exported for
|
|
442
|
+
export function retireClaimAndSweep(procPath, destPath, what = "", { token = claimToken() } = {}) { // exported for the race test
|
|
443
443
|
const lockPath = `${procPath}.claimed-${token}`;
|
|
444
444
|
try { renameSync(procPath, lockPath); }
|
|
445
445
|
catch (e) {
|
|
@@ -482,7 +482,7 @@ export function retireClaimAndSweep(procPath, destPath, what = "", { token = cla
|
|
|
482
482
|
* RE-ASSEMBLED from. It is the one deletion that outlives every marker state: the winner's job — a
|
|
483
483
|
* resume, or a hand-back to `.json` — then cannot be assembled at all.
|
|
484
484
|
* - `<base>.done.result` / `<base>.failed.result` asserts a terminal that is not on disk. That is
|
|
485
|
-
*
|
|
485
|
+
* That defect exactly (a line naming the outcome the caller WANTED, not the one an operator would
|
|
486
486
|
* find), one call below the fix for it.
|
|
487
487
|
* - `dropMatter` marks the matter ledger row `failed`, and `findDuplicateMatter` skips failed rows —
|
|
488
488
|
* so it re-opens the dedup gate for a matter the winner may be mid-resume, and the ~$40 duplicate
|
|
@@ -578,7 +578,7 @@ async function failAtIntake(procPath, qdir, base, agentId, job, v, reasons) {
|
|
|
578
578
|
// outcome string for the .reason file.
|
|
579
579
|
async function duplicateNotify(agentId, base, job, prior = null, sig = null) {
|
|
580
580
|
const mark = job?.markName ?? job?.name ?? job?.marks?.[0]?.name ?? base;
|
|
581
|
-
// ──
|
|
581
|
+
// ── A REFUSAL DELIVERED AS SILENCE IS INDISTINGUISHABLE FROM A LOST JOB ────────
|
|
582
582
|
//
|
|
583
583
|
// The observable outcome of a dedup park was an empty queue and no run, which is exactly what an
|
|
584
584
|
// enqueue that vanished looks like — and the two want completely different next actions. That got
|
|
@@ -598,7 +598,7 @@ async function duplicateNotify(agentId, base, job, prior = null, sig = null) {
|
|
|
598
598
|
const which = prior?.msgId
|
|
599
599
|
? ` The run already under way was submitted as ${prior.msgId}${when ? ` at ${when}` : ""} — that is the one that will deliver.`
|
|
600
600
|
: " The earlier run will deliver.";
|
|
601
|
-
const text = `⚠️
|
|
601
|
+
const text = `⚠️ Clearotron request "${mark}" matches a matter already in progress or just delivered, so it was `
|
|
602
602
|
+ `NOT run — a second search would spend twice for one answer.${which}`
|
|
603
603
|
+ ` If you genuinely need a fresh run of the same matter, re-submit it with dupOverride (\`--dup-override\` on the`
|
|
604
604
|
+ ` command line) and it will go through.`;
|
|
@@ -631,7 +631,7 @@ async function parkDuplicate(procPath, qdir, base, agentId, job, prior, sig) {
|
|
|
631
631
|
const conv = String(job.conversationId ?? "").trim();
|
|
632
632
|
const matchedBy = prior.conversationId && prior.conversationId === conv ? "thread (conversationId)" : "matter signature";
|
|
633
633
|
const reason = [
|
|
634
|
-
`duplicate
|
|
634
|
+
`duplicate clearotron — not run (a second search for the same matter)`,
|
|
635
635
|
`matched by: ${matchedBy}`,
|
|
636
636
|
`matter: ${sig}`,
|
|
637
637
|
`conversationId: ${conv || "-"}`,
|
|
@@ -666,7 +666,7 @@ function preRunFailNotify(agentId, base, job, reason) {
|
|
|
666
666
|
// terminalReasonFields `reason`, so this cut is a no-op today — which is exactly why it survived: a
|
|
667
667
|
// latent second cap, unmarked, waiting for the next caller to pass a raw reason. It collapses and
|
|
668
668
|
// trims identically, so this is the same string with the cut made visible when there is one.
|
|
669
|
-
const text = `❌
|
|
669
|
+
const text = `❌ Clearotron request "${mark}" FAILED before the run could start: ${terminalReasonFields(reason).reason} — ` +
|
|
670
670
|
`nothing has been searched or delivered. Job parked as ${base}.failed in the ${agentId} queue.`;
|
|
671
671
|
// `intake-${base}.` PREFIX, not a third scheme: scripts/e2e.mjs's outboxPackets matches by runId
|
|
672
672
|
// first and by that prefix second, so a name outside it is a notice the harness reports as
|
|
@@ -716,7 +716,7 @@ async function backstopFailureNotice({ res, job, agentId, base, codename, studio
|
|
|
716
716
|
shortReason, reasonVerbatim: reason.slice(0, 1000), whatsappTo: AGENT_WHATSAPP[agentId] ?? null,
|
|
717
717
|
});
|
|
718
718
|
// same per-send invariant as the pipeline's failure path: a fresh notice supersedes an older .sent
|
|
719
|
-
// and its per-channel receipts (B4 — stale receipts would make
|
|
719
|
+
// and its per-channel receipts (B4 — stale receipts would make clearotron-deliver skip this notice)
|
|
720
720
|
try { rmSync(join(owned.dir, ".sent"), { force: true }); } catch { /* none */ }
|
|
721
721
|
try { rmSync(driverDir(owned.dir, "send-receipts.json"), { force: true }); } catch { /* none */ }
|
|
722
722
|
ensureDriverDir(owned.dir);
|
|
@@ -740,7 +740,7 @@ async function backstopFailureNotice({ res, job, agentId, base, codename, studio
|
|
|
740
740
|
// one-at-a-time so the dedup check+record stays race-free even while prior jobs' pipelines run concurrently
|
|
741
741
|
// (Phase-4). Returns the prepared {procPath, base, job} to execute, or null when the job was terminally
|
|
742
742
|
// parked/failed-at-intake, or the claim was lost.
|
|
743
|
-
// ──
|
|
743
|
+
// ── THE ORDER-TIME REFUSAL, AND WHY IT IS HERE ──────────────────────────────────
|
|
744
744
|
//
|
|
745
745
|
// A hosted install now STARTS with no register configured (owner ruling 2026-09-06: "someone can install
|
|
746
746
|
// and select key later so it should still start"). The protection that used to live in
|
|
@@ -849,7 +849,7 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
|
|
|
849
849
|
await failAtIntake(procPath, qdir, base, agentId, job, v, v.errors);
|
|
850
850
|
return null;
|
|
851
851
|
}
|
|
852
|
-
// ──
|
|
852
|
+
// ── IS THIS BOX CONFIGURED TO SEARCH AT ALL? See the header above claimAndPrep.
|
|
853
853
|
{
|
|
854
854
|
const refusal = orderTimeRefusal(process.env, await runTables(), { envFile: unitEnvPath() });
|
|
855
855
|
if (refusal) {
|
|
@@ -860,11 +860,11 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
|
|
|
860
860
|
}
|
|
861
861
|
}
|
|
862
862
|
// Search-depth spine — resolve WHICH product shape this job selects (job selector → project/customer
|
|
863
|
-
// default → house
|
|
863
|
+
// default → house clearotron), then gate on what this deployment can actually run. A selection that cannot
|
|
864
864
|
// run here CLARIFIES loudly (parked + requester notified) — it must never silently run as a different-
|
|
865
865
|
// priced product, and never silently drop. Fail-open discipline (review 2026-07-17): infra trouble may
|
|
866
866
|
// NO FAIL-OPEN LEFT ON THIS PATH, and its removal is the point. It used to fall back to the literal
|
|
867
|
-
// level `
|
|
867
|
+
// level `clearotron` when resolution errored and the job "provably" wanted a plain clearance — but `clearotron`
|
|
868
868
|
// named THREE products depending on where it pointed, so the fallback was a guess wearing a level key:
|
|
869
869
|
// an account whose defaults hold one country would have run a Full country search, case law and all,
|
|
870
870
|
// off a config read that failed. Under the offering the product is a function of the scope, and a scope
|
|
@@ -1027,7 +1027,7 @@ async function claimAndPrep(jsonFile, qdir, agentId) {
|
|
|
1027
1027
|
// result the whole time and the marker threw it away.
|
|
1028
1028
|
//
|
|
1029
1029
|
// WHAT THIS DOES NOT DO: invent a cause. Neither branch classifies anything; each states which park
|
|
1030
|
-
// fired and what its clock means.
|
|
1030
|
+
// fired and what its clock means. That damage was a record that could not be contradicted from the
|
|
1031
1031
|
// artifacts, so the fix is not a better guess — it is saying less, and saying which.
|
|
1032
1032
|
export function parkCause(res = {}) {
|
|
1033
1033
|
const RESOLVED_BY = "a live retry — the stored time is a hint about when to look, not the authority on "
|
|
@@ -1182,8 +1182,8 @@ async function runPrepared({ procPath, base, job }, qdir, agentId, resumeMeta =
|
|
|
1182
1182
|
//
|
|
1183
1183
|
// The pipeline already made this distinction where it writes its own sentinel — "only the recovery
|
|
1184
1184
|
// sentinel carried a discriminator … the 2026-07-28 postmortem misread: a recovery park diagnosed
|
|
1185
|
-
// as a rate-limit park". The queue-side marker never got it. Same shape as
|
|
1186
|
-
// reaching two writers and not four, and
|
|
1185
|
+
// as a rate-limit park". The queue-side marker never got it. Same shape as the terminal fields
|
|
1186
|
+
// reaching two writers and not four, and the stamp reaching the audit path and not the rebuild.
|
|
1187
1187
|
...parkCause(res),
|
|
1188
1188
|
});
|
|
1189
1189
|
note(`[runner] ${base} → POSTPONED (${parkCause(res).parkKind}; retries at the earlier of ${res.resetsAt ?? "its due time"} and its next probe — no hand-edit needed if it clears early)`);
|
package/driver/scope-rules.mjs
CHANGED
|
@@ -113,7 +113,7 @@ export function checkClearanceScopeRules({ job = null, profile = null, resolved
|
|
|
113
113
|
// request resolves to no territory" would be a claim about a scope nobody saw. But when the request —
|
|
114
114
|
// or the saved search it names — DOES name territories, the profile is irrelevant to the count and the
|
|
115
115
|
// rules still bite. Skipping them there is how a roster-blind deployment (profile_key_unknown → the
|
|
116
|
-
// fail-open to
|
|
116
|
+
// fail-open to clearotron) would admit a three-country deep dive at the wall itself (review 2026-07-27).
|
|
117
117
|
if (!profileReadable && !scope.length) return { errors, warnings };
|
|
118
118
|
// Quoted AS WRITTEN, worldwide tokens dropped (a mode is not a place — territory-tiers.mjs answers
|
|
119
119
|
// which entries those are, so this module and the door cannot disagree about the spelling of
|
package/driver/search-policy.mjs
CHANGED
|
@@ -351,7 +351,7 @@ export function reportIdentityFor(levelOrPolicy) {
|
|
|
351
351
|
|
|
352
352
|
/** The product's coverage note for the report masthead (charter ruling 1, 2026-07-30: what was bought
|
|
353
353
|
* must be VISIBLY clear on the page — a reader must never confuse "the same section" in two different
|
|
354
|
-
* searches). One plain sentence, NAME-LED per the ruling (match
|
|
354
|
+
* searches). One plain sentence, NAME-LED per the ruling (match the registry-name pills: the
|
|
355
355
|
* product's name leads, never a rung on our ladder), stating what THIS search covers and the material
|
|
356
356
|
* thing it does not. The name comes from the registry join (reportIdentityFor — today's name for what
|
|
357
357
|
* ran, exactly the doctrine); the coverage clauses come from the run's own frozen COMPONENTS
|
|
@@ -678,7 +678,7 @@ export function productAvailability(policy, { built = BUILT, registerCanCount =
|
|
|
678
678
|
*/
|
|
679
679
|
export const UNAVAILABLE_NOTE = {
|
|
680
680
|
unbuilt: "Not part of the current release.",
|
|
681
|
-
// `demo` IS DELETED FROM THIS MAP (
|
|
681
|
+
// `demo` IS DELETED FROM THIS MAP (owner ruling 2026-08-31 14:47), and
|
|
682
682
|
// deleting it is what makes the reversal structural rather than a filter somebody can undo by
|
|
683
683
|
// accident. Every client-facing surface renders a product's refusal as `UNAVAILABLE_NOTE[cause]`;
|
|
684
684
|
// while a sentence sat here for a demo, the greyed control was one `return "demo"` away from coming
|
|
@@ -692,7 +692,7 @@ export const UNAVAILABLE_NOTE = {
|
|
|
692
692
|
// a baked-in provider name, no CLEAROTRON_* string in scope here, and it says the one thing a reader can
|
|
693
693
|
// act on — this is a coverage limit, so a newer version will not fix it.
|
|
694
694
|
//
|
|
695
|
-
// `register-not-worldwide` IS DELETED FROM THIS MAP (
|
|
695
|
+
// `register-not-worldwide` IS DELETED FROM THIS MAP (owner ruling
|
|
696
696
|
// 2026-08-31), and deleting it is what makes the ruling structural rather than a filter somebody can
|
|
697
697
|
// reverse by accident. Every client-facing surface renders a product's refusal as
|
|
698
698
|
// `UNAVAILABLE_NOTE[cause]`; while a sentence sat here for that cause, the ruling held only as long as
|
|
@@ -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
|
// skeptic-search.mjs — the skeptic's SANCTIONED READ SURFACE: literal substring search over the run's
|
|
4
|
-
// own artifact tree.
|
|
4
|
+
// own artifact tree. That ratification hold, unlock path 1.
|
|
5
5
|
//
|
|
6
6
|
// ── WHAT THIS REPLACES, measured and nothing more ───────────────────────────────────────────────────
|
|
7
7
|
//
|
|
@@ -5,7 +5,7 @@ description: The frame-STARVED independent re-derivation for the v3 preliminary
|
|
|
5
5
|
|
|
6
6
|
## Purpose
|
|
7
7
|
|
|
8
|
-
Every other stage in a
|
|
8
|
+
Every other stage in a clearotron run reasons *inside* a frame that was set early (at `matter-frame` / `prelim-variants`): the variants to chase, the field that counts as on-field, the sources worth searching. Verification then runs *on* that frame — nothing tests the frame itself. When the frame is mis-scoped, the whole run inherits the miss and the skeptic, reasoning from the same frame, certifies it.
|
|
9
9
|
|
|
10
10
|
You are the antidote. You are **deliberately starved of the frame**: you receive only the raw instruction, exactly as the requester wrote it, and you re-derive the threat model **cold**. Because you never see the run's conclusions, you cannot anchor to them. Your output is later **diffed** against what the run actually scoped — the gaps in that diff are the omissions the frame missed.
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ cannot reach any other stage's context, because no stage shares one — and it i
|
|
|
17
17
|
arranges or can lose. Nothing here spawns a session; sequencing, fan-in and retries are the driver's.
|
|
18
18
|
|
|
19
19
|
The identical skill is also valid **inline** in ad-hoc chat when a conflict / confusability / enforcer
|
|
20
|
-
question arises outside a
|
|
20
|
+
question arises outside a clearotron run.
|
|
21
21
|
|
|
22
22
|
**Reads** — from the dispatch message (plain markdown, not JSON), for each finding to ground:
|
|
23
23
|
- the proposed mark and the conflicting mark / owner / entity,
|
|
@@ -46,7 +46,7 @@ Boards-of-Appeal decisions — no free API today). EUIPO *register* lookups are
|
|
|
46
46
|
|
|
47
47
|
Called by `prelim-search` after synthesis flags the risk-relevant findings (Step 4.5). Also triggers in
|
|
48
48
|
chat when the user raises a trademark conflict, likelihood-of-confusion, or enforcement-history question.
|
|
49
|
-
Gated and optional: if this skill is absent,
|
|
49
|
+
Gated and optional: if this skill is absent, clearotron skips Step 4.5 and delivers normally.
|
|
50
50
|
|
|
51
51
|
## Model
|
|
52
52
|
|
|
@@ -162,9 +162,14 @@ your job. These two fields are how what you concluded reaches the reader instead
|
|
|
162
162
|
every id against that store and refuses one it does not hold — so the report can state a filing's
|
|
163
163
|
source as a fact rather than as a word you typed about your own sourcing.
|
|
164
164
|
|
|
165
|
-
- **`registerReads`** — on the MARK. Rows of `{recordId, read}` for a filing you weighed that did
|
|
166
|
-
become a `findings[]` record. `read` is what you concluded about *that* filing: whether it bears
|
|
167
|
-
rating, and why. It prints on that filing's card.
|
|
165
|
+
- **`registerReads`** — on the MARK. Rows of `{recordId, read, band?}` for a filing you weighed that did
|
|
166
|
+
**not** become a `findings[]` record. `read` is what you concluded about *that* filing: whether it bears
|
|
167
|
+
on the rating, and why. It prints on that filing's card. `band` is **optional** and is how you rate that
|
|
168
|
+
filing on its own — in the framework's band words, the same vocabulary as the mark's rating. Send it
|
|
169
|
+
whenever you formed a view on the filing itself: a registered right is often the one hard legal fact on
|
|
170
|
+
the page, and with no band its card is the only one carrying no rating while softer uses around it carry
|
|
171
|
+
one, which reads as though the registration mattered least. Omit it and the read still prints, claiming
|
|
172
|
+
no rating.
|
|
168
173
|
- **`weighedFilings`** — on a FINDING. The `recordId`s whose evidence your reasoning for that conflict
|
|
169
174
|
actually used. The report derives the finding's source labelling from this, so list one only if you
|
|
170
175
|
reasoned from it.
|
|
@@ -205,7 +210,8 @@ line, which describes the card and claims nothing about the rating. So:
|
|
|
205
210
|
"classesDriving": [8], "bullets": ["..."], "purpleNotes": ["..."],
|
|
206
211
|
"registerEstimate": "...", "parodyNote": null, "crowdedField": false,
|
|
207
212
|
"registerReads": [ { "recordId": "<verbatim from the filings you were given>",
|
|
208
|
-
"read": "<what you concluded about THAT filing>"
|
|
213
|
+
"read": "<what you concluded about THAT filing>",
|
|
214
|
+
"band": "<OPTIONAL — your rating of THAT filing, in the ladder's words>" } ],
|
|
209
215
|
"basis": "<ONE sentence: why this band, for this name, in these classes>",
|
|
210
216
|
"factors": ["<2-4 load-bearing observations, one line each>"],
|
|
211
217
|
"counterFactors": ["<1-3: what holds it at this band rather than the next>"],
|
|
@@ -26,7 +26,7 @@ description: Orchestrator for preliminary trademark search requests with registe
|
|
|
26
26
|
|
|
27
27
|
## Spawned session
|
|
28
28
|
|
|
29
|
-
This file is the **driver's compute orchestration spec** — it lives in `driver/skills/` (co-located with the driver) and is read by the pipeline stages, NOT by the integrator agent. The integrator's
|
|
29
|
+
This file is the **driver's compute orchestration spec** — it lives in `driver/skills/` (co-located with the driver) and is read by the pipeline stages, NOT by the integrator agent. The integrator's clearotron role is only **intake** (recognise the request, resolve the client, submit the job — `../../docs/INTAKE.md`) and **delivery** (courier the outbox packets — `../../docs/DELIVERY.md`); everything between is the driver's.
|
|
30
30
|
|
|
31
31
|
This workflow is run by the **deterministic driver** (`driver/`): an intake path (the `enqueue` CLI or the ops-MCP `start_run` tool) enqueues a job and the driver invokes each stage as a standalone compute turn (the `anthropic-agent` engine — a headless `claude -p` process off the gateway; sequencing, fan-in, gating, retries all in code). The judgment content + companion files below are what the stages read; the driver passes each stage its run-dir paths + the job context (email message id, forwarder, instructions, mark names).
|
|
32
32
|
|
|
@@ -58,7 +58,7 @@ reads only their compact findings files. This is the workflow's primary cost con
|
|
|
58
58
|
|
|
59
59
|
## Trigger
|
|
60
60
|
|
|
61
|
-
The requesting or reviewing lawyer forwards an email containing a **Trademark Search Request Form** to the intake mailbox. The forwarded email is typically structured as a request form ("Worldwide preliminary trademark search — TMP<n>", "Please run this through a preliminary search", or similar). When the request is recognisable as a
|
|
61
|
+
The requesting or reviewing lawyer forwards an email containing a **Trademark Search Request Form** to the intake mailbox. The forwarded email is typically structured as a request form ("Worldwide preliminary trademark search — TMP<n>", "Please run this through a preliminary search", or similar). When the request is recognisable as a clearotron search ask, this skill invokes.
|
|
62
62
|
|
|
63
63
|
## Register sources — the vendor is the source of truth; EUIPO is a free EU cross-check
|
|
64
64
|
|
|
@@ -20,7 +20,7 @@ The email body has these blocks, in this order:
|
|
|
20
20
|
|
|
21
21
|
> "Hi [first name from request],
|
|
22
22
|
>
|
|
23
|
-
>
|
|
23
|
+
> Clearotron for [mark name] complete — findings below; full audit Excel attached."
|
|
24
24
|
|
|
25
25
|
(For internal test runs, use "Hi [forwarder first name]" and add a one-line context note: "v[N] test run — replied to you only, not forwarded to [client].")
|
|
26
26
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prelim-variants
|
|
3
|
-
description: Shared strategy + variant generation for the v3 preliminary trademark search workflow. **Invoked exclusively by the `prelim-search` orchestrator** as the first stage of any v3
|
|
3
|
+
description: Shared strategy + variant generation for the v3 preliminary trademark search workflow. **Invoked exclusively by the `prelim-search` orchestrator** as the first stage of any v3 clearotron run — do not call directly. Classifies the proposed mark into one of six analytical archetypes, derives a risk theory from that classification, then generates the variant set whose axes are shaped by the archetype. Emits a markdown variant manifest consumed by both common-law (`prelim-common-law`) and register (`prelim-register`) execution skills.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Contents
|
|
@@ -27,7 +27,7 @@ Companion files:
|
|
|
27
27
|
|
|
28
28
|
## Trigger
|
|
29
29
|
|
|
30
|
-
Called by `prelim-search` at the start of any
|
|
30
|
+
Called by `prelim-search` at the start of any clearotron run. Not invoked directly.
|
|
31
31
|
|
|
32
32
|
## Model
|
|
33
33
|
|
package/driver/stage-context.mjs
CHANGED
|
@@ -92,7 +92,7 @@ const DECLARED_KIND = {
|
|
|
92
92
|
// — the placement form is CONTEXT, and deliberately NOT a freshness input. The driver writes it
|
|
93
93
|
// before dispatch and rewrites it after every judgement (the union runs on each one), so it is always
|
|
94
94
|
// newer than the md the seat just wrote — and adding it to stageInputs would make the largest stage in
|
|
95
|
-
// the run read stale on every resume and re-dispatch itself.
|
|
95
|
+
// the run read stale on every resume and re-dispatch itself. That ruling exactly: the fix is a
|
|
96
96
|
// second view, not a wider freshness list.
|
|
97
97
|
placementForm: ["driver-side",
|
|
98
98
|
"written by the driver before dispatch and re-unioned on every judgement; the prompt names the path because the seat writes its selections there"],
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// kept in its OWN table: the knockout lane is a different product shape (a 5–15 mark triage batch), and
|
|
6
6
|
// its stages must never leak into the clearance STAGE_ORDER. New-named stages get [] MCP tool groups
|
|
7
7
|
// automatically (gather-config prefix map — the matter-frame precedent), so frame/assess run lean.
|
|
8
|
-
import { existsSync } from "node:fs";
|
|
8
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { driverDir } from "../shared/driver-dir.mjs"; //
|
|
11
11
|
import { validators as koValidators } from "./verify-knockout.mjs";
|
|
@@ -19,6 +19,30 @@ export { kebab }; // one definition (search-policy) — re-exported for the la
|
|
|
19
19
|
const lines = (...xs) => xs.filter(Boolean).join("\n");
|
|
20
20
|
const reads = (skillReads) => `First, read and follow exactly: ${skillReads.join(", ")}.`;
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* One line per owner the driver looked up, for the assess dispatch (tracker issue 276).
|
|
24
|
+
*
|
|
25
|
+
* BOTH OUTCOMES ARE NAMED, and that is the point. A row whose search answered gets its payload path; a
|
|
26
|
+
* row whose search did NOT answer says so in the dispatch itself. Listing only the answered ones would
|
|
27
|
+
* leave the seat unable to tell "nobody searched this owner" from "the search found nothing", and those
|
|
28
|
+
* two license completely different reads — the second is a fact about the owner's visibility, the first
|
|
29
|
+
* is a gap the seat would fill by inferring from the name, which is the defect this whole issue is about.
|
|
30
|
+
*
|
|
31
|
+
* Returns [] when the lane did not run or the store is unreadable, so the dispatch simply omits the block
|
|
32
|
+
* rather than naming a path that is not there.
|
|
33
|
+
*/
|
|
34
|
+
export function ownerCheckLines(K) {
|
|
35
|
+
let doc = null;
|
|
36
|
+
try { doc = existsSync(K.ownerChecks) ? JSON.parse(readFileSync(K.ownerChecks, "utf8")) : null; } catch { doc = null; }
|
|
37
|
+
const checks = Array.isArray(doc?.checks) ? doc.checks : [];
|
|
38
|
+
return checks.map((c) => {
|
|
39
|
+
const who = `${c.owner} (proprietor of a filing for ${c.mark})`;
|
|
40
|
+
return c.ok && c.payloadFile
|
|
41
|
+
? `- ${who}: ${join(K.runDir, "research", c.payloadFile)}`
|
|
42
|
+
: `- ${who}: THE SEARCH RETURNED NOTHING. Say so in the read; do not infer the trade from the name.`;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
22
46
|
// ── Paths (knockout-own; beside the standard _driver sidecars) ───────────────────────────────────────
|
|
23
47
|
export function koPaths(runDir) {
|
|
24
48
|
return {
|
|
@@ -39,10 +63,15 @@ export function koPaths(runDir) {
|
|
|
39
63
|
// rows were left exactly as they were rather than gaining a matching marker: their shape is pinned
|
|
40
64
|
// byte-for-byte by register-count.test.mjs, and a discriminator only one side needs is enough.
|
|
41
65
|
registerRecords: driverDir(runDir, "register-records.json"),
|
|
66
|
+
// The scoped owner lookups this run owes its promoted filings, and their receipts (tracker issue
|
|
67
|
+
// 276). Both under `_driver/` because both are the DRIVER's own measurement of a call it made — the
|
|
68
|
+
// rule stated fourteen lines above. The seat reads the payloads under research/, never these.
|
|
69
|
+
ownerChecks: driverDir(runDir, "owner-checks.json"),
|
|
70
|
+
ownerCheckLedger: driverDir(runDir, "owner-check.jsonl"),
|
|
42
71
|
researchDir: join(runDir, "research"),
|
|
43
72
|
research: (markKebab) => join(runDir, "research", `${markKebab}.md`),
|
|
44
73
|
sweepLedger: driverDir(runDir, "knockout-sweep.jsonl"),
|
|
45
|
-
//
|
|
74
|
+
// That SHAPE, APPLIED: the WORK MOVES OUT OF THE GUARDED TREE — the hook is never weakened.
|
|
46
75
|
//
|
|
47
76
|
// This chunk is a MODEL OUTPUT, and it sat under `_driver/` in flat contradiction of the rule stated
|
|
48
77
|
// fourteen lines above: those files "are the driver's own measurements, NEVER a model's output". So
|
|
@@ -289,6 +318,28 @@ export const KO_STAGES = {
|
|
|
289
318
|
existsSync(K.registerRecords)
|
|
290
319
|
? `THE REGISTER FILINGS THIS RUN ALREADY FETCHED — ${K.registerRecords}. Real records, retrieved before you started: owner, jurisdiction, status, classes, dates. Read them and WEIGH them for the marks you are rating. A registration on this list is evidence about the name it names — treat its owner, its scope and its vulnerability the way the firm-wide reasoning tells you to (revocability above the lowest band; an enforcer's portfolio profile; a crowd as a mitigant under its gating precondition). What you may NOT do is describe the lane that fetched them — see the coverage rule below.`
|
|
291
320
|
: "",
|
|
321
|
+
// ── WHAT THE OWNER ACTUALLY SELLS, ALREADY SEARCHED (tracker issue 276) ────────────────────────
|
|
322
|
+
//
|
|
323
|
+
// The defect this closes is not that the seat lacked an instruction — it is that the seat had no
|
|
324
|
+
// way to know. It was handed an owner's NAME and its class numbers and nothing else, so a read
|
|
325
|
+
// about what that owner sells could only ever be an inference from the string. The driver now runs
|
|
326
|
+
// the scoped query before this stage and hands the answer over.
|
|
327
|
+
//
|
|
328
|
+
// ORDERED, NOT OFFERED. Naming a payload the seat may read is what produces "read and not applied,
|
|
329
|
+
// no refusal" — a rule that names a downstream effect rather than the field the seat writes. This
|
|
330
|
+
// names the field: the read on that filing's registerReads row.
|
|
331
|
+
//
|
|
332
|
+
// AND THE NEGATIVE CASE IS ORDERED TOO, because it is the one that produced the original defect:
|
|
333
|
+
// where the lookup did not answer, the honest sentence is that it did not, NOT a fresh inference
|
|
334
|
+
// from the owner's name dressed as a finding.
|
|
335
|
+
ownerCheckLines(K).length
|
|
336
|
+
? [
|
|
337
|
+
`WHAT THESE OWNERS ACTUALLY SELL — the driver ran ONE scoped web search per promoted filing's proprietor BEFORE this stage, so you are not guessing from the company name. Payloads:`,
|
|
338
|
+
...ownerCheckLines(K),
|
|
339
|
+
`USE THEM. When you write a registerReads row for one of these filings, your "read" must state what the owner actually sells ACCORDING TO THAT PAYLOAD, not what the company's name suggests and not what its class numbers imply. An owner's name is not evidence of its trade. A company name that reads as a line of business is a guess that happens to land sometimes, and the run where it lands is indistinguishable from the run where it does not — which is the reasoning this rule exists to stop.`,
|
|
340
|
+
`WHERE A PAYLOAD SAYS THE SEARCH FOUND NOTHING, say that plainly in the read — "a search for the proprietor's trade returned nothing" — and reason from the register record alone. Do NOT substitute an inference from the owner's name for the answer the search did not give. The report prints the source line itself, from the driver's own record of the call, so you never type a URL and never need to.`,
|
|
341
|
+
].join("\n")
|
|
342
|
+
: "",
|
|
292
343
|
// ── THE READ REACHES THE PAGE ────────────────────────────────────────────
|
|
293
344
|
//
|
|
294
345
|
// Until now nothing this seat concluded about an INDIVIDUAL filing could reach a reader. A filing
|
|
@@ -301,7 +352,7 @@ export const KO_STAGES = {
|
|
|
301
352
|
// a finding with no register evidence. Omitting either field is always safe: the card keeps its
|
|
302
353
|
// neutral line, which describes the card and is true.
|
|
303
354
|
existsSync(K.registerRecords)
|
|
304
|
-
? `WHEN YOU WEIGH ONE OF THOSE FILINGS, SAY SO BY ITS OWN ID — copy "recordId" verbatim from the file above. "registerReads" on the MARK: rows of {recordId, read} for a filing you weighed that did NOT become a findings[] record; "read" is what you concluded about THAT filing — whether it bears on the rating and why — and it prints on that filing's card in the reader's own report. "weighedFilings" on a FINDING: the recordIds whose evidence your reasoning for that conflict actually used, because the report derives that finding's source labelling from it. Both are optional and both are joined against the filings you were given, so an id we do not hold is refused by name. A filing you did not weigh simply gets no row: do not invent a read to fill one, and never write "not weighed" as a read.`
|
|
355
|
+
? `WHEN YOU WEIGH ONE OF THOSE FILINGS, SAY SO BY ITS OWN ID — copy "recordId" verbatim from the file above. "registerReads" on the MARK: rows of {recordId, read, band?} for a filing you weighed that did NOT become a findings[] record; "read" is what you concluded about THAT filing — whether it bears on the rating and why — and it prints on that filing's card in the reader's own report. "band" is OPTIONAL and is your rating of THAT filing on its own, in the framework's band words: send it whenever you formed a view on the filing itself, because a registered right left unbanded is the only card on the page with no rating while softer uses beside it carry one, which reads as though the registration mattered least. Omit it and your read still prints, claiming no rating. "weighedFilings" on a FINDING: the recordIds whose evidence your reasoning for that conflict actually used, because the report derives that finding's source labelling from it. Both are optional and both are joined against the filings you were given, so an id we do not hold is refused by name. A filing you did not weigh simply gets no row: do not invent a read to fill one, and never write "not weighed" as a read.`
|
|
305
356
|
: "",
|
|
306
357
|
`A DEGRADED mark's row must carry degraded:true and the purple "Manual verification recommended"`,
|
|
307
358
|
`note; a mark WITH a payload must never claim degraded (the validator joins both against the disk).`,
|
|
@@ -414,7 +465,7 @@ export const KO_STAGES = {
|
|
|
414
465
|
`IT IS THE SHORTER DIGEST ABOVE THE PER-MARK ASSESSMENTS, not a rival to them. A reader opens this`,
|
|
415
466
|
`to decide which name to read about; the mark's own page is where the full read lives. Keep it`,
|
|
416
467
|
`tighter than any one mark's assessment.`,
|
|
417
|
-
// ── THE RETURN IS A CALL, NOT A FILE (
|
|
468
|
+
// ── THE RETURN IS A CALL, NOT A FILE (item B) ────────────────────────────
|
|
418
469
|
//
|
|
419
470
|
// THE DISPATCH NAMES NO PATH, and on this stage that is not merely the house pattern. This seat
|
|
420
471
|
// spent 2026-08 writing its chunk through a Bash redirect because the Write tool was already
|