clearotron 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +105 -0
- package/CONTRIBUTING.md +3 -3
- package/INSTALL.md +57 -52
- package/README.md +2 -1
- package/bin/brandowner.mjs +1 -1
- package/bin/clearotron.mjs +4 -4
- package/bin/connect.mjs +2 -2
- package/bin/example.mjs +114 -37
- package/bin/grant.mjs +3 -3
- package/bin/key.mjs +1 -1
- package/bin/onboard.mjs +97 -119
- package/bin/start.mjs +29 -25
- package/bin/stop.mjs +65 -3
- package/bin/update.mjs +7 -7
- package/bin/uspto-sync.mjs +1 -1
- package/build-info.json +2 -2
- package/docs/DELIVERY.md +6 -2
- package/docs/RELEASES.md +6 -4
- package/docs/architecture/01-product-overview.md +2 -2
- package/docs/architecture/02-architecture.md +2 -2
- package/docs/architecture/04-configuration-reference.md +7 -4
- package/docs/architecture/05-config-governance.md +38 -5
- package/docs/architecture/06-operations-runbook.md +13 -1
- package/docs/architecture/09-security-and-data.md +1 -1
- package/docs/decisions/0004-documentation-structure.md +1 -1
- package/driver/CHANGELOG.md +95 -1
- package/driver/README.md +2 -2
- package/driver/ask-ledger.mjs +72 -4
- package/driver/authority-trees.mjs +1 -1
- package/driver/call-capture.mjs +1 -1
- package/driver/card-frame.mjs +1 -1
- package/driver/case-law-ledger.mjs +1 -1
- package/driver/claim-liveness.mjs +1 -1
- package/driver/common-law-receipts.mjs +1 -1
- package/driver/commonlaw-carry.mjs +1 -1
- package/driver/config-inventory.mjs +1 -1
- package/driver/connotation-search.mjs +12 -12
- package/driver/contract-audit.mjs +5 -5
- package/driver/contract-dictation-registry.mjs +4 -4
- package/driver/contract-dictation.mjs +2 -2
- package/driver/contract-e3-backlog.mjs +6 -6
- package/driver/contract-vocabulary.mjs +3 -3
- package/driver/corrections-feedforward.mjs +1 -1
- package/driver/coverage-form-io.mjs +2 -2
- package/driver/coverage-form.mjs +4 -4
- package/driver/coverage-ledger.mjs +3 -3
- package/driver/coverage-union.mjs +1 -1
- package/driver/declination-call.mjs +35 -3
- package/driver/declination-duty.mjs +1 -1
- package/driver/deliver-trigger.sh +3 -3
- package/driver/deploy-live-run-guard.mjs +6 -2
- package/driver/dev-portal.mjs +1 -1
- package/driver/disposition-call.mjs +4 -4
- package/driver/disposition-tool.mjs +4 -4
- package/driver/disposition-union.mjs +2 -2
- package/driver/doc-constants.mjs +1 -1
- package/driver/door-gates.mjs +2 -2
- package/driver/doubt-selection.mjs +2 -2
- package/driver/drainer-identity.mjs +1 -1
- package/driver/driver.config.mjs +63 -11
- package/driver/e2e-rounds.mjs +2 -2
- package/driver/effort-model.mjs +2 -2
- package/driver/engine/anthropic-agent.mjs +24 -24
- package/driver/engine/auth.mjs +1 -1
- package/driver/engine/common.mjs +1 -1
- package/driver/engine/deny-authority-write.mjs +1 -1
- package/driver/engine/jx-turn.mjs +1 -1
- package/driver/engine/mcp/clarivate-server.mjs +1 -1
- package/driver/engine/mcp/corsearch-server.mjs +1 -1
- package/driver/engine/mcp/declination-server.mjs +1 -1
- package/driver/engine/mcp/dispositions-server.mjs +1 -1
- package/driver/engine/mcp/euipo-server.mjs +1 -1
- package/driver/engine/mcp/fetch-server.mjs +1 -1
- package/driver/engine/mcp/free-tier-server.mjs +2 -2
- package/driver/engine/mcp/gather-config.mjs +11 -11
- package/driver/engine/mcp/perplexity-server.mjs +1 -1
- package/driver/engine/mcp/recording-server.mjs +8 -4
- package/driver/engine/mcp/signa-server.mjs +1 -1
- package/driver/engine/mcp/uspto-local-server.mjs +1 -1
- package/driver/engine/openai-agent.mjs +2 -2
- package/driver/engine-build.mjs +2 -2
- package/driver/enqueue-schema.mjs +2 -2
- package/driver/enqueue.mjs +1 -1
- package/driver/envelope-settle.mjs +1 -1
- package/driver/evidence-claim-invariant.mjs +2 -2
- package/driver/findings-model.mjs +8 -8
- package/driver/floor-duty.mjs +1 -1
- package/driver/form-neighbourhood.mjs +1 -1
- package/driver/framework.mjs +1 -1
- package/driver/gateway.mjs +28 -23
- package/driver/grounds-grammar.mjs +1 -1
- package/driver/hit-list.mjs +1 -1
- package/driver/jurisdiction-systems.mjs +1 -1
- package/driver/jx-lanes.mjs +1 -1
- package/driver/jx-units.mjs +1 -1
- package/driver/jx.mjs +3 -3
- package/driver/knockout-assess-record.mjs +5 -1
- package/driver/narrative-refutation-record.mjs +3 -3
- package/driver/numeric-setting.mjs +1 -1
- package/driver/owner-use-check.mjs +184 -0
- package/driver/package.json +2 -2
- package/driver/phase0.mjs +1 -1
- package/driver/pipeline-knockout.mjs +52 -4
- package/driver/pipeline.mjs +215 -63
- package/driver/placement-diff.mjs +2 -2
- package/driver/placement-form.mjs +4 -4
- package/driver/placement-union.mjs +1 -1
- package/driver/portal-acks.mjs +1 -1
- package/driver/portal-config-view.mjs +2 -2
- package/driver/portal-local-auth.mjs +1 -1
- package/driver/portal-report.mjs +6 -6
- package/driver/portal-service.mjs +15 -15
- package/driver/predelivery-lint.mjs +29 -11
- package/driver/prelim-variants-record.mjs +2 -2
- package/driver/profile-page.html +1 -1
- package/driver/profile-selection.mjs +1 -1
- package/driver/profile-service.mjs +2 -2
- package/driver/profiles.mjs +1 -1
- package/driver/progress.mjs +6 -6
- package/driver/provider-usage.mjs +1 -1
- package/driver/publish/demo-marking.mjs +1 -1
- package/driver/publish/index.mjs +47 -6
- package/driver/publish/knockout.mjs +36 -14
- package/driver/publish/parse.mjs +4 -4
- package/driver/publish/publish-inputs.mjs +2 -2
- package/driver/publish/register-presence.mjs +1 -1
- package/driver/publish/render-knockout.mjs +198 -31
- package/driver/publish/report-data.mjs +13 -3
- package/driver/publish/seed-pool.mjs +24 -9
- package/driver/queue-watch-probe.mjs +1 -1
- package/driver/queue-watch-verdict.mjs +1 -1
- package/driver/recall-reconciliation.mjs +1 -1
- package/driver/recipe-service.mjs +1 -1
- package/driver/record-carry.mjs +141 -2
- package/driver/recording-agreement.mjs +3 -3
- package/driver/reference-score.mjs +59 -9
- package/driver/reference-strip-signatures.mjs +68 -0
- package/driver/refusal-bound.mjs +3 -3
- package/driver/register-availability.mjs +2 -2
- package/driver/register-count.mjs +1 -1
- package/driver/register-digest-record.mjs +31 -1
- package/driver/register-grant-vocabulary.mjs +2 -2
- package/driver/register-plan.mjs +8 -8
- package/driver/register-records.mjs +2 -2
- package/driver/registry-fidelity.mjs +3 -3
- package/driver/remedy-accounting.mjs +1 -1
- package/driver/repair-composers.mjs +2 -2
- package/driver/repair-digest.mjs +3 -3
- package/driver/repairs.mjs +7 -7
- package/driver/replay-archive.mjs +2 -0
- package/driver/report-card-record.mjs +2 -2
- package/driver/result-noun-fields.mjs +10 -3
- package/driver/run-economics.mjs +2 -2
- package/driver/run-integrity.mjs +1 -1
- package/driver/runner.mjs +22 -22
- package/driver/scope-rules.mjs +1 -1
- package/driver/search-policy.mjs +3 -3
- package/driver/skeptic-search.mjs +1 -1
- package/driver/skills/blind-frame/SKILL.md +1 -1
- package/driver/skills/case-law-citation/SKILL.md +2 -2
- package/driver/skills/knockout-assess/SKILL.md +10 -4
- package/driver/skills/prelim-search/SKILL.md +2 -2
- package/driver/skills/prelim-search/template-formatting.md +1 -1
- package/driver/skills/prelim-search/templates/email/generic.md +1 -1
- package/driver/skills/prelim-search/worked-examples.md +1 -1
- package/driver/skills/prelim-variants/SKILL.md +2 -2
- package/driver/stage-context.mjs +1 -1
- package/driver/stages-knockout.mjs +55 -4
- package/driver/stages.mjs +97 -40
- package/driver/stray-artifacts.mjs +2 -2
- package/driver/suite-census.json +188 -44
- package/driver/synthesis-record.mjs +1 -1
- package/driver/systemd/clearotron-client-mcp.service +1 -1
- package/driver/systemd/clearotron-portal.service +1 -1
- package/driver/systemd/render-units.mjs +1 -1
- package/driver/tokens.mjs +1 -1
- package/driver/tool-calls.mjs +1 -1
- package/driver/turnaround-bands.mjs +1 -1
- package/driver/unit-file-drift.mjs +1 -1
- package/driver/unit-inventory.mjs +121 -61
- package/driver/unit-state-verdict.mjs +20 -12
- package/driver/verify-knockout.mjs +10 -2
- package/driver/verify.mjs +14 -14
- package/driver/whatif-memo-run.mjs +46 -5
- package/driver/whatif-queue.mjs +1 -1
- package/driver/whatif-worker.mjs +1 -1
- package/mcp-server/CHANGELOG.md +12 -0
- package/mcp-server/README.md +3 -3
- package/mcp-server/http-server.mjs +44 -1
- package/mcp-server/key-socket.mjs +184 -0
- package/mcp-server/lib/audit-view.mjs +69 -2
- package/mcp-server/lib/brief.mjs +15 -0
- package/mcp-server/lib/driver.mjs +7 -1
- package/mcp-server/lib/events.mjs +1 -1
- package/mcp-server/lib/http-handler.mjs +1 -1
- package/mcp-server/lib/knockout.mjs +435 -0
- package/mcp-server/lib/ops.mjs +4 -4
- package/mcp-server/lib/options.mjs +1 -1
- package/mcp-server/lib/plan.mjs +1 -1
- package/mcp-server/lib/runs.mjs +1 -1
- package/mcp-server/lib/scrub.mjs +1 -1
- package/mcp-server/lib/whatif.mjs +12 -3
- package/mcp-server/mint-token.mjs +1 -1
- package/mcp-server/package.json +2 -2
- package/mcp-server/server.mjs +76 -11
- package/package.json +3 -3
- package/portal-ui/package.json +1 -1
- package/providers/_shared/enumerate.mjs +1 -1
- package/providers/_shared/ledger-path.mjs +3 -3
- package/providers/_shared/ledger.mjs +1 -1
- package/providers/_shared/result-shape.mjs +3 -3
- package/providers/_shared/term-shape.mjs +1 -1
- package/providers/corsearch/src/core.js +1 -1
- package/providers/jx-subclass/BUILDING.md +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +12 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/providers/oauth-mcp-bridge/stdin-guard.mjs +2 -2
- package/scripts/README.md +1 -1
- package/scripts/added-reference-check.mjs +29 -1
- package/scripts/ai-page-render-check.mjs +2 -1
- package/scripts/authority-boundary-probe.mjs +1 -1
- package/scripts/backfill-started-at.mjs +1 -1
- package/scripts/citation-line-check.mjs +3 -3
- package/scripts/clearances-render-check.mjs +4 -3
- package/scripts/compare.mjs +2 -2
- package/scripts/composer-render-check.mjs +6 -6
- package/scripts/contract-dictation-scan.mjs +2 -2
- package/scripts/dead-names.mjs +1 -1
- package/scripts/drain-preflight.mjs +5 -5
- package/scripts/e2e-unread-terminals.mjs +1 -1
- package/scripts/e2e.mjs +8 -8
- package/scripts/env-audit.mjs +27 -7
- package/scripts/env-classify.mjs +139 -15
- package/scripts/freeze-example-run.mjs +3 -3
- package/scripts/head-arrived-gated.mjs +1 -1
- package/scripts/headless-page.mjs +274 -0
- package/scripts/home-render-check.mjs +3 -2
- package/scripts/live-surface-check.mjs +92 -19
- package/scripts/main-health.mjs +1 -1
- package/scripts/merge-presence-check.mjs +3 -3
- package/scripts/mint-reference-strip-backlog.mjs +41 -0
- package/scripts/mint-suite-census.mjs +6 -6
- package/scripts/nightly-notice.mjs +1 -1
- package/scripts/portal-lifecycle-check.mjs +3 -3
- package/scripts/reconcile-runs.mjs +1 -1
- package/scripts/release-await-cut.mjs +101 -11
- package/scripts/release-version-pr-checks.mjs +26 -2
- package/scripts/release-version.mjs +2 -2
- package/scripts/render-check.mjs +66 -7
- package/scripts/report-frame-check.mjs +12 -0
- package/scripts/report-screenshot.mjs +62 -2
- package/scripts/revisit-render-check.mjs +3 -2
- package/scripts/score.mjs +18 -4
- package/scripts/strip-tracker-citations.mjs +116 -0
- package/scripts/test-run.mjs +3 -3
- package/scripts/third-party-notices.mjs +3 -3
- package/scripts/travelling-predicates.mjs +3 -3
- package/scripts/unexecuted-asserts.mjs +2 -2
- package/scripts/verify-publishable.mjs +2 -2
- package/scripts/write-up-form-census.mjs +1 -1
- package/shared/access-audience.mjs +215 -0
- package/shared/brand.mjs +13 -13
- package/shared/citation-scan.mjs +1 -1
- package/shared/client-door.mjs +7 -7
- package/shared/driver-dir.mjs +1 -1
- package/shared/env-aliases.mjs +0 -48
- package/shared/env-local.mjs +1 -1
- package/shared/identifier-scan.mjs +3 -3
- package/shared/invocation.mjs +1 -1
- package/shared/names-in-force.mjs +2 -0
- package/shared/product-owned-names.mjs +1 -1
- package/shared/register-selection.mjs +1 -1
- package/shared/scope.mjs +5 -5
- package/shared/server-units.mjs +4 -4
- package/shared/store-in-repo.mjs +2 -2
- package/shared/suite-census.mjs +4 -4
- package/shared/tracked-files.mjs +31 -0
- package/shared/tty-style.mjs +1 -1
- package/shared/uspto-index-size.mjs +1 -1
- package/shared/vacuous-pass.mjs +1 -1
- package/skills/clearotron-account/SKILL.md +42 -13
- package/driver/systemd/prelim-driver.path +0 -69
- package/driver/systemd/prelim-driver.service +0 -86
- package/driver/systemd/prelim-driver.timer +0 -14
- package/driver/systemd/prelim-outbox.path +0 -27
- package/driver/systemd/prelim-outbox.service +0 -37
- package/driver/systemd/prelim-outbox.timer +0 -21
- package/node_modules/exceljs/README_zh.md +0 -2878
- package/node_modules/exceljs/dist/LICENSE +0 -22
- package/node_modules/exceljs/dist/es5/csv/csv.js +0 -182
- package/node_modules/exceljs/dist/es5/csv/csv.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js +0 -68
- package/node_modules/exceljs/dist/es5/csv/line-buffer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js +0 -110
- package/node_modules/exceljs/dist/es5/csv/stream-converter.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/anchor.js +0 -73
- package/node_modules/exceljs/dist/es5/doc/anchor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/cell.js +0 -961
- package/node_modules/exceljs/dist/es5/doc/cell.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/column.js +0 -274
- package/node_modules/exceljs/dist/es5/doc/column.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/data-validations.js +0 -18
- package/node_modules/exceljs/dist/es5/doc/data-validations.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/defined-names.js +0 -173
- package/node_modules/exceljs/dist/es5/doc/defined-names.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/enums.js +0 -49
- package/node_modules/exceljs/dist/es5/doc/enums.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/image.js +0 -69
- package/node_modules/exceljs/dist/es5/doc/image.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js +0 -16
- package/node_modules/exceljs/dist/es5/doc/modelcontainer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/note.js +0 -64
- package/node_modules/exceljs/dist/es5/doc/note.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/range.js +0 -229
- package/node_modules/exceljs/dist/es5/doc/range.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/row.js +0 -382
- package/node_modules/exceljs/dist/es5/doc/row.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/table.js +0 -443
- package/node_modules/exceljs/dist/es5/doc/table.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/workbook.js +0 -202
- package/node_modules/exceljs/dist/es5/doc/workbook.js.map +0 -1
- package/node_modules/exceljs/dist/es5/doc/worksheet.js +0 -900
- package/node_modules/exceljs/dist/es5/doc/worksheet.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.bare.js +0 -14
- package/node_modules/exceljs/dist/es5/exceljs.bare.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.browser.js +0 -36
- package/node_modules/exceljs/dist/es5/exceljs.browser.js.map +0 -1
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js +0 -15
- package/node_modules/exceljs/dist/es5/exceljs.nodejs.js.map +0 -1
- package/node_modules/exceljs/dist/es5/index.js +0 -15
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js +0 -90
- package/node_modules/exceljs/dist/es5/stream/xlsx/hyperlink-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-comments-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js +0 -94
- package/node_modules/exceljs/dist/es5/stream/xlsx/sheet-rels-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js +0 -362
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js +0 -347
- package/node_modules/exceljs/dist/es5/stream/xlsx/workbook-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js +0 -392
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-reader.js.map +0 -1
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js +0 -652
- package/node_modules/exceljs/dist/es5/stream/xlsx/worksheet-writer.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/auto-drain.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js +0 -15
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-decode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js +0 -18
- package/node_modules/exceljs/dist/es5/utils/browser-buffer-encode.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js +0 -149
- package/node_modules/exceljs/dist/es5/utils/cell-matrix.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/col-cache.js +0 -258
- package/node_modules/exceljs/dist/es5/utils/col-cache.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/copy-style.js +0 -43
- package/node_modules/exceljs/dist/es5/utils/copy-style.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/encryptor.js +0 -58
- package/node_modules/exceljs/dist/es5/utils/encryptor.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js +0 -46
- package/node_modules/exceljs/dist/es5/utils/iterate-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js +0 -47
- package/node_modules/exceljs/dist/es5/utils/parse-sax.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js +0 -42
- package/node_modules/exceljs/dist/es5/utils/shared-formula.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/shared-strings.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js +0 -66
- package/node_modules/exceljs/dist/es5/utils/stream-base64.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js +0 -343
- package/node_modules/exceljs/dist/es5/utils/stream-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-buf.js +0 -73
- package/node_modules/exceljs/dist/es5/utils/string-buf.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/string-builder.js +0 -32
- package/node_modules/exceljs/dist/es5/utils/string-builder.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js +0 -61
- package/node_modules/exceljs/dist/es5/utils/stuttered-pipe.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js +0 -23
- package/node_modules/exceljs/dist/es5/utils/typed-stack.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/under-dash.js +0 -168
- package/node_modules/exceljs/dist/es5/utils/under-dash.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/utils.js +0 -171
- package/node_modules/exceljs/dist/es5/utils/utils.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js +0 -151
- package/node_modules/exceljs/dist/es5/utils/xml-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js +0 -79
- package/node_modules/exceljs/dist/es5/utils/zip-stream.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js +0 -230
- package/node_modules/exceljs/dist/es5/xlsx/defaultnumformats.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js +0 -18
- package/node_modules/exceljs/dist/es5/xlsx/rel-type.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/base-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js +0 -85
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/defined-name-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/sheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js +0 -234
- package/node_modules/exceljs/dist/es5/xlsx/xform/book/workbook-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js +0 -103
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js +0 -76
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/comments-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +0 -97
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js +0 -107
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/composite-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js +0 -93
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/app-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js +0 -112
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/content-types-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js +0 -158
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/core-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js +0 -23
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationship-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js +0 -65
- package/node_modules/exceljs/dist/es5/xlsx/xform/core/relationships-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/blip-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js +0 -82
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +0 -63
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js +0 -67
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/pic-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/sp-pr.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +0 -62
- package/node_modules/exceljs/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js +0 -91
- package/node_modules/exceljs/dist/es5/xlsx/xform/list-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js +0 -451
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +0 -275
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +0 -25
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +0 -77
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +0 -71
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +0 -88
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +0 -38
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +0 -43
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +0 -22
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js +0 -78
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/col-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js +0 -247
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +0 -69
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js +0 -126
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +0 -50
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +0 -26
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js +0 -52
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/merges.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +0 -35
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +0 -24
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/picture-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js +0 -45
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +0 -37
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js +0 -128
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/row-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +0 -51
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +0 -83
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +0 -84
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +0 -190
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js +0 -32
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js +0 -513
- package/node_modules/exceljs/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js +0 -27
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/boolean-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js +0 -58
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/date-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/float-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/integer-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js +0 -47
- package/node_modules/exceljs/dist/es5/xlsx/xform/simple/string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js +0 -61
- package/node_modules/exceljs/dist/es5/xlsx/xform/static-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +0 -98
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js +0 -92
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js +0 -99
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js +0 -114
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js +0 -39
- package/node_modules/exceljs/dist/es5/xlsx/xform/strings/text-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js +0 -139
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/alignment-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js +0 -185
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/border-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js +0 -66
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/color-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js +0 -106
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/dxf-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js +0 -308
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/fill-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js +0 -175
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/font-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js +0 -59
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/numfmt-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js +0 -53
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/protection-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js +0 -118
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/style-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js +0 -612
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/styles-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js +0 -46
- package/node_modules/exceljs/dist/es5/xlsx/xform/style/underline-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js +0 -75
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js +0 -30
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js +0 -89
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js +0 -28
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/filter-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js +0 -42
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-column-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js +0 -40
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js +0 -123
- package/node_modules/exceljs/dist/es5/xlsx/xform/table/table-xform.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js +0 -697
- package/node_modules/exceljs/dist/es5/xlsx/xlsx.js.map +0 -1
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js +0 -5
- package/node_modules/exceljs/dist/es5/xlsx/xml/theme1.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.bare.js +0 -55253
- package/node_modules/exceljs/dist/exceljs.bare.js.map +0 -761
- package/node_modules/exceljs/dist/exceljs.bare.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.bare.min.js.map +0 -1
- package/node_modules/exceljs/dist/exceljs.js +0 -59900
- package/node_modules/exceljs/dist/exceljs.js.map +0 -1083
- package/node_modules/exceljs/dist/exceljs.min.js +0 -45
- package/node_modules/exceljs/dist/exceljs.min.js.map +0 -1
- package/scripts/deploy-test.sh +0 -309
package/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
|
//
|
|
@@ -102,7 +102,7 @@ const engineMaxBufferChars = () => Math.max(1024, Number(process.env.CLEAROTRON_
|
|
|
102
102
|
// `gemini-flash: "sonnet"`, `deepseek-v4-pro: "opus"` and `azure: "sonnet"`, and the fall-through below
|
|
103
103
|
// mapped ANY unrecognised alias to "sonnet". So `--model gemini` ran sonnet while the telemetry logged
|
|
104
104
|
// `google/gemini-3.1-pro-preview` (gateway stamps `resolveModel(<requested alias>)`), and every
|
|
105
|
-
// attribution downstream of that row — the A/B arm, the token rollup,
|
|
105
|
+
// attribution downstream of that row — the A/B arm, the token rollup, the billing classes — was
|
|
106
106
|
// keyed to a model that never ran. Nothing said so, because a substitution has no error to report.
|
|
107
107
|
//
|
|
108
108
|
// The four cross-provider aliases were already dead before this change: the model-failover chain was
|
|
@@ -237,7 +237,7 @@ export function absolutizeSkillRefs(message, skillsDir, resolve = null) {
|
|
|
237
237
|
//
|
|
238
238
|
// ANTHROPIC-ONLY, AND MEASURED RATHER THAN ASSUMED. The obvious next step is to apply the same rule to
|
|
239
239
|
// openai-agent's `--add-dir` (buildCodexArgs pushes the identical root), and it would accomplish nothing:
|
|
240
|
-
// that engine spawns with `cwd = resolveSpawnCwd({cwd, runDir})` — the RUN DIR (
|
|
240
|
+
// that engine spawns with `cwd = resolveSpawnCwd({cwd, runDir})` — the RUN DIR (deliberately) —
|
|
241
241
|
// under `--sandbox workspace-write`, which makes cwd a writable root on its own. Dropping the flag there
|
|
242
242
|
// would remove a grant the seat still holds by another door and let this comment claim an isolation the
|
|
243
243
|
// engine does not have. Codex-side isolation is a cwd question, and a separate decision.
|
|
@@ -377,7 +377,7 @@ export function writeBoundarySettings({ skillsRoots = [], profilesDir = null, ru
|
|
|
377
377
|
return JSON.stringify({
|
|
378
378
|
hooks: {
|
|
379
379
|
PreToolUse: [{
|
|
380
|
-
//
|
|
380
|
+
// Bash is in the matcher because seats have it and it walked past this hook entirely.
|
|
381
381
|
// What the Bash arm can and cannot do is stated at its declaration in deny-authority-write.mjs;
|
|
382
382
|
// it is a detector, and naming it here does not make it a boundary.
|
|
383
383
|
matcher: "Write|Edit|MultiEdit|NotebookEdit|Bash",
|
|
@@ -401,7 +401,7 @@ export function synthesizeEnvelope({ resultEvent, usage, killed }) {
|
|
|
401
401
|
|
|
402
402
|
export const anthropicAgentEngine = {
|
|
403
403
|
name: "anthropic-agent",
|
|
404
|
-
//
|
|
404
|
+
// WHAT THIS ENGINE GUARANTEES ABOUT SEAT WRITES, said out loud in the run record.
|
|
405
405
|
// `deny-authority-write.mjs` is a `claude -p` PreToolUse hook, so it refuses a seat's writes into the
|
|
406
406
|
// doctrine tree, the profile store and `<runDir>/_driver/` at the moment of the write. That is a real
|
|
407
407
|
// boundary and this engine has it.
|
|
@@ -409,7 +409,7 @@ export const anthropicAgentEngine = {
|
|
|
409
409
|
async runTurn({ message, model, thinking, timeoutSec, resumeRef, mcpConfig, allowedTools, cwd, skillsDir, skillsGrantRoots, profilesDir, resolveSkill, runDir, seatWrites = null, stallSec, progressFiles } = {}) {
|
|
410
410
|
if (!message) throw new Error("anthropic-agent.runTurn: message is required");
|
|
411
411
|
const { args, input, grantNote } = buildClaudeArgs({ message, model, thinking, resumeRef, mcpConfig, allowedTools, cwd, skillsDir, skillsGrantRoots, profilesDir, resolveSkill, runDir, seatWrites });
|
|
412
|
-
//
|
|
412
|
+
// the cross-check speaks. Driver stderr is what an operator reads, and it is where the other
|
|
413
413
|
// drift notices in this engine already land ([ledger], [env-aliases], [queue-watch]).
|
|
414
414
|
if (grantNote) process.stderr.write(`${grantNote}\n`);
|
|
415
415
|
const t0 = Date.now();
|
|
@@ -435,7 +435,7 @@ export const anthropicAgentEngine = {
|
|
|
435
435
|
// inheriting that would load the dev-assistant instructions into every stage (context pollution +
|
|
436
436
|
// cost). It also avoids the EACCES when the inherited cwd is unreadable by the runner's user.
|
|
437
437
|
//
|
|
438
|
-
//
|
|
438
|
+
// cwd is a granted WRITE root here (file tools are confined to cwd + --add-dir), so it is
|
|
439
439
|
// the run dir when there is one. See resolveSpawnCwd in common.mjs for why, and for what it deletes.
|
|
440
440
|
const spawnCwd = resolveSpawnCwd({ cwd, runDir });
|
|
441
441
|
// stdin is a PIPE (not "ignore"): the prompt rides stdin, not a `-p` argv element, so it is never
|
|
@@ -446,7 +446,7 @@ export const anthropicAgentEngine = {
|
|
|
446
446
|
// Detached makes claude its own process-group leader, so the watchdog's kills reach the whole tree.
|
|
447
447
|
try { child = spawn(claudeBin(), args, { stdio: ["pipe", "pipe", "pipe"], cwd: spawnCwd, env: spawnEnv(), detached: true }); }
|
|
448
448
|
catch (e) { return resolve(errResult(t0, e, resumeRef)); }
|
|
449
|
-
//
|
|
449
|
+
// THE SECOND SPAWN PATH, and it has to record too. This engine does not go
|
|
450
450
|
// through runStreamingChild; wiring one and assuming the other follows is the exact defect shape
|
|
451
451
|
// 2122 was raised on the same day (the demo banner reached the clearance renderer and not the
|
|
452
452
|
// knockout one). Best effort, never fatal.
|
|
@@ -525,7 +525,7 @@ export const anthropicAgentEngine = {
|
|
|
525
525
|
// (A repeat of an already-recorded path is NOT truncation — nothing is lost.)
|
|
526
526
|
const READS_CAP = 500;
|
|
527
527
|
let readsTruncated = false;
|
|
528
|
-
// ──
|
|
528
|
+
// ── THE TWO NUMBERS THAT MAKE A SLOW TURN A DIAGNOSIS RATHER THAN AN INFERENCE ────────
|
|
529
529
|
//
|
|
530
530
|
// `tokensPerSec` says so itself: "the denominator still contains the turn's own tool waits… it
|
|
531
531
|
// records the ratio; it does not diagnose it." Establishing that a slow stage was WAITING rather
|
|
@@ -543,7 +543,7 @@ export const anthropicAgentEngine = {
|
|
|
543
543
|
let toolCalls = 0;
|
|
544
544
|
let toolWaitMs = 0;
|
|
545
545
|
let toolAskedAt = null;
|
|
546
|
-
//
|
|
546
|
+
// WHAT THE WAIT IS MADE OF, keyed by the tool(s) that caused it.
|
|
547
547
|
//
|
|
548
548
|
// The total alone cannot answer the question it was collected for. "Exclude tool wait from the kill
|
|
549
549
|
// clock because a turn waiting on a tool is the harness working" is TRUE of `register_execute_plan`
|
|
@@ -554,7 +554,7 @@ export const anthropicAgentEngine = {
|
|
|
554
554
|
// sorted set joined by "+". Every millisecond is attributed exactly once and the values sum to
|
|
555
555
|
// `toolWaitMs` — a per-name split would double-count a concurrent ask and quietly break that identity.
|
|
556
556
|
let toolAskedNames = null;
|
|
557
|
-
//
|
|
557
|
+
// WHICH CHUNK an ask arrived in. Every line in one stdout chunk is parsed in
|
|
558
558
|
// one synchronous loop, so they all share a single Date.now(). If an ask and its result land in
|
|
559
559
|
// the SAME chunk, the parent was not running between them and the gap it measures is 0 — for a
|
|
560
560
|
// wait that really happened. Reproduced deterministically by blocking this process's event loop:
|
|
@@ -595,7 +595,7 @@ export const anthropicAgentEngine = {
|
|
|
595
595
|
const openAsks = []; // ask records still outstanding, oldest first
|
|
596
596
|
const askById = new Map(); // tool_use_id → its ask record
|
|
597
597
|
let periodStart = null; // when the current outstanding-SET period began
|
|
598
|
-
let periodChunk = null; // the chunk it began in —
|
|
598
|
+
let periodChunk = null; // the chunk it began in — the unmeasurable flag
|
|
599
599
|
let anonSeq = 0; // ids are on the wire, but never assume: synthesize if absent
|
|
600
600
|
const periodKey = () =>
|
|
601
601
|
[...new Set(openAsks.flatMap((r) => r.names))].sort().join("+");
|
|
@@ -709,7 +709,7 @@ export const anthropicAgentEngine = {
|
|
|
709
709
|
progress();
|
|
710
710
|
}
|
|
711
711
|
else if (ev.type === "user") {
|
|
712
|
-
//
|
|
712
|
+
// the result of the ask above. Only counted when an ask is outstanding, so a `user`
|
|
713
713
|
// event with no preceding tool_use adds nothing rather than charging the turn for a gap it
|
|
714
714
|
// never spent waiting.
|
|
715
715
|
// Which ask is this the result OF? The id on the wire answers it. Falling back to the
|
|
@@ -776,7 +776,7 @@ export const anthropicAgentEngine = {
|
|
|
776
776
|
const watchdog = setInterval(() => {
|
|
777
777
|
artifactProgress();
|
|
778
778
|
const now = Date.now();
|
|
779
|
-
//
|
|
779
|
+
// THE STARTUP DEBT. tracker issue 1692 widened the deadline below until the first byte but left this
|
|
780
780
|
// clock's ORIGIN at spawn, so the startup interval stayed on the meter: the moment the grace let
|
|
781
781
|
// go, progIdle already WAS the whole boot, and any NOPROG shorter than startup had expired before
|
|
782
782
|
// the child was observed at all. The kill then landed on the next tick, before the ask could reach
|
|
@@ -784,7 +784,7 @@ export const anthropicAgentEngine = {
|
|
|
784
784
|
// Releasing a clock is not starting one: the first byte is this clock's origin, not its green light.
|
|
785
785
|
const progFrom = firstOutputAt === null ? lastProgress : Math.max(lastProgress, firstOutputAt);
|
|
786
786
|
const idle = now - lastMove, progIdle = now - progFrom;
|
|
787
|
-
// ──
|
|
787
|
+
// ── STARTUP IS NEITHER SILENCE NOR WORK ──────────────────────────────────────────────
|
|
788
788
|
// Every clock here USED TO start at SPAWN, so until the child's first byte they were all timing
|
|
789
789
|
// process startup: an idle clock that had not yet seen silence, and an active clock that had not
|
|
790
790
|
// yet seen work. Past tense deliberately — tracker issue 1780 finished this, and the sentence stayed true of
|
|
@@ -800,7 +800,7 @@ export const anthropicAgentEngine = {
|
|
|
800
800
|
// kill it NOW, well below the wall, and record it as a STALL — never let the ceiling raise turn
|
|
801
801
|
// into extended stall burn, and never let this kill read as "the stage needed more time".
|
|
802
802
|
else if (progIdle >= (started ? NOPROG : Math.max(NOPROG, GRACE))) { stallKill = true; noProgressKill = true; killed = true; killTree(); }
|
|
803
|
-
// ──
|
|
803
|
+
// ── THE CEILING MEASURES ACTIVE TIME, NOT ELAPSED ────────────────────────────────────
|
|
804
804
|
//
|
|
805
805
|
// Owner ruling: "there isnt such thing as a hung model. it always delivers something or fails."
|
|
806
806
|
// So this ceiling exists for the harness's own failure modes, not to budget the model, and a turn
|
|
@@ -824,7 +824,7 @@ export const anthropicAgentEngine = {
|
|
|
824
824
|
// quantity: a long turn has three causes — tool latency, a generation stall, and sheer VOLUME
|
|
825
825
|
// (one healthy stage ran 40.9 minutes at a normal rate producing 186k tokens) — and nothing that
|
|
826
826
|
// keys on elapsed can tell them apart.
|
|
827
|
-
//
|
|
827
|
+
// measured from the FIRST BYTE, never from spawn. Startup is not active time either, and
|
|
828
828
|
// against a tight pin it was the whole budget — a 900ms spawn hit a 500ms ceiling having done
|
|
829
829
|
// nothing at all, and the turn died carrying `hardWall` with zero tool calls to explain it.
|
|
830
830
|
else if (started && activeElapsedMs({ wall: now - firstOutputAt, toolWaitMs, toolAskedAt, now }) >= hardMs) {
|
|
@@ -840,7 +840,7 @@ export const anthropicAgentEngine = {
|
|
|
840
840
|
child.stdout.on("data", (d) => {
|
|
841
841
|
if (settled || overflow) return;
|
|
842
842
|
if (firstOutputAt === null) firstOutputAt = Date.now(); // #1692 — the child has spoken; startup is over
|
|
843
|
-
chunkSeq += 1; //
|
|
843
|
+
chunkSeq += 1; // see toolAskedChunk
|
|
844
844
|
chunkBytes = d.length;
|
|
845
845
|
chunkGapMs = prevChunkAt === null ? 0 : Date.now() - prevChunkAt;
|
|
846
846
|
prevChunkAt = Date.now();
|
|
@@ -852,7 +852,7 @@ export const anthropicAgentEngine = {
|
|
|
852
852
|
});
|
|
853
853
|
child.stderr.on("data", (d) => {
|
|
854
854
|
if (settled || overflow) return;
|
|
855
|
-
//
|
|
855
|
+
// STDERR DOES NOT START THE CLOCKS, and this line used to. This engine's protocol is
|
|
856
856
|
// stream-json on STDOUT; stderr carries node warnings and CLI notices, which a child can emit
|
|
857
857
|
// before it has done anything at all. Treating one as "the child has spoken" ended the grace and
|
|
858
858
|
// — since tracker issue 1780, which made the first byte the progress clock's ORIGIN — started that clock too,
|
|
@@ -870,7 +870,7 @@ export const anthropicAgentEngine = {
|
|
|
870
870
|
child.on("error", (e) => { if (settled) return; settled = true; clearInterval(watchdog); resolve(errResult(t0, e, resumeRef)); });
|
|
871
871
|
child.on("close", (code) => settle(code));
|
|
872
872
|
function settle(code) {
|
|
873
|
-
//
|
|
873
|
+
// the turn is over; the record must not outlive it, and is cleared only if
|
|
874
874
|
// it still names THIS child.
|
|
875
875
|
clearEngineChild(runDir, child?.pid);
|
|
876
876
|
if (settled) return; settled = true;
|
|
@@ -889,7 +889,7 @@ export const anthropicAgentEngine = {
|
|
|
889
889
|
// defect from the inside.
|
|
890
890
|
const endedAt = Date.now();
|
|
891
891
|
const wall = (endedAt - t0) / 1000;
|
|
892
|
-
//
|
|
892
|
+
// THE TWO CLOCKS MUST TILE THE WALL, in every case including the one that matters.
|
|
893
893
|
//
|
|
894
894
|
// A turn killed mid-tool-call has an OPEN ask that `toolWaitMs` has not closed. Reporting the
|
|
895
895
|
// unclosed accumulator left `activeMs + toolWaitMs` short of the wall by exactly that gap — and
|
|
@@ -924,7 +924,7 @@ export const anthropicAgentEngine = {
|
|
|
924
924
|
const stderrOut = overflow
|
|
925
925
|
? (stderr + `\nanthropic-agent output overflow: stdout/stderr exceeded ${maxBuffer} chars — killed the tree and failed the turn (truncated tail never parsed)`)
|
|
926
926
|
: noProgressKill
|
|
927
|
-
//
|
|
927
|
+
// THE SPECIMEN RIDES THE FAILURE, because the broken state expires. This kill has
|
|
928
928
|
// twice reddened `main` from a test whose ANTI-VACUITY check failed — the turn died having
|
|
929
929
|
// opened no tool ask — and neither the box's ambient load nor a full-suite run reproduces
|
|
930
930
|
// it on demand. So the discriminating bit is recorded HERE, where the kill happens, rather
|
|
@@ -962,11 +962,11 @@ export const anthropicAgentEngine = {
|
|
|
962
962
|
// from this list is unreliable and the consumer must downgrade it to "not observed").
|
|
963
963
|
reads: [...reads], readsTruncated,
|
|
964
964
|
toolCalls, toolWaitMs: settledToolWaitMs, // #1111 — two integers, no content
|
|
965
|
-
//
|
|
965
|
+
// ms from spawn to the child's FIRST byte, or null when it never spoke. RECORDING
|
|
966
966
|
// ONLY: nothing branches on it. A recording field is protected by a test or by nothing, so
|
|
967
967
|
// engine.anthropic.test.mjs pins it — deleting it must red something.
|
|
968
968
|
firstByteMs: firstOutputAt === null ? null : Math.round(firstOutputAt - t0),
|
|
969
|
-
//
|
|
969
|
+
// WHICH CLOCK RAN OUT, and WHAT the wait was made of.
|
|
970
970
|
//
|
|
971
971
|
// The hard wall measures ELAPSED, and elapsed includes time the model spent waiting on tools
|
|
972
972
|
// rather than generating. A wall kill whose elapsed is mostly tool wait is a different event from
|
|
@@ -982,7 +982,7 @@ export const anthropicAgentEngine = {
|
|
|
982
982
|
// "this record predates the gauge".
|
|
983
983
|
activeMs: Math.max(0, Math.round(wall * 1000) - settledToolWaitMs),
|
|
984
984
|
toolWaitByTool: { ...toolWaitByTool },
|
|
985
|
-
//
|
|
985
|
+
// the asks whose wait this process COULD NOT MEASURE, because the ask and
|
|
986
986
|
// its result were delivered in one chunk. An ARRAY is a measurement (possibly `[]`: measured,
|
|
987
987
|
// nothing unmeasurable), following toolWaitByTool's own rule that absence and "cannot report"
|
|
988
988
|
// must not look alike. `toolWaitMs` and the per-tool split are untouched.
|
package/driver/engine/auth.mjs
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
// spelling list let the OpenAI half decide how an Anthropic run bills. deleted the old names, so
|
|
21
21
|
// there is one variable, only the selected engine is ever consulted, and the hazard has no route left.
|
|
22
22
|
//
|
|
23
|
-
// And deliberately written OUT at each site rather than through a helper:
|
|
23
|
+
// And deliberately written OUT at each site rather than through a helper: the guard in
|
|
24
24
|
// `env-governance.test.mjs` finds a product read by the literal `env.NAME`, so a helper taking the
|
|
25
25
|
// name as an argument makes both reads invisible to it — measured, it turned them harness-only and
|
|
26
26
|
// put both names on the "no longer read by product code" list. The repetition is what keeps them
|
package/driver/engine/common.mjs
CHANGED
|
@@ -157,7 +157,7 @@ export function runStreamingChild({
|
|
|
157
157
|
// timeout; NaN/≤0 clamps to 660s so the wall never silently disables. A non-positive or unparseable
|
|
158
158
|
// PIN falls through to that derivation for the same reason — a pin is an instrument, never an off
|
|
159
159
|
// switch. Without it the floor here is 61 SECONDS at the shortest, which is why this clock had no arm
|
|
160
|
-
// and why
|
|
160
|
+
// and why the grace never reached the line below: no test could drive it without sitting for a
|
|
161
161
|
// minute.
|
|
162
162
|
const pinnedHard = Number(process.env.CLEAROTRON_HARD_MS);
|
|
163
163
|
const hardMs = pinnedHard > 0 ? pinnedHard : (Number(timeoutSec) > 0 ? Number(timeoutSec) + 60 : 660) * 1000;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
//
|
|
11
11
|
// ── WHY A HOOK, AND NOT THE THING YOU WOULD TRY FIRST ────────────────────────────────────────────────
|
|
12
12
|
//
|
|
13
|
-
//
|
|
13
|
+
// That incident was a live clearance writing two files into the skills tree. The obvious reading is
|
|
14
14
|
// "a seat did something it should not". Reading the grant layer first says otherwise: `buildClaudeArgs`
|
|
15
15
|
// grants that tree with `--add-dir`, WHICH HAS NO READ-ONLY FORM, under `--permission-mode acceptEdits`
|
|
16
16
|
// which auto-approves Write/Edit so each stage can save its output without prompting. The tree was
|
|
@@ -78,7 +78,7 @@ export function readJxTuple(tuple, { vendor, authMode, engine }) {
|
|
|
78
78
|
const usage = u ? { input: u.input ?? 0, output: u.output ?? 0, cacheRead: u.cacheRead ?? 0,
|
|
79
79
|
cacheWrite: u.cacheWrite ?? 0, total: u.total ?? 0 }
|
|
80
80
|
: null;
|
|
81
|
-
// The model that actually served the turn, never the alias we asked for —
|
|
81
|
+
// The model that actually served the turn, never the alias we asked for — the criterion 4 is that
|
|
82
82
|
// the receipt names who did the native-language work, and an alias does not name anyone. Both adapters
|
|
83
83
|
// populate it (anthropic-agent from the assistant/init events, openai-agent from `ev.model`).
|
|
84
84
|
const model = tuple?.modelWire ?? null;
|
|
@@ -38,7 +38,7 @@ const API_KEY = process.env.CLARIVATE_API_KEY || "";
|
|
|
38
38
|
const BASE = process.env.CLARIVATE_API_BASE || DEFAULT_BASE;
|
|
39
39
|
const tctx = (kind) => ({
|
|
40
40
|
kind,
|
|
41
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
41
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
42
42
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
|
|
43
43
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
44
44
|
});
|
|
@@ -13,7 +13,7 @@ import { proposeSupplemental } from "./supplemental.mjs";
|
|
|
13
13
|
const COOKIE = process.env.CORSEARCH_SESSION_KEY || "";
|
|
14
14
|
const tctx = (kind) => ({
|
|
15
15
|
kind,
|
|
16
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
16
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
17
17
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "", // run session key — telemetry attribution
|
|
18
18
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
19
19
|
});
|
|
@@ -65,7 +65,7 @@ function loadDeclinationSpec(runDir) {
|
|
|
65
65
|
|
|
66
66
|
async function record_declination(params) {
|
|
67
67
|
// `CLEAROTRON_BAND_RUN_DIR` at CALL TIME, and there is no `run_dir` parameter — the run is not the seat's
|
|
68
|
-
// to name.
|
|
68
|
+
// to name. That lesson, where an invented fallback sat two lines under a promise never to guess.
|
|
69
69
|
const runDir = String(process.env.CLEAROTRON_BAND_RUN_DIR ?? "");
|
|
70
70
|
if (!runDir) {
|
|
71
71
|
return { error: "this server was started without a run — the driver wires it per run; there is no parameter for it and this tool never guesses one" };
|
|
@@ -66,7 +66,7 @@ import { MAX_ROWS_PER_CALL } from "../../disposition-call.mjs";
|
|
|
66
66
|
// can have. Here the serialization is ours, so the class is gone rather than caught.
|
|
67
67
|
//
|
|
68
68
|
// THE SPEC PATH IS THE SEAT'S ONLY PATH ARGUMENT, and it is the same driver-written file the grid tool
|
|
69
|
-
// was given.
|
|
69
|
+
// was given. That rule: the path is the DRIVER'S, taken from the spec it wrote. Two derivations of one
|
|
70
70
|
// filename is the drift that cost weeks.
|
|
71
71
|
async function record_dispositions(params) {
|
|
72
72
|
const { grid_spec_path, rows } = params ?? {};
|
|
@@ -46,7 +46,7 @@ const AUTH = {
|
|
|
46
46
|
};
|
|
47
47
|
const tctx = (kind) => ({
|
|
48
48
|
kind,
|
|
49
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
49
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
50
50
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "",
|
|
51
51
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
52
52
|
});
|
|
@@ -30,7 +30,7 @@ serve({
|
|
|
30
30
|
const ctrl = new AbortController();
|
|
31
31
|
const timer = setTimeout(() => ctrl.abort(), TIMEOUT_MS);
|
|
32
32
|
try {
|
|
33
|
-
const res = await fetch(url, { redirect: "follow", signal: ctrl.signal, headers: { "user-agent": "cordillera-
|
|
33
|
+
const res = await fetch(url, { redirect: "follow", signal: ctrl.signal, headers: { "user-agent": "cordillera-clearotron-fetch/0.1" } });
|
|
34
34
|
const body = await res.text();
|
|
35
35
|
const text = body.length > MAX_CHARS ? body.slice(0, MAX_CHARS) + `\n…[truncated at ${MAX_CHARS} chars]` : body;
|
|
36
36
|
return { isError: res.ok ? undefined : true, text: `HTTP ${res.status} ${res.statusText} — ${url}\n\n${text}` };
|
|
@@ -42,7 +42,7 @@ const AUTH = null;
|
|
|
42
42
|
|
|
43
43
|
const tctx = (kind) => ({
|
|
44
44
|
kind,
|
|
45
|
-
agentId: process.env.CLEAROTRON_GATHER_AGENT || "
|
|
45
|
+
agentId: process.env.CLEAROTRON_GATHER_AGENT || "localagent",
|
|
46
46
|
sessionKey: process.env.CLEAROTRON_GATHER_SESSION_KEY || "",
|
|
47
47
|
sessionId: process.env.CLEAROTRON_GATHER_SESSION_ID || "",
|
|
48
48
|
});
|
|
@@ -56,7 +56,7 @@ const CAPABILITY_OFFICES = CAPABILITIES.offices.covered.join("+");
|
|
|
56
56
|
// it a third. It did. This is that third site, and it went on requiring USPTO_LOCAL_DB after the other
|
|
57
57
|
// two stopped.
|
|
58
58
|
//
|
|
59
|
-
// The cost was total. On an EU-only box
|
|
59
|
+
// The cost was total. On an EU-only box the whole path worked — preflight passed, the plan compiled
|
|
60
60
|
// with the US split off as a disclosed deferral, the EU entry was executable — and then EVERY register_*
|
|
61
61
|
// tool the seat called was refused here, so the EU half never ran. Everything upstream was right and
|
|
62
62
|
// nothing downstream happened, which is the least legible way for a fix to fail.
|