@descryy/core 0.4.0 → 0.5.1
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/dist/budget/reply.d.ts +11 -46
- package/dist/budget/reply.d.ts.map +1 -1
- package/dist/budget/reply.js +10 -39
- package/dist/budget/reply.js.map +1 -1
- package/dist/budget/size.d.ts +2 -21
- package/dist/budget/size.d.ts.map +1 -1
- package/dist/budget/size.js +3 -24
- package/dist/budget/size.js.map +1 -1
- package/dist/capabilities/preconditions.d.ts +7 -68
- package/dist/capabilities/preconditions.d.ts.map +1 -1
- package/dist/capabilities/preconditions.js +6 -57
- package/dist/capabilities/preconditions.js.map +1 -1
- package/dist/contracts/engine.d.ts +23 -11
- package/dist/contracts/engine.d.ts.map +1 -1
- package/dist/contracts/engine.js +23 -11
- package/dist/contracts/engine.js.map +1 -1
- package/dist/contracts/orphans.d.ts +18 -122
- package/dist/contracts/orphans.d.ts.map +1 -1
- package/dist/contracts/orphans.js +36 -134
- package/dist/contracts/orphans.js.map +1 -1
- package/dist/contracts/paths.d.ts +4 -114
- package/dist/contracts/paths.d.ts.map +1 -1
- package/dist/contracts/paths.js +7 -140
- package/dist/contracts/paths.js.map +1 -1
- package/dist/contracts/shapes.d.ts +13 -66
- package/dist/contracts/shapes.d.ts.map +1 -1
- package/dist/contracts/shapes.js +20 -91
- package/dist/contracts/shapes.js.map +1 -1
- package/dist/governance/budget.d.ts +12 -48
- package/dist/governance/budget.d.ts.map +1 -1
- package/dist/governance/budget.js +12 -48
- package/dist/governance/budget.js.map +1 -1
- package/dist/governance/candidate-boundary.d.ts +4 -32
- package/dist/governance/candidate-boundary.d.ts.map +1 -1
- package/dist/governance/candidate-boundary.js +4 -32
- package/dist/governance/candidate-boundary.js.map +1 -1
- package/dist/governance/escalation.d.ts +7 -45
- package/dist/governance/escalation.d.ts.map +1 -1
- package/dist/governance/escalation.js +7 -45
- package/dist/governance/escalation.js.map +1 -1
- package/dist/governance/fact-boundary.d.ts +7 -49
- package/dist/governance/fact-boundary.d.ts.map +1 -1
- package/dist/governance/fact-boundary.js +5 -43
- package/dist/governance/fact-boundary.js.map +1 -1
- package/dist/governance/finding-funnel.d.ts +11 -72
- package/dist/governance/finding-funnel.d.ts.map +1 -1
- package/dist/governance/finding-funnel.js +9 -68
- package/dist/governance/finding-funnel.js.map +1 -1
- package/dist/graph/build.d.ts +9 -90
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +15 -62
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/cross-language.d.ts +4 -43
- package/dist/graph/cross-language.d.ts.map +1 -1
- package/dist/graph/cross-language.js +9 -77
- package/dist/graph/cross-language.js.map +1 -1
- package/dist/graph/merge.d.ts +8 -88
- package/dist/graph/merge.d.ts.map +1 -1
- package/dist/graph/merge.js +9 -93
- package/dist/graph/merge.js.map +1 -1
- package/dist/graph/observed-tests.d.ts +7 -68
- package/dist/graph/observed-tests.d.ts.map +1 -1
- package/dist/graph/observed-tests.js +5 -60
- package/dist/graph/observed-tests.js.map +1 -1
- package/dist/graph/persist.d.ts +2 -25
- package/dist/graph/persist.d.ts.map +1 -1
- package/dist/graph/persist.js +2 -25
- package/dist/graph/persist.js.map +1 -1
- package/dist/graph/runtime-confirmation.d.ts +14 -91
- package/dist/graph/runtime-confirmation.d.ts.map +1 -1
- package/dist/graph/runtime-confirmation.js +19 -103
- package/dist/graph/runtime-confirmation.js.map +1 -1
- package/dist/ledger/mint.d.ts +9 -43
- package/dist/ledger/mint.d.ts.map +1 -1
- package/dist/ledger/mint.js +15 -65
- package/dist/ledger/mint.js.map +1 -1
- package/dist/ledger/resolve.d.ts +13 -81
- package/dist/ledger/resolve.d.ts.map +1 -1
- package/dist/ledger/resolve.js +13 -76
- package/dist/ledger/resolve.js.map +1 -1
- package/dist/multipr/fingerprint.d.ts +5 -46
- package/dist/multipr/fingerprint.d.ts.map +1 -1
- package/dist/multipr/fingerprint.js +22 -74
- package/dist/multipr/fingerprint.js.map +1 -1
- package/dist/multipr/hidden-dependency.d.ts +13 -73
- package/dist/multipr/hidden-dependency.d.ts.map +1 -1
- package/dist/multipr/hidden-dependency.js +12 -63
- package/dist/multipr/hidden-dependency.js.map +1 -1
- package/dist/multipr/mechanical.d.ts +25 -160
- package/dist/multipr/mechanical.d.ts.map +1 -1
- package/dist/multipr/mechanical.js +21 -137
- package/dist/multipr/mechanical.js.map +1 -1
- package/dist/multipr/migration-heads.d.ts +18 -105
- package/dist/multipr/migration-heads.d.ts.map +1 -1
- package/dist/multipr/migration-heads.js +15 -84
- package/dist/multipr/migration-heads.js.map +1 -1
- package/dist/multipr/overlap.d.ts +16 -94
- package/dist/multipr/overlap.d.ts.map +1 -1
- package/dist/multipr/overlap.js +25 -105
- package/dist/multipr/overlap.js.map +1 -1
- package/dist/multipr/scope-store.d.ts +15 -80
- package/dist/multipr/scope-store.d.ts.map +1 -1
- package/dist/multipr/scope-store.js +17 -87
- package/dist/multipr/scope-store.js.map +1 -1
- package/dist/multipr/superseded.d.ts +10 -95
- package/dist/multipr/superseded.d.ts.map +1 -1
- package/dist/multipr/superseded.js +7 -60
- package/dist/multipr/superseded.js.map +1 -1
- package/dist/query/confirmed-facts.d.ts +12 -58
- package/dist/query/confirmed-facts.d.ts.map +1 -1
- package/dist/query/confirmed-facts.js +8 -47
- package/dist/query/confirmed-facts.js.map +1 -1
- package/dist/query/declared-value-closure.d.ts +13 -104
- package/dist/query/declared-value-closure.d.ts.map +1 -1
- package/dist/query/declared-value-closure.js +15 -104
- package/dist/query/declared-value-closure.js.map +1 -1
- package/dist/query/memory.d.ts +4 -16
- package/dist/query/memory.d.ts.map +1 -1
- package/dist/query/memory.js +9 -22
- package/dist/query/memory.js.map +1 -1
- package/dist/query/prominence.d.ts +6 -55
- package/dist/query/prominence.d.ts.map +1 -1
- package/dist/query/prominence.js +6 -55
- package/dist/query/prominence.js.map +1 -1
- package/dist/query/provider.d.ts +27 -93
- package/dist/query/provider.d.ts.map +1 -1
- package/dist/query/provider.js +8 -29
- package/dist/query/provider.js.map +1 -1
- package/dist/query/queries.d.ts +15 -65
- package/dist/query/queries.d.ts.map +1 -1
- package/dist/query/queries.js +30 -104
- package/dist/query/queries.js.map +1 -1
- package/dist/query/refusal-fetch.d.ts +8 -85
- package/dist/query/refusal-fetch.d.ts.map +1 -1
- package/dist/query/refusal-fetch.js +11 -93
- package/dist/query/refusal-fetch.js.map +1 -1
- package/dist/query/refusal-questions.d.ts +17 -92
- package/dist/query/refusal-questions.d.ts.map +1 -1
- package/dist/query/refusal-questions.js +14 -78
- package/dist/query/refusal-questions.js.map +1 -1
- package/dist/query/resolution-floor.d.ts +3 -23
- package/dist/query/resolution-floor.d.ts.map +1 -1
- package/dist/query/resolution-floor.js +3 -23
- package/dist/query/resolution-floor.js.map +1 -1
- package/dist/query/root-cause-score.d.ts +11 -161
- package/dist/query/root-cause-score.d.ts.map +1 -1
- package/dist/query/root-cause-score.js +6 -137
- package/dist/query/root-cause-score.js.map +1 -1
- package/dist/query/row-closure-picture.d.ts +5 -67
- package/dist/query/row-closure-picture.d.ts.map +1 -1
- package/dist/query/row-closure-picture.js +6 -67
- package/dist/query/row-closure-picture.js.map +1 -1
- package/dist/query/similar-incidents.d.ts +6 -41
- package/dist/query/similar-incidents.d.ts.map +1 -1
- package/dist/query/similar-incidents.js +15 -69
- package/dist/query/similar-incidents.js.map +1 -1
- package/dist/query/sqlite.d.ts +3 -7
- package/dist/query/sqlite.d.ts.map +1 -1
- package/dist/query/sqlite.js +9 -19
- package/dist/query/sqlite.js.map +1 -1
- package/dist/query/test-coverage.d.ts +5 -45
- package/dist/query/test-coverage.d.ts.map +1 -1
- package/dist/query/test-coverage.js +10 -53
- package/dist/query/test-coverage.js.map +1 -1
- package/dist/query/traverse.d.ts +22 -126
- package/dist/query/traverse.d.ts.map +1 -1
- package/dist/query/traverse.js +25 -126
- package/dist/query/traverse.js.map +1 -1
- package/dist/query/unresolved.d.ts +19 -164
- package/dist/query/unresolved.d.ts.map +1 -1
- package/dist/query/unresolved.js +11 -138
- package/dist/query/unresolved.js.map +1 -1
- package/dist/query/verification-status.d.ts +12 -109
- package/dist/query/verification-status.d.ts.map +1 -1
- package/dist/query/verification-status.js +9 -99
- package/dist/query/verification-status.js.map +1 -1
- package/dist/recording/migrate.d.ts +4 -10
- package/dist/recording/migrate.d.ts.map +1 -1
- package/dist/recording/migrate.js +4 -10
- package/dist/recording/migrate.js.map +1 -1
- package/dist/recording/reader.d.ts +2 -7
- package/dist/recording/reader.d.ts.map +1 -1
- package/dist/recording/reader.js +2 -7
- package/dist/recording/reader.js.map +1 -1
- package/dist/recording/redact.d.ts +6 -57
- package/dist/recording/redact.d.ts.map +1 -1
- package/dist/recording/redact.js +8 -64
- package/dist/recording/redact.js.map +1 -1
- package/dist/recording/schema.d.ts +3 -38
- package/dist/recording/schema.d.ts.map +1 -1
- package/dist/recording/schema.js +3 -38
- package/dist/recording/schema.js.map +1 -1
- package/dist/recording/writer.d.ts +11 -74
- package/dist/recording/writer.d.ts.map +1 -1
- package/dist/recording/writer.js +3 -43
- package/dist/recording/writer.js.map +1 -1
- package/dist/scoping/fanout.d.ts +6 -68
- package/dist/scoping/fanout.d.ts.map +1 -1
- package/dist/scoping/fanout.js +6 -68
- package/dist/scoping/fanout.js.map +1 -1
- package/dist/scoping/score.d.ts +20 -70
- package/dist/scoping/score.d.ts.map +1 -1
- package/dist/scoping/score.js +20 -70
- package/dist/scoping/score.js.map +1 -1
- package/dist/scoping/tiers.d.ts +4 -16
- package/dist/scoping/tiers.d.ts.map +1 -1
- package/dist/scoping/tiers.js +4 -16
- package/dist/scoping/tiers.js.map +1 -1
- package/dist/scoping/traverse.d.ts +3 -25
- package/dist/scoping/traverse.d.ts.map +1 -1
- package/dist/scoping/traverse.js +14 -49
- package/dist/scoping/traverse.js.map +1 -1
- package/dist/scoping/weights.d.ts +10 -74
- package/dist/scoping/weights.d.ts.map +1 -1
- package/dist/scoping/weights.js +14 -86
- package/dist/scoping/weights.js.map +1 -1
- package/dist/sources/confirmed/incidents.d.ts +5 -35
- package/dist/sources/confirmed/incidents.d.ts.map +1 -1
- package/dist/sources/confirmed/incidents.js +14 -48
- package/dist/sources/confirmed/incidents.js.map +1 -1
- package/dist/sources/git/diff.d.ts +93 -63
- package/dist/sources/git/diff.d.ts.map +1 -1
- package/dist/sources/git/diff.js +200 -81
- package/dist/sources/git/diff.js.map +1 -1
- package/dist/sources/git/env.d.ts +7 -0
- package/dist/sources/git/env.d.ts.map +1 -1
- package/dist/sources/git/env.js +10 -11
- package/dist/sources/git/env.js.map +1 -1
- package/dist/sources/git/history.d.ts +64 -84
- package/dist/sources/git/history.d.ts.map +1 -1
- package/dist/sources/git/history.js +141 -112
- package/dist/sources/git/history.js.map +1 -1
- package/dist/sources/git/incidents.d.ts +13 -75
- package/dist/sources/git/incidents.d.ts.map +1 -1
- package/dist/sources/git/incidents.js +21 -91
- package/dist/sources/git/incidents.js.map +1 -1
- package/dist/sources/git/index.d.ts +5 -3
- package/dist/sources/git/index.d.ts.map +1 -1
- package/dist/sources/git/index.js +3 -2
- package/dist/sources/git/index.js.map +1 -1
- package/dist/sources/git/source.d.ts +9 -79
- package/dist/sources/git/source.d.ts.map +1 -1
- package/dist/sources/git/source.js +33 -133
- package/dist/sources/git/source.js.map +1 -1
- package/dist/sources/migrations/across-change.d.ts +94 -0
- package/dist/sources/migrations/across-change.d.ts.map +1 -0
- package/dist/sources/migrations/across-change.js +278 -0
- package/dist/sources/migrations/across-change.js.map +1 -0
- package/dist/sources/migrations/dialects.d.ts +20 -36
- package/dist/sources/migrations/dialects.d.ts.map +1 -1
- package/dist/sources/migrations/dialects.js +11 -36
- package/dist/sources/migrations/dialects.js.map +1 -1
- package/dist/sources/migrations/index.d.ts +3 -1
- package/dist/sources/migrations/index.d.ts.map +1 -1
- package/dist/sources/migrations/index.js +2 -1
- package/dist/sources/migrations/index.js.map +1 -1
- package/dist/sources/migrations/read.d.ts +14 -79
- package/dist/sources/migrations/read.d.ts.map +1 -1
- package/dist/sources/migrations/read.js +14 -89
- package/dist/sources/migrations/read.js.map +1 -1
- package/dist/sources/workspace/workspace.d.ts +6 -42
- package/dist/sources/workspace/workspace.d.ts.map +1 -1
- package/dist/sources/workspace/workspace.js +10 -53
- package/dist/sources/workspace/workspace.js.map +1 -1
- package/dist/store/driver/driver.d.ts +9 -38
- package/dist/store/driver/driver.d.ts.map +1 -1
- package/dist/store/driver/driver.js +4 -22
- package/dist/store/driver/driver.js.map +1 -1
- package/dist/store/driver/node-sqlite.d.ts +3 -12
- package/dist/store/driver/node-sqlite.d.ts.map +1 -1
- package/dist/store/driver/node-sqlite.js +4 -18
- package/dist/store/driver/node-sqlite.js.map +1 -1
- package/dist/store/index.d.ts +2 -7
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +4 -10
- package/dist/store/index.js.map +1 -1
- package/dist/store/migrate.d.ts +14 -50
- package/dist/store/migrate.d.ts.map +1 -1
- package/dist/store/migrate.js +15 -52
- package/dist/store/migrate.js.map +1 -1
- package/dist/store/reader.d.ts +19 -84
- package/dist/store/reader.d.ts.map +1 -1
- package/dist/store/reader.js +25 -92
- package/dist/store/reader.js.map +1 -1
- package/dist/store/schema.d.ts +14 -76
- package/dist/store/schema.d.ts.map +1 -1
- package/dist/store/schema.js +14 -76
- package/dist/store/schema.js.map +1 -1
- package/dist/store/writer.d.ts +14 -88
- package/dist/store/writer.d.ts.map +1 -1
- package/dist/store/writer.js +29 -123
- package/dist/store/writer.js.map +1 -1
- package/dist/tiers/certify.d.ts +46 -281
- package/dist/tiers/certify.d.ts.map +1 -1
- package/dist/tiers/certify.js +46 -226
- package/dist/tiers/certify.js.map +1 -1
- package/dist/tiers/ladder.d.ts +7 -51
- package/dist/tiers/ladder.d.ts.map +1 -1
- package/dist/tiers/ladder.js +13 -89
- package/dist/tiers/ladder.js.map +1 -1
- package/dist/validation/attributes.d.ts +6 -55
- package/dist/validation/attributes.d.ts.map +1 -1
- package/dist/validation/attributes.js +6 -55
- package/dist/validation/attributes.js.map +1 -1
- package/dist/validation/config-graph.d.ts +7 -56
- package/dist/validation/config-graph.d.ts.map +1 -1
- package/dist/validation/config-graph.js +15 -61
- package/dist/validation/config-graph.js.map +1 -1
- package/dist/validation/env.d.ts +47 -8
- package/dist/validation/env.d.ts.map +1 -1
- package/dist/validation/env.js +119 -31
- package/dist/validation/env.js.map +1 -1
- package/dist/validation/index.d.ts +2 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/join-substitution.d.ts +22 -120
- package/dist/validation/join-substitution.d.ts.map +1 -1
- package/dist/validation/join-substitution.js +13 -90
- package/dist/validation/join-substitution.js.map +1 -1
- package/dist/validation/migration-integrity.d.ts +11 -72
- package/dist/validation/migration-integrity.d.ts.map +1 -1
- package/dist/validation/migration-integrity.js +16 -79
- package/dist/validation/migration-integrity.js.map +1 -1
- package/dist/validation/migrations.d.ts +22 -101
- package/dist/validation/migrations.d.ts.map +1 -1
- package/dist/validation/migrations.js +19 -83
- package/dist/validation/migrations.js.map +1 -1
- package/dist/validation/nodes.d.ts +3 -1
- package/dist/validation/nodes.d.ts.map +1 -1
- package/dist/validation/nodes.js +3 -1
- package/dist/validation/nodes.js.map +1 -1
- package/dist/validation/orm-registration.d.ts +106 -0
- package/dist/validation/orm-registration.d.ts.map +1 -0
- package/dist/validation/orm-registration.js +191 -0
- package/dist/validation/orm-registration.js.map +1 -0
- package/dist/validation/rollback.d.ts +10 -73
- package/dist/validation/rollback.d.ts.map +1 -1
- package/dist/validation/rollback.js +15 -82
- package/dist/validation/rollback.js.map +1 -1
- package/dist/validation/route-drift.d.ts +9 -62
- package/dist/validation/route-drift.d.ts.map +1 -1
- package/dist/validation/route-drift.js +7 -52
- package/dist/validation/route-drift.js.map +1 -1
- package/dist/validation/sources.d.ts +16 -94
- package/dist/validation/sources.d.ts.map +1 -1
- package/dist/validation/sources.js +51 -147
- package/dist/validation/sources.js.map +1 -1
- package/dist/worker/pool.d.ts +6 -45
- package/dist/worker/pool.d.ts.map +1 -1
- package/dist/worker/pool.js +5 -42
- package/dist/worker/pool.js.map +1 -1
- package/dist/worker/protocol.d.ts +7 -20
- package/dist/worker/protocol.d.ts.map +1 -1
- package/dist/worker/protocol.js +3 -10
- package/dist/worker/protocol.js.map +1 -1
- package/dist/worker/traversal.worker.d.ts +2 -21
- package/dist/worker/traversal.worker.d.ts.map +1 -1
- package/dist/worker/traversal.worker.js +4 -23
- package/dist/worker/traversal.worker.js.map +1 -1
- package/package.json +11 -2
|
@@ -1,97 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* ## Why this is not an adapter, and why it is legal here
|
|
6
|
-
*
|
|
7
|
-
* §15.3's own wording is *"cross-check against declared variables **or the
|
|
8
|
-
* deploy target's actual state**"*. The deploy target's state is not in the graph
|
|
9
|
-
* and never will be. What holds it is `.env`, a container manifest, a CI
|
|
10
|
-
* workflow, an image build file — **formats, not languages.** Reading
|
|
11
|
-
* `KEY=value` and an indented `env:` block names no language, so it does not
|
|
12
|
-
* cross the Canonical IR boundary; it is legal above it for the same reason
|
|
13
|
-
* reading a commit log is (`sources/git`).
|
|
14
|
-
*
|
|
15
|
-
* That is what lets the check produce findings with no adapter change at all.
|
|
16
|
-
* See DEC-120.
|
|
17
|
-
*
|
|
18
|
-
* ## Precision over recall, three times, because a misparse here is a wrong finding
|
|
19
|
-
*
|
|
20
|
-
* A name invented by a sloppy scan becomes a confident sentence about somebody's
|
|
21
|
-
* configuration. So:
|
|
22
|
-
*
|
|
23
|
-
* 1. **Two different name rules, on purpose.** In a dotenv file `KEY=` is
|
|
24
|
-
* unambiguous, so any identifier shape is taken. Inside a structured document
|
|
25
|
-
* an `env:` block is indistinguishable from any other mapping once the scan
|
|
26
|
-
* loses its place, so only `UPPER_SNAKE` is accepted. The cost is a lowercase
|
|
27
|
-
* variable in a manifest, which is rare; the alternative is turning a stray
|
|
28
|
-
* key into a declaration.
|
|
29
|
-
* 2. **A block ends at the first line indented no deeper than its header.** No
|
|
30
|
-
* document model, no continuation handling, no anchors. A construct this scan
|
|
31
|
-
* cannot follow ends the block early, which *loses* names — a disclosed gap
|
|
32
|
-
* rather than a wrong one.
|
|
33
|
-
* 3. **A commented-out declaration counts, and is marked.** `# STRIPE_KEY=` in a
|
|
34
|
-
* sample file documents that the variable exists, which is exactly the
|
|
35
|
-
* question being asked. Treating it as absent would report every well
|
|
36
|
-
* documented optional setting as undeclared.
|
|
37
|
-
*
|
|
38
|
-
* ## The example/supply distinction
|
|
39
|
-
*
|
|
40
|
-
* `.env.example` **documents**; `.env.development` and a container manifest
|
|
41
|
-
* **supply**. Both are declarations for the purpose of "does this repository know
|
|
42
|
-
* this variable exists", and they are not interchangeable for anything else, so
|
|
43
|
-
* the distinction is carried on the surface rather than flattened.
|
|
44
|
-
*/
|
|
1
|
+
/** §15's env/config check reads `.env`/manifests/CI directly — formats, not
|
|
2
|
+
* languages, so it never crosses the IR boundary (DEC-120). Precision over
|
|
3
|
+
* recall: strict names, lossy block-end, commented lines count.
|
|
4
|
+
* `.env.example` documents, others supply. */
|
|
45
5
|
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
46
6
|
import { join, relative, sep } from "node:path";
|
|
47
7
|
const DEFAULT_MAX_DEPTH = 5;
|
|
48
8
|
const DEFAULT_MAX_FILES = 20_000;
|
|
49
|
-
/**
|
|
50
|
-
*
|
|
51
|
-
|
|
52
|
-
*
|
|
53
|
-
* configuration is not this repository's declaration of anything. Including one
|
|
54
|
-
* would put another project's variable names into the denominator of the
|
|
55
|
-
* coverage guard, which is the number that decides whether anything is reported
|
|
56
|
-
* at all.
|
|
57
|
-
*
|
|
58
|
-
* **The rule is structural, not a list of ecosystems' cache directories.** The
|
|
59
|
-
* first version of this was such a list and the boundary lint rejected it, which
|
|
60
|
-
* was the correct call: engine code that knows one ecosystem's build cache by
|
|
61
|
-
* name is engine code that will be missing the next one's. Every dotted directory
|
|
62
|
-
* is skipped apart from the ones that hold pipeline definitions.
|
|
63
|
-
*
|
|
64
|
-
* **`node_modules`, `vendor`, `target`, `dist`, `build`, `out` and `coverage`
|
|
65
|
-
* used to sit here too**, and DEC-110 recorded them as the unfinished half of its
|
|
66
|
-
* own ruling — *"three ecosystems' names in the skip list"* — while naming the end
|
|
67
|
-
* state: `noiseDirectories` on `CapabilityMatrix`, declared per adapter. They are
|
|
68
|
-
* gone from the engine now and arrive through `ScanOptions.noiseDirectories`
|
|
69
|
-
* instead. **The knowledge moved to the layer that has it; a second list was not
|
|
70
|
-
* created** — DEC-110's *"what must not happen is a third list."*
|
|
71
|
-
*
|
|
72
|
-
* The cost is real and disclosed rather than hidden: with nothing declared, a
|
|
73
|
-
* dependency tree in an undotted directory is walked and a sample inside it is
|
|
74
|
-
* read. `SurfaceScan.noiseDirectories` reports the set actually used, so an empty
|
|
75
|
-
* declaration cannot pass for a complete one (rule 7), and
|
|
76
|
-
* `bench/env-precision.mjs` still reports the surface count per repository.
|
|
77
|
-
*/
|
|
78
|
-
/**
|
|
79
|
-
* Dotted directories that are walked anyway, because **configuration lives in
|
|
80
|
-
* them**.
|
|
81
|
-
*
|
|
82
|
-
* The list started as pipelines only and that was too narrow — found by the
|
|
83
|
-
* decisions denominator, not by reasoning. `dispatch` keeps a real
|
|
84
|
-
* `.devcontainer/.env.example` documenting five variables; skipping it made the
|
|
85
|
-
* declaration surface incomplete, which moved the coverage guard *and* made
|
|
86
|
-
* three variables look undocumented when the repository documents all three. A
|
|
87
|
-
* missing declaration source does not fail loudly here: it silently turns
|
|
88
|
-
* correct suppressions into findings.
|
|
89
|
-
*
|
|
90
|
-
* These are directories a human authors configuration in, as opposed to ones a
|
|
91
|
-
* tool writes state into — which is the distinction the dotted-skip rule is
|
|
92
|
-
* reaching for and cannot express structurally. DEC-110 records the end state:
|
|
93
|
-
* the adapter declares its own noise directories and this list goes away.
|
|
94
|
-
*/
|
|
9
|
+
/** Skip vendored/build dirs structurally (dotted-dir rule, not an ecosystem
|
|
10
|
+
* list) so another project's `.env.example` can't pollute the denominator. */
|
|
11
|
+
/** Dotted dirs walked anyway — config lives here. Missing one silently turns
|
|
12
|
+
* correct suppressions into findings. Adapter-declared list (DEC-110) replaces this. */
|
|
95
13
|
const CONFIG_DIRECTORIES = new Set([
|
|
96
14
|
".github",
|
|
97
15
|
".circleci",
|
|
@@ -99,22 +17,36 @@ const CONFIG_DIRECTORIES = new Set([
|
|
|
99
17
|
".devcontainer",
|
|
100
18
|
".config",
|
|
101
19
|
]);
|
|
102
|
-
/**
|
|
103
|
-
* Shared with the migration scan, so the two walks cannot disagree about what
|
|
104
|
-
* counts as vendored. A second copy of this rule is a second place to forget the
|
|
105
|
-
* next ecosystem.
|
|
106
|
-
*/
|
|
20
|
+
/** Shared with the migration scan — one rule, not two that can disagree. */
|
|
107
21
|
export function skipDirectory(name, noiseDirectories = []) {
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
// declares what its ecosystem installs, not what the engine's own rule means.
|
|
22
|
+
// Structural check first: a declaration can't re-admit a dotted dir or
|
|
23
|
+
// exclude `.github`; adapters declare installs, not the engine's own rule.
|
|
111
24
|
if (name.startsWith("."))
|
|
112
25
|
return !CONFIG_DIRECTORIES.has(name);
|
|
113
26
|
return noiseDirectories.includes(name);
|
|
114
27
|
}
|
|
115
|
-
/**
|
|
116
|
-
|
|
117
|
-
|
|
28
|
+
/**
|
|
29
|
+
* `.env`, `.env.local`, `.env-production` — but not `.env.d.ts` or `.envrc`.
|
|
30
|
+
*
|
|
31
|
+
* **The separator is `[.-]`, not `.`, and the leading dot is optional on an
|
|
32
|
+
* example file.** Both were `.`-and-dot-only, and both spellings the pattern
|
|
33
|
+
* missed are in real repositories: `.env-example` and `env.example`. The cost
|
|
34
|
+
* was not a missing surface, it was a **one-sided comparison** — with no
|
|
35
|
+
* example file read, every variable a `.env` sets reads as documented nowhere,
|
|
36
|
+
* so the check either reports the whole file or, past the coverage floor,
|
|
37
|
+
* reports nothing and says the examples cover 0%.
|
|
38
|
+
*
|
|
39
|
+
* The dotless form is admitted **only when it carries an example suffix**. A
|
|
40
|
+
* bare `env` is as likely a shell script or a directory as a declaration, and
|
|
41
|
+
* `env.ts` is code; requiring the suffix keeps both out rather than relying on
|
|
42
|
+
* the reader finding no `KEY=` in them.
|
|
43
|
+
*/
|
|
44
|
+
const DOTENV = /^\.env([.-][A-Za-z0-9_.-]+)?$/;
|
|
45
|
+
/** `env.example`, `env-sample` — the same file, without the leading dot. */
|
|
46
|
+
const BARE_ENV_EXAMPLE = /^env[.-](example|sample|template|dist|defaults?)$/i;
|
|
47
|
+
/** TypeScript that happens to be named for the environment. Never a declaration. */
|
|
48
|
+
const DECLARATION_FILE = /\.d\.[cm]?ts$/i;
|
|
49
|
+
const EXAMPLE_SUFFIX = /[.-](example|sample|template|dist|defaults?)$/i;
|
|
118
50
|
const CONTAINER_MANIFEST = /^(docker-)?compose([.-][A-Za-z0-9_.-]+)?\.ya?ml$/i;
|
|
119
51
|
const IMAGE_BUILD = /^(Containerfile|Dockerfile)([.-][A-Za-z0-9_.-]+)?$/i;
|
|
120
52
|
const STRUCTURED = /\.ya?ml$/i;
|
|
@@ -124,15 +56,8 @@ const WRANGLER_TOML = /^wrangler\.toml$/;
|
|
|
124
56
|
const UPPER_SNAKE = /^[A-Z][A-Z0-9_]*$/;
|
|
125
57
|
/** Any identifier shape, for the unambiguous `KEY=` form. */
|
|
126
58
|
const ANY_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* Structured documents are only opened when their path says they are a manifest
|
|
131
|
-
* or a workflow. Opening every YAML file in a repository would pull in test
|
|
132
|
-
* data, schema definitions and dependency lockfiles, and an `env:` key inside a
|
|
133
|
-
* schema definition is a description of a variable rather than a declaration of
|
|
134
|
-
* one.
|
|
135
|
-
*/
|
|
59
|
+
/** Reads every config surface. Structured docs open only when their path
|
|
60
|
+
* names a manifest/workflow, else a schema `env:` key would count as one. */
|
|
136
61
|
export function scanConfigSurfaces(root, options = {}) {
|
|
137
62
|
const maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;
|
|
138
63
|
const maxFiles = options.maxFiles ?? DEFAULT_MAX_FILES;
|
|
@@ -161,6 +86,9 @@ export function scanConfigSurfaces(root, options = {}) {
|
|
|
161
86
|
directory = statSync(full).isDirectory();
|
|
162
87
|
}
|
|
163
88
|
catch {
|
|
89
|
+
// Same as an unreadable dir, on one entry (broken symlink, perm error,
|
|
90
|
+
// race). Disclosed via `unreadable` (rule 7), not dropped silently.
|
|
91
|
+
unreadable.push(rel(root, full));
|
|
164
92
|
continue;
|
|
165
93
|
}
|
|
166
94
|
if (directory) {
|
|
@@ -188,17 +116,16 @@ export function scanConfigSurfaces(root, options = {}) {
|
|
|
188
116
|
return { surfaces, unreadable, truncated, noiseDirectories };
|
|
189
117
|
}
|
|
190
118
|
function classify(root, dir, entry) {
|
|
191
|
-
if (DOTENV.test(entry)) {
|
|
192
|
-
const example = EXAMPLE_SUFFIX.test(entry)
|
|
119
|
+
if ((DOTENV.test(entry) || BARE_ENV_EXAMPLE.test(entry)) && !DECLARATION_FILE.test(entry)) {
|
|
120
|
+
const example = EXAMPLE_SUFFIX.test(entry);
|
|
193
121
|
// An example file states what exists; a concrete one states what is set.
|
|
194
122
|
// Neither is on a path to production by itself, so both are declarations —
|
|
195
123
|
// the deploy target is the manifest that mounts them.
|
|
196
124
|
return { format: "dotenv", role: "declaration", example };
|
|
197
125
|
}
|
|
198
126
|
if (WRANGLER_TOML.test(entry)) {
|
|
199
|
-
// Same status `.env.development
|
|
200
|
-
//
|
|
201
|
-
// `.env.development` are read the same way for the same reason.
|
|
127
|
+
// Same status as `.env.development`: repo's own statement, not a deploy
|
|
128
|
+
// manifest — `[vars]` read the same way for the same reason.
|
|
202
129
|
return { format: "wranglerVars", role: "declaration", example: false };
|
|
203
130
|
}
|
|
204
131
|
if (IMAGE_BUILD.test(entry)) {
|
|
@@ -212,13 +139,8 @@ function classify(root, dir, entry) {
|
|
|
212
139
|
}
|
|
213
140
|
return null;
|
|
214
141
|
}
|
|
215
|
-
/**
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* Named rather than pattern-matched on content: a document that happens to
|
|
219
|
-
* contain an `env:` key is not necessarily setting one, and guessing from
|
|
220
|
-
* content is how a schema fragment becomes a declaration.
|
|
221
|
-
*/
|
|
142
|
+
/** Only path-classified pipeline docs are opened — matching content (an
|
|
143
|
+
* `env:` key) would turn a schema fragment into a false declaration. */
|
|
222
144
|
function isPipelineDirectory(dir) {
|
|
223
145
|
const parts = dir.split("/");
|
|
224
146
|
return (parts.includes("workflows") ||
|
|
@@ -250,8 +172,7 @@ export function readDotenv(text) {
|
|
|
250
172
|
for (let i = 0; i < lines.length; i += 1) {
|
|
251
173
|
const raw = lines[i] ?? "";
|
|
252
174
|
const commented = /^\s*#/.test(raw);
|
|
253
|
-
// `export KEY=value`
|
|
254
|
-
// common in deployment scripts.
|
|
175
|
+
// `export KEY=value` — shell-sourceable form, common in deploy scripts.
|
|
255
176
|
const match = /^\s*(?:#\s*)?(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(raw);
|
|
256
177
|
if (match === null)
|
|
257
178
|
continue;
|
|
@@ -290,13 +211,8 @@ export function readImageBuild(text) {
|
|
|
290
211
|
}
|
|
291
212
|
return dedupe(out);
|
|
292
213
|
}
|
|
293
|
-
/**
|
|
294
|
-
* `
|
|
295
|
-
*
|
|
296
|
-
* Mapping — `KEY: value` — and sequence — `- KEY=value` or a bare `- KEY`. The
|
|
297
|
-
* bare sequence form declares a pass-through from the host, which is still the
|
|
298
|
-
* document stating that the variable exists.
|
|
299
|
-
*/
|
|
214
|
+
/** `env:`/`environment:` blocks: mapping (`KEY: value`) or sequence
|
|
215
|
+
* (`- KEY=value` / bare `- KEY`, a host pass-through — still a declaration). */
|
|
300
216
|
export function readStructured(text) {
|
|
301
217
|
const out = [];
|
|
302
218
|
const lines = text.split(/\r?\n/);
|
|
@@ -334,20 +250,9 @@ function wranglerTableEnvironment(table) {
|
|
|
334
250
|
return "default";
|
|
335
251
|
return WRANGLER_ENV_VARS_TABLE.exec(trimmed)?.[1] ?? null;
|
|
336
252
|
}
|
|
337
|
-
/**
|
|
338
|
-
*
|
|
339
|
-
*
|
|
340
|
-
* Every other table — `[[kv_namespaces]]`, `[assets]`, `[env.<name>]` itself
|
|
341
|
-
* (the deploy target's own settings, not its vars) — is out of scope by
|
|
342
|
-
* construction rather than by exclusion list: entering *any* table this
|
|
343
|
-
* function does not recognise as a vars table resets tracking to "outside",
|
|
344
|
-
* so a line that merely looks like `KEY = value` inside `[[kv_namespaces]]`
|
|
345
|
-
* (e.g. `binding = "HOSTNAMES"`) is never mistaken for a declared variable.
|
|
346
|
-
* `[[...]]` array-of-tables headers are matched and reset scope the same way,
|
|
347
|
-
* rather than silently falling through as an unrecognised line — an
|
|
348
|
-
* `[[env.staging.kv_namespaces]]` line right after `[env.staging.vars]` must
|
|
349
|
-
* end that table, not extend it.
|
|
350
|
-
*/
|
|
253
|
+
/** Only `[vars]`/`[env.<name>.vars]` tables are read; any other table (or
|
|
254
|
+
* `[[...]]` header) resets scope to "outside", so `[[kv_namespaces]]` lines
|
|
255
|
+
* are never mistaken for a var. */
|
|
351
256
|
export function readWranglerVarsEntries(text) {
|
|
352
257
|
const out = [];
|
|
353
258
|
const lines = text.split(/\r?\n/);
|
|
@@ -394,8 +299,7 @@ function dedupe(declarations) {
|
|
|
394
299
|
const seen = new Map();
|
|
395
300
|
for (const declaration of declarations) {
|
|
396
301
|
const existing = seen.get(declaration.name);
|
|
397
|
-
//
|
|
398
|
-
// "set here" is a stronger fact than "documented here".
|
|
302
|
+
// Active assignment outranks a later commented one: "set" beats "documented".
|
|
399
303
|
if (existing === undefined || (existing.commented && !declaration.commented)) {
|
|
400
304
|
seen.set(declaration.name, declaration);
|
|
401
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/validation/sources.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/validation/sources.ts"],"names":[],"mappings":"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"}
|
package/dist/worker/pool.d.ts
CHANGED
|
@@ -1,46 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* On this machine (Node v22.23.1, 16 cores):
|
|
7
|
-
*
|
|
8
|
-
* | | |
|
|
9
|
-
* | --- | --- |
|
|
10
|
-
* | cold worker spawn to ready | **~98–122 ms** |
|
|
11
|
-
* | round-trip on a warm worker | **~0.06 ms** |
|
|
12
|
-
* | a 200-node traversal | ~3 ms |
|
|
13
|
-
*
|
|
14
|
-
* The build plan estimated spawn at ~30 ms; it is three to four times that. A
|
|
15
|
-
* worker spawned per query would make the pre-push fast path **thirty times
|
|
16
|
-
* slower**, which is the opposite of the reason for having workers at all.
|
|
17
|
-
*
|
|
18
|
-
* The same numbers settle the other half: at 0.06 ms, dispatch is free relative
|
|
19
|
-
* to any traversal worth dispatching, so there is no main-thread fast path and
|
|
20
|
-
* no threshold to tune. Everything goes to the pool.
|
|
21
|
-
*
|
|
22
|
-
* ## The entry-point trap
|
|
23
|
-
*
|
|
24
|
-
* The worker file is `traversal.worker.ts` under Node's type stripping and
|
|
25
|
-
* `traversal.worker.js` after `tsc`. Hardcoding either breaks the other, and
|
|
26
|
-
* chasing that is — per the build plan — the most common reason a project gives
|
|
27
|
-
* up and adds a bundler. The fix is three lines: this module knows which form
|
|
28
|
-
* *it* is running as, from its own `import.meta.url`, and the worker beside it
|
|
29
|
-
* is always the same form.
|
|
2
|
+
* Warm worker pool. Measured (Node 22.23.1, 16 cores): cold spawn ~98-122ms, warm round-trip ~0.06ms —
|
|
3
|
+
* per-query spawn would make pre-push 30x slower, so everything goes to the pool, no threshold to tune.
|
|
4
|
+
* Entry-point trap: worker file is `.ts`/`.js` depending on stripping — resolved via `import.meta.url`.
|
|
30
5
|
*/
|
|
31
6
|
import type { ReachedWire, TraversalRequest } from "./protocol.ts";
|
|
32
|
-
/**
|
|
33
|
-
* The worker entry beside this module, in whichever form this module is running.
|
|
34
|
-
*
|
|
35
|
-
* `import.meta.url` ends `.ts` when Node is stripping types and `.js` when
|
|
36
|
-
* running compiled output, and the worker is emitted next to it either way.
|
|
37
|
-
*/
|
|
7
|
+
/** The worker entry beside this module, in whichever form (`.ts`/`.js`) this module is running as. */
|
|
38
8
|
export declare function workerEntryUrl(): URL;
|
|
39
9
|
export interface TraversalPoolOptions {
|
|
40
|
-
/**
|
|
41
|
-
* Path to the graph. Must be a file — `:memory:` is per-connection, so a
|
|
42
|
-
* worker opening it would get its own empty database rather than the graph.
|
|
43
|
-
*/
|
|
10
|
+
/** Path to the graph. Must be a file — `:memory:` is per-connection, so a worker would get its own empty database. */
|
|
44
11
|
readonly databasePath: string;
|
|
45
12
|
readonly size?: number;
|
|
46
13
|
readonly taskTimeoutMs?: number;
|
|
@@ -57,13 +24,7 @@ export interface PoolTraversalResult {
|
|
|
57
24
|
}
|
|
58
25
|
export interface TraversalPool {
|
|
59
26
|
readonly size: number;
|
|
60
|
-
/**
|
|
61
|
-
* Run a traversal on a pooled worker.
|
|
62
|
-
*
|
|
63
|
-
* `onChunk` fires as partial results arrive, which is the point of chunking:
|
|
64
|
-
* a caller streaming to an MCP client can emit the first rows long before the
|
|
65
|
-
* traversal finishes.
|
|
66
|
-
*/
|
|
27
|
+
/** Run a traversal on a pooled worker. `onChunk` fires as partial results arrive, for MCP streaming. */
|
|
67
28
|
run(request: Omit<TraversalRequest, "id">, onChunk?: (items: readonly ReachedWire[]) => void): Promise<PoolTraversalResult>;
|
|
68
29
|
/** Round-trips every worker. Returns the ones that answered. */
|
|
69
30
|
healthCheck(): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/worker/pool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/worker/pool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAEV,WAAW,EACX,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAEvB,sGAAsG;AACtG,wBAAgB,cAAc,IAAI,GAAG,CAIpC;AAED,MAAM,WAAW,oBAAoB;IACnC,sHAAsH;IACtH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,GAAG,CACD,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,EACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,KAAK,IAAI,GAChD,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,gEAAgE;IAChE,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAsBD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAgKxB"}
|
package/dist/worker/pool.js
CHANGED
|
@@ -1,54 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* On this machine (Node v22.23.1, 16 cores):
|
|
7
|
-
*
|
|
8
|
-
* | | |
|
|
9
|
-
* | --- | --- |
|
|
10
|
-
* | cold worker spawn to ready | **~98–122 ms** |
|
|
11
|
-
* | round-trip on a warm worker | **~0.06 ms** |
|
|
12
|
-
* | a 200-node traversal | ~3 ms |
|
|
13
|
-
*
|
|
14
|
-
* The build plan estimated spawn at ~30 ms; it is three to four times that. A
|
|
15
|
-
* worker spawned per query would make the pre-push fast path **thirty times
|
|
16
|
-
* slower**, which is the opposite of the reason for having workers at all.
|
|
17
|
-
*
|
|
18
|
-
* The same numbers settle the other half: at 0.06 ms, dispatch is free relative
|
|
19
|
-
* to any traversal worth dispatching, so there is no main-thread fast path and
|
|
20
|
-
* no threshold to tune. Everything goes to the pool.
|
|
21
|
-
*
|
|
22
|
-
* ## The entry-point trap
|
|
23
|
-
*
|
|
24
|
-
* The worker file is `traversal.worker.ts` under Node's type stripping and
|
|
25
|
-
* `traversal.worker.js` after `tsc`. Hardcoding either breaks the other, and
|
|
26
|
-
* chasing that is — per the build plan — the most common reason a project gives
|
|
27
|
-
* up and adds a bundler. The fix is three lines: this module knows which form
|
|
28
|
-
* *it* is running as, from its own `import.meta.url`, and the worker beside it
|
|
29
|
-
* is always the same form.
|
|
2
|
+
* Warm worker pool. Measured (Node 22.23.1, 16 cores): cold spawn ~98-122ms, warm round-trip ~0.06ms —
|
|
3
|
+
* per-query spawn would make pre-push 30x slower, so everything goes to the pool, no threshold to tune.
|
|
4
|
+
* Entry-point trap: worker file is `.ts`/`.js` depending on stripping — resolved via `import.meta.url`.
|
|
30
5
|
*/
|
|
31
6
|
import { Worker } from "node:worker_threads";
|
|
32
7
|
import { cpus } from "node:os";
|
|
33
|
-
/**
|
|
34
|
-
* The worker entry beside this module, in whichever form this module is running.
|
|
35
|
-
*
|
|
36
|
-
* `import.meta.url` ends `.ts` when Node is stripping types and `.js` when
|
|
37
|
-
* running compiled output, and the worker is emitted next to it either way.
|
|
38
|
-
*/
|
|
8
|
+
/** The worker entry beside this module, in whichever form (`.ts`/`.js`) this module is running as. */
|
|
39
9
|
export function workerEntryUrl() {
|
|
40
10
|
const self = import.meta.url;
|
|
41
11
|
const extension = self.endsWith(".ts") ? ".ts" : ".js";
|
|
42
12
|
return new URL(`./traversal.worker${extension}`, self);
|
|
43
13
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Default pool size.
|
|
46
|
-
*
|
|
47
|
-
* Leaves headroom for the main thread and for the parser pool that Stage 1 will
|
|
48
|
-
* add: this process is not the only thing that wants a core. Capped at 4 because
|
|
49
|
-
* traversal is memory-bound on the adjacency index rather than CPU-bound, so
|
|
50
|
-
* more threads mostly buys more open database handles.
|
|
51
|
-
*/
|
|
14
|
+
/** Default pool size: leaves headroom for the main thread. Capped at 4 — traversal is memory-bound, not CPU-bound. */
|
|
52
15
|
function defaultSize() {
|
|
53
16
|
return Math.max(1, Math.min(4, cpus().length - 2));
|
|
54
17
|
}
|
package/dist/worker/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/worker/pool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/worker/pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Everything crossing the boundary must survive structured clone, which rules
|
|
5
|
-
* out the one thing Step 9's traversal API takes: `weightFor` is a function.
|
|
6
|
-
* It is replaced here by an **edge-weight table**, which is what §12.4 actually
|
|
7
|
-
* specifies — `EdgeWeight` is tuning config keyed by edge *type*, never a
|
|
8
|
-
* per-edge value. So the serialisable form is not a compromise; it is the shape
|
|
9
|
-
* the architecture asked for, and passing a closure was the shortcut.
|
|
10
|
-
*/
|
|
1
|
+
/** Main-thread ↔ worker message protocol. `weightFor` (a function) can't survive structured
|
|
2
|
+
* clone, so it's replaced by an edge-weight table — which is what §12.4 actually specifies
|
|
3
|
+
* (`EdgeWeight` is per-type config, never a per-edge closure). Not a compromise; the closure was the shortcut. */
|
|
11
4
|
import type { EdgeType, ResolutionLevel } from "@descryy/ir";
|
|
12
5
|
import type { Direction } from "../query/traverse.ts";
|
|
13
6
|
/** Serialisable stand-in for `WeightedOptions.weightFor`. */
|
|
@@ -15,11 +8,8 @@ export interface EdgeWeightTable {
|
|
|
15
8
|
/** Per edge type. Absent types fall back to `fallback`. */
|
|
16
9
|
readonly weights: Partial<Record<EdgeType, number>>;
|
|
17
10
|
readonly fallback: number;
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* `EdgeConfidence` term. On by default: a guessed edge should propagate less
|
|
21
|
-
* impact than a proven one.
|
|
22
|
-
*/
|
|
11
|
+
/** Multiplies type weight by the edge's confidence (§12.4's EdgeConfidence). On by default —
|
|
12
|
+
* a guessed edge should propagate less impact than a proven one. */
|
|
23
13
|
readonly useConfidence?: boolean;
|
|
24
14
|
}
|
|
25
15
|
export interface TraversalRequest {
|
|
@@ -36,11 +26,8 @@ export interface TraversalRequest {
|
|
|
36
26
|
readonly perNodeLimit?: number;
|
|
37
27
|
readonly minScore?: number;
|
|
38
28
|
readonly edgeWeights?: EdgeWeightTable;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* 5,000-node answer reaches the caller progressively — the streaming-first
|
|
42
|
-
* requirement is about when the first row arrives, not the last.
|
|
43
|
-
*/
|
|
29
|
+
/** Rows per postMessage. Chunked, not sent whole, so a 5,000-node answer arrives progressively
|
|
30
|
+
* — streaming-first is about when the first row arrives, not the last. */
|
|
44
31
|
readonly chunkSize?: number;
|
|
45
32
|
}
|
|
46
33
|
export interface ReachedWire {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/worker/protocol.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Everything crossing the boundary must survive structured clone, which rules
|
|
5
|
-
* out the one thing Step 9's traversal API takes: `weightFor` is a function.
|
|
6
|
-
* It is replaced here by an **edge-weight table**, which is what §12.4 actually
|
|
7
|
-
* specifies — `EdgeWeight` is tuning config keyed by edge *type*, never a
|
|
8
|
-
* per-edge value. So the serialisable form is not a compromise; it is the shape
|
|
9
|
-
* the architecture asked for, and passing a closure was the shortcut.
|
|
10
|
-
*/
|
|
1
|
+
/** Main-thread ↔ worker message protocol. `weightFor` (a function) can't survive structured
|
|
2
|
+
* clone, so it's replaced by an edge-weight table — which is what §12.4 actually specifies
|
|
3
|
+
* (`EdgeWeight` is per-type config, never a per-edge closure). Not a compromise; the closure was the shortcut. */
|
|
11
4
|
/** Build a `weightFor` from the serialisable table. Shared by worker and tests. */
|
|
12
5
|
export function weightFromTable(table) {
|
|
13
6
|
const useConfidence = table.useConfidence ?? true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/worker/protocol.ts"],"names":[],"mappings":"AAAA;;mHAEmH;AA8DnH,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC;IAClD,OAAO,CAAC,IAA4C,EAAU,EAAE;QAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC;QACxD,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,25 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The traversal worker.
|
|
3
|
-
*
|
|
4
|
-
* `node:sqlite` is a **synchronous** API, so a 5,000-node traversal on the main
|
|
5
|
-
* thread holds the event loop for its whole duration — which blocks the MCP
|
|
6
|
-
* stream and breaks the streaming-first promise at exactly the moment the answer
|
|
7
|
-
* is most worth streaming.
|
|
8
|
-
*
|
|
9
|
-
* Two constraints shape this file:
|
|
10
|
-
*
|
|
11
|
-
* 1. **The database handle is opened here, not passed in.** Handles are not
|
|
12
|
-
* structured-cloneable and cannot cross a thread boundary. The worker takes a
|
|
13
|
-
* path and opens its own read-only handle — which is also why WAL matters:
|
|
14
|
-
* without it a writer on the main thread blocks this reader.
|
|
15
|
-
*
|
|
16
|
-
* 2. **The handle is read-only, so `migrate` cannot run.** Even
|
|
17
|
-
* `CREATE TABLE IF NOT EXISTS` needs write permission, so the ordinary open
|
|
18
|
-
* path would fail on a perfectly healthy graph. `verifyReadOnly` performs the
|
|
19
|
-
* same DEC-017 version check with reads only.
|
|
20
|
-
*
|
|
21
|
-
* Results are chunked rather than returned whole: streaming-first is about when
|
|
22
|
-
* the *first* row arrives, not the last.
|
|
2
|
+
* The traversal worker. `node:sqlite` is synchronous, so a large traversal on the main thread blocks the MCP stream — hence a separate worker.
|
|
3
|
+
* DB handle is opened here (not passed in — handles aren't structured-cloneable), read-only (why WAL matters, and why `verifyReadOnly` does DEC-017's version check without write permission). Results are chunked, not whole — streaming-first is about the first row, not the last.
|
|
23
4
|
*/
|
|
24
5
|
export {};
|
|
25
6
|
//# sourceMappingURL=traversal.worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traversal.worker.d.ts","sourceRoot":"","sources":["../../src/worker/traversal.worker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"traversal.worker.d.ts","sourceRoot":"","sources":["../../src/worker/traversal.worker.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|