clinkx 1.0.0 → 1.1.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/CHANGELOG.md +95 -0
- package/README.md +184 -112
- package/clinkx-workflows/dist/chairman-knobs.d.ts +24 -0
- package/clinkx-workflows/dist/chairman-knobs.js +27 -0
- package/clinkx-workflows/dist/chairman-knobs.js.map +1 -0
- package/clinkx-workflows/dist/clink-client.d.ts +10 -0
- package/clinkx-workflows/dist/clink-client.js +39 -1
- package/clinkx-workflows/dist/clink-client.js.map +1 -1
- package/clinkx-workflows/dist/config.d.ts +29 -1
- package/clinkx-workflows/dist/config.js +35 -2
- package/clinkx-workflows/dist/config.js.map +1 -1
- package/clinkx-workflows/dist/context-preflight.d.ts +5 -0
- package/clinkx-workflows/dist/context-preflight.js.map +1 -1
- package/clinkx-workflows/dist/council-execution-policy.d.ts +68 -0
- package/clinkx-workflows/dist/council-execution-policy.js +110 -0
- package/clinkx-workflows/dist/council-execution-policy.js.map +1 -0
- package/clinkx-workflows/dist/council-expander.d.ts +9 -8
- package/clinkx-workflows/dist/council-expander.js +18 -9
- package/clinkx-workflows/dist/council-expander.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/activity-contract.d.ts +5557 -4
- package/clinkx-workflows/dist/dashboard/activity-contract.js +55 -3
- package/clinkx-workflows/dist/dashboard/activity-contract.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/activity-reader.d.ts +9 -5
- package/clinkx-workflows/dist/dashboard/activity-reader.js +15 -2
- package/clinkx-workflows/dist/dashboard/activity-reader.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/api-routes.d.ts +4 -0
- package/clinkx-workflows/dist/dashboard/api-routes.js +133 -25
- package/clinkx-workflows/dist/dashboard/api-routes.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.d.ts +3865 -0
- package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js +69 -0
- package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/context-run-reader.d.ts +36 -2
- package/clinkx-workflows/dist/dashboard/context-run-reader.js +142 -19
- package/clinkx-workflows/dist/dashboard/context-run-reader.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/contracts.d.ts +20027 -480
- package/clinkx-workflows/dist/dashboard/contracts.js +133 -6
- package/clinkx-workflows/dist/dashboard/contracts.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/index.d.ts +4 -0
- package/clinkx-workflows/dist/dashboard/index.js +4 -0
- package/clinkx-workflows/dist/dashboard/index.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/invocation-contract.d.ts +786 -0
- package/clinkx-workflows/dist/dashboard/invocation-contract.js +201 -0
- package/clinkx-workflows/dist/dashboard/invocation-contract.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/lazy-content.d.ts +14 -1
- package/clinkx-workflows/dist/dashboard/lazy-content.js +53 -2
- package/clinkx-workflows/dist/dashboard/lazy-content.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/native-transcript/contract.d.ts +90 -0
- package/clinkx-workflows/dist/dashboard/native-transcript/contract.js +31 -0
- package/clinkx-workflows/dist/dashboard/native-transcript/contract.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/native-transcript/projection.d.ts +12 -0
- package/clinkx-workflows/dist/dashboard/native-transcript/projection.js +286 -0
- package/clinkx-workflows/dist/dashboard/native-transcript/projection.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/progress-report-contract.d.ts +147 -4
- package/clinkx-workflows/dist/dashboard/progress-report-contract.js +11 -11
- package/clinkx-workflows/dist/dashboard/progress-report-contract.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/progress-report-reader.js +4 -56
- package/clinkx-workflows/dist/dashboard/progress-report-reader.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/progress-report-status-store.d.ts +2 -1
- package/clinkx-workflows/dist/dashboard/progress-report-status-store.js +6 -5
- package/clinkx-workflows/dist/dashboard/progress-report-status-store.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.d.ts +194 -0
- package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.js +89 -0
- package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.d.ts +26 -0
- package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.js +102 -0
- package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/request-admission.js +4 -0
- package/clinkx-workflows/dist/dashboard/request-admission.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/scanner.d.ts +3 -0
- package/clinkx-workflows/dist/dashboard/scanner.js +52 -8
- package/clinkx-workflows/dist/dashboard/scanner.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/server-factory.d.ts +14 -1
- package/clinkx-workflows/dist/dashboard/server-factory.js +73 -21
- package/clinkx-workflows/dist/dashboard/server-factory.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/session-log-contract.d.ts +223 -56
- package/clinkx-workflows/dist/dashboard/session-log-contract.js +26 -0
- package/clinkx-workflows/dist/dashboard/session-log-contract.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/session-log-journal.js +10 -3
- package/clinkx-workflows/dist/dashboard/session-log-journal.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/session-log-redaction.d.ts +9 -1
- package/clinkx-workflows/dist/dashboard/session-log-redaction.js +793 -59
- package/clinkx-workflows/dist/dashboard/session-log-redaction.js.map +1 -1
- package/clinkx-workflows/dist/dashboard-ui/assets/index-JPHQVtn9.js +106 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/style-DOMHk-j6.css +1 -0
- package/clinkx-workflows/dist/dashboard-ui/index.html +2 -2
- package/clinkx-workflows/dist/delegate-finalizer-policy.d.ts +26 -0
- package/clinkx-workflows/dist/delegate-finalizer-policy.js +72 -0
- package/clinkx-workflows/dist/delegate-finalizer-policy.js.map +1 -0
- package/clinkx-workflows/dist/delegate-signature.d.ts +14 -0
- package/clinkx-workflows/dist/delegate-signature.js +14 -0
- package/clinkx-workflows/dist/delegate-signature.js.map +1 -0
- package/clinkx-workflows/dist/delegate-validate.d.ts +32 -2
- package/clinkx-workflows/dist/delegate-validate.js +51 -0
- package/clinkx-workflows/dist/delegate-validate.js.map +1 -1
- package/clinkx-workflows/dist/engine.d.ts +113 -3
- package/clinkx-workflows/dist/engine.js +476 -80
- package/clinkx-workflows/dist/engine.js.map +1 -1
- package/clinkx-workflows/dist/errors.d.ts +22 -2
- package/clinkx-workflows/dist/errors.js +30 -2
- package/clinkx-workflows/dist/errors.js.map +1 -1
- package/clinkx-workflows/dist/fidelity.d.ts +47 -1
- package/clinkx-workflows/dist/fidelity.js +54 -1
- package/clinkx-workflows/dist/fidelity.js.map +1 -1
- package/clinkx-workflows/dist/fingerprint.d.ts +24 -6
- package/clinkx-workflows/dist/fingerprint.js +32 -9
- package/clinkx-workflows/dist/fingerprint.js.map +1 -1
- package/clinkx-workflows/dist/index.js +53 -1
- package/clinkx-workflows/dist/index.js.map +1 -1
- package/clinkx-workflows/dist/logger.d.ts +1 -1
- package/clinkx-workflows/dist/logger.js +17 -3
- package/clinkx-workflows/dist/logger.js.map +1 -1
- package/clinkx-workflows/dist/monotonic-clock.d.ts +19 -0
- package/clinkx-workflows/dist/monotonic-clock.js +22 -0
- package/clinkx-workflows/dist/monotonic-clock.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/contract.d.ts +52 -52
- package/clinkx-workflows/dist/plan-review/publication.d.ts +4 -4
- package/clinkx-workflows/dist/plan-review/run-state.d.ts +16 -16
- package/clinkx-workflows/dist/roster-contract.d.ts +889 -0
- package/clinkx-workflows/dist/roster-contract.js +180 -0
- package/clinkx-workflows/dist/roster-contract.js.map +1 -0
- package/clinkx-workflows/dist/rosters.d.ts +14 -0
- package/clinkx-workflows/dist/rosters.js +169 -0
- package/clinkx-workflows/dist/rosters.js.map +1 -0
- package/clinkx-workflows/dist/run-health.d.ts +7 -0
- package/clinkx-workflows/dist/run-health.js +25 -0
- package/clinkx-workflows/dist/run-health.js.map +1 -0
- package/clinkx-workflows/dist/schema.d.ts +64 -0
- package/clinkx-workflows/dist/schema.js +24 -0
- package/clinkx-workflows/dist/schema.js.map +1 -1
- package/clinkx-workflows/dist/server.js +2 -0
- package/clinkx-workflows/dist/server.js.map +1 -1
- package/clinkx-workflows/dist/shutdown.d.ts +15 -2
- package/clinkx-workflows/dist/shutdown.js +60 -16
- package/clinkx-workflows/dist/shutdown.js.map +1 -1
- package/clinkx-workflows/dist/state-schema.d.ts +23 -0
- package/clinkx-workflows/dist/state.d.ts +5 -0
- package/clinkx-workflows/dist/state.js +128 -21
- package/clinkx-workflows/dist/state.js.map +1 -1
- package/clinkx-workflows/dist/stdio-watchdog.d.ts +52 -0
- package/clinkx-workflows/dist/stdio-watchdog.js +212 -0
- package/clinkx-workflows/dist/stdio-watchdog.js.map +1 -0
- package/clinkx-workflows/dist/types.d.ts +6 -0
- package/clinkx-workflows/dist/validators/council.d.ts +50 -50
- package/clinkx-workflows/dist/validators/plan-review.d.ts +3 -3
- package/clinkx-workflows/dist/workflow-tools.d.ts +70 -0
- package/clinkx-workflows/dist/workflow-tools.js +760 -168
- package/clinkx-workflows/dist/workflow-tools.js.map +1 -1
- package/clinkx-workflows/templates/council/answer-chairman.txt +3 -0
- package/clinkx-workflows/templates/council/answer-cross-reviewer.txt +3 -0
- package/clinkx-workflows/templates/council/answer-specialist.txt +3 -0
- package/clinkx-workflows/templates/council/chairman.txt +3 -0
- package/clinkx-workflows/templates/council/code-review-chairman.txt +3 -0
- package/clinkx-workflows/templates/council/code-review-cross-reviewer.txt +3 -0
- package/clinkx-workflows/templates/council/code-review-reviewer.txt +3 -0
- package/clinkx-workflows/templates/council/debug-chairman.txt +3 -0
- package/clinkx-workflows/templates/council/debug-cross-reviewer.txt +3 -0
- package/clinkx-workflows/templates/council/debug-debugger.txt +3 -0
- package/clinkx-workflows/templates/council/discover-analyst.txt +3 -0
- package/clinkx-workflows/templates/council/discover-chairman.txt +3 -0
- package/clinkx-workflows/templates/council/discover-cross-reviewer.txt +3 -0
- package/clinkx-workflows/templates/council/member.txt +3 -0
- package/clinkx-workflows/templates/council/plan-review-chairman.txt +3 -0
- package/clinkx-workflows/templates/council/plan-review-cross-reviewer.txt +3 -0
- package/clinkx-workflows/templates/council/plan-review-reviewer.txt +3 -0
- package/clinkx-workflows/templates/council/reviewer.txt +3 -0
- package/clinkx-workflows/workflows/council-answer.yaml +3 -0
- package/clinkx-workflows/workflows/council-code-review.yaml +3 -0
- package/clinkx-workflows/workflows/council-debug.yaml +3 -0
- package/clinkx-workflows/workflows/council-default.yaml +7 -0
- package/clinkx-workflows/workflows/council-discover.yaml +3 -0
- package/clinkx-workflows/workflows/council-plan-review.yaml +3 -0
- package/conf/adapters/agy.json +9 -2
- package/conf/adapters/claude.json +7 -0
- package/conf/adapters/codex.json +7 -0
- package/conf/adapters/glm.json +19 -3
- package/conf/adapters/grok.json +9 -2
- package/conf/adapters/hapi/agy.json +9 -2
- package/conf/adapters/hapi/claude.json +7 -0
- package/conf/adapters/hapi/codex.json +7 -0
- package/conf/adapters/hapi/glm.json +20 -4
- package/conf/rosters/default-council.json +21 -0
- package/dist/activity-journal.d.ts +17 -3
- package/dist/activity-journal.js +404 -79
- package/dist/activity-journal.js.map +1 -1
- package/dist/codex/agent-tools.js +36 -0
- package/dist/codex/agent-tools.js.map +1 -1
- package/dist/codex/app-server-client.d.ts +3 -0
- package/dist/codex/app-server-client.js +11 -0
- package/dist/codex/app-server-client.js.map +1 -1
- package/dist/codex/app-server-registry.d.ts +18 -0
- package/dist/codex/app-server-registry.js +88 -2
- package/dist/codex/app-server-registry.js.map +1 -1
- package/dist/codex/client-types.d.ts +7 -1
- package/dist/codex/protocol.d.ts +4 -4
- package/dist/config.d.ts +220 -23
- package/dist/config.js +104 -1
- package/dist/config.js.map +1 -1
- package/dist/context-builder/bundle.d.ts +13 -0
- package/dist/context-builder/bundle.js +46 -0
- package/dist/context-builder/bundle.js.map +1 -1
- package/dist/context-builder/delegate-finalizer-effective.d.ts +33 -0
- package/dist/context-builder/delegate-finalizer-effective.js +82 -0
- package/dist/context-builder/delegate-finalizer-effective.js.map +1 -0
- package/dist/context-builder/delegate-packet.d.ts +18 -0
- package/dist/context-builder/delegate-packet.js +73 -9
- package/dist/context-builder/delegate-packet.js.map +1 -1
- package/dist/context-builder/delegate-reconstruction.d.ts +29 -0
- package/dist/context-builder/delegate-reconstruction.js +110 -41
- package/dist/context-builder/delegate-reconstruction.js.map +1 -1
- package/dist/context-builder/delegate-validation.d.ts +31 -0
- package/dist/context-builder/delegate-validation.js +87 -10
- package/dist/context-builder/delegate-validation.js.map +1 -1
- package/dist/context-builder/delegate.d.ts +9 -0
- package/dist/context-builder/delegate.js +210 -59
- package/dist/context-builder/delegate.js.map +1 -1
- package/dist/context-builder/diagnostics.d.ts +1 -1
- package/dist/context-builder/diagnostics.js.map +1 -1
- package/dist/context-builder/discovery-progress.d.ts +25 -0
- package/dist/context-builder/discovery-progress.js +64 -0
- package/dist/context-builder/discovery-progress.js.map +1 -0
- package/dist/context-builder/discovery-watchdog.d.ts +15 -0
- package/dist/context-builder/discovery-watchdog.js +39 -0
- package/dist/context-builder/discovery-watchdog.js.map +1 -0
- package/dist/context-builder/discovery.d.ts +7 -0
- package/dist/context-builder/discovery.js +119 -7
- package/dist/context-builder/discovery.js.map +1 -1
- package/dist/context-builder/external-gaps.d.ts +73 -0
- package/dist/context-builder/external-gaps.js +248 -0
- package/dist/context-builder/external-gaps.js.map +1 -0
- package/dist/context-builder/globs.d.ts +1 -0
- package/dist/context-builder/globs.js +15 -0
- package/dist/context-builder/globs.js.map +1 -1
- package/dist/context-builder/handler.d.ts +42 -1
- package/dist/context-builder/handler.js +690 -62
- package/dist/context-builder/handler.js.map +1 -1
- package/dist/context-builder/invocation-sidecar.d.ts +41 -0
- package/dist/context-builder/invocation-sidecar.js +189 -0
- package/dist/context-builder/invocation-sidecar.js.map +1 -0
- package/dist/context-builder/lifecycle-contract.d.ts +51 -51
- package/dist/context-builder/mutation-lock.d.ts +32 -0
- package/dist/context-builder/mutation-lock.js +321 -0
- package/dist/context-builder/mutation-lock.js.map +1 -0
- package/dist/context-builder/review-coverage.d.ts +32 -0
- package/dist/context-builder/review-coverage.js +130 -23
- package/dist/context-builder/review-coverage.js.map +1 -1
- package/dist/context-builder/schema.d.ts +76 -1
- package/dist/context-builder/schema.js +21 -1
- package/dist/context-builder/schema.js.map +1 -1
- package/dist/context-builder/secrets.d.ts +31 -0
- package/dist/context-builder/secrets.js +871 -84
- package/dist/context-builder/secrets.js.map +1 -1
- package/dist/context-builder/status.d.ts +1 -1
- package/dist/context-builder/status.js +1 -0
- package/dist/context-builder/status.js.map +1 -1
- package/dist/context-builder/storage.d.ts +29 -5
- package/dist/context-builder/storage.js +311 -236
- package/dist/context-builder/storage.js.map +1 -1
- package/dist/context-builder/versions.d.ts +19 -4
- package/dist/context-builder/versions.js +19 -4
- package/dist/context-builder/versions.js.map +1 -1
- package/dist/context-builder/workflow-runner.d.ts +6 -0
- package/dist/context-builder/workflow-runner.js +363 -173
- package/dist/context-builder/workflow-runner.js.map +1 -1
- package/dist/dashboard-adapter-catalog.js +7 -0
- package/dist/dashboard-adapter-catalog.js.map +1 -1
- package/dist/dashboard-cli.d.ts +2 -0
- package/dist/dashboard-cli.js +40 -2
- package/dist/dashboard-cli.js.map +1 -1
- package/dist/dashboard-companion/client.d.ts +1 -0
- package/dist/dashboard-companion/client.js +22 -3
- package/dist/dashboard-companion/client.js.map +1 -1
- package/dist/dashboard-companion/protocol.js +4 -1
- package/dist/dashboard-companion/protocol.js.map +1 -1
- package/dist/dashboard-gateway/index.d.ts +1 -0
- package/dist/dashboard-gateway/index.js +33 -2
- package/dist/dashboard-gateway/index.js.map +1 -1
- package/dist/handler.js +5 -1
- package/dist/handler.js.map +1 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.js +145 -7
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.js +18 -3
- package/dist/logger.js.map +1 -1
- package/dist/parsers/agy-stream-json.d.ts +14 -0
- package/dist/parsers/agy-stream-json.js +172 -0
- package/dist/parsers/agy-stream-json.js.map +1 -0
- package/dist/parsers/extract.js +5 -1
- package/dist/parsers/extract.js.map +1 -1
- package/dist/parsers/observed-invocation.d.ts +20 -0
- package/dist/parsers/observed-invocation.js +42 -0
- package/dist/parsers/observed-invocation.js.map +1 -0
- package/dist/pipeline.d.ts +13 -0
- package/dist/pipeline.js +60 -10
- package/dist/pipeline.js.map +1 -1
- package/dist/progress-report/lock.d.ts +74 -0
- package/dist/progress-report/lock.js +343 -0
- package/dist/progress-report/lock.js.map +1 -0
- package/dist/progress-report/schema.d.ts +808 -0
- package/dist/progress-report/schema.js +119 -0
- package/dist/progress-report/schema.js.map +1 -0
- package/dist/progress-report/store.d.ts +66 -0
- package/dist/progress-report/store.js +766 -0
- package/dist/progress-report/store.js.map +1 -0
- package/dist/progress-report/tools.d.ts +20 -0
- package/dist/progress-report/tools.js +141 -0
- package/dist/progress-report/tools.js.map +1 -0
- package/dist/prompt-mode.d.ts +1 -1
- package/dist/prompt-mode.js +7 -2
- package/dist/prompt-mode.js.map +1 -1
- package/dist/runner.d.ts +7 -0
- package/dist/runner.js +10 -3
- package/dist/runner.js.map +1 -1
- package/dist/safety.d.ts +50 -0
- package/dist/safety.js +182 -1
- package/dist/safety.js.map +1 -1
- package/dist/schema.d.ts +8 -0
- package/dist/schema.js +20 -0
- package/dist/schema.js.map +1 -1
- package/dist/server.d.ts +6 -1
- package/dist/server.js +94 -8
- package/dist/server.js.map +1 -1
- package/dist/session-log-stream.d.ts +1 -1
- package/dist/session-log-stream.js +280 -33
- package/dist/session-log-stream.js.map +1 -1
- package/dist/stdio-activity.d.ts +28 -0
- package/dist/stdio-activity.js +72 -0
- package/dist/stdio-activity.js.map +1 -0
- package/docs/configuration.md +426 -0
- package/docs/security.md +293 -0
- package/package.json +5 -5
- package/clinkx-workflows/dist/dashboard-ui/assets/index-DOkMXTfB.js +0 -25
- package/clinkx-workflows/dist/dashboard-ui/assets/style-ChJsn0KD.css +0 -1
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { lstatSync, realpathSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { isSamePathOrDescendant } from "../allowed-roots.js";
|
|
4
|
+
import { SANITIZE_BUDGET_EXHAUSTED_PROVENANCE } from "./secrets.js";
|
|
5
|
+
import { compileContextBuilderGlobs, CONTEXT_BUILDER_DEFAULT_EXCLUDE_GLOBS, } from "./globs.js";
|
|
6
|
+
const EXCLUDED_OMISSION_REASONS = new Set([
|
|
7
|
+
"exclude_glob",
|
|
8
|
+
"caller_include_glob",
|
|
9
|
+
"default_exclude",
|
|
10
|
+
"default_noisy_exclude",
|
|
11
|
+
"excluded",
|
|
12
|
+
"noisy_file",
|
|
13
|
+
]);
|
|
14
|
+
const TOO_LARGE_OMISSION_REASONS = new Set(["file_too_large"]);
|
|
15
|
+
const SECRET_OMISSION_REASONS = new Set([
|
|
16
|
+
"secret_path",
|
|
17
|
+
"content_secret",
|
|
18
|
+
SANITIZE_BUDGET_EXHAUSTED_PROVENANCE,
|
|
19
|
+
]);
|
|
20
|
+
// `(` and `)` are legal in real filenames, so only the wildcard/class/brace
|
|
21
|
+
// metacharacters mark a path as a glob rather than a path.
|
|
22
|
+
const GLOB_CHARS_PATTERN = /[*?[\]{}]/;
|
|
23
|
+
/**
|
|
24
|
+
* Classifies the finalizer's self-reported `external_gaps` against what the
|
|
25
|
+
* server actually knows. A gap is only accepted as EXTERNAL when it names an
|
|
26
|
+
* existing, root-contained path that the packet genuinely did not carry;
|
|
27
|
+
* anything the packet had (or the caller explicitly focused) is a finalizer
|
|
28
|
+
* error, not missing evidence, and is rejected so it cannot launder a real
|
|
29
|
+
* in-packet insufficiency into a soft "conditional" verdict.
|
|
30
|
+
*
|
|
31
|
+
* Source roots are the resolved context_builder roots; artifact-only (`/.`)
|
|
32
|
+
* entries never reach them, and `excludedRealRoots` (artifact dirs nested
|
|
33
|
+
* under a source root) are treated as outside every root.
|
|
34
|
+
*
|
|
35
|
+
* Focus/packet rejection also covers ANCESTORS (a directory that contains a
|
|
36
|
+
* focus path or packet candidate is not absent evidence), and is re-run on the
|
|
37
|
+
* canonical on-disk path after the existence check so a case variant or an
|
|
38
|
+
* in-root symlink alias cannot smuggle an in-packet file past the lexical
|
|
39
|
+
* comparison. Accepted gaps carry the canonical path. Results are deduped:
|
|
40
|
+
* external by (root_index, canonical path), rejected by (path, why), first
|
|
41
|
+
* occurrence wins.
|
|
42
|
+
*/
|
|
43
|
+
export function classifyFinalizerExternalGaps(input) {
|
|
44
|
+
// realpathSync.native returns the on-disk case (APFS/NTFS), the same domain
|
|
45
|
+
// as the fs/promises realpath that resolved the source roots in paths.ts.
|
|
46
|
+
const fs = input.fs ?? {
|
|
47
|
+
lstat: (p) => lstatSync(p),
|
|
48
|
+
realpath: (p) => realpathSync.native(p),
|
|
49
|
+
};
|
|
50
|
+
const matcher = compileMatcher(input.includeGlobs ?? [], input.excludeGlobs ?? []);
|
|
51
|
+
const external = [];
|
|
52
|
+
const rejected = [];
|
|
53
|
+
const seenExternal = new Set();
|
|
54
|
+
const seenRejected = new Set();
|
|
55
|
+
const reject = (entry) => {
|
|
56
|
+
const key = JSON.stringify([entry.path, entry.why]);
|
|
57
|
+
if (!seenRejected.has(key)) {
|
|
58
|
+
seenRejected.add(key);
|
|
59
|
+
rejected.push(entry);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const isInPacket = (rootIndex, relative) => input.packetCandidates.some((candidate) => candidate.root_index === rootIndex && isSameOrAncestor(relative, candidate.path));
|
|
63
|
+
for (const gap of input.gaps) {
|
|
64
|
+
const relative = normalizeGapPath(gap.path);
|
|
65
|
+
const roots = gap.root_index == null
|
|
66
|
+
? input.sourceRoots
|
|
67
|
+
: input.sourceRoots.filter((root) => root.root_index === gap.root_index);
|
|
68
|
+
if (relative == null || roots.length === 0) {
|
|
69
|
+
reject({ path: gap.path, why: "invalid_path" });
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (roots.some((root) => isUnderFocusPath(root.root_index, relative, input.focusPaths))) {
|
|
73
|
+
reject({ path: relative, why: "required_focus" });
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (roots.some((root) => isInPacket(root.root_index, relative))) {
|
|
77
|
+
reject({ path: relative, why: "in_packet" });
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
let root;
|
|
81
|
+
let resolved = null;
|
|
82
|
+
for (const candidateRoot of roots) {
|
|
83
|
+
resolved = existsContained(candidateRoot, relative, input.excludedRealRoots ?? [], fs);
|
|
84
|
+
if (resolved != null) {
|
|
85
|
+
root = candidateRoot;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (root == null || resolved == null) {
|
|
90
|
+
reject({ path: relative, why: "nonexistent_or_outside_roots" });
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const canonical = resolved.path;
|
|
94
|
+
// An in-root alias of the root itself canonicalizes to "": same as ".".
|
|
95
|
+
if (canonical === "") {
|
|
96
|
+
reject({ path: relative, why: "invalid_path" });
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// Same checks against the canonical identity; the rejection still names
|
|
100
|
+
// the caller's path so the failure text matches what the finalizer wrote.
|
|
101
|
+
if (isUnderFocusPath(root.root_index, canonical, input.focusPaths)) {
|
|
102
|
+
reject({ path: relative, why: "required_focus" });
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (isInPacket(root.root_index, canonical)) {
|
|
106
|
+
reject({ path: relative, why: "in_packet" });
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const externalKey = JSON.stringify([root.root_index, canonical]);
|
|
110
|
+
if (seenExternal.has(externalKey)) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
seenExternal.add(externalKey);
|
|
114
|
+
external.push({
|
|
115
|
+
path: canonical,
|
|
116
|
+
root_index: root.root_index,
|
|
117
|
+
reason: gap.reason,
|
|
118
|
+
provenance: gapProvenance(root.root_index, canonical, resolved.isDirectory, input.discovery, matcher),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return { external, rejected };
|
|
122
|
+
}
|
|
123
|
+
function normalizeGapPath(raw) {
|
|
124
|
+
const trimmed = raw.trim();
|
|
125
|
+
if (trimmed.length === 0 ||
|
|
126
|
+
trimmed.includes("\u0000") ||
|
|
127
|
+
trimmed.includes("\\") ||
|
|
128
|
+
trimmed.startsWith("/") ||
|
|
129
|
+
trimmed.startsWith("~") ||
|
|
130
|
+
/^[A-Za-z]:/.test(trimmed) ||
|
|
131
|
+
/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(trimmed) ||
|
|
132
|
+
GLOB_CHARS_PATTERN.test(trimmed)) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if (trimmed.split("/").includes("..")) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
const normalized = path.posix
|
|
139
|
+
.normalize(trimmed)
|
|
140
|
+
.replace(/^\.\//, "")
|
|
141
|
+
.replace(/\/+$/, "");
|
|
142
|
+
return normalized.length === 0 || normalized === "." ? null : normalized;
|
|
143
|
+
}
|
|
144
|
+
function isUnderFocusPath(rootIndex, relative, focusPaths) {
|
|
145
|
+
return focusPaths.some((focus) => {
|
|
146
|
+
if (focus.root_index !== rootIndex) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
// Exact match, or the gap is an ancestor directory of the focus path.
|
|
150
|
+
if (isSameOrAncestor(relative, focus.root_relative_path)) {
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
return (focus.kind === "directory" &&
|
|
154
|
+
(focus.root_relative_path === "" ||
|
|
155
|
+
relative.startsWith(`${focus.root_relative_path}/`)));
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/** True when `candidate` equals `ancestor` or lies under it ("" is the root). */
|
|
159
|
+
function isSameOrAncestor(ancestor, candidate) {
|
|
160
|
+
return (ancestor === "" || candidate === ancestor || candidate.startsWith(`${ancestor}/`));
|
|
161
|
+
}
|
|
162
|
+
function existsContained(root, relative, excludedRealRoots, fs) {
|
|
163
|
+
const lexical = path.join(root.path, ...relative.split("/"));
|
|
164
|
+
try {
|
|
165
|
+
const stats = fs.lstat(lexical);
|
|
166
|
+
if (!stats.isFile() && !stats.isDirectory() && !stats.isSymbolicLink()) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
// lstat proves the entry itself exists without following it; realpath then
|
|
170
|
+
// resolves every symlink on the way (the leaf and any parent directory) so
|
|
171
|
+
// a link that escapes the root cannot pass as local evidence.
|
|
172
|
+
const real = fs.realpath(lexical);
|
|
173
|
+
if (!isSamePathOrDescendant(real, root.path) ||
|
|
174
|
+
excludedRealRoots.some((excluded) => isSamePathOrDescendant(real, excluded))) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
// Canonical root-relative POSIX identity (on-disk case, symlinks resolved).
|
|
178
|
+
return {
|
|
179
|
+
path: path.relative(root.path, real).split(path.sep).join("/"),
|
|
180
|
+
isDirectory: fs.lstat(real).isDirectory(),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function gapProvenance(rootIndex, relative, isDirectory, discovery, matcher) {
|
|
188
|
+
const treeEntry = discovery.tree.find((file) => file.root_index === rootIndex && file.path === relative);
|
|
189
|
+
const omissionReason = treeEntry?.omission_reason;
|
|
190
|
+
if (omissionReason != null && TOO_LARGE_OMISSION_REASONS.has(omissionReason)) {
|
|
191
|
+
return "too_large";
|
|
192
|
+
}
|
|
193
|
+
if (omissionReason != null && SECRET_OMISSION_REASONS.has(omissionReason)) {
|
|
194
|
+
return "secret_filtered";
|
|
195
|
+
}
|
|
196
|
+
if ((omissionReason != null && EXCLUDED_OMISSION_REASONS.has(omissionReason)) ||
|
|
197
|
+
isUnderExcludedDirectoryOmission(rootIndex, relative, discovery.omissions) ||
|
|
198
|
+
isGlobExcluded(relative, isDirectory, matcher)) {
|
|
199
|
+
return "excluded_glob";
|
|
200
|
+
}
|
|
201
|
+
if (discovery.content_candidates.some((candidate) => candidate.root_index === rootIndex &&
|
|
202
|
+
(candidate.path === relative || candidate.path.startsWith(`${relative}/`)))) {
|
|
203
|
+
return "packet_cap";
|
|
204
|
+
}
|
|
205
|
+
// A directory whose descendants were walked was reached by the scan, so the
|
|
206
|
+
// scan cap did not keep it out.
|
|
207
|
+
if (treeEntry == null &&
|
|
208
|
+
discovery.metrics.scan_cap_hit &&
|
|
209
|
+
!discovery.tree.some((file) => file.root_index === rootIndex && file.path.startsWith(`${relative}/`))) {
|
|
210
|
+
return "scan_cap";
|
|
211
|
+
}
|
|
212
|
+
return "not_discovered";
|
|
213
|
+
}
|
|
214
|
+
function isUnderExcludedDirectoryOmission(rootIndex, relative, omissions) {
|
|
215
|
+
return omissions.some((omission) => EXCLUDED_OMISSION_REASONS.has(omission.reason) &&
|
|
216
|
+
(omission.root_index == null || omission.root_index === rootIndex) &&
|
|
217
|
+
(omission.paths ?? []).some((omitted) => omitted === relative || relative.startsWith(`${omitted}/`)));
|
|
218
|
+
}
|
|
219
|
+
function isGlobExcluded(relative, isDirectory, matcher) {
|
|
220
|
+
if (matcher == null) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
try {
|
|
224
|
+
// Directories use discovery's traversal predicate: `src/lib` never matches
|
|
225
|
+
// the file glob `src/**/*.ts`, but discovery still walks into it.
|
|
226
|
+
const included = isDirectory
|
|
227
|
+
? matcher.canContainIncludedPath(relative)
|
|
228
|
+
: matcher.includes(relative);
|
|
229
|
+
return matcher.excludes(relative) || !included;
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function compileMatcher(includeGlobs, excludeGlobs) {
|
|
236
|
+
// Mirrors discovery's matcher so provenance names the same rule that
|
|
237
|
+
// actually kept the path out of the candidate pool.
|
|
238
|
+
try {
|
|
239
|
+
return compileContextBuilderGlobs({
|
|
240
|
+
include: [...includeGlobs],
|
|
241
|
+
exclude: [...CONTEXT_BUILDER_DEFAULT_EXCLUDE_GLOBS, ...excludeGlobs],
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=external-gaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-gaps.js","sourceRoot":"","sources":["../../src/context-builder/external-gaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export type ContextBuilderGlobMatcher = {
|
|
|
7
7
|
canContainIncludedPath(path: string): boolean;
|
|
8
8
|
excludes(path: string): boolean;
|
|
9
9
|
};
|
|
10
|
+
export declare const CONTEXT_BUILDER_VENDOR_DEFAULT_EXCLUDE_GLOBS: readonly string[];
|
|
10
11
|
export declare const CONTEXT_BUILDER_DEFAULT_EXCLUDE_GLOBS: readonly string[];
|
|
11
12
|
export declare function validateContextBuilderGlobs(globs: ContextBuilderGlobSet): void;
|
|
12
13
|
export declare function compileContextBuilderGlobs(globs: ContextBuilderGlobSet): ContextBuilderGlobMatcher;
|
|
@@ -3,10 +3,24 @@ import path from "node:path";
|
|
|
3
3
|
import { InvalidParamsError } from "../errors.js";
|
|
4
4
|
const require = createRequire(import.meta.url);
|
|
5
5
|
const picomatch = require("picomatch");
|
|
6
|
+
// Mobile/native vendor and build-cache trees. Android build output is already
|
|
7
|
+
// covered by `**/build/**` in the default excludes below.
|
|
8
|
+
export const CONTEXT_BUILDER_VENDOR_DEFAULT_EXCLUDE_GLOBS = Object.freeze([
|
|
9
|
+
"Pods/**",
|
|
10
|
+
"**/Pods/**",
|
|
11
|
+
".cxx/**",
|
|
12
|
+
"**/.cxx/**",
|
|
13
|
+
".gradle/**",
|
|
14
|
+
"**/.gradle/**",
|
|
15
|
+
"DerivedData/**",
|
|
16
|
+
"**/DerivedData/**",
|
|
17
|
+
]);
|
|
6
18
|
export const CONTEXT_BUILDER_DEFAULT_EXCLUDE_GLOBS = Object.freeze([
|
|
7
19
|
".claude/**",
|
|
8
20
|
".git/**",
|
|
9
21
|
"**/.git/**",
|
|
22
|
+
".worktrees/**",
|
|
23
|
+
"**/.worktrees/**",
|
|
10
24
|
"node_modules/**",
|
|
11
25
|
"**/node_modules/**",
|
|
12
26
|
"dist/**",
|
|
@@ -33,6 +47,7 @@ export const CONTEXT_BUILDER_DEFAULT_EXCLUDE_GLOBS = Object.freeze([
|
|
|
33
47
|
"**/*.pyc",
|
|
34
48
|
".venv/**",
|
|
35
49
|
"**/.venv/**",
|
|
50
|
+
...CONTEXT_BUILDER_VENDOR_DEFAULT_EXCLUDE_GLOBS,
|
|
36
51
|
]);
|
|
37
52
|
const GLOB_META_PATTERN = /[*?\[\]{}()]/;
|
|
38
53
|
const FIRST_SEGMENT_META_PATTERN = /[*?\[\]{}()!+@]/;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globs.js","sourceRoot":"","sources":["../../src/context-builder/globs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOlD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAc,CAAC;AAapD,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAM,CAAC,MAAM,CAAC;IACjE,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,iBAAiB;IACjB,oBAAoB;IACpB,SAAS;IACT,YAAY;IACZ,UAAU;IACV,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,UAAU;IACV,aAAa;IACb,WAAW;IACX,cAAc;IACd,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,UAAU;IACV,aAAa;
|
|
1
|
+
{"version":3,"file":"globs.js","sourceRoot":"","sources":["../../src/context-builder/globs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { AdapterRegistry } from "../registry.js";
|
|
2
2
|
import { ContextBuilderSemaphore, type ContextBuilderInternalCaps } from "./config.js";
|
|
3
|
-
import { type ContextBuilderDelegatePacketCaps, type ContextBuilderDelegatePacketCandidate } from "./delegate-packet.js";
|
|
3
|
+
import { type ContextBuilderDelegatePacketCaps, type ContextBuilderDelegatePacketCandidate, type ContextBuilderDelegatePacketCoveragePolicy } from "./delegate-packet.js";
|
|
4
|
+
import { type ContextBuilderContentCandidate } from "./discovery.js";
|
|
5
|
+
import { type ContextBuilderWarning } from "./diagnostics.js";
|
|
4
6
|
import { type ContextBuilderResolvedFocusPath } from "./paths.js";
|
|
5
7
|
import { type ContextBuilderProgressTarget } from "./progress.js";
|
|
6
8
|
import { ContextBuilderLifecycleController, type ContextBuilderLifecycleInjection, type ContextBuilderSessionLogContext } from "./lifecycle-observer.js";
|
|
7
9
|
import { type ContextBuilderReceiptTextResponse } from "./receipt.js";
|
|
10
|
+
import { type ContextReviewObligationModel } from "./review-coverage.js";
|
|
8
11
|
import { type ContextBuilderSelectedFile } from "./selection.js";
|
|
12
|
+
import { type ContextBuilderStorageOps, type ContextBuilderStoragePaths } from "./storage.js";
|
|
9
13
|
export type ContextBuilderHandlerOptions = {
|
|
10
14
|
signal?: AbortSignal;
|
|
11
15
|
progress?: ContextBuilderProgressTarget;
|
|
@@ -26,8 +30,25 @@ export type ContextBuilderHandlerOptions = {
|
|
|
26
30
|
* path derives its own identity from the journal dir.
|
|
27
31
|
*/
|
|
28
32
|
sessionLogContext?: ContextBuilderSessionLogContext;
|
|
33
|
+
/**
|
|
34
|
+
* Standalone MCP dispatch only: the raw tool args carried an explicit
|
|
35
|
+
* `delegate.finalizer.min_score` (see `finalizerMinScoreExplicit`). Never
|
|
36
|
+
* inferred here — the workflow runner also calls without a sessionLogContext
|
|
37
|
+
* (unbound lifecycle router or sidecar failure) while always forwarding a
|
|
38
|
+
* defaulted min_score, and workflow admission applies E5 at its own layer.
|
|
39
|
+
*/
|
|
40
|
+
standaloneMinScoreExplicit?: boolean;
|
|
41
|
+
/** Internal workflow seam: continue consuming the committed run under lease. */
|
|
42
|
+
retainCommittedRun?: (response: ContextBuilderReceiptTextResponse, storage: ContextBuilderStoragePaths, ops: ContextBuilderStorageOps) => Promise<void>;
|
|
29
43
|
};
|
|
30
44
|
export declare function handleContextBuilder(args: unknown, options?: ContextBuilderHandlerOptions): Promise<ContextBuilderReceiptTextResponse>;
|
|
45
|
+
declare function finalizerRequiredFocusEvictionFailure(input: {
|
|
46
|
+
focusPaths: readonly ContextBuilderResolvedFocusPath[];
|
|
47
|
+
candidates: readonly ContextBuilderDelegatePacketCandidate[];
|
|
48
|
+
contentCandidates: readonly Pick<ContextBuilderContentCandidate, "root_index" | "path" | "content">[];
|
|
49
|
+
selected: readonly ContextBuilderSelectedFile[];
|
|
50
|
+
}): string | undefined;
|
|
51
|
+
export declare const finalizerRequiredFocusEvictionFailureForTest: typeof finalizerRequiredFocusEvictionFailure;
|
|
31
52
|
declare function postRepairRequiredFocusEvictionFailure(input: {
|
|
32
53
|
focusPaths: readonly ContextBuilderResolvedFocusPath[];
|
|
33
54
|
candidates: readonly ContextBuilderDelegatePacketCandidate[];
|
|
@@ -35,7 +56,27 @@ declare function postRepairRequiredFocusEvictionFailure(input: {
|
|
|
35
56
|
postRepairSelected: readonly ContextBuilderSelectedFile[];
|
|
36
57
|
}): string | undefined;
|
|
37
58
|
export declare const postRepairRequiredFocusEvictionFailureForTest: typeof postRepairRequiredFocusEvictionFailure;
|
|
59
|
+
export declare function isMaterialDelegateEvidenceWarningForTest(message: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Renders the caller-anchored required-focus contract.
|
|
62
|
+
*
|
|
63
|
+
* Rendered only when the packet carries a candidate with focus_requested:true
|
|
64
|
+
* and non-empty required_focus_ranges, i.e. exactly the candidates
|
|
65
|
+
* requiredFocusEvidenceSelections enforces. Without it the finalizer had no
|
|
66
|
+
* signal that anchored files are mandatory and deduplicated near-duplicate
|
|
67
|
+
* anchors as a quality judgment.
|
|
68
|
+
*
|
|
69
|
+
* Phrasing guard: the finalizer may echo these lines into `warnings`, which
|
|
70
|
+
* isMaterialDelegateEvidenceWarning scans with a negation-blind proximity
|
|
71
|
+
* match. Keep gap vocabulary (missing, omitted, unavailable, not selected, ...)
|
|
72
|
+
* out of these lines; tests/context-builder/delegate-prompt.test.ts runs every
|
|
73
|
+
* rendered line through that matcher.
|
|
74
|
+
*/
|
|
75
|
+
export declare function packetRequiredFocusRules(stage: "curator" | "finalizer", packet: unknown): string[];
|
|
38
76
|
export declare function renderDelegatePrompt(stage: "curator" | "finalizer", packet: unknown, options?: {
|
|
39
77
|
minScore?: number | undefined;
|
|
78
|
+
externalGapPolicy?: "fail" | "degrade" | undefined;
|
|
40
79
|
}): string;
|
|
80
|
+
declare function packetObligationTruncationWarning(fullObligations: ContextReviewObligationModel | undefined, packetPolicy: ContextBuilderDelegatePacketCoveragePolicy): ContextBuilderWarning | undefined;
|
|
81
|
+
export declare const packetObligationTruncationWarningForTest: typeof packetObligationTruncationWarning;
|
|
41
82
|
export {};
|