clinkx 0.2.3 → 1.0.0
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 +33 -0
- package/LICENSE +10 -0
- package/README.md +113 -18
- package/clinkx-workflows/dist/allowed-roots.d.ts +1 -0
- package/clinkx-workflows/dist/allowed-roots.js +5 -0
- package/clinkx-workflows/dist/allowed-roots.js.map +1 -0
- package/clinkx-workflows/dist/artifacts.d.ts +20 -1
- package/clinkx-workflows/dist/artifacts.js +38 -9
- package/clinkx-workflows/dist/artifacts.js.map +1 -1
- package/clinkx-workflows/dist/backend.d.ts +4 -0
- package/clinkx-workflows/dist/citation-check.d.ts +40 -0
- package/clinkx-workflows/dist/citation-check.js +348 -0
- package/clinkx-workflows/dist/citation-check.js.map +1 -0
- package/clinkx-workflows/dist/clink-client.d.ts +2 -1
- package/clinkx-workflows/dist/clink-client.js +17 -4
- package/clinkx-workflows/dist/clink-client.js.map +1 -1
- package/clinkx-workflows/dist/config.d.ts +145 -16
- package/clinkx-workflows/dist/config.js +384 -26
- package/clinkx-workflows/dist/config.js.map +1 -1
- package/clinkx-workflows/dist/contained-file.d.ts +172 -0
- package/clinkx-workflows/dist/contained-file.js +483 -0
- package/clinkx-workflows/dist/contained-file.js.map +1 -0
- package/clinkx-workflows/dist/context-builder-lifecycle-contract.d.ts +416 -0
- package/clinkx-workflows/dist/context-builder-lifecycle-contract.js +328 -0
- package/clinkx-workflows/dist/context-builder-lifecycle-contract.js.map +1 -0
- package/clinkx-workflows/dist/context-builder-lifecycle-router.d.ts +24 -0
- package/clinkx-workflows/dist/context-builder-lifecycle-router.js +39 -0
- package/clinkx-workflows/dist/context-builder-lifecycle-router.js.map +1 -0
- package/clinkx-workflows/dist/context-cache-key.d.ts +53 -0
- package/clinkx-workflows/dist/context-cache-key.js +91 -0
- package/clinkx-workflows/dist/context-cache-key.js.map +1 -0
- package/clinkx-workflows/dist/context-mode-resolver.d.ts +27 -0
- package/clinkx-workflows/dist/context-mode-resolver.js +126 -0
- package/clinkx-workflows/dist/context-mode-resolver.js.map +1 -0
- package/clinkx-workflows/dist/context-preflight.d.ts +184 -0
- package/clinkx-workflows/dist/context-preflight.js +91 -0
- package/clinkx-workflows/dist/context-preflight.js.map +1 -0
- package/clinkx-workflows/dist/council-expander.d.ts +1 -1
- package/clinkx-workflows/dist/council-expander.js +2 -1
- package/clinkx-workflows/dist/council-expander.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/activity-contract.d.ts +165 -0
- package/clinkx-workflows/dist/dashboard/activity-contract.js +105 -0
- package/clinkx-workflows/dist/dashboard/activity-contract.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/activity-lease.d.ts +25 -0
- package/clinkx-workflows/dist/dashboard/activity-lease.js +34 -0
- package/clinkx-workflows/dist/dashboard/activity-lease.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/activity-reader.d.ts +86 -0
- package/clinkx-workflows/dist/dashboard/activity-reader.js +480 -0
- package/clinkx-workflows/dist/dashboard/activity-reader.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/api-routes.d.ts +36 -0
- package/clinkx-workflows/dist/dashboard/api-routes.js +1047 -0
- package/clinkx-workflows/dist/dashboard/api-routes.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/artifact-index.d.ts +37 -0
- package/clinkx-workflows/dist/dashboard/artifact-index.js +145 -0
- package/clinkx-workflows/dist/dashboard/artifact-index.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/auth/challenge-store.d.ts +31 -0
- package/clinkx-workflows/dist/dashboard/auth/challenge-store.js +65 -0
- package/clinkx-workflows/dist/dashboard/auth/challenge-store.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/auth/controller.d.ts +26 -0
- package/clinkx-workflows/dist/dashboard/auth/controller.js +596 -0
- package/clinkx-workflows/dist/dashboard/auth/controller.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/auth/credential-store.d.ts +60 -0
- package/clinkx-workflows/dist/dashboard/auth/credential-store.js +776 -0
- package/clinkx-workflows/dist/dashboard/auth/credential-store.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/auth/enrollment-gate.d.ts +9 -0
- package/clinkx-workflows/dist/dashboard/auth/enrollment-gate.js +44 -0
- package/clinkx-workflows/dist/dashboard/auth/enrollment-gate.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/auth/session-store.d.ts +17 -0
- package/clinkx-workflows/dist/dashboard/auth/session-store.js +77 -0
- package/clinkx-workflows/dist/dashboard/auth/session-store.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/auth/webauthn-service.d.ts +25 -0
- package/clinkx-workflows/dist/dashboard/auth/webauthn-service.js +71 -0
- package/clinkx-workflows/dist/dashboard/auth/webauthn-service.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/context-run-liveness.d.ts +37 -0
- package/clinkx-workflows/dist/dashboard/context-run-liveness.js +49 -0
- package/clinkx-workflows/dist/dashboard/context-run-liveness.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/context-run-reader.d.ts +222 -0
- package/clinkx-workflows/dist/dashboard/context-run-reader.js +1178 -0
- package/clinkx-workflows/dist/dashboard/context-run-reader.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/contracts.d.ts +8936 -0
- package/clinkx-workflows/dist/dashboard/contracts.js +1157 -0
- package/clinkx-workflows/dist/dashboard/contracts.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/generation.d.ts +14 -0
- package/clinkx-workflows/dist/dashboard/generation.js +41 -0
- package/clinkx-workflows/dist/dashboard/generation.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/index.d.ts +28 -0
- package/clinkx-workflows/dist/dashboard/index.js +16 -0
- package/clinkx-workflows/dist/dashboard/index.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/lazy-content.d.ts +101 -0
- package/clinkx-workflows/dist/dashboard/lazy-content.js +748 -0
- package/clinkx-workflows/dist/dashboard/lazy-content.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/progress-report-contract.d.ts +303 -0
- package/clinkx-workflows/dist/dashboard/progress-report-contract.js +221 -0
- package/clinkx-workflows/dist/dashboard/progress-report-contract.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/progress-report-reader.d.ts +50 -0
- package/clinkx-workflows/dist/dashboard/progress-report-reader.js +581 -0
- package/clinkx-workflows/dist/dashboard/progress-report-reader.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/progress-report-status-overlay.d.ts +89 -0
- package/clinkx-workflows/dist/dashboard/progress-report-status-overlay.js +71 -0
- package/clinkx-workflows/dist/dashboard/progress-report-status-overlay.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/progress-report-status-store.d.ts +28 -0
- package/clinkx-workflows/dist/dashboard/progress-report-status-store.js +110 -0
- package/clinkx-workflows/dist/dashboard/progress-report-status-store.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/read-model.d.ts +86 -0
- package/clinkx-workflows/dist/dashboard/read-model.js +440 -0
- package/clinkx-workflows/dist/dashboard/read-model.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/request-admission.d.ts +31 -0
- package/clinkx-workflows/dist/dashboard/request-admission.js +126 -0
- package/clinkx-workflows/dist/dashboard/request-admission.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/scanner.d.ts +75 -0
- package/clinkx-workflows/dist/dashboard/scanner.js +1110 -0
- package/clinkx-workflows/dist/dashboard/scanner.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/server-factory.d.ts +50 -0
- package/clinkx-workflows/dist/dashboard/server-factory.js +431 -0
- package/clinkx-workflows/dist/dashboard/server-factory.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/session-log-contract.d.ts +2611 -0
- package/clinkx-workflows/dist/dashboard/session-log-contract.js +480 -0
- package/clinkx-workflows/dist/dashboard/session-log-contract.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/session-log-identity.d.ts +21 -0
- package/clinkx-workflows/dist/dashboard/session-log-identity.js +101 -0
- package/clinkx-workflows/dist/dashboard/session-log-identity.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/session-log-journal.d.ts +43 -0
- package/clinkx-workflows/dist/dashboard/session-log-journal.js +522 -0
- package/clinkx-workflows/dist/dashboard/session-log-journal.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/session-log-reader.d.ts +61 -0
- package/clinkx-workflows/dist/dashboard/session-log-reader.js +378 -0
- package/clinkx-workflows/dist/dashboard/session-log-reader.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/session-log-redaction.d.ts +6 -0
- package/clinkx-workflows/dist/dashboard/session-log-redaction.js +367 -0
- package/clinkx-workflows/dist/dashboard/session-log-redaction.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/session-log-retention.d.ts +23 -0
- package/clinkx-workflows/dist/dashboard/session-log-retention.js +212 -0
- package/clinkx-workflows/dist/dashboard/session-log-retention.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/static-responses.d.ts +10 -0
- package/clinkx-workflows/dist/dashboard/static-responses.js +94 -0
- package/clinkx-workflows/dist/dashboard/static-responses.js.map +1 -0
- package/clinkx-workflows/dist/dashboard/worker-lock-observer.d.ts +28 -0
- package/clinkx-workflows/dist/dashboard/worker-lock-observer.js +241 -0
- package/clinkx-workflows/dist/dashboard/worker-lock-observer.js.map +1 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/index-DOkMXTfB.js +25 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
- package/clinkx-workflows/dist/dashboard-ui/assets/style-ChJsn0KD.css +1 -0
- package/clinkx-workflows/dist/dashboard-ui/contracts/council-plan-review-input-v1.json +158 -0
- package/clinkx-workflows/dist/dashboard-ui/index.html +15 -0
- package/clinkx-workflows/dist/dashboard-ui/licenses/IBM-Plex-Mono-OFL.txt +93 -0
- package/clinkx-workflows/dist/dashboard-ui/licenses/IBM-Plex-Sans-OFL.txt +93 -0
- package/clinkx-workflows/dist/dashboard-ui/licenses/JetBrains-Mono-OFL.txt +93 -0
- package/clinkx-workflows/dist/dashboard-ui/licenses/NOTICE.md +32 -0
- package/clinkx-workflows/dist/dashboard-ui/theme-init.js +8 -0
- package/clinkx-workflows/dist/definition-normalizer.d.ts +19 -0
- package/clinkx-workflows/dist/definition-normalizer.js.map +1 -1
- package/clinkx-workflows/dist/delegate-validate.d.ts +78 -0
- package/clinkx-workflows/dist/delegate-validate.js +97 -0
- package/clinkx-workflows/dist/delegate-validate.js.map +1 -0
- package/clinkx-workflows/dist/engine.d.ts +141 -0
- package/clinkx-workflows/dist/engine.js +882 -28
- package/clinkx-workflows/dist/engine.js.map +1 -1
- package/clinkx-workflows/dist/errors.d.ts +2 -0
- package/clinkx-workflows/dist/errors.js.map +1 -1
- package/clinkx-workflows/dist/fingerprint.d.ts +1 -1
- package/clinkx-workflows/dist/fingerprint.js +1 -1
- package/clinkx-workflows/dist/index.d.ts +19 -0
- package/clinkx-workflows/dist/index.js +15 -0
- package/clinkx-workflows/dist/index.js.map +1 -1
- package/clinkx-workflows/dist/loader.d.ts +9 -3
- package/clinkx-workflows/dist/loader.js +92 -21
- package/clinkx-workflows/dist/loader.js.map +1 -1
- package/clinkx-workflows/dist/plan-review/admission.d.ts +160 -0
- package/clinkx-workflows/dist/plan-review/admission.js +290 -0
- package/clinkx-workflows/dist/plan-review/admission.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/context-policy.d.ts +55 -0
- package/clinkx-workflows/dist/plan-review/context-policy.js +146 -0
- package/clinkx-workflows/dist/plan-review/context-policy.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/contract.d.ts +763 -0
- package/clinkx-workflows/dist/plan-review/contract.js +289 -0
- package/clinkx-workflows/dist/plan-review/contract.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/digest.d.ts +68 -0
- package/clinkx-workflows/dist/plan-review/digest.js +241 -0
- package/clinkx-workflows/dist/plan-review/digest.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/discovery.d.ts +45 -0
- package/clinkx-workflows/dist/plan-review/discovery.js +36 -0
- package/clinkx-workflows/dist/plan-review/discovery.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/execution-contract.d.ts +298 -0
- package/clinkx-workflows/dist/plan-review/execution-contract.js +194 -0
- package/clinkx-workflows/dist/plan-review/execution-contract.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/expander.d.ts +48 -0
- package/clinkx-workflows/dist/plan-review/expander.js +243 -0
- package/clinkx-workflows/dist/plan-review/expander.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/projector.d.ts +126 -0
- package/clinkx-workflows/dist/plan-review/projector.js +437 -0
- package/clinkx-workflows/dist/plan-review/projector.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/publication.d.ts +95 -0
- package/clinkx-workflows/dist/plan-review/publication.js +182 -0
- package/clinkx-workflows/dist/plan-review/publication.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/ranking-reducer.d.ts +34 -0
- package/clinkx-workflows/dist/plan-review/ranking-reducer.js +139 -0
- package/clinkx-workflows/dist/plan-review/ranking-reducer.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/resume.d.ts +38 -0
- package/clinkx-workflows/dist/plan-review/resume.js +122 -0
- package/clinkx-workflows/dist/plan-review/resume.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/rubric.d.ts +7 -0
- package/clinkx-workflows/dist/plan-review/rubric.js +24 -0
- package/clinkx-workflows/dist/plan-review/rubric.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/run-state.d.ts +398 -0
- package/clinkx-workflows/dist/plan-review/run-state.js +183 -0
- package/clinkx-workflows/dist/plan-review/run-state.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/runtime-policy.d.ts +74 -0
- package/clinkx-workflows/dist/plan-review/runtime-policy.js +186 -0
- package/clinkx-workflows/dist/plan-review/runtime-policy.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/snapshot.d.ts +81 -0
- package/clinkx-workflows/dist/plan-review/snapshot.js +170 -0
- package/clinkx-workflows/dist/plan-review/snapshot.js.map +1 -0
- package/clinkx-workflows/dist/plan-review/stage-error.d.ts +19 -0
- package/clinkx-workflows/dist/plan-review/stage-error.js +20 -0
- package/clinkx-workflows/dist/plan-review/stage-error.js.map +1 -0
- package/clinkx-workflows/dist/post-processors/index.d.ts +20 -0
- package/clinkx-workflows/dist/post-processors/index.js +21 -0
- package/clinkx-workflows/dist/post-processors/index.js.map +1 -0
- package/clinkx-workflows/dist/prompt-budget.d.ts +7 -0
- package/clinkx-workflows/dist/prompt-budget.js +7 -1
- package/clinkx-workflows/dist/prompt-budget.js.map +1 -1
- package/clinkx-workflows/dist/reducers/index.js +2 -0
- package/clinkx-workflows/dist/reducers/index.js.map +1 -1
- package/clinkx-workflows/dist/run-lock-heartbeat.d.ts +2 -0
- package/clinkx-workflows/dist/run-lock-heartbeat.js +3 -0
- package/clinkx-workflows/dist/run-lock-heartbeat.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/council-plan-review.d.ts +34 -0
- package/clinkx-workflows/dist/run-summary/cards/council-plan-review.js +74 -0
- package/clinkx-workflows/dist/run-summary/cards/council-plan-review.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/index.js +5 -0
- package/clinkx-workflows/dist/run-summary/cards/index.js.map +1 -1
- package/clinkx-workflows/dist/run-summary.d.ts +13 -0
- package/clinkx-workflows/dist/run-summary.js +29 -1
- package/clinkx-workflows/dist/run-summary.js.map +1 -1
- package/clinkx-workflows/dist/schema.d.ts +76 -21
- package/clinkx-workflows/dist/schema.js +10 -1
- package/clinkx-workflows/dist/schema.js.map +1 -1
- package/clinkx-workflows/dist/seed-terms.d.ts +30 -0
- package/clinkx-workflows/dist/seed-terms.js +176 -0
- package/clinkx-workflows/dist/seed-terms.js.map +1 -0
- package/clinkx-workflows/dist/server.d.ts +5 -2
- package/clinkx-workflows/dist/server.js +82 -52
- package/clinkx-workflows/dist/server.js.map +1 -1
- package/clinkx-workflows/dist/shutdown.d.ts +18 -20
- package/clinkx-workflows/dist/shutdown.js +43 -61
- package/clinkx-workflows/dist/shutdown.js.map +1 -1
- package/clinkx-workflows/dist/state-schema.d.ts +38 -0
- package/clinkx-workflows/dist/state.d.ts +170 -3
- package/clinkx-workflows/dist/state.js +1275 -28
- package/clinkx-workflows/dist/state.js.map +1 -1
- package/clinkx-workflows/dist/transport.d.ts +15 -0
- package/clinkx-workflows/dist/transport.js +19 -10
- package/clinkx-workflows/dist/transport.js.map +1 -1
- package/clinkx-workflows/dist/types.d.ts +14 -2
- package/clinkx-workflows/dist/validators/council.d.ts +318 -85
- package/clinkx-workflows/dist/validators/council.js +52 -13
- package/clinkx-workflows/dist/validators/council.js.map +1 -1
- package/clinkx-workflows/dist/validators/index.d.ts +1 -0
- package/clinkx-workflows/dist/validators/index.js +3 -0
- package/clinkx-workflows/dist/validators/index.js.map +1 -1
- package/clinkx-workflows/dist/validators/plan-review.d.ts +398 -0
- package/clinkx-workflows/dist/validators/plan-review.js +316 -0
- package/clinkx-workflows/dist/validators/plan-review.js.map +1 -0
- package/clinkx-workflows/dist/workflow-receipt.js +188 -4
- package/clinkx-workflows/dist/workflow-receipt.js.map +1 -1
- package/clinkx-workflows/dist/workflow-tools.d.ts +48 -3
- package/clinkx-workflows/dist/workflow-tools.js +1402 -59
- package/clinkx-workflows/dist/workflow-tools.js.map +1 -1
- package/clinkx-workflows/dist/workspace-signature.d.ts +16 -0
- package/clinkx-workflows/dist/workspace-signature.js +388 -0
- package/clinkx-workflows/dist/workspace-signature.js.map +1 -0
- package/clinkx-workflows/templates/council/answer-specialist.txt +2 -1
- package/clinkx-workflows/templates/council/code-review-chairman.txt +13 -0
- package/clinkx-workflows/templates/council/code-review-cross-reviewer.txt +4 -1
- package/clinkx-workflows/templates/council/code-review-reviewer.txt +19 -3
- package/clinkx-workflows/templates/council/debug-debugger.txt +2 -1
- package/clinkx-workflows/templates/council/discover-analyst.txt +2 -1
- package/clinkx-workflows/templates/council/member.txt +2 -1
- package/clinkx-workflows/templates/council/plan-review-chairman.txt +68 -0
- package/clinkx-workflows/templates/council/plan-review-cross-reviewer.txt +51 -0
- package/clinkx-workflows/templates/council/plan-review-reviewer.txt +60 -0
- package/clinkx-workflows/templates/plan-review/chairman.txt +48 -0
- package/clinkx-workflows/templates/plan-review/cross-review.txt +52 -0
- package/clinkx-workflows/templates/plan-review/ranking.txt +16 -0
- package/clinkx-workflows/templates/plan-review/reviewer.txt +57 -0
- package/clinkx-workflows/workflows/council-answer.yaml +97 -8
- package/clinkx-workflows/workflows/council-code-review.yaml +103 -8
- package/clinkx-workflows/workflows/council-debug.yaml +97 -8
- package/clinkx-workflows/workflows/council-default.yaml +97 -8
- package/clinkx-workflows/workflows/council-discover.yaml +97 -8
- package/clinkx-workflows/workflows/council-plan-review.yaml +250 -0
- package/clinkx-workflows/workflows/plan-review-receipts.yaml +230 -0
- package/conf/adapters/agy.json +49 -0
- package/conf/adapters/claude.json +5 -0
- package/conf/adapters/codex-app-server.json +44 -0
- package/conf/adapters/codex.json +7 -2
- package/conf/adapters/glm.json +5 -0
- package/conf/adapters/grok.json +60 -0
- package/conf/adapters/hapi/agy.json +52 -0
- package/conf/adapters/hapi/claude.json +5 -0
- package/conf/adapters/hapi/codex.json +7 -2
- package/conf/adapters/hapi/glm.json +5 -0
- package/conf/prompts/json-codereviewer.txt +1 -0
- package/conf/prompts/json.txt +1 -0
- package/dist/activity-journal.d.ts +42 -0
- package/dist/activity-journal.js +381 -0
- package/dist/activity-journal.js.map +1 -0
- package/dist/allowed-roots.d.ts +53 -0
- package/dist/allowed-roots.js +216 -0
- package/dist/allowed-roots.js.map +1 -0
- package/dist/codex/activity-session-log.d.ts +14 -0
- package/dist/codex/activity-session-log.js +206 -0
- package/dist/codex/activity-session-log.js.map +1 -0
- package/dist/codex/agent-tools.d.ts +23 -0
- package/dist/codex/agent-tools.js +1270 -0
- package/dist/codex/agent-tools.js.map +1 -0
- package/dist/codex/app-server-client.d.ts +76 -0
- package/dist/codex/app-server-client.js +582 -0
- package/dist/codex/app-server-client.js.map +1 -0
- package/dist/codex/app-server-registry.d.ts +389 -0
- package/dist/codex/app-server-registry.js +1407 -0
- package/dist/codex/app-server-registry.js.map +1 -0
- package/dist/codex/client-types.d.ts +109 -0
- package/dist/codex/client-types.js +2 -0
- package/dist/codex/client-types.js.map +1 -0
- package/dist/codex/protocol.d.ts +5375 -0
- package/dist/codex/protocol.js +614 -0
- package/dist/codex/protocol.js.map +1 -0
- package/dist/codex/session.d.ts +263 -0
- package/dist/codex/session.js +466 -0
- package/dist/codex/session.js.map +1 -0
- package/dist/config.d.ts +185 -19
- package/dist/config.js +82 -16
- package/dist/config.js.map +1 -1
- package/dist/context-builder/anchors.d.ts +12 -0
- package/dist/context-builder/anchors.js +22 -0
- package/dist/context-builder/anchors.js.map +1 -0
- package/dist/context-builder/bundle.d.ts +109 -0
- package/dist/context-builder/bundle.js +1498 -0
- package/dist/context-builder/bundle.js.map +1 -0
- package/dist/context-builder/codemap.d.ts +22 -0
- package/dist/context-builder/codemap.js +675 -0
- package/dist/context-builder/codemap.js.map +1 -0
- package/dist/context-builder/config.d.ts +61 -0
- package/dist/context-builder/config.js +216 -0
- package/dist/context-builder/config.js.map +1 -0
- package/dist/context-builder/context-run-catalog.d.ts +17 -0
- package/dist/context-builder/context-run-catalog.js +99 -0
- package/dist/context-builder/context-run-catalog.js.map +1 -0
- package/dist/context-builder/delegate-packet.d.ts +219 -0
- package/dist/context-builder/delegate-packet.js +1190 -0
- package/dist/context-builder/delegate-packet.js.map +1 -0
- package/dist/context-builder/delegate-reconstruction.d.ts +13 -0
- package/dist/context-builder/delegate-reconstruction.js +220 -0
- package/dist/context-builder/delegate-reconstruction.js.map +1 -0
- package/dist/context-builder/delegate-validation.d.ts +27 -0
- package/dist/context-builder/delegate-validation.js +479 -0
- package/dist/context-builder/delegate-validation.js.map +1 -0
- package/dist/context-builder/delegate.d.ts +26 -0
- package/dist/context-builder/delegate.js +134 -0
- package/dist/context-builder/delegate.js.map +1 -0
- package/dist/context-builder/diagnostics.d.ts +36 -0
- package/dist/context-builder/diagnostics.js +107 -0
- package/dist/context-builder/diagnostics.js.map +1 -0
- package/dist/context-builder/discovery.d.ts +146 -0
- package/dist/context-builder/discovery.js +2129 -0
- package/dist/context-builder/discovery.js.map +1 -0
- package/dist/context-builder/globs.d.ts +14 -0
- package/dist/context-builder/globs.js +175 -0
- package/dist/context-builder/globs.js.map +1 -0
- package/dist/context-builder/handler.d.ts +41 -0
- package/dist/context-builder/handler.js +2590 -0
- package/dist/context-builder/handler.js.map +1 -0
- package/dist/context-builder/lifecycle-contract.d.ts +424 -0
- package/dist/context-builder/lifecycle-contract.js +523 -0
- package/dist/context-builder/lifecycle-contract.js.map +1 -0
- package/dist/context-builder/lifecycle-journal.d.ts +62 -0
- package/dist/context-builder/lifecycle-journal.js +88 -0
- package/dist/context-builder/lifecycle-journal.js.map +1 -0
- package/dist/context-builder/lifecycle-observer.d.ts +102 -0
- package/dist/context-builder/lifecycle-observer.js +258 -0
- package/dist/context-builder/lifecycle-observer.js.map +1 -0
- package/dist/context-builder/lifecycle-reconcile.d.ts +32 -0
- package/dist/context-builder/lifecycle-reconcile.js +191 -0
- package/dist/context-builder/lifecycle-reconcile.js.map +1 -0
- package/dist/context-builder/lifecycle-recovery.d.ts +2 -0
- package/dist/context-builder/lifecycle-recovery.js +14 -0
- package/dist/context-builder/lifecycle-recovery.js.map +1 -0
- package/dist/context-builder/path-signals.d.ts +7 -0
- package/dist/context-builder/path-signals.js +70 -0
- package/dist/context-builder/path-signals.js.map +1 -0
- package/dist/context-builder/paths.d.ts +30 -0
- package/dist/context-builder/paths.js +153 -0
- package/dist/context-builder/paths.js.map +1 -0
- package/dist/context-builder/progress.d.ts +17 -0
- package/dist/context-builder/progress.js +93 -0
- package/dist/context-builder/progress.js.map +1 -0
- package/dist/context-builder/receipt.d.ts +91 -0
- package/dist/context-builder/receipt.js +180 -0
- package/dist/context-builder/receipt.js.map +1 -0
- package/dist/context-builder/refine-handler.d.ts +14 -0
- package/dist/context-builder/refine-handler.js +790 -0
- package/dist/context-builder/refine-handler.js.map +1 -0
- package/dist/context-builder/review-coverage.d.ts +84 -0
- package/dist/context-builder/review-coverage.js +437 -0
- package/dist/context-builder/review-coverage.js.map +1 -0
- package/dist/context-builder/run-id.d.ts +7 -0
- package/dist/context-builder/run-id.js +31 -0
- package/dist/context-builder/run-id.js.map +1 -0
- package/dist/context-builder/schema.d.ts +669 -0
- package/dist/context-builder/schema.js +399 -0
- package/dist/context-builder/schema.js.map +1 -0
- package/dist/context-builder/secrets.d.ts +41 -0
- package/dist/context-builder/secrets.js +1651 -0
- package/dist/context-builder/secrets.js.map +1 -0
- package/dist/context-builder/selection.d.ts +56 -0
- package/dist/context-builder/selection.js +1111 -0
- package/dist/context-builder/selection.js.map +1 -0
- package/dist/context-builder/session-log-identity.d.ts +1 -0
- package/dist/context-builder/session-log-identity.js +66 -0
- package/dist/context-builder/session-log-identity.js.map +1 -0
- package/dist/context-builder/slice-range-math.d.ts +16 -0
- package/dist/context-builder/slice-range-math.js +137 -0
- package/dist/context-builder/slice-range-math.js.map +1 -0
- package/dist/context-builder/status.d.ts +66 -0
- package/dist/context-builder/status.js +160 -0
- package/dist/context-builder/status.js.map +1 -0
- package/dist/context-builder/storage.d.ts +118 -0
- package/dist/context-builder/storage.js +1003 -0
- package/dist/context-builder/storage.js.map +1 -0
- package/dist/context-builder/token-estimate.d.ts +19 -0
- package/dist/context-builder/token-estimate.js +90 -0
- package/dist/context-builder/token-estimate.js.map +1 -0
- package/dist/context-builder/versions.d.ts +29 -0
- package/dist/context-builder/versions.js +30 -0
- package/dist/context-builder/versions.js.map +1 -0
- package/dist/context-builder/workflow-runner.d.ts +69 -0
- package/dist/context-builder/workflow-runner.js +1051 -0
- package/dist/context-builder/workflow-runner.js.map +1 -0
- package/dist/context-builder/write-watchdog.d.ts +14 -0
- package/dist/context-builder/write-watchdog.js +38 -0
- package/dist/context-builder/write-watchdog.js.map +1 -0
- package/dist/dashboard-adapter-catalog.d.ts +9 -0
- package/dist/dashboard-adapter-catalog.js +46 -0
- package/dist/dashboard-adapter-catalog.js.map +1 -0
- package/dist/dashboard-cli.d.ts +79 -0
- package/dist/dashboard-cli.js +585 -0
- package/dist/dashboard-cli.js.map +1 -0
- package/dist/dashboard-companion/client.d.ts +36 -0
- package/dist/dashboard-companion/client.js +210 -0
- package/dist/dashboard-companion/client.js.map +1 -0
- package/dist/dashboard-companion/config.d.ts +8 -0
- package/dist/dashboard-companion/config.js +52 -0
- package/dist/dashboard-companion/config.js.map +1 -0
- package/dist/dashboard-companion/http-proxy.d.ts +10 -0
- package/dist/dashboard-companion/http-proxy.js +234 -0
- package/dist/dashboard-companion/http-proxy.js.map +1 -0
- package/dist/dashboard-companion/protocol.d.ts +80 -0
- package/dist/dashboard-companion/protocol.js +455 -0
- package/dist/dashboard-companion/protocol.js.map +1 -0
- package/dist/dashboard-companion/standalone-assets.d.ts +12 -0
- package/dist/dashboard-companion/standalone-assets.js +72 -0
- package/dist/dashboard-companion/standalone-assets.js.map +1 -0
- package/dist/dashboard-companion/standalone-entry.d.ts +1 -0
- package/dist/dashboard-companion/standalone-entry.js +17 -0
- package/dist/dashboard-companion/standalone-entry.js.map +1 -0
- package/dist/dashboard-gateway/config.d.ts +9 -0
- package/dist/dashboard-gateway/config.js +44 -0
- package/dist/dashboard-gateway/config.js.map +1 -0
- package/dist/dashboard-gateway/index.d.ts +11 -0
- package/dist/dashboard-gateway/index.js +755 -0
- package/dist/dashboard-gateway/index.js.map +1 -0
- package/dist/dashboard-gateway/main.d.ts +1 -0
- package/dist/dashboard-gateway/main.js +25 -0
- package/dist/dashboard-gateway/main.js.map +1 -0
- package/dist/dashboard-pairing-token.d.ts +1 -0
- package/dist/dashboard-pairing-token.js +5 -0
- package/dist/dashboard-pairing-token.js.map +1 -0
- package/dist/elaris/client.d.ts +73 -0
- package/dist/elaris/client.js +825 -0
- package/dist/elaris/client.js.map +1 -0
- package/dist/elaris/config.d.ts +18 -0
- package/dist/elaris/config.js +75 -0
- package/dist/elaris/config.js.map +1 -0
- package/dist/elaris/errors.d.ts +41 -0
- package/dist/elaris/errors.js +205 -0
- package/dist/elaris/errors.js.map +1 -0
- package/dist/elaris/github-repo.d.ts +18 -0
- package/dist/elaris/github-repo.js +89 -0
- package/dist/elaris/github-repo.js.map +1 -0
- package/dist/elaris/index.d.ts +10 -0
- package/dist/elaris/index.js +11 -0
- package/dist/elaris/index.js.map +1 -0
- package/dist/elaris/redact.d.ts +89 -0
- package/dist/elaris/redact.js +423 -0
- package/dist/elaris/redact.js.map +1 -0
- package/dist/elaris/run-id.d.ts +5 -0
- package/dist/elaris/run-id.js +20 -0
- package/dist/elaris/run-id.js.map +1 -0
- package/dist/elaris/status.d.ts +45 -0
- package/dist/elaris/status.js +122 -0
- package/dist/elaris/status.js.map +1 -0
- package/dist/elaris/tool-schemas.d.ts +314 -0
- package/dist/elaris/tool-schemas.js +208 -0
- package/dist/elaris/tool-schemas.js.map +1 -0
- package/dist/elaris/tools.d.ts +73 -0
- package/dist/elaris/tools.js +1065 -0
- package/dist/elaris/tools.js.map +1 -0
- package/dist/elaris/types.d.ts +1541 -0
- package/dist/elaris/types.js +252 -0
- package/dist/elaris/types.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.js +19 -0
- package/dist/errors.js.map +1 -1
- package/dist/handler.d.ts +4 -0
- package/dist/handler.js +10 -1
- package/dist/handler.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/local-clink-backend.d.ts +3 -0
- package/dist/local-clink-backend.js +4 -0
- package/dist/local-clink-backend.js.map +1 -1
- package/dist/package-info.d.ts +2 -0
- package/dist/package-info.js +18 -0
- package/dist/package-info.js.map +1 -0
- package/dist/parsers/codex-jsonl.js +48 -3
- package/dist/parsers/codex-jsonl.js.map +1 -1
- package/dist/parsers/extract.d.ts +10 -1
- package/dist/parsers/extract.js +11 -3
- package/dist/parsers/extract.js.map +1 -1
- package/dist/paths.d.ts +8 -0
- package/dist/paths.js +31 -43
- package/dist/paths.js.map +1 -1
- package/dist/pipeline.d.ts +51 -3
- package/dist/pipeline.js +264 -47
- package/dist/pipeline.js.map +1 -1
- package/dist/run-dir.d.ts +24 -0
- package/dist/run-dir.js +201 -2
- package/dist/run-dir.js.map +1 -1
- package/dist/runner.d.ts +13 -0
- package/dist/runner.js +184 -15
- package/dist/runner.js.map +1 -1
- package/dist/safety.d.ts +4 -4
- package/dist/safety.js +4 -4
- package/dist/schema.d.ts +7 -7
- package/dist/server.d.ts +2 -0
- package/dist/server.js +396 -24
- package/dist/server.js.map +1 -1
- package/dist/session-log-stream.d.ts +18 -0
- package/dist/session-log-stream.js +319 -0
- package/dist/session-log-stream.js.map +1 -0
- package/package.json +47 -5
- package/conf/adapters/gemini.json +0 -44
- package/conf/adapters/hapi/gemini.json +0 -47
- package/dist/artifacts.d.ts +0 -9
- package/dist/artifacts.js +0 -24
- package/dist/artifacts.js.map +0 -1
- package/dist/parsers/gemini-json.d.ts +0 -2
- package/dist/parsers/gemini-json.js +0 -72
- package/dist/parsers/gemini-json.js.map +0 -1
|
@@ -10,23 +10,33 @@
|
|
|
10
10
|
* REAL controls (child env CAN control these):
|
|
11
11
|
* - CLINKX_MAX_CONCURRENT: fail-fast semaphore depth (concurrency.ts:3,25-29)
|
|
12
12
|
* - CLINKX_MAX_RESPONSE_CHARS: output truncation ceiling (pipeline.ts env fallback)
|
|
13
|
-
* - CLINKX_MAX_OUTPUT_BYTES: per-stream capture cap
|
|
13
|
+
* - CLINKX_MAX_OUTPUT_BYTES: per-stream capture cap — legacy fallback read only when
|
|
14
|
+
* CLINKX_MAX_CAPTURE_BYTES is unset (runner.ts capture resolution). Effective in the
|
|
15
|
+
* child because the scrub removes CLINKX_MAX_CAPTURE_BYTES and re-injection never sets it.
|
|
14
16
|
* - CLINKX_MAX_PROMPT_BYTES: pre-dispatch prompt ceiling (runner.ts)
|
|
15
17
|
* - CLINKX_CONFIG_PATH: adapter config path override
|
|
16
18
|
* - CLINKX_ALLOWED_ROOTS: comma-separated allowed path prefixes
|
|
17
19
|
* - CLINKX_LOG_LEVEL: pino log verbosity
|
|
18
20
|
*
|
|
19
21
|
* DEAD knobs (adapter JSON wins, env has no effect with current shipped adapters):
|
|
20
|
-
* - CLINKX_TIMEOUT_SECONDS:
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
22
|
+
* - CLINKX_TIMEOUT_SECONDS: every shipped subprocess adapter (conf/adapters/*.json and
|
|
23
|
+
* conf/adapters/hapi/*.json) sets timeout_seconds = 3600 in JSON. Adapter config wins
|
|
24
|
+
* per the runner.ts timeout resolution (options > adapter > env > default).
|
|
25
|
+
* - CLINKX_IDLE_TIMEOUT_SECONDS: every shipped subprocess adapter sets
|
|
26
|
+
* idle_timeout_seconds in JSON. Adapter config wins (same precedence).
|
|
27
|
+
* - CLINKX_IDLE_TIMEOUT_STARTUP_SECONDS: every shipped subprocess adapter sets
|
|
28
|
+
* idle_timeout_startup_seconds. Adapter config wins (same precedence). Additionally,
|
|
29
|
+
* an adapter with suppress_stdout and no stderr_to_file has both idle timers forced
|
|
30
|
+
* to 0 — no observable byte channel (runner.ts idle resolution).
|
|
27
31
|
*/
|
|
28
32
|
import { realpathSync } from "node:fs";
|
|
29
|
-
import {
|
|
33
|
+
import { isIP } from "node:net";
|
|
34
|
+
import { userInfo } from "node:os";
|
|
35
|
+
import { isAbsolute, join, parse, resolve } from "node:path";
|
|
36
|
+
import { artifactOnlyEnvEntry } from "./allowed-roots.js";
|
|
37
|
+
export const DEFAULT_DASHBOARD_MAX_STATE_BYTES = 16_777_216;
|
|
38
|
+
export const MIN_DASHBOARD_MAX_STATE_BYTES = 1_048_576;
|
|
39
|
+
export const MAX_DASHBOARD_MAX_STATE_BYTES = 67_108_864;
|
|
30
40
|
// ---------------------------------------------------------------------------
|
|
31
41
|
// Workflow server env vars (CLINKX_WORKFLOWS_*)
|
|
32
42
|
// ---------------------------------------------------------------------------
|
|
@@ -34,6 +44,13 @@ function envStr(key, fallback) {
|
|
|
34
44
|
const v = process.env[key];
|
|
35
45
|
return v != null && v !== "" ? v : fallback;
|
|
36
46
|
}
|
|
47
|
+
function envWorkflowContextMode(key, fallback) {
|
|
48
|
+
const raw = envStr(key, fallback).trim();
|
|
49
|
+
if (raw === "full" || raw === "deterministic" || raw === "off") {
|
|
50
|
+
return raw;
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`${key} must be one of full, deterministic, off; got ${JSON.stringify(raw)}`);
|
|
53
|
+
}
|
|
37
54
|
function envInt(key, fallback) {
|
|
38
55
|
const v = process.env[key];
|
|
39
56
|
if (v == null || v === "")
|
|
@@ -48,10 +65,27 @@ function envNonNegativeInt(key, fallback) {
|
|
|
48
65
|
const n = Number(v);
|
|
49
66
|
return Number.isSafeInteger(n) && n >= 0 ? n : fallback;
|
|
50
67
|
}
|
|
68
|
+
/** Integer-strict positive parse — rejects fractional values (e.g. "1.5"). */
|
|
69
|
+
function envPositiveInt(key, fallback) {
|
|
70
|
+
const v = process.env[key];
|
|
71
|
+
if (v == null || v === "")
|
|
72
|
+
return fallback;
|
|
73
|
+
const n = Number(v);
|
|
74
|
+
return Number.isSafeInteger(n) && n >= 1 ? n : fallback;
|
|
75
|
+
}
|
|
76
|
+
function envBool(key, fallback) {
|
|
77
|
+
const v = process.env[key];
|
|
78
|
+
if (v == null || v.trim() === "")
|
|
79
|
+
return fallback;
|
|
80
|
+
return v.trim().toLowerCase() === "true";
|
|
81
|
+
}
|
|
51
82
|
export const DEFAULT_RETAIN_FAILED_DAYS = 30;
|
|
52
83
|
export const DEFAULT_RETAIN_CANCELLED_DAYS = 30;
|
|
53
84
|
export const DEFAULT_RETAIN_DEBUG_DAYS = 7;
|
|
54
|
-
|
|
85
|
+
export const DEFAULT_RETAIN_ASYNC_DAYS = 1;
|
|
86
|
+
export const DEFAULT_RETAIN_SUCCEEDED_DAYS = 1;
|
|
87
|
+
export const DEFAULT_DASHBOARD_PORT = 4180;
|
|
88
|
+
/** Resolve workspace root: explicit env > process.cwd() fallback (callers warn at startup). */
|
|
55
89
|
export function resolveWorkspaceRoot() {
|
|
56
90
|
const explicit = process.env["CLINKX_WORKFLOWS_WORKSPACE_ROOT"];
|
|
57
91
|
if (explicit != null && explicit !== "") {
|
|
@@ -62,7 +96,9 @@ export function resolveWorkspaceRoot() {
|
|
|
62
96
|
return resolve(explicit);
|
|
63
97
|
}
|
|
64
98
|
}
|
|
65
|
-
//
|
|
99
|
+
// Silent fallback — this module cannot log (logger.ts imports config.js; circular).
|
|
100
|
+
// Both servers (createServer, createWorkflowServer) warn at startup via
|
|
101
|
+
// hasExplicitWorkspaceRoot() when this cwd fallback is in effect.
|
|
66
102
|
return resolve(process.cwd());
|
|
67
103
|
}
|
|
68
104
|
/** Whether workspace root was explicitly configured. */
|
|
@@ -71,12 +107,24 @@ export function hasExplicitWorkspaceRoot() {
|
|
|
71
107
|
return v != null && v !== "";
|
|
72
108
|
}
|
|
73
109
|
/**
|
|
74
|
-
* Derive CLINKX_ALLOWED_ROOTS for the child process
|
|
75
|
-
*
|
|
76
|
-
*
|
|
110
|
+
* Derive CLINKX_ALLOWED_ROOTS for the child process: the resolved workspace
|
|
111
|
+
* root plus the workflow state/artifact roots, comma-joined. The state and
|
|
112
|
+
* artifact roots carry the artifact-only `/.` marker (artifactOnlyEnvEntry),
|
|
113
|
+
* so the child may use them for artifact/state I/O but context_builder never
|
|
114
|
+
* admits them as source roots.
|
|
115
|
+
*
|
|
116
|
+
* Performs NO validation of workspaceRoot: a cwd-derived root (see
|
|
117
|
+
* resolveWorkspaceRoot's fallback) is passed through as-is — including "/",
|
|
118
|
+
* which grants the child filesystem-wide reach. The only guardrail today is
|
|
119
|
+
* the startup warning both servers emit when CLINKX_WORKFLOWS_WORKSPACE_ROOT
|
|
120
|
+
* is unset.
|
|
77
121
|
*/
|
|
78
122
|
export function deriveAllowedRoots(workspaceRoot, stateDir, artifactsDir) {
|
|
79
|
-
const roots = [
|
|
123
|
+
const roots = [
|
|
124
|
+
workspaceRoot,
|
|
125
|
+
artifactOnlyEnvEntry(stateDir),
|
|
126
|
+
artifactOnlyEnvEntry(artifactsDir),
|
|
127
|
+
];
|
|
80
128
|
return roots.join(",");
|
|
81
129
|
}
|
|
82
130
|
// ---------------------------------------------------------------------------
|
|
@@ -87,7 +135,8 @@ export function getClinkxCmd() {
|
|
|
87
135
|
return envStr("CLINKX_WORKFLOWS_CLINKX_CMD", "clinkx");
|
|
88
136
|
}
|
|
89
137
|
/**
|
|
90
|
-
* Resolve a path relative to the package root (
|
|
138
|
+
* Resolve a path relative to the package root (one level up from this file's
|
|
139
|
+
* directory — dist/ at runtime, src/ under vitest).
|
|
91
140
|
* If the path is absolute, return as-is.
|
|
92
141
|
*/
|
|
93
142
|
function resolvePackageRelative(raw) {
|
|
@@ -101,6 +150,22 @@ function resolvePackageRelative(raw) {
|
|
|
101
150
|
export function getWorkflowsPath() {
|
|
102
151
|
return envStr("CLINKX_WORKFLOWS_PATH", "workflows/");
|
|
103
152
|
}
|
|
153
|
+
/** Effective absolute workflow definition directory used by the loader. */
|
|
154
|
+
export function getResolvedWorkflowsPath() {
|
|
155
|
+
return resolvePackageRelative(getWorkflowsPath());
|
|
156
|
+
}
|
|
157
|
+
/** Soft default for workflow context-builder preflight mode. */
|
|
158
|
+
export function getWorkflowsContextDefault() {
|
|
159
|
+
return envWorkflowContextMode("CLINKX_WORKFLOWS_CONTEXT_DEFAULT", "full");
|
|
160
|
+
}
|
|
161
|
+
/** Curator adapter name used by the injected default full delegate. */
|
|
162
|
+
export function getWorkflowsContextDefaultCurator() {
|
|
163
|
+
const value = envStr("CLINKX_WORKFLOWS_CONTEXT_DEFAULT_CURATOR", "codex").trim();
|
|
164
|
+
if (value === "") {
|
|
165
|
+
throw new Error("CLINKX_WORKFLOWS_CONTEXT_DEFAULT_CURATOR must be non-empty");
|
|
166
|
+
}
|
|
167
|
+
return value;
|
|
168
|
+
}
|
|
104
169
|
/** Prompt template root directory (resolved relative to package root). */
|
|
105
170
|
export function getTemplatesPath() {
|
|
106
171
|
return resolvePackageRelative(envStr("CLINKX_WORKFLOWS_TEMPLATES_PATH", "templates/"));
|
|
@@ -109,6 +174,14 @@ export function getTemplatesPath() {
|
|
|
109
174
|
export function getMaxParallel() {
|
|
110
175
|
return envInt("CLINKX_WORKFLOWS_MAX_PARALLEL", 5);
|
|
111
176
|
}
|
|
177
|
+
/** Process-wide cap for detached workflow runs (integer-strict, >= 1). */
|
|
178
|
+
export function getWorkflowsMaxConcurrentAsync() {
|
|
179
|
+
return envPositiveInt("CLINKX_WORKFLOWS_MAX_CONCURRENT_ASYNC", 1);
|
|
180
|
+
}
|
|
181
|
+
/** Override that allows raw async admission above the context-builder pool cap. */
|
|
182
|
+
export function getWorkflowsAllowUnsafeAsyncCap() {
|
|
183
|
+
return envBool("CLINKX_WORKFLOWS_ALLOW_UNSAFE_ASYNC_CAP", false);
|
|
184
|
+
}
|
|
112
185
|
/** Passed to child as CLINKX_MAX_CONCURRENT. */
|
|
113
186
|
export function getChildMaxConcurrent() {
|
|
114
187
|
return envInt("CLINKX_WORKFLOWS_CHILD_MAX_CONCURRENT", 5);
|
|
@@ -128,7 +201,261 @@ export function getChildMaxPromptBytes() {
|
|
|
128
201
|
/** Optional workflow-owned child adapter bundle path. */
|
|
129
202
|
export function getChildConfigPath() {
|
|
130
203
|
const v = process.env["CLINKX_WORKFLOWS_CHILD_CONFIG_PATH"];
|
|
131
|
-
|
|
204
|
+
if (v == null || v === "")
|
|
205
|
+
return undefined;
|
|
206
|
+
const absolute = resolve(resolveWorkspaceRoot(), v);
|
|
207
|
+
try {
|
|
208
|
+
return realpathSync(absolute);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return absolute;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/** Loopback HTTP port for the standalone dashboard. */
|
|
215
|
+
export function getDashboardPort() {
|
|
216
|
+
const raw = process.env["CLINKX_WORKFLOWS_DASHBOARD_PORT"];
|
|
217
|
+
if (raw == null || raw === "")
|
|
218
|
+
return DEFAULT_DASHBOARD_PORT;
|
|
219
|
+
const port = Number(raw);
|
|
220
|
+
if (!/^(?:0|[1-9]\d*)$/.test(raw) || !Number.isSafeInteger(port) || port > 65_535) {
|
|
221
|
+
throw new Error("CLINKX_WORKFLOWS_DASHBOARD_PORT must be an integer from 0 through 65535");
|
|
222
|
+
}
|
|
223
|
+
return port;
|
|
224
|
+
}
|
|
225
|
+
/** Maximum admitted dashboard state.json byte count. */
|
|
226
|
+
export function getDashboardMaxStateBytes() {
|
|
227
|
+
const key = "CLINKX_WORKFLOWS_DASHBOARD_MAX_STATE_BYTES";
|
|
228
|
+
const raw = process.env[key];
|
|
229
|
+
if (raw == null)
|
|
230
|
+
return DEFAULT_DASHBOARD_MAX_STATE_BYTES;
|
|
231
|
+
const value = Number(raw);
|
|
232
|
+
if (!/^[1-9]\d*$/.test(raw) ||
|
|
233
|
+
!Number.isSafeInteger(value) ||
|
|
234
|
+
value < MIN_DASHBOARD_MAX_STATE_BYTES ||
|
|
235
|
+
value > MAX_DASHBOARD_MAX_STATE_BYTES) {
|
|
236
|
+
throw new Error(`${key} must be an integer from ${String(MIN_DASHBOARD_MAX_STATE_BYTES)} through ${String(MAX_DASHBOARD_MAX_STATE_BYTES)} bytes`);
|
|
237
|
+
}
|
|
238
|
+
return value;
|
|
239
|
+
}
|
|
240
|
+
// ---------------------------------------------------------------------------
|
|
241
|
+
// Dashboard remote public access (opt-in; local/SSH behavior unchanged)
|
|
242
|
+
// ---------------------------------------------------------------------------
|
|
243
|
+
//
|
|
244
|
+
// Remote access is an explicit opt-in via a strict env PAIR. Both absent means
|
|
245
|
+
// local mode (loopback + SSH forwarding, unchanged). Exactly one present is a
|
|
246
|
+
// misconfiguration that fails loud at startup. Both present means remote mode.
|
|
247
|
+
// This module only RESOLVES the configuration; wiring into the CLI/backend and
|
|
248
|
+
// the remote URL fragment are later phases. The listener still binds 127.0.0.1;
|
|
249
|
+
// remote reachability is provided by a front proxy, never by widening the bind.
|
|
250
|
+
export const DASHBOARD_PUBLIC_API_ORIGIN_ENV = "CLINKX_WORKFLOWS_DASHBOARD_PUBLIC_API_ORIGIN";
|
|
251
|
+
export const DASHBOARD_UI_ORIGIN_ENV = "CLINKX_WORKFLOWS_DASHBOARD_UI_ORIGIN";
|
|
252
|
+
export const DASHBOARD_AUTH_MODE_ENV = "CLINKX_WORKFLOWS_DASHBOARD_AUTH_MODE";
|
|
253
|
+
export const DASHBOARD_CREDENTIAL_DIR_ENV = "CLINKX_WORKFLOWS_DASHBOARD_CREDENTIAL_DIR";
|
|
254
|
+
export const DASHBOARD_RP_NAME_ENV = "CLINKX_WORKFLOWS_DASHBOARD_RP_NAME";
|
|
255
|
+
export const DASHBOARD_SESSION_TTL_SECONDS_ENV = "CLINKX_WORKFLOWS_DASHBOARD_SESSION_TTL_SECONDS";
|
|
256
|
+
export const DEFAULT_DASHBOARD_RP_NAME = "ClinkX Dashboard";
|
|
257
|
+
export const DEFAULT_DASHBOARD_SESSION_TTL_SECONDS = 43_200;
|
|
258
|
+
/**
|
|
259
|
+
* Reusable canonical absolute-HTTPS origin parser. Accepts only the exact
|
|
260
|
+
* canonical origin serialization and rejects everything else fail-closed:
|
|
261
|
+
* non-https, embedded credentials, any path beyond root, query, fragment,
|
|
262
|
+
* wildcard, comma list, whitespace, and any non-canonical serialization
|
|
263
|
+
* (trailing slash, default `:443`, uppercase host, IDN not already punycoded).
|
|
264
|
+
*
|
|
265
|
+
* `label` is embedded in the thrown message so callers surface an actionable
|
|
266
|
+
* startup error naming the offending variable.
|
|
267
|
+
*/
|
|
268
|
+
export function parseCanonicalHttpsOrigin(raw, label) {
|
|
269
|
+
if (raw === "") {
|
|
270
|
+
throw new Error(`${label} must be a canonical absolute HTTPS origin; got an empty value`);
|
|
271
|
+
}
|
|
272
|
+
if (/\s/.test(raw)) {
|
|
273
|
+
throw new Error(`${label} must not contain whitespace`);
|
|
274
|
+
}
|
|
275
|
+
if (raw.includes(",")) {
|
|
276
|
+
throw new Error(`${label} must be a single origin, not a comma-separated list`);
|
|
277
|
+
}
|
|
278
|
+
if (raw.includes("*")) {
|
|
279
|
+
throw new Error(`${label} must be an exact origin and must not contain a wildcard "*"`);
|
|
280
|
+
}
|
|
281
|
+
let url;
|
|
282
|
+
try {
|
|
283
|
+
url = new URL(raw);
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
throw new Error(`${label} is not a valid absolute URL: ${JSON.stringify(raw)}`);
|
|
287
|
+
}
|
|
288
|
+
if (url.protocol !== "https:") {
|
|
289
|
+
throw new Error(`${label} must use https; got protocol ${JSON.stringify(url.protocol)}`);
|
|
290
|
+
}
|
|
291
|
+
if (url.username !== "" || url.password !== "") {
|
|
292
|
+
throw new Error(`${label} must not embed credentials`);
|
|
293
|
+
}
|
|
294
|
+
if (url.search !== "") {
|
|
295
|
+
throw new Error(`${label} must not contain a query string`);
|
|
296
|
+
}
|
|
297
|
+
if (url.hash !== "") {
|
|
298
|
+
throw new Error(`${label} must not contain a fragment`);
|
|
299
|
+
}
|
|
300
|
+
if (url.pathname !== "" && url.pathname !== "/") {
|
|
301
|
+
throw new Error(`${label} must not contain a path`);
|
|
302
|
+
}
|
|
303
|
+
if (raw !== url.origin) {
|
|
304
|
+
throw new Error(`${label} must be the canonical origin serialization ${JSON.stringify(url.origin)}; got ${JSON.stringify(raw)}`);
|
|
305
|
+
}
|
|
306
|
+
return { origin: url.origin, host: url.host };
|
|
307
|
+
}
|
|
308
|
+
function validateDashboardCredentialDirectory(directory, label) {
|
|
309
|
+
const resolved = resolve(directory);
|
|
310
|
+
if (directory === ""
|
|
311
|
+
|| directory.includes("\0")
|
|
312
|
+
|| !isAbsolute(directory)
|
|
313
|
+
|| resolved === parse(resolved).root) {
|
|
314
|
+
throw new Error(`${label} must be a non-empty absolute non-root path without NUL bytes`);
|
|
315
|
+
}
|
|
316
|
+
return directory;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Resolve the passkey credential directory independently from workflow state.
|
|
320
|
+
* Explicit values are intentionally not trimmed or normalized.
|
|
321
|
+
*/
|
|
322
|
+
export function resolveDashboardCredentialDirectory(env = process.env, stateDirectory = getStateDir()) {
|
|
323
|
+
const explicit = env[DASHBOARD_CREDENTIAL_DIR_ENV];
|
|
324
|
+
if (explicit == null) {
|
|
325
|
+
return validateDashboardCredentialDirectory(join(resolve(stateDirectory), "dashboard", "webauthn"), DASHBOARD_CREDENTIAL_DIR_ENV);
|
|
326
|
+
}
|
|
327
|
+
return validateDashboardCredentialDirectory(explicit, DASHBOARD_CREDENTIAL_DIR_ENV);
|
|
328
|
+
}
|
|
329
|
+
/** Resolve the temporary passkey/bearer rollback selector. */
|
|
330
|
+
export function resolveDashboardAuthMode(env = process.env) {
|
|
331
|
+
const raw = env[DASHBOARD_AUTH_MODE_ENV];
|
|
332
|
+
if (raw == null || raw === "")
|
|
333
|
+
return "passkey";
|
|
334
|
+
if (raw === "passkey" || raw === "bearer")
|
|
335
|
+
return raw;
|
|
336
|
+
throw new Error(`${DASHBOARD_AUTH_MODE_ENV} must be one of passkey, bearer; got ${JSON.stringify(raw)}`);
|
|
337
|
+
}
|
|
338
|
+
function dashboardRpId(expectedOrigin, localMode) {
|
|
339
|
+
const hostname = new URL(expectedOrigin).hostname;
|
|
340
|
+
const unbracketed = hostname.startsWith("[") && hostname.endsWith("]")
|
|
341
|
+
? hostname.slice(1, -1)
|
|
342
|
+
: hostname;
|
|
343
|
+
if (isIP(unbracketed) !== 0) {
|
|
344
|
+
throw new Error(`dashboard WebAuthn RP ID must not be an IP address; got ${JSON.stringify(unbracketed)}`);
|
|
345
|
+
}
|
|
346
|
+
if (unbracketed === "localhost" && !localMode) {
|
|
347
|
+
throw new Error("dashboard WebAuthn permits localhost only in local mode");
|
|
348
|
+
}
|
|
349
|
+
return unbracketed;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Derive the complete WebAuthn configuration from the public dashboard origin.
|
|
353
|
+
* The caller supplies the active local port only after the first loopback
|
|
354
|
+
* listener has selected it; cloud inputs are validated before listener or
|
|
355
|
+
* filesystem work.
|
|
356
|
+
*/
|
|
357
|
+
export function resolveDashboardAuthConfig(input) {
|
|
358
|
+
const env = input.env ?? process.env;
|
|
359
|
+
const rpName = (env[DASHBOARD_RP_NAME_ENV] ?? DEFAULT_DASHBOARD_RP_NAME).trim();
|
|
360
|
+
if (rpName === "") {
|
|
361
|
+
throw new Error(`${DASHBOARD_RP_NAME_ENV} must not be empty`);
|
|
362
|
+
}
|
|
363
|
+
const sessionTtlRaw = env[DASHBOARD_SESSION_TTL_SECONDS_ENV];
|
|
364
|
+
let sessionTtlSeconds = DEFAULT_DASHBOARD_SESSION_TTL_SECONDS;
|
|
365
|
+
if (sessionTtlRaw != null && sessionTtlRaw !== "") {
|
|
366
|
+
if (!/^[1-9]\d*$/.test(sessionTtlRaw)) {
|
|
367
|
+
throw new Error(`${DASHBOARD_SESSION_TTL_SECONDS_ENV} must be a positive integer`);
|
|
368
|
+
}
|
|
369
|
+
sessionTtlSeconds = Number(sessionTtlRaw);
|
|
370
|
+
if (!Number.isSafeInteger(sessionTtlSeconds)
|
|
371
|
+
|| !Number.isSafeInteger(sessionTtlSeconds * 1000)) {
|
|
372
|
+
throw new Error(`${DASHBOARD_SESSION_TTL_SECONDS_ENV} must produce a safe millisecond TTL`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
const credentialDirectory = validateDashboardCredentialDirectory(input.credentialDirectory, "dashboard credential directory");
|
|
376
|
+
if (input.publicAccess.mode === "local") {
|
|
377
|
+
if (!Number.isSafeInteger(input.localPort)
|
|
378
|
+
|| input.localPort < 1
|
|
379
|
+
|| input.localPort > 65_535) {
|
|
380
|
+
throw new Error("local dashboard WebAuthn requires an active port from 1 through 65535");
|
|
381
|
+
}
|
|
382
|
+
const expectedHost = `localhost:${String(input.localPort)}`;
|
|
383
|
+
const expectedOrigin = `http://${expectedHost}`;
|
|
384
|
+
return {
|
|
385
|
+
rpName,
|
|
386
|
+
expectedOrigin,
|
|
387
|
+
expectedRPID: dashboardRpId(expectedOrigin, true),
|
|
388
|
+
expectedHost,
|
|
389
|
+
secureCookies: false,
|
|
390
|
+
credentialDirectory,
|
|
391
|
+
sessionTtlSeconds,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
if (input.publicAccess.publicApiOrigin !== input.publicAccess.uiOrigin) {
|
|
395
|
+
throw new Error("dashboard passkey mode requires the API and UI to use the same origin");
|
|
396
|
+
}
|
|
397
|
+
const expectedOrigin = input.publicAccess.publicApiOrigin;
|
|
398
|
+
const parsed = new URL(expectedOrigin);
|
|
399
|
+
return {
|
|
400
|
+
rpName,
|
|
401
|
+
expectedOrigin,
|
|
402
|
+
expectedRPID: dashboardRpId(expectedOrigin, false),
|
|
403
|
+
expectedHost: parsed.host,
|
|
404
|
+
secureCookies: true,
|
|
405
|
+
credentialDirectory,
|
|
406
|
+
sessionTtlSeconds,
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Resolve the discriminated local/remote dashboard access value from the strict
|
|
411
|
+
* env pair. Both absent → local; exactly one present → actionable startup
|
|
412
|
+
* error; both present → remote (each origin parsed canonically). The returned
|
|
413
|
+
* value carries no bearer/tunnel credentials.
|
|
414
|
+
*/
|
|
415
|
+
export function resolveDashboardPublicAccess(env = process.env) {
|
|
416
|
+
const apiRaw = env[DASHBOARD_PUBLIC_API_ORIGIN_ENV];
|
|
417
|
+
const uiRaw = env[DASHBOARD_UI_ORIGIN_ENV];
|
|
418
|
+
const apiPresent = apiRaw != null && apiRaw !== "";
|
|
419
|
+
const uiPresent = uiRaw != null && uiRaw !== "";
|
|
420
|
+
if (!apiPresent && !uiPresent) {
|
|
421
|
+
return { mode: "local" };
|
|
422
|
+
}
|
|
423
|
+
if (apiPresent !== uiPresent) {
|
|
424
|
+
const setKey = apiPresent ? DASHBOARD_PUBLIC_API_ORIGIN_ENV : DASHBOARD_UI_ORIGIN_ENV;
|
|
425
|
+
const missingKey = apiPresent ? DASHBOARD_UI_ORIGIN_ENV : DASHBOARD_PUBLIC_API_ORIGIN_ENV;
|
|
426
|
+
throw new Error(`${setKey} is set but ${missingKey} is not; remote dashboard access requires both origins. Set both for remote mode, or neither for local/SSH mode.`);
|
|
427
|
+
}
|
|
428
|
+
const api = parseCanonicalHttpsOrigin(apiRaw, DASHBOARD_PUBLIC_API_ORIGIN_ENV);
|
|
429
|
+
const ui = parseCanonicalHttpsOrigin(uiRaw, DASHBOARD_UI_ORIGIN_ENV);
|
|
430
|
+
return {
|
|
431
|
+
mode: "remote",
|
|
432
|
+
publicApiOrigin: api.origin,
|
|
433
|
+
uiOrigin: ui.origin,
|
|
434
|
+
publicHost: api.host,
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Build the remote static-deployment Content-Security-Policy. Identical to the
|
|
439
|
+
* loopback dashboard CSP except `connect-src` adds the exact API origin (only
|
|
440
|
+
* `'self'` plus that origin — never a wildcard or credentials). The origin is
|
|
441
|
+
* re-parsed defensively so a malformed value can never be injected into the
|
|
442
|
+
* header. Kept here as the single source of truth mirrored by the buildless
|
|
443
|
+
* static runtime under `deploy/dashboard-ui/serve.mjs`.
|
|
444
|
+
*/
|
|
445
|
+
export function dashboardStaticCsp(publicApiOrigin) {
|
|
446
|
+
const { origin } = parseCanonicalHttpsOrigin(publicApiOrigin, "publicApiOrigin");
|
|
447
|
+
return [
|
|
448
|
+
"default-src 'self'",
|
|
449
|
+
"script-src 'self'",
|
|
450
|
+
"style-src 'self'",
|
|
451
|
+
"font-src 'self'",
|
|
452
|
+
`connect-src 'self' ${origin}`,
|
|
453
|
+
"img-src 'self' data:",
|
|
454
|
+
"object-src 'none'",
|
|
455
|
+
"base-uri 'none'",
|
|
456
|
+
"form-action 'none'",
|
|
457
|
+
"frame-ancestors 'none'",
|
|
458
|
+
].join("; ");
|
|
132
459
|
}
|
|
133
460
|
/**
|
|
134
461
|
* Default workflow-level timeout (seconds).
|
|
@@ -162,15 +489,41 @@ export function getRetentionConfig() {
|
|
|
162
489
|
retainFailedDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_FAILED_DAYS", DEFAULT_RETAIN_FAILED_DAYS),
|
|
163
490
|
retainCancelledDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_CANCELLED_DAYS", DEFAULT_RETAIN_CANCELLED_DAYS),
|
|
164
491
|
retainDebugDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_DEBUG_DAYS", DEFAULT_RETAIN_DEBUG_DAYS),
|
|
492
|
+
retainAsyncDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_ASYNC_DAYS", DEFAULT_RETAIN_ASYNC_DAYS),
|
|
493
|
+
retainSucceededDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_SUCCEEDED_DAYS", DEFAULT_RETAIN_SUCCEEDED_DAYS),
|
|
165
494
|
};
|
|
166
495
|
}
|
|
167
496
|
/** Persistent workflow state directory. */
|
|
168
|
-
export function getStateDir() {
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
497
|
+
export function getStateDir(env = process.env, accountHomeProvider = () => userInfo().homedir) {
|
|
498
|
+
const explicit = env["CLINKX_WORKFLOWS_STATE_DIR"];
|
|
499
|
+
if (explicit != null && explicit !== "") {
|
|
500
|
+
if (!isAbsolute(explicit)) {
|
|
501
|
+
throw new Error(`CLINKX_WORKFLOWS_STATE_DIR must be an absolute path; got ${JSON.stringify(explicit)}`);
|
|
502
|
+
}
|
|
503
|
+
return explicit;
|
|
504
|
+
}
|
|
505
|
+
const xdgState = env["XDG_STATE_HOME"];
|
|
506
|
+
if (xdgState != null && xdgState !== "") {
|
|
507
|
+
if (!isAbsolute(xdgState)) {
|
|
508
|
+
throw new Error(`XDG_STATE_HOME must be an absolute path when used for workflow state; got ${JSON.stringify(xdgState)}`);
|
|
509
|
+
}
|
|
510
|
+
return join(xdgState, "clinkx-workflows");
|
|
511
|
+
}
|
|
512
|
+
const configuredHome = env["HOME"];
|
|
513
|
+
if (configuredHome != null && configuredHome !== "") {
|
|
514
|
+
if (!isAbsolute(configuredHome)) {
|
|
515
|
+
throw new Error(`HOME must be an absolute path when used for workflow state; got ${JSON.stringify(configuredHome)}`);
|
|
516
|
+
}
|
|
517
|
+
return join(configuredHome, ".local", "state", "clinkx-workflows");
|
|
518
|
+
}
|
|
519
|
+
const accountHome = accountHomeProvider();
|
|
520
|
+
const resolvedAccountHome = accountHome === "" ? "" : resolve(accountHome);
|
|
521
|
+
if (accountHome === "" ||
|
|
522
|
+
!isAbsolute(accountHome) ||
|
|
523
|
+
resolvedAccountHome === parse(resolvedAccountHome).root) {
|
|
524
|
+
throw new Error(`OS account home must be a non-empty absolute non-root path; got ${JSON.stringify(accountHome)}`);
|
|
525
|
+
}
|
|
526
|
+
return join(accountHome, ".local", "state", "clinkx-workflows");
|
|
174
527
|
}
|
|
175
528
|
/** Base directory containing persistent run state directories. */
|
|
176
529
|
export function getRunsDir() {
|
|
@@ -201,6 +554,8 @@ export const CHILD_ENV_SCRUB_EXTRA = ["XDG_CONFIG_HOME"];
|
|
|
201
554
|
/**
|
|
202
555
|
* Child env vars that are re-injected with workflow-owned values.
|
|
203
556
|
* Maps from workflow config key to child env var name.
|
|
557
|
+
* Reference only: buildChildEnv (child-env.ts) performs the re-injection with
|
|
558
|
+
* explicit assignments and does not read this map. Keep the two in sync.
|
|
204
559
|
*/
|
|
205
560
|
export const CHILD_ENV_REINJECT_MAP = {
|
|
206
561
|
maxConcurrent: "CLINKX_MAX_CONCURRENT",
|
|
@@ -212,7 +567,9 @@ export const CHILD_ENV_REINJECT_MAP = {
|
|
|
212
567
|
logLevel: "CLINKX_LOG_LEVEL",
|
|
213
568
|
};
|
|
214
569
|
/**
|
|
215
|
-
* Baseline OS env vars that are
|
|
570
|
+
* Baseline OS env vars that are never scrubbed from the child.
|
|
571
|
+
* Reference only: buildChildEnv does not read this list — these vars survive
|
|
572
|
+
* because the scrub removes only CLINKX_* and CHILD_ENV_SCRUB_EXTRA.
|
|
216
573
|
* ClinkX's internal env.ts::buildEnv handles delegate subprocess sanitization.
|
|
217
574
|
*/
|
|
218
575
|
export const CHILD_ENV_BASELINE = [
|
|
@@ -224,8 +581,9 @@ export const CHILD_ENV_BASELINE = [
|
|
|
224
581
|
];
|
|
225
582
|
/**
|
|
226
583
|
* DEAD KNOBS: these env vars have no effect with current shipped adapters
|
|
227
|
-
* because adapter JSON config wins (runner.ts
|
|
228
|
-
*
|
|
584
|
+
* because adapter JSON config wins (runner.ts timeout/idle resolution:
|
|
585
|
+
* options > adapter > env > default). Every shipped subprocess adapter sets
|
|
586
|
+
* timeout_seconds = 3600 in JSON.
|
|
229
587
|
*
|
|
230
588
|
* These are Layer 3 (child-side) timeout controls. The workflow engine does
|
|
231
589
|
* NOT attempt to control child-side timeouts via env vars. Instead, use
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|