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,189 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { open, rename, rm } from "node:fs/promises";
|
|
3
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
4
|
+
import { CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME, CONTEXT_BUILDER_INVOCATION_AUDIT_V2_SCHEMA_VERSION, decodeContextBuilderInvocationAuditBytes, MAX_CONTEXT_BUILDER_INVOCATION_AUDIT_BYTES, serializeContextBuilderInvocationAuditV2, } from "../../clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js";
|
|
5
|
+
import { ContainedFilePolicyError, ContainedFileTooLargeError, containedFileFingerprintsEqual, readContainedRelativeFile, } from "../../clinkx-workflows/dist/contained-file.js";
|
|
6
|
+
import { logger } from "../logger.js";
|
|
7
|
+
import { withContextBuilderMutationLock } from "./mutation-lock.js";
|
|
8
|
+
// Shared retries sleep 10 ms; cap best-effort audit contention at ~100 ms.
|
|
9
|
+
const CONTEXT_BUILDER_INVOCATION_AUDIT_LOCK_ATTEMPTS = 10;
|
|
10
|
+
export { CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME, MAX_CONTEXT_BUILDER_INVOCATION_AUDIT_BYTES, };
|
|
11
|
+
export const CONTEXT_BUILDER_INVOCATION_AUDIT_SCHEMA_VERSION = CONTEXT_BUILDER_INVOCATION_AUDIT_V2_SCHEMA_VERSION;
|
|
12
|
+
class InvocationAuditSidecarError extends Error {
|
|
13
|
+
reasonCode;
|
|
14
|
+
constructor(reasonCode) {
|
|
15
|
+
super("context_builder invocation audit sidecar rejected");
|
|
16
|
+
this.name = "InvocationAuditSidecarError";
|
|
17
|
+
this.reasonCode = reasonCode;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* True only when a sidecar read proved the existing artifact invalid or unsafe.
|
|
22
|
+
* Transient I/O failures remain distinguishable so callers cannot treat bytes
|
|
23
|
+
* they failed to inspect as authoritative invalid content.
|
|
24
|
+
*/
|
|
25
|
+
export function isContextBuilderInvocationAuditSidecarProvenInvalid(error) {
|
|
26
|
+
if (!(error instanceof InvocationAuditSidecarError))
|
|
27
|
+
return false;
|
|
28
|
+
return error.reasonCode === "invalid_document" ||
|
|
29
|
+
error.reasonCode === "oversized_file" ||
|
|
30
|
+
error.reasonCode === "unsafe_file";
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read an optional invocation audit through the shared descriptor-bound,
|
|
34
|
+
* no-follow contained-file reader and the shared strict V1/V2 decoder.
|
|
35
|
+
*
|
|
36
|
+
* Missing is the only non-error absence. Existing malformed, future-version,
|
|
37
|
+
* oversized, symlink, and non-regular entries all fail closed.
|
|
38
|
+
*/
|
|
39
|
+
export async function readContextBuilderInvocationAuditSidecar(artifactRunDir) {
|
|
40
|
+
let bytes;
|
|
41
|
+
let fingerprint;
|
|
42
|
+
try {
|
|
43
|
+
const read = await readContainedRelativeFile(artifactRunDir, CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME, {
|
|
44
|
+
wantBytes: true,
|
|
45
|
+
requireRegular: true,
|
|
46
|
+
requireExactRequestedPath: true,
|
|
47
|
+
maxBytes: MAX_CONTEXT_BUILDER_INVOCATION_AUDIT_BYTES,
|
|
48
|
+
containerLabel: "context_builder run directory",
|
|
49
|
+
pathLabel: CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME,
|
|
50
|
+
});
|
|
51
|
+
if (read.bytes === undefined) {
|
|
52
|
+
throw new InvocationAuditSidecarError("read_failed");
|
|
53
|
+
}
|
|
54
|
+
bytes = read.bytes;
|
|
55
|
+
fingerprint = read.fingerprint;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (isEnoent(error)) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
if (error instanceof ContainedFileTooLargeError) {
|
|
62
|
+
throw new InvocationAuditSidecarError("oversized_file");
|
|
63
|
+
}
|
|
64
|
+
if (error instanceof ContainedFilePolicyError) {
|
|
65
|
+
throw new InvocationAuditSidecarError("unsafe_file");
|
|
66
|
+
}
|
|
67
|
+
if (error instanceof InvocationAuditSidecarError) {
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
throw new InvocationAuditSidecarError("read_failed");
|
|
71
|
+
}
|
|
72
|
+
let decoded;
|
|
73
|
+
try {
|
|
74
|
+
decoded = decodeContextBuilderInvocationAuditBytes(bytes);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
throw new InvocationAuditSidecarError("invalid_document");
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
document: decoded.document,
|
|
81
|
+
fingerprint,
|
|
82
|
+
serialized: decoded.serialized,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Persist a strict value-only curator/finalizer invocation audit next to the
|
|
87
|
+
* run. This remains outside manifest and receipt metadata.
|
|
88
|
+
*
|
|
89
|
+
* Best-effort: one rejected seat update must never change delegate execution or
|
|
90
|
+
* the run outcome. An existing invalid sidecar is never repaired or replaced;
|
|
91
|
+
* its bytes remain authoritative for offline diagnosis.
|
|
92
|
+
*/
|
|
93
|
+
export async function recordContextInvocationAudit(artifactRunDir, seat, audit, options = {}) {
|
|
94
|
+
const runDir = resolve(artifactRunDir);
|
|
95
|
+
const lockTarget = {
|
|
96
|
+
runId: basename(runDir),
|
|
97
|
+
runsDir: dirname(runDir),
|
|
98
|
+
runDir,
|
|
99
|
+
};
|
|
100
|
+
try {
|
|
101
|
+
await withContextBuilderMutationLock(lockTarget, {}, async () => {
|
|
102
|
+
const existing = await readContextBuilderInvocationAuditSidecar(runDir);
|
|
103
|
+
let serialized;
|
|
104
|
+
try {
|
|
105
|
+
const base = {
|
|
106
|
+
schema_version: CONTEXT_BUILDER_INVOCATION_AUDIT_V2_SCHEMA_VERSION,
|
|
107
|
+
...(existing?.document.curator === undefined
|
|
108
|
+
? {}
|
|
109
|
+
: { curator: existing.document.curator }),
|
|
110
|
+
...(existing?.document.finalizer === undefined
|
|
111
|
+
? {}
|
|
112
|
+
: { finalizer: existing.document.finalizer }),
|
|
113
|
+
};
|
|
114
|
+
const document = seat === "curator"
|
|
115
|
+
? { ...base, curator: audit }
|
|
116
|
+
: { ...base, finalizer: audit };
|
|
117
|
+
serialized = serializeContextBuilderInvocationAuditV2(document);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
throw new InvocationAuditSidecarError("invalid_seat_update");
|
|
121
|
+
}
|
|
122
|
+
await writeAtomicText(join(runDir, CONTEXT_BUILDER_INVOCATION_AUDIT_FILENAME), serialized, existing, options.beforeCommit);
|
|
123
|
+
}, {
|
|
124
|
+
maxAttempts: CONTEXT_BUILDER_INVOCATION_AUDIT_LOCK_ATTEMPTS,
|
|
125
|
+
onContention: options.onLockContention,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
warnSkippedSeatUpdate(seat, sidecarFailureCode(error, "write_failed"));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async function writeAtomicText(targetPath, content, admittedPredecessor, beforeCommit) {
|
|
133
|
+
const tempPath = `${targetPath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
|
|
134
|
+
const handle = await open(tempPath, "wx", 0o600);
|
|
135
|
+
let cleanupTemp = true;
|
|
136
|
+
try {
|
|
137
|
+
await handle.writeFile(content, { encoding: "utf8" });
|
|
138
|
+
await handle.sync();
|
|
139
|
+
await handle.close();
|
|
140
|
+
await beforeCommit?.();
|
|
141
|
+
await assertAdmittedPredecessorUnchanged(dirname(targetPath), admittedPredecessor);
|
|
142
|
+
await rename(tempPath, targetPath);
|
|
143
|
+
cleanupTemp = false;
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
await handle.close().catch(() => { });
|
|
147
|
+
if (cleanupTemp) {
|
|
148
|
+
await rm(tempPath, { force: true }).catch(() => { });
|
|
149
|
+
}
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async function assertAdmittedPredecessorUnchanged(artifactRunDir, admitted) {
|
|
154
|
+
// The per-run lease excludes cooperative writers and pruners. Re-admission
|
|
155
|
+
// binds this commit to the exact prior descriptor/content (or exact absence),
|
|
156
|
+
// but pathname rename is not a hostile-filesystem CAS.
|
|
157
|
+
const current = await readContextBuilderInvocationAuditSidecar(artifactRunDir);
|
|
158
|
+
if (admitted === undefined) {
|
|
159
|
+
if (current !== undefined) {
|
|
160
|
+
throw new InvocationAuditSidecarError("predecessor_changed");
|
|
161
|
+
}
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (current === undefined
|
|
165
|
+
|| current.serialized !== admitted.serialized
|
|
166
|
+
|| !containedFileFingerprintsEqual(current.fingerprint, admitted.fingerprint)) {
|
|
167
|
+
throw new InvocationAuditSidecarError("predecessor_changed");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function warnSkippedSeatUpdate(seat, reasonCode) {
|
|
171
|
+
try {
|
|
172
|
+
logger.warn({ seat, reason_code: reasonCode }, "failed to record context_builder invocation audit sidecar");
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Diagnostics must not fail the delegate.
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
function sidecarFailureCode(error, fallback) {
|
|
179
|
+
return error instanceof InvocationAuditSidecarError
|
|
180
|
+
? error.reasonCode
|
|
181
|
+
: fallback;
|
|
182
|
+
}
|
|
183
|
+
function isEnoent(error) {
|
|
184
|
+
return (error != null &&
|
|
185
|
+
typeof error === "object" &&
|
|
186
|
+
"code" in error &&
|
|
187
|
+
error.code === "ENOENT");
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=invocation-sidecar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-sidecar.js","sourceRoot":"","sources":["../../src/context-builder/invocation-sidecar.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,28 +118,28 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
118
118
|
reason_code: z.ZodOptional<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>>;
|
|
119
119
|
}, "strict", z.ZodTypeAny, {
|
|
120
120
|
write: "skipped" | "not_attempted" | "written";
|
|
121
|
-
lookup: "
|
|
122
|
-
reason_code?: "
|
|
121
|
+
lookup: "not_checked" | "miss" | "hit";
|
|
122
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
123
123
|
}, {
|
|
124
124
|
write: "skipped" | "not_attempted" | "written";
|
|
125
|
-
lookup: "
|
|
126
|
-
reason_code?: "
|
|
125
|
+
lookup: "not_checked" | "miss" | "hit";
|
|
126
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
127
127
|
}>;
|
|
128
128
|
fallback: z.ZodEffects<z.ZodObject<{
|
|
129
129
|
status: z.ZodEnum<["not_applicable", "not_used", "used", "failed"]>;
|
|
130
130
|
reason_code: z.ZodOptional<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>>;
|
|
131
131
|
}, "strict", z.ZodTypeAny, {
|
|
132
132
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
133
|
-
reason_code?: "
|
|
133
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
134
134
|
}, {
|
|
135
135
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
136
|
-
reason_code?: "
|
|
136
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
137
137
|
}>, {
|
|
138
138
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
139
|
-
reason_code?: "
|
|
139
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
140
140
|
}, {
|
|
141
141
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
142
|
-
reason_code?: "
|
|
142
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
143
143
|
}>;
|
|
144
144
|
counts: z.ZodObject<{
|
|
145
145
|
files_seen: z.ZodNumber;
|
|
@@ -154,17 +154,17 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
154
154
|
files_considered: number;
|
|
155
155
|
files_selected: number;
|
|
156
156
|
files_omitted: number;
|
|
157
|
+
search_results: number;
|
|
157
158
|
bytes_read: number;
|
|
158
159
|
bytes_written: number;
|
|
159
|
-
search_results: number;
|
|
160
160
|
}, {
|
|
161
161
|
files_seen: number;
|
|
162
162
|
files_considered: number;
|
|
163
163
|
files_selected: number;
|
|
164
164
|
files_omitted: number;
|
|
165
|
+
search_results: number;
|
|
165
166
|
bytes_read: number;
|
|
166
167
|
bytes_written: number;
|
|
167
|
-
search_results: number;
|
|
168
168
|
}>;
|
|
169
169
|
coverage: z.ZodEffects<z.ZodObject<{
|
|
170
170
|
policy: z.ZodNullable<z.ZodLiteral<"review_deep_v1">>;
|
|
@@ -175,33 +175,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
175
175
|
}, "strict", z.ZodTypeAny, {
|
|
176
176
|
missing: number;
|
|
177
177
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
178
|
-
selected: number;
|
|
179
178
|
policy: "review_deep_v1" | null;
|
|
180
179
|
required: number;
|
|
180
|
+
selected: number;
|
|
181
181
|
}, {
|
|
182
182
|
missing: number;
|
|
183
183
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
184
|
-
selected: number;
|
|
185
184
|
policy: "review_deep_v1" | null;
|
|
186
185
|
required: number;
|
|
186
|
+
selected: number;
|
|
187
187
|
}>, {
|
|
188
188
|
missing: number;
|
|
189
189
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
190
|
-
selected: number;
|
|
191
190
|
policy: "review_deep_v1" | null;
|
|
192
191
|
required: number;
|
|
192
|
+
selected: number;
|
|
193
193
|
}, {
|
|
194
194
|
missing: number;
|
|
195
195
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
196
|
-
selected: number;
|
|
197
196
|
policy: "review_deep_v1" | null;
|
|
198
197
|
required: number;
|
|
198
|
+
selected: number;
|
|
199
199
|
}>;
|
|
200
|
-
reason_codes: z.ZodEffects<z.ZodArray<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>, "many">, ("
|
|
200
|
+
reason_codes: z.ZodEffects<z.ZodArray<z.ZodEnum<["cache_disabled", "cache_miss", "cache_stale", "delegate_disabled", "delegate_failed", "delegate_fallback", "delegate_invalid", "delegate_timeout", "coverage_degraded", "empty_selection", "operation_cancelled", "internal_failure", "legacy_supported", "legacy_unsupported", "generation_replaced"]>, "many">, ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[], ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[]>;
|
|
201
201
|
}, "strict", z.ZodTypeAny, {
|
|
202
202
|
fallback: {
|
|
203
203
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
204
|
-
reason_code?: "
|
|
204
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
205
205
|
};
|
|
206
206
|
status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
|
|
207
207
|
curator: {
|
|
@@ -216,33 +216,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
216
216
|
execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
|
|
217
217
|
score?: number | undefined;
|
|
218
218
|
};
|
|
219
|
-
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
220
|
-
created_at: string;
|
|
221
219
|
coverage: {
|
|
222
220
|
missing: number;
|
|
223
221
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
224
|
-
selected: number;
|
|
225
222
|
policy: "review_deep_v1" | null;
|
|
226
223
|
required: number;
|
|
224
|
+
selected: number;
|
|
227
225
|
};
|
|
228
|
-
|
|
226
|
+
updated_at: string;
|
|
227
|
+
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
228
|
+
reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
|
|
229
229
|
context_run_id: string;
|
|
230
230
|
operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
|
|
231
231
|
phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
|
|
232
|
-
|
|
232
|
+
created_at: string;
|
|
233
233
|
cache: {
|
|
234
234
|
write: "skipped" | "not_attempted" | "written";
|
|
235
|
-
lookup: "
|
|
236
|
-
reason_code?: "
|
|
235
|
+
lookup: "not_checked" | "miss" | "hit";
|
|
236
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
237
237
|
};
|
|
238
238
|
counts: {
|
|
239
239
|
files_seen: number;
|
|
240
240
|
files_considered: number;
|
|
241
241
|
files_selected: number;
|
|
242
242
|
files_omitted: number;
|
|
243
|
+
search_results: number;
|
|
243
244
|
bytes_read: number;
|
|
244
245
|
bytes_written: number;
|
|
245
|
-
search_results: number;
|
|
246
246
|
};
|
|
247
247
|
artifact_run_id?: string | undefined;
|
|
248
248
|
started_at?: string | undefined;
|
|
@@ -251,7 +251,7 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
251
251
|
}, {
|
|
252
252
|
fallback: {
|
|
253
253
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
254
|
-
reason_code?: "
|
|
254
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
255
255
|
};
|
|
256
256
|
status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
|
|
257
257
|
curator: {
|
|
@@ -266,33 +266,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
266
266
|
execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
|
|
267
267
|
score?: number | undefined;
|
|
268
268
|
};
|
|
269
|
-
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
270
|
-
created_at: string;
|
|
271
269
|
coverage: {
|
|
272
270
|
missing: number;
|
|
273
271
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
274
|
-
selected: number;
|
|
275
272
|
policy: "review_deep_v1" | null;
|
|
276
273
|
required: number;
|
|
274
|
+
selected: number;
|
|
277
275
|
};
|
|
278
|
-
|
|
276
|
+
updated_at: string;
|
|
277
|
+
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
278
|
+
reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
|
|
279
279
|
context_run_id: string;
|
|
280
280
|
operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
|
|
281
281
|
phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
|
|
282
|
-
|
|
282
|
+
created_at: string;
|
|
283
283
|
cache: {
|
|
284
284
|
write: "skipped" | "not_attempted" | "written";
|
|
285
|
-
lookup: "
|
|
286
|
-
reason_code?: "
|
|
285
|
+
lookup: "not_checked" | "miss" | "hit";
|
|
286
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
287
287
|
};
|
|
288
288
|
counts: {
|
|
289
289
|
files_seen: number;
|
|
290
290
|
files_considered: number;
|
|
291
291
|
files_selected: number;
|
|
292
292
|
files_omitted: number;
|
|
293
|
+
search_results: number;
|
|
293
294
|
bytes_read: number;
|
|
294
295
|
bytes_written: number;
|
|
295
|
-
search_results: number;
|
|
296
296
|
};
|
|
297
297
|
artifact_run_id?: string | undefined;
|
|
298
298
|
started_at?: string | undefined;
|
|
@@ -301,7 +301,7 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
301
301
|
}>, {
|
|
302
302
|
fallback: {
|
|
303
303
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
304
|
-
reason_code?: "
|
|
304
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
305
305
|
};
|
|
306
306
|
status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
|
|
307
307
|
curator: {
|
|
@@ -316,33 +316,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
316
316
|
execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
|
|
317
317
|
score?: number | undefined;
|
|
318
318
|
};
|
|
319
|
-
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
320
|
-
created_at: string;
|
|
321
319
|
coverage: {
|
|
322
320
|
missing: number;
|
|
323
321
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
324
|
-
selected: number;
|
|
325
322
|
policy: "review_deep_v1" | null;
|
|
326
323
|
required: number;
|
|
324
|
+
selected: number;
|
|
327
325
|
};
|
|
328
|
-
|
|
326
|
+
updated_at: string;
|
|
327
|
+
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
328
|
+
reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
|
|
329
329
|
context_run_id: string;
|
|
330
330
|
operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
|
|
331
331
|
phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
|
|
332
|
-
|
|
332
|
+
created_at: string;
|
|
333
333
|
cache: {
|
|
334
334
|
write: "skipped" | "not_attempted" | "written";
|
|
335
|
-
lookup: "
|
|
336
|
-
reason_code?: "
|
|
335
|
+
lookup: "not_checked" | "miss" | "hit";
|
|
336
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
337
337
|
};
|
|
338
338
|
counts: {
|
|
339
339
|
files_seen: number;
|
|
340
340
|
files_considered: number;
|
|
341
341
|
files_selected: number;
|
|
342
342
|
files_omitted: number;
|
|
343
|
+
search_results: number;
|
|
343
344
|
bytes_read: number;
|
|
344
345
|
bytes_written: number;
|
|
345
|
-
search_results: number;
|
|
346
346
|
};
|
|
347
347
|
artifact_run_id?: string | undefined;
|
|
348
348
|
started_at?: string | undefined;
|
|
@@ -351,7 +351,7 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
351
351
|
}, {
|
|
352
352
|
fallback: {
|
|
353
353
|
status: "failed" | "not_applicable" | "not_used" | "used";
|
|
354
|
-
reason_code?: "
|
|
354
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
355
355
|
};
|
|
356
356
|
status: "succeeded" | "failed" | "cancelled" | "running" | "partial" | "pending";
|
|
357
357
|
curator: {
|
|
@@ -366,33 +366,33 @@ export declare const ContextBuilderLifecycleStateV1Schema: z.ZodEffects<z.ZodObj
|
|
|
366
366
|
execution_status: "succeeded" | "failed" | "cancelled" | "running" | "skipped" | "pending" | "disabled" | "not_configured";
|
|
367
367
|
score?: number | undefined;
|
|
368
368
|
};
|
|
369
|
-
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
370
|
-
created_at: string;
|
|
371
369
|
coverage: {
|
|
372
370
|
missing: number;
|
|
373
371
|
status: "satisfied" | "degraded" | "not_evaluated";
|
|
374
|
-
selected: number;
|
|
375
372
|
policy: "review_deep_v1" | null;
|
|
376
373
|
required: number;
|
|
374
|
+
selected: number;
|
|
377
375
|
};
|
|
378
|
-
|
|
376
|
+
updated_at: string;
|
|
377
|
+
schema_version: "clinkx-context-builder-lifecycle-v1";
|
|
378
|
+
reason_codes: ("cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced")[];
|
|
379
379
|
context_run_id: string;
|
|
380
380
|
operation_kind: "standalone" | "refine" | "workflow_preflight" | "historical";
|
|
381
381
|
phase: "resolving" | "terminal" | "complete" | "cache_lookup" | "validating" | "scanning" | "searching" | "selecting" | "curating" | "finalizing" | "writing" | "materializing" | "committing";
|
|
382
|
-
|
|
382
|
+
created_at: string;
|
|
383
383
|
cache: {
|
|
384
384
|
write: "skipped" | "not_attempted" | "written";
|
|
385
|
-
lookup: "
|
|
386
|
-
reason_code?: "
|
|
385
|
+
lookup: "not_checked" | "miss" | "hit";
|
|
386
|
+
reason_code?: "cache_disabled" | "cache_miss" | "cache_stale" | "delegate_disabled" | "delegate_failed" | "delegate_fallback" | "delegate_invalid" | "delegate_timeout" | "coverage_degraded" | "empty_selection" | "operation_cancelled" | "internal_failure" | "legacy_supported" | "legacy_unsupported" | "generation_replaced" | undefined;
|
|
387
387
|
};
|
|
388
388
|
counts: {
|
|
389
389
|
files_seen: number;
|
|
390
390
|
files_considered: number;
|
|
391
391
|
files_selected: number;
|
|
392
392
|
files_omitted: number;
|
|
393
|
+
search_results: number;
|
|
393
394
|
bytes_read: number;
|
|
394
395
|
bytes_written: number;
|
|
395
|
-
search_results: number;
|
|
396
396
|
};
|
|
397
397
|
artifact_run_id?: string | undefined;
|
|
398
398
|
started_at?: string | undefined;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type FileHandle } from "node:fs/promises";
|
|
2
|
+
import type { BigIntStats } from "node:fs";
|
|
3
|
+
export type ContextBuilderMutationLockTarget = {
|
|
4
|
+
runId: string;
|
|
5
|
+
runsDir: string;
|
|
6
|
+
runDir: string;
|
|
7
|
+
};
|
|
8
|
+
export type ContextBuilderMutationLockOps = {
|
|
9
|
+
open?(path: string, flags: string, mode?: number): Promise<FileHandle>;
|
|
10
|
+
lstat?(path: string, options: {
|
|
11
|
+
bigint: true;
|
|
12
|
+
}): Promise<BigIntStats>;
|
|
13
|
+
rm?(path: string, options: {
|
|
14
|
+
force?: boolean;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
export type ContextBuilderMutationLockOptions = {
|
|
18
|
+
ownerNonce?: string | undefined;
|
|
19
|
+
/** Keep the storage default unless a best-effort caller needs a tighter bound. */
|
|
20
|
+
maxAttempts?: number | undefined;
|
|
21
|
+
/** Deterministic contention seam; production callers leave this unset. */
|
|
22
|
+
onContention?: (() => void | Promise<void>) | undefined;
|
|
23
|
+
/** Storage cleanup supplies its existing owner/manifest admission check. */
|
|
24
|
+
canRecoverStale?: (() => Promise<boolean>) | undefined;
|
|
25
|
+
/** Deterministic seam after stale-lock qualification, before final admission/removal. */
|
|
26
|
+
beforeStaleRemoval?: (() => void | Promise<void>) | undefined;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Serialize cooperative mutations of one context_builder run. The lock lives
|
|
30
|
+
* beside the run directory so it also survives removal of that directory.
|
|
31
|
+
*/
|
|
32
|
+
export declare function withContextBuilderMutationLock<T>(target: ContextBuilderMutationLockTarget, ops: ContextBuilderMutationLockOps, callback: () => Promise<T>, options?: ContextBuilderMutationLockOptions): Promise<T>;
|