clinkx 1.1.2 → 1.2.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 +31 -0
- package/README.md +63 -12
- package/clinkx-workflows/dist/allowed-roots.js +2 -0
- package/clinkx-workflows/dist/allowed-roots.js.map +1 -1
- package/clinkx-workflows/dist/child-env.d.ts +3 -1
- package/clinkx-workflows/dist/child-env.js +6 -2
- package/clinkx-workflows/dist/child-env.js.map +1 -1
- package/clinkx-workflows/dist/config.d.ts +28 -5
- package/clinkx-workflows/dist/config.js +137 -20
- package/clinkx-workflows/dist/config.js.map +1 -1
- package/clinkx-workflows/dist/contained-file.js +9 -0
- package/clinkx-workflows/dist/contained-file.js.map +1 -1
- package/clinkx-workflows/dist/dashboard/session-log-identity.js +2 -1
- package/clinkx-workflows/dist/dashboard/session-log-identity.js.map +1 -1
- package/clinkx-workflows/dist/root-path-validation.d.ts +12 -0
- package/clinkx-workflows/dist/root-path-validation.js +63 -0
- package/clinkx-workflows/dist/root-path-validation.js.map +1 -0
- package/clinkx-workflows/dist/rosters.d.ts +1 -0
- package/clinkx-workflows/dist/rosters.js +16 -6
- package/clinkx-workflows/dist/rosters.js.map +1 -1
- package/clinkx-workflows/dist/server.js +5 -2
- package/clinkx-workflows/dist/server.js.map +1 -1
- package/clinkx-workflows/dist/state-schema.d.ts +13 -0
- package/clinkx-workflows/dist/state.d.ts +7 -1
- package/clinkx-workflows/dist/state.js +74 -13
- package/clinkx-workflows/dist/state.js.map +1 -1
- package/clinkx-workflows/dist/workflow-completion.d.ts +83 -0
- package/clinkx-workflows/dist/workflow-completion.js +250 -0
- package/clinkx-workflows/dist/workflow-completion.js.map +1 -0
- package/clinkx-workflows/dist/workflow-tools.d.ts +4 -3
- package/clinkx-workflows/dist/workflow-tools.js +341 -34
- package/clinkx-workflows/dist/workflow-tools.js.map +1 -1
- package/dist/allowed-roots.d.ts +1 -1
- package/dist/allowed-roots.js +124 -14
- package/dist/allowed-roots.js.map +1 -1
- package/dist/context-builder/config.d.ts +1 -0
- package/dist/context-builder/config.js +21 -9
- package/dist/context-builder/config.js.map +1 -1
- package/dist/context-builder/mutation-lock.d.ts +4 -0
- package/dist/context-builder/mutation-lock.js +7 -1
- package/dist/context-builder/mutation-lock.js.map +1 -1
- package/dist/context-builder/storage.d.ts +10 -2
- package/dist/context-builder/storage.js +213 -16
- package/dist/context-builder/storage.js.map +1 -1
- package/dist/dashboard-cli.d.ts +6 -0
- package/dist/dashboard-cli.js +8 -29
- package/dist/dashboard-cli.js.map +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/registry.js +5 -1
- package/dist/registry.js.map +1 -1
- package/dist/server.js +12 -5
- package/dist/server.js.map +1 -1
- package/docs/configuration.md +157 -12
- package/docs/security.md +3 -0
- package/package.json +1 -1
- package/scripts/provider-doctor-core.mjs +21 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0 — 2026-10-20
|
|
4
|
+
|
|
5
|
+
### Upgrade notes
|
|
6
|
+
|
|
7
|
+
- There is no automatic migration. Durable data now lives under `~/.clinkx`; data written by earlier builds stays under `~/.local/state/clinkx-workflows` and `~/.local/state/clinkx/context-builder/runs` until you act. Pick one path from [Migrating to `CLINKX_HOME`](docs/configuration.md#migrating-to-clinkx_home): start fresh and keep the old directories as an archive; copy workflow state and user configuration into `~/.clinkx` with producers stopped, merging rather than overwriting; or pin the old directories with `CLINKX_WORKFLOWS_STATE_DIR` and `CLINKX_CONTEXT_BUILDER_RUNS_DIR`. Do not move `context-builder/runs`.
|
|
8
|
+
- Runs moved from the previous default stay non-resumable because the state path is part of their resume fingerprint. `CLINKX_HOME` itself is not part of that fingerprint.
|
|
9
|
+
- A dashboard that still mounts or reads the old directories shows only runs written before the upgrade. Point it at the producers' current directories and recreate the dashboard companion or local stack.
|
|
10
|
+
- `CLINKX_ALLOWED_ROOTS` entries that are dangling symlinks, inaccessible, or neither a directory nor a regular file now fail startup instead of being kept leniently. Fix or remove them before upgrading.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `workflow_run_wait({run_id, expected_execution_id?})` observes a local workflow execution until its cleanup fence, for a fixed 30-second server-owned budget per call, and returns the metadata-only status projection plus `wait:{outcome, execution_id?, budget_ms, elapsed_ms}`. Outcomes are `settled`, `budget_elapsed`, `not_owned`, `orphaned`, `not_found`, `identity_changed` and `identity_unavailable`; they are observation outcomes, not new run statuses. Re-arm `budget_elapsed` with the same pin; cancelling a wait detaches only that observation.
|
|
15
|
+
- Workflow executions carry an opaque `execution_id`: on the async `run_workflow` acknowledgement, and in one trailing identity block `{resolved_roster?, execution_id?}` on blocking `run_workflow` and `resume_workflow` results. It is a fence, not a capability. `workflow_run_status` accepts an optional `expected_execution_id`; a pinned read of a different or unprovable execution returns `isError` `identity_changed` / `identity_unavailable` with no result, and a persistently changing active state returns the retryable `state_read_unstable`. Unpinned calls are unchanged.
|
|
16
|
+
- The execution id is persisted in `state.json` (optional `executionId`, `state_version` stays 1), so a pin settles from disk after a ClinkX restart or eviction from the 128-entry settled window when the run is terminal, stamped with that id, carries a matching `executionCompletedAt` witness, and its `run.lock` is released. A run last written by an older ClinkX (which carries the id forward without the witness) fails closed as `identity_unavailable` instead of settling on that build's outcome. Contract: `.ai/plans/workflow-completion-wait/CONTRACT.md`.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Durable ClinkX data now defaults to `~/.clinkx`, configurable with `CLINKX_HOME` (absolute; its canonical identity must not be a filesystem root, the effective home directory, or an ancestor of that home such as `/Users`). Workflow state moves from `~/.local/state/clinkx-workflows`; context-builder runs move from `~/.local/state/clinkx/context-builder/runs` to `~/.clinkx/context-builder/runs`; user adapters and rosters search `~/.clinkx/{adapters,rosters}` before the retained XDG config tier. Per-area overrides still take precedence, and temporary scratch paths are unchanged.
|
|
21
|
+
- `XDG_STATE_HOME` no longer controls durable storage. Standalone workflow children receive resolved `CLINKX_HOME` and `CLINKX_WORKFLOWS_STATE_DIR` after environment scrubbing. The parent's context-run override is scrubbed; child context artifacts use `CLINKX_HOME/context-builder/runs`.
|
|
22
|
+
- State and artifact roots remain automatically admitted even with an explicit workspace allowlist. Under the consolidated default, direct `clink` references can read adapters, rosters and context artifacts without context-builder secret filtering. Use a separate state override to keep configuration outside the automatic state grant. Deleting the whole ClinkX home also deletes user adapters and rosters.
|
|
23
|
+
- `CLINKX_WORKFLOWS_STATE_DIR` and `CLINKX_WORKFLOWS_ARTIFACTS_DIR` reject a filesystem root or an alias of one at every entrypoint, including the standalone workflow server and an unset artifacts override whose TMPDIR-derived default resolves to one; before, only the root server rejected it. A relative `CLINKX_WORKFLOWS_ARTIFACTS_DIR` is now rejected instead of resolving against the process cwd. A value equal to the effective home, an alias of it, or an ancestor of it is still accepted, but both STDIO servers log one startup warning because it is auto-admitted as an artifact-only allowed root. Generic `CLINKX_ALLOWED_ROOTS` entries and `CLINKX_CONTEXT_BUILDER_RUNS_DIR` rules are unchanged. See the storage-root policy table in `docs/configuration.md`.
|
|
24
|
+
- A `CLINKX_ALLOWED_ROOTS` entry that names an existing regular file is an exact-file grant: it resolves to the canonical file and admits only that file, not its siblings, name prefixes, or child paths. A dangling symlink, an inaccessible path (`EACCES`, `EPERM`, `ENOTDIR`, `ELOOP`), or an entry that is neither a directory nor a regular file fails startup with `CLINKX_ALLOWED_ROOTS entry "<entry>" is unusable: <reason>. Fix or remove this entry from CLINKX_ALLOWED_ROOTS.` (`-32602` on tool paths). Nonexistent plain entries are still accepted. Automatically produced state and artifact roots stay directory-only.
|
|
25
|
+
- The local and companion dashboard Compose files default the state and context-run bind sources to `${HOME}/.clinkx` and `${HOME}/.clinkx/context-builder/runs`. The workspace mount stays required, the sources must already exist, and the cloud file keeps explicit sources. One gateway deployment accepts one live companion; a second gets HTTP 409. `DASHBOARD_DEPLOYMENT_SLUG` only names Docker resources on one host.
|
|
26
|
+
- When the adapter registry fails to load on a JSON syntax error, `provider_doctor` names the broken file by searching in registry order: `CLINKX_CONFIG_PATH` when set, otherwise `$CLINKX_HOME/adapters`, then the XDG config tier, then the packaged adapters. `scripts/verified-repair/qualify-installed.mjs` derives its state directory from `getStateDir()` instead of a fixed path.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Home validation rejects symlink aliases to the effective home or filesystem root, including aliases in the default `.clinkx` path. Valid narrow symlinks and nonexistent first-run directories remain supported; accepted spelling is preserved for resume identity.
|
|
31
|
+
- Individual workspace, state, artifact and context-run roots reject commas in supplied, canonical and prospective canonical paths before allow-root serialization. Relevant path checks run before reconciliation scheduling or context-directory creation. These checks are snapshots, not protection against later symlink retargeting.
|
|
32
|
+
- A workflow context cache entry (`wfctx-*`) moved from another runs root no longer blocks its cache id. Its manifest names the old location, so it can never be admitted; eviction or a promotion conflict now renames it to `.stale-<runId>-<epochms>-<hex>`, the call rebuilds once, and the next identical call hits. Quarantined directories are deleted after the temp TTL (`min(cache TTL, 3600s)`). `wfpre-*`, `ctx_*` and named runs are not touched.
|
|
33
|
+
|
|
3
34
|
## 1.1.2 — 2026-10-09
|
|
4
35
|
|
|
5
36
|
### Added
|
package/README.md
CHANGED
|
@@ -66,7 +66,8 @@ ClinkX starts the Codex CLI, sends the prompt and the file references, and retur
|
|
|
66
66
|
| `workflow_verification_attach` | Re-inspects proof with the original owner-held digest and records its historical coverage on a workflow run. |
|
|
67
67
|
| `list_workflows` | Lists the available workflows, CLIs, and roster presets. |
|
|
68
68
|
| `run_workflow` | Starts a multi-stage workflow. Runs in blocking mode by default, or in the background with `async: true`. |
|
|
69
|
-
| `workflow_run_status` | Reports
|
|
69
|
+
| `workflow_run_status` | Reports persisted progress and results; optional `expected_execution_id` guards the selected local execution. |
|
|
70
|
+
| `workflow_run_wait` | Observes local execution completion for up to 30 seconds without cancelling the worker when observation stops. |
|
|
70
71
|
| `resume_workflow` | Continues a workflow run that stopped before completion. |
|
|
71
72
|
| `cancel_workflow` | Cancels a workflow run. |
|
|
72
73
|
| `progress_report_start`, `progress_report_update`, `progress_report_get`, `progress_report_list` | Keep a live progress report that the dashboard shows. |
|
|
@@ -114,10 +115,11 @@ The `conf/adapters/hapi/` directory in the package holds optional templates that
|
|
|
114
115
|
ClinkX reads adapter JSON files from these locations, in this order. ClinkX uses the first file with a given `name`.
|
|
115
116
|
|
|
116
117
|
1. `CLINKX_CONFIG_PATH`, a file or a directory. When you set it, ClinkX reads only this location and does not load the included adapters. The location must also contain a `codex` adapter with a `json` role, or you must set `CLINKX_WORKFLOWS_CONTEXT_PREFLIGHT_ENABLED=false`.
|
|
117
|
-
2. `${
|
|
118
|
-
3.
|
|
118
|
+
2. `${CLINKX_HOME:-~/.clinkx}/adapters/*.json`.
|
|
119
|
+
3. `${XDG_CONFIG_HOME:-~/.config}/clinkx/adapters/*.json`.
|
|
120
|
+
4. The `conf/adapters/` directory inside the installed package.
|
|
119
121
|
|
|
120
|
-
To change an included adapter, copy its file to `~/.config/clinkx/adapters/` and edit the copy. The copy replaces the included file completely. ClinkX does not merge the two files. After you upgrade ClinkX, compare your copy with the new included file. Copy the new file again if necessary.
|
|
122
|
+
To change an included adapter, copy its file to `${CLINKX_HOME:-~/.clinkx}/adapters/` (or `~/.config/clinkx/adapters/`) and edit the copy. The copy replaces the included file completely. ClinkX does not merge the two files. After you upgrade ClinkX, compare your copy with the new included file. Copy the new file again if necessary.
|
|
121
123
|
|
|
122
124
|
To add a CLI that is not included, write a new file in the same directory. This example adapter returns the prompt unchanged:
|
|
123
125
|
|
|
@@ -138,10 +140,11 @@ These are the variables that most installations set. Every variable has a defaul
|
|
|
138
140
|
|
|
139
141
|
| Variable | Default | Function |
|
|
140
142
|
|---|---|---|
|
|
141
|
-
| `CLINKX_ALLOWED_ROOTS` | Current directory of the server process | Comma-separated list of directories that tool calls can reference. Set it so path checks do not depend on the directory in which the client starts ClinkX. |
|
|
143
|
+
| `CLINKX_ALLOWED_ROOTS` | Current directory of the server process | Comma-separated list of directories that tool calls can reference. An entry that is an existing file allows only that file. An entry that is a broken symlink, that ClinkX cannot access, or that is neither a directory nor a file stops the server at startup. Set it so path checks do not depend on the directory in which the client starts ClinkX. |
|
|
142
144
|
| `CLINKX_WORKFLOWS_WORKSPACE_ROOT` | Current directory of the server process | Workspace for workflows. Set it to the same directory as the allowed root. |
|
|
143
|
-
| `
|
|
144
|
-
| `
|
|
145
|
+
| `CLINKX_HOME` | `~/.clinkx` | Root directory for durable state, context-builder runs, user adapters and rosters. |
|
|
146
|
+
| `CLINKX_WORKFLOWS_STATE_DIR` | `${CLINKX_HOME:-~/.clinkx}` | Directory for workflow runs, progress reports, and dashboard state. |
|
|
147
|
+
| `CLINKX_CONTEXT_BUILDER_RUNS_DIR` | `${CLINKX_HOME:-~/.clinkx}/context-builder/runs` | Directory for `context_builder` runs and bundles. |
|
|
145
148
|
| `CLINKX_CONFIG_PATH` | not set | Replaces the adapter search path. See [Adapter files](#adapter-files). |
|
|
146
149
|
| `CLINKX_ROSTERS_PATH` | not set | Replaces the roster-preset search path. See [Workflows](#workflows). |
|
|
147
150
|
| `CLINKX_MAX_CONCURRENT` | `5` | Maximum number of `clink` processes at one time. ClinkX returns an error when the limit is reached. It does not queue requests. |
|
|
@@ -156,6 +159,10 @@ These are the variables that most installations set. Every variable has a defaul
|
|
|
156
159
|
| `CLINKX_APP_SERVER_ENABLED` | `false` | Set to `true` to publish the Codex app-server tools. |
|
|
157
160
|
| `CLINKX_ELARIS_ENABLED` | `false` | Set to `true` to publish the Elaris tools. |
|
|
158
161
|
|
|
162
|
+
`CLINKX_HOME` resolves to the explicit value, then `$HOME/.clinkx`, then the OS account home plus `/.clinkx` when `HOME` is unset or empty. It must be absolute and must not be a filesystem root, the home directory itself, or a parent of the home directory (for example `/Users`). The root server validates it at startup even when per-area overrides are set. `CLINKX_WORKFLOWS_STATE_DIR` and `CLINKX_WORKFLOWS_ARTIFACTS_DIR` must be absolute and must not be a filesystem root. If one of them is the home directory or a parent of it, the server starts but logs a warning.
|
|
163
|
+
|
|
164
|
+
Earlier versions kept data in `${XDG_STATE_HOME:-~/.local/state}`. ClinkX does not move this data. To keep, copy, or pin the old data, see [Migrating to `CLINKX_HOME`](docs/configuration.md#migrating-to-clinkx_home).
|
|
165
|
+
|
|
159
166
|
ClinkX writes only MCP JSON-RPC to stdout. All logs go to stderr. The server detects the exit of its parent process and stops.
|
|
160
167
|
|
|
161
168
|
## Workflows
|
|
@@ -211,14 +218,58 @@ A roster preset names the members, the chairman, and the context delegate of a c
|
|
|
211
218
|
The included `default-council` preset uses Codex, Claude, and GLM as members and Codex as chairman. ClinkX reads these locations in this order and uses the first file with a given name:
|
|
212
219
|
|
|
213
220
|
1. `CLINKX_ROSTERS_PATH`, a file or a directory. When you set it, ClinkX reads only this location.
|
|
214
|
-
2. `${
|
|
215
|
-
3.
|
|
221
|
+
2. `${CLINKX_HOME:-~/.clinkx}/rosters/*.json`.
|
|
222
|
+
3. `${XDG_CONFIG_HOME:-~/.config}/clinkx/rosters/*.json`.
|
|
223
|
+
4. The `conf/rosters/` directory inside the installed package.
|
|
216
224
|
|
|
217
|
-
To write your own preset, copy `conf/rosters/default-council.json` to `~/.config/clinkx/rosters/<name>.json` and edit the copy. The file name is the preset name. The preset name must match `^[a-z0-9][a-z0-9_-]{0,63}$`. A request that gives `roster` together with `members`, `chairman`, `chairman_model`, `chairman_effort`, or a non-empty `cb_delegate` returns error `-32602` and starts no run.
|
|
225
|
+
To write your own preset, copy `conf/rosters/default-council.json` to `${CLINKX_HOME:-~/.clinkx}/rosters/<name>.json` (or `~/.config/clinkx/rosters/<name>.json`) and edit the copy. The file name is the preset name. The preset name must match `^[a-z0-9][a-z0-9_-]{0,63}$`. A request that gives `roster` together with `members`, `chairman`, `chairman_model`, `chairman_effort`, or a non-empty `cb_delegate` returns error `-32602` and starts no run.
|
|
218
226
|
|
|
219
227
|
### Background runs
|
|
220
228
|
|
|
221
|
-
Pass `async: true` to `run_workflow` to get a `run_id`
|
|
229
|
+
Pass `async: true` to `run_workflow` to get a `run_id` and an opaque
|
|
230
|
+
`execution_id` immediately. Use the identity to wait for that execution:
|
|
231
|
+
|
|
232
|
+
```json
|
|
233
|
+
{
|
|
234
|
+
"run_id": "my-council-run",
|
|
235
|
+
"expected_execution_id": "<execution_id from launch>"
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Call `workflow_run_wait` with those arguments. It returns persisted status metadata
|
|
240
|
+
and a `wait` block with `outcome`, optional `execution_id`, `budget_ms`, and
|
|
241
|
+
`elapsed_ms`. On `budget_elapsed`, repeat the wait with the same identity. On
|
|
242
|
+
`settled`, fetch `workflow_run_status` with the same arguments plus
|
|
243
|
+
`include_result: true` to obtain the final result. The wait has a fixed server-owned
|
|
244
|
+
30-second budget; it takes no caller timeout input, and `budget_ms` always reports
|
|
245
|
+
that configured budget. Stopping a wait only detaches that observation. Use
|
|
246
|
+
`cancel_workflow` to stop the worker.
|
|
247
|
+
|
|
248
|
+
A blocking `run_workflow` and `resume_workflow` also return the `execution_id`, in
|
|
249
|
+
a trailing content block `{resolved_roster?, execution_id?}`. Use the returned id
|
|
250
|
+
as the pin. Leave the pin out of a first wait only when no id was returned; it then
|
|
251
|
+
binds to the latest local execution and returns its identity. The id is a fence,
|
|
252
|
+
not a capability: it only selects which execution a read must match.
|
|
253
|
+
|
|
254
|
+
`settled` witnesses completion and cleanup in the owning server process, followed
|
|
255
|
+
by an identity-checked persisted read. `not_owned`, `orphaned` and `not_found`
|
|
256
|
+
return immediately. `not_owned` requires explicit persisted status recovery;
|
|
257
|
+
`orphaned` and `not_found` require checking the run. A run that is still being
|
|
258
|
+
admitted can briefly report `not_found` to an unpinned wait. A rejected start or
|
|
259
|
+
resume never replaces an earlier execution's pin. Identity
|
|
260
|
+
errors (`identity_changed` or `identity_unavailable`) must be surfaced without
|
|
261
|
+
dropping the pin to fetch another execution's result. A pinned
|
|
262
|
+
`workflow_run_status` can return `state_read_unstable` when the state file keeps
|
|
263
|
+
changing during the read; retry it with the same pin after a short pause. The server retains up to 128
|
|
264
|
+
settled metadata identities without active readers, without result text. Active
|
|
265
|
+
executions are never evicted; active observations stay protected until their
|
|
266
|
+
request ends. Eligible inactive settled entries are evicted FIFO. Each run's
|
|
267
|
+
state also records its execution id, so after a restart or eviction a pinned
|
|
268
|
+
wait or status still settles once that execution's state is terminal and its
|
|
269
|
+
run lock is released. A pin on a run that is unfinished, or still locked (for
|
|
270
|
+
example by a crashed owner on another host), reports `identity_unavailable`. Waits do not keep workers alive
|
|
271
|
+
after server exit, and this tool does not promise unsolicited client wakeups.
|
|
272
|
+
Completed runs stay on disk for the retention period given above.
|
|
222
273
|
|
|
223
274
|
## Context bundles
|
|
224
275
|
|
|
@@ -247,7 +298,7 @@ npx -p clinkx clinkx-workflows-dashboard --port 4180
|
|
|
247
298
|
|
|
248
299
|
The dashboard listens on `127.0.0.1` and `::1` and prints `http://localhost:<port>`. Passkey sign-in is the default. On the first start, the dashboard prints one enrollment code. Register a passkey with that code, then sign in. For local tests only, `CLINKX_WORKFLOWS_DASHBOARD_AUTH_MODE=none` disables sign-in.
|
|
249
300
|
|
|
250
|
-
Point the dashboard at the same `CLINKX_WORKFLOWS_STATE_DIR` as the ClinkX server. If the two directories differ, the dashboard shows a different run set, often an empty one. If you set `CLINKX_CONTEXT_BUILDER_RUNS_DIR` for the server, set the same value for the dashboard.
|
|
301
|
+
Point the dashboard at the same `CLINKX_WORKFLOWS_STATE_DIR` as the ClinkX server. If the two directories differ, the dashboard shows a different run set, often an empty one. If you set `CLINKX_CONTEXT_BUILDER_RUNS_DIR` for the server, set the same value for the dashboard. If the dashboard shows only runs from before an upgrade, it still reads the old directories.
|
|
251
302
|
|
|
252
303
|
The dashboard does not start, cancel, or approve anything. The data that it shows can contain prompts, outputs, and file contents from your workspace. Access is local and needs a passkey, but any process that runs as the same OS user can read the state directory.
|
|
253
304
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { sep } from "node:path";
|
|
2
|
+
import { assertRootRepresentable } from "./root-path-validation.js";
|
|
2
3
|
export function artifactOnlyEnvEntry(root) {
|
|
4
|
+
assertRootRepresentable(root, "Allowed root");
|
|
3
5
|
return root.endsWith(sep) ? `${root}.` : `${root}${sep}.`;
|
|
4
6
|
}
|
|
5
7
|
//# sourceMappingURL=allowed-roots.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowed-roots.js","sourceRoot":"","sources":["../src/allowed-roots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"allowed-roots.js","sourceRoot":"","sources":["../src/allowed-roots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,uBAAuB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC;AAC5D,CAAC"}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Builds a sanitized environment for the ClinkX child process:
|
|
5
5
|
* 1. Start with process.env (inherit parent env)
|
|
6
|
-
* 2. Scrub ALL CLINKX_* vars and config-discovery vars (XDG_CONFIG_HOME)
|
|
6
|
+
* 2. Scrub ALL CLINKX_* vars and config-discovery vars (XDG_CONFIG_HOME).
|
|
7
|
+
* The child inherits the parent's resolved CLINKX_HOME and
|
|
8
|
+
* CLINKX_WORKFLOWS_STATE_DIR, and CLINKX_CONFIG_PATH still replaces discovery when set.
|
|
7
9
|
* 3. Re-inject ONLY explicit workflow-owned controls from config
|
|
8
10
|
*
|
|
9
11
|
* Baseline OS env (PATH, HOME, USER, LANG, TMPDIR) is NEVER scrubbed.
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Builds a sanitized environment for the ClinkX child process:
|
|
5
5
|
* 1. Start with process.env (inherit parent env)
|
|
6
|
-
* 2. Scrub ALL CLINKX_* vars and config-discovery vars (XDG_CONFIG_HOME)
|
|
6
|
+
* 2. Scrub ALL CLINKX_* vars and config-discovery vars (XDG_CONFIG_HOME).
|
|
7
|
+
* The child inherits the parent's resolved CLINKX_HOME and
|
|
8
|
+
* CLINKX_WORKFLOWS_STATE_DIR, and CLINKX_CONFIG_PATH still replaces discovery when set.
|
|
7
9
|
* 3. Re-inject ONLY explicit workflow-owned controls from config
|
|
8
10
|
*
|
|
9
11
|
* Baseline OS env (PATH, HOME, USER, LANG, TMPDIR) is NEVER scrubbed.
|
|
10
12
|
* Dead knobs (CLINKX_TIMEOUT_SECONDS, CLINKX_IDLE_TIMEOUT_*) are NEVER set.
|
|
11
13
|
*/
|
|
12
|
-
import { CHILD_ENV_SCRUB_PREFIX, CHILD_ENV_SCRUB_EXTRA, DEAD_KNOBS, getChildMaxConcurrent, getChildMaxResponseChars, getChildMaxOutputBytes, getChildMaxPromptBytes, getChildConfigPath, getLogLevel, } from "./config.js";
|
|
14
|
+
import { CHILD_ENV_SCRUB_PREFIX, CHILD_ENV_SCRUB_EXTRA, DEAD_KNOBS, getChildMaxConcurrent, getChildMaxResponseChars, getChildMaxOutputBytes, getChildMaxPromptBytes, getChildConfigPath, getLogLevel, getClinkxHome, getStateDir, } from "./config.js";
|
|
13
15
|
/**
|
|
14
16
|
* Build a sanitized environment for the ClinkX child process.
|
|
15
17
|
*
|
|
@@ -39,6 +41,8 @@ export function buildChildEnv(overrides) {
|
|
|
39
41
|
env["CLINKX_MAX_PROMPT_BYTES"] = String(getChildMaxPromptBytes());
|
|
40
42
|
env["CLINKX_ALLOWED_ROOTS"] = overrides.allowedRoots;
|
|
41
43
|
env["CLINKX_LOG_LEVEL"] = overrides.logLevel ?? getLogLevel();
|
|
44
|
+
env["CLINKX_HOME"] = getClinkxHome();
|
|
45
|
+
env["CLINKX_WORKFLOWS_STATE_DIR"] = getStateDir();
|
|
42
46
|
// Optional: workflow-owned config path
|
|
43
47
|
const configPath = overrides.configPath ?? getChildConfigPath();
|
|
44
48
|
if (configPath != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-env.js","sourceRoot":"","sources":["../src/child-env.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"child-env.js","sourceRoot":"","sources":["../src/child-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AAQrB;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,SAA4B;IACxD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,qBAAqB,CAAC,CAAC;IAE1D,wEAAwE;IACxE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,IAAI,IAAI;YAAE,SAAS;QAE5B,0BAA0B;QAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC;YAAE,SAAS;QAErD,8BAA8B;QAC9B,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAElC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,+DAA+D;IAC/D,GAAG,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC/D,GAAG,CAAC,2BAA2B,CAAC,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACtE,GAAG,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC;IACrD,GAAG,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,QAAQ,IAAI,WAAW,EAAE,CAAC;IAC9D,GAAG,CAAC,aAAa,CAAC,GAAG,aAAa,EAAE,CAAC;IACrC,GAAG,CAAC,4BAA4B,CAAC,GAAG,WAAW,EAAE,CAAC;IAElD,uCAAuC;IACvC,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,kBAAkB,EAAE,CAAC;IAChE,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,oBAAoB,CAAC,GAAG,UAAU,CAAC;IACzC,CAAC;IAED,8CAA8C;IAC9C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -71,11 +71,10 @@ export declare function observedInvocationPersistenceEnabled(env?: NodeJS.Proces
|
|
|
71
71
|
* so the child may use them for artifact/state I/O but context_builder never
|
|
72
72
|
* admits them as source roots.
|
|
73
73
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* which grants the child filesystem-wide reach.
|
|
77
|
-
*
|
|
78
|
-
* is unset.
|
|
74
|
+
* Validates directory identity and comma-separated representability, retaining
|
|
75
|
+
* the supplied spelling. Broad workspace roots remain accepted — including
|
|
76
|
+
* "/", which grants the child filesystem-wide reach. Both servers warn when
|
|
77
|
+
* CLINKX_WORKFLOWS_WORKSPACE_ROOT is unset.
|
|
79
78
|
*/
|
|
80
79
|
export declare function deriveAllowedRoots(workspaceRoot: string, stateDir: string, artifactsDir: string): string;
|
|
81
80
|
/** Command to spawn the owned ClinkX child. */
|
|
@@ -226,6 +225,12 @@ export declare function getMaxPromptBytes(): number;
|
|
|
226
225
|
export declare function getLogLevel(): string;
|
|
227
226
|
/** Age-based retention thresholds for persisted workflow run directories. */
|
|
228
227
|
export declare function getRetentionConfig(): RetentionConfig;
|
|
228
|
+
export declare const CLINKX_HOME_ENV = "CLINKX_HOME";
|
|
229
|
+
/**
|
|
230
|
+
* Root directory for durable ClinkX data (default `~/.clinkx`).
|
|
231
|
+
* Order: `CLINKX_HOME`, then `$HOME/.clinkx`, then `userInfo().homedir/.clinkx`.
|
|
232
|
+
*/
|
|
233
|
+
export declare function getClinkxHome(env?: NodeJS.ProcessEnv, accountHomeProvider?: () => string): string;
|
|
229
234
|
/** Persistent workflow state directory. */
|
|
230
235
|
export declare function getStateDir(env?: NodeJS.ProcessEnv, accountHomeProvider?: () => string): string;
|
|
231
236
|
export declare const DASHBOARD_PROGRESS_REPORT_OVERRIDE_DIR_ENV = "CLINKX_WORKFLOWS_PROGRESS_REPORT_OVERRIDE_DIR";
|
|
@@ -243,6 +248,20 @@ export declare function getRunsDir(): string;
|
|
|
243
248
|
export declare function getRunStateDir(runId: string): string;
|
|
244
249
|
/** Disposable per-run artifacts directory. */
|
|
245
250
|
export declare function getArtifactsDir(): string;
|
|
251
|
+
export declare const HOME_TREE_STORAGE_ROOT_ENV_VARS: readonly ["CLINKX_WORKFLOWS_STATE_DIR", "CLINKX_WORKFLOWS_ARTIFACTS_DIR"];
|
|
252
|
+
export interface HomeTreeStorageRootWarning {
|
|
253
|
+
readonly envVar: (typeof HOME_TREE_STORAGE_ROOT_ENV_VARS)[number];
|
|
254
|
+
readonly value: string;
|
|
255
|
+
readonly relation: "home" | "home_ancestor";
|
|
256
|
+
readonly message: string;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Explicit state/artifacts overrides that equal or contain the effective HOME.
|
|
260
|
+
* They stay accepted for compatibility, but each is auto-admitted as an
|
|
261
|
+
* artifact-only allowed root, so callers (the servers) warn at startup.
|
|
262
|
+
* Pure: config.ts cannot log (logger.ts imports it).
|
|
263
|
+
*/
|
|
264
|
+
export declare function homeTreeStorageRootWarnings(env?: NodeJS.ProcessEnv, accountHomeProvider?: () => string): HomeTreeStorageRootWarning[];
|
|
246
265
|
/**
|
|
247
266
|
* CLINKX_* env vars to scrub from child process environment before re-injection.
|
|
248
267
|
* All CLINKX_* vars are scrubbed; only explicit workflow-owned values are re-injected.
|
|
@@ -251,6 +270,8 @@ export declare const CHILD_ENV_SCRUB_PREFIX = "CLINKX_";
|
|
|
251
270
|
/**
|
|
252
271
|
* Config-discovery vars to also scrub (prevent child from inheriting parent's
|
|
253
272
|
* config resolution path, which would bypass workflow-owned adapter bundles).
|
|
273
|
+
* The child inherits the parent's resolved CLINKX_HOME, and CLINKX_CONFIG_PATH
|
|
274
|
+
* still replaces discovery when set.
|
|
254
275
|
*/
|
|
255
276
|
export declare const CHILD_ENV_SCRUB_EXTRA: readonly ["XDG_CONFIG_HOME"];
|
|
256
277
|
/**
|
|
@@ -267,6 +288,8 @@ export declare const CHILD_ENV_REINJECT_MAP: {
|
|
|
267
288
|
readonly configPath: "CLINKX_CONFIG_PATH";
|
|
268
289
|
readonly allowedRoots: "CLINKX_ALLOWED_ROOTS";
|
|
269
290
|
readonly logLevel: "CLINKX_LOG_LEVEL";
|
|
291
|
+
readonly clinkxHome: "CLINKX_HOME";
|
|
292
|
+
readonly stateDir: "CLINKX_WORKFLOWS_STATE_DIR";
|
|
270
293
|
};
|
|
271
294
|
/**
|
|
272
295
|
* Baseline OS env vars that are never scrubbed from the child.
|
|
@@ -34,6 +34,7 @@ import { isIP } from "node:net";
|
|
|
34
34
|
import { userInfo } from "node:os";
|
|
35
35
|
import { isAbsolute, join, parse, resolve } from "node:path";
|
|
36
36
|
import { artifactOnlyEnvEntry } from "./allowed-roots.js";
|
|
37
|
+
import { assertRootRepresentable, directoryIdentity, isFilesystemRootIdentity, isStrictAncestorPath, } from "./root-path-validation.js";
|
|
37
38
|
export const DEFAULT_DASHBOARD_MAX_STATE_BYTES = 16_777_216;
|
|
38
39
|
export const MIN_DASHBOARD_MAX_STATE_BYTES = 1_048_576;
|
|
39
40
|
export const MAX_DASHBOARD_MAX_STATE_BYTES = 67_108_864;
|
|
@@ -91,6 +92,7 @@ export const DEFAULT_DASHBOARD_PORT = 4180;
|
|
|
91
92
|
export function resolveWorkspaceRoot() {
|
|
92
93
|
const explicit = process.env["CLINKX_WORKFLOWS_WORKSPACE_ROOT"];
|
|
93
94
|
if (explicit != null && explicit !== "") {
|
|
95
|
+
assertRootRepresentable(explicit, "CLINKX_WORKFLOWS_WORKSPACE_ROOT");
|
|
94
96
|
try {
|
|
95
97
|
return realpathSync(resolve(explicit));
|
|
96
98
|
}
|
|
@@ -101,6 +103,7 @@ export function resolveWorkspaceRoot() {
|
|
|
101
103
|
// Silent fallback — this module cannot log (logger.ts imports config.js; circular).
|
|
102
104
|
// Both servers (createServer, createWorkflowServer) warn at startup via
|
|
103
105
|
// hasExplicitWorkspaceRoot() when this cwd fallback is in effect.
|
|
106
|
+
assertRootRepresentable(process.cwd(), "Workflow workspace root");
|
|
104
107
|
return resolve(process.cwd());
|
|
105
108
|
}
|
|
106
109
|
/** Whether workspace root was explicitly configured. */
|
|
@@ -131,13 +134,13 @@ export function observedInvocationPersistenceEnabled(env = process.env) {
|
|
|
131
134
|
* so the child may use them for artifact/state I/O but context_builder never
|
|
132
135
|
* admits them as source roots.
|
|
133
136
|
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
* which grants the child filesystem-wide reach.
|
|
137
|
-
*
|
|
138
|
-
* is unset.
|
|
137
|
+
* Validates directory identity and comma-separated representability, retaining
|
|
138
|
+
* the supplied spelling. Broad workspace roots remain accepted — including
|
|
139
|
+
* "/", which grants the child filesystem-wide reach. Both servers warn when
|
|
140
|
+
* CLINKX_WORKFLOWS_WORKSPACE_ROOT is unset.
|
|
139
141
|
*/
|
|
140
142
|
export function deriveAllowedRoots(workspaceRoot, stateDir, artifactsDir) {
|
|
143
|
+
assertRootRepresentable(workspaceRoot, "CLINKX_WORKFLOWS_WORKSPACE_ROOT");
|
|
141
144
|
const roots = [
|
|
142
145
|
workspaceRoot,
|
|
143
146
|
artifactOnlyEnvEntry(stateDir),
|
|
@@ -511,28 +514,28 @@ export function getRetentionConfig() {
|
|
|
511
514
|
retainSucceededDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_SUCCEEDED_DAYS", DEFAULT_RETAIN_SUCCEEDED_DAYS),
|
|
512
515
|
};
|
|
513
516
|
}
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
+
export const CLINKX_HOME_ENV = "CLINKX_HOME";
|
|
518
|
+
/**
|
|
519
|
+
* Root directory for durable ClinkX data (default `~/.clinkx`).
|
|
520
|
+
* Order: `CLINKX_HOME`, then `$HOME/.clinkx`, then `userInfo().homedir/.clinkx`.
|
|
521
|
+
*/
|
|
522
|
+
export function getClinkxHome(env = process.env, accountHomeProvider = () => userInfo().homedir) {
|
|
523
|
+
const explicit = env[CLINKX_HOME_ENV];
|
|
517
524
|
if (explicit != null && explicit !== "") {
|
|
518
525
|
if (!isAbsolute(explicit)) {
|
|
519
|
-
throw new Error(`
|
|
526
|
+
throw new Error(`CLINKX_HOME must be an absolute path; got ${JSON.stringify(explicit)}`);
|
|
520
527
|
}
|
|
528
|
+
validateClinkxHome(explicit, effectiveHomeCandidate(env, accountHomeProvider));
|
|
521
529
|
return explicit;
|
|
522
530
|
}
|
|
523
|
-
const xdgState = env["XDG_STATE_HOME"];
|
|
524
|
-
if (xdgState != null && xdgState !== "") {
|
|
525
|
-
if (!isAbsolute(xdgState)) {
|
|
526
|
-
throw new Error(`XDG_STATE_HOME must be an absolute path when used for workflow state; got ${JSON.stringify(xdgState)}`);
|
|
527
|
-
}
|
|
528
|
-
return join(xdgState, "clinkx-workflows");
|
|
529
|
-
}
|
|
530
531
|
const configuredHome = env["HOME"];
|
|
531
532
|
if (configuredHome != null && configuredHome !== "") {
|
|
532
533
|
if (!isAbsolute(configuredHome)) {
|
|
533
|
-
throw new Error(`HOME must be an absolute path when used for
|
|
534
|
+
throw new Error(`HOME must be an absolute path when used for CLINKX_HOME; got ${JSON.stringify(configuredHome)}`);
|
|
534
535
|
}
|
|
535
|
-
|
|
536
|
+
const selected = join(configuredHome, ".clinkx");
|
|
537
|
+
validateClinkxHome(selected, configuredHome);
|
|
538
|
+
return selected;
|
|
536
539
|
}
|
|
537
540
|
const accountHome = accountHomeProvider();
|
|
538
541
|
const resolvedAccountHome = accountHome === "" ? "" : resolve(accountHome);
|
|
@@ -541,7 +544,54 @@ export function getStateDir(env = process.env, accountHomeProvider = () => userI
|
|
|
541
544
|
resolvedAccountHome === parse(resolvedAccountHome).root) {
|
|
542
545
|
throw new Error(`OS account home must be a non-empty absolute non-root path; got ${JSON.stringify(accountHome)}`);
|
|
543
546
|
}
|
|
544
|
-
|
|
547
|
+
const selected = join(accountHome, ".clinkx");
|
|
548
|
+
validateClinkxHome(selected, accountHome);
|
|
549
|
+
return selected;
|
|
550
|
+
}
|
|
551
|
+
function effectiveHomeCandidate(env, accountHomeProvider) {
|
|
552
|
+
const configured = env["HOME"];
|
|
553
|
+
if (configured != null && configured !== "" && isAbsolute(configured)) {
|
|
554
|
+
return configured;
|
|
555
|
+
}
|
|
556
|
+
try {
|
|
557
|
+
return accountHomeProvider();
|
|
558
|
+
}
|
|
559
|
+
catch {
|
|
560
|
+
return "";
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
function validateClinkxHome(selected, home) {
|
|
564
|
+
const identity = assertRootRepresentable(selected, "CLINKX_HOME");
|
|
565
|
+
if (isFilesystemRootIdentity(identity)) {
|
|
566
|
+
throw new Error(`CLINKX_HOME must not be a filesystem root; got ${JSON.stringify(selected)}`);
|
|
567
|
+
}
|
|
568
|
+
if (home === "" || !isAbsolute(home)) {
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
const homeCanonical = directoryIdentity(home, "HOME").canonical;
|
|
572
|
+
if (identity.canonical === homeCanonical) {
|
|
573
|
+
throw new Error(`CLINKX_HOME must not be the home directory; got ${JSON.stringify(selected)}`);
|
|
574
|
+
}
|
|
575
|
+
if (isStrictAncestorPath(identity.canonical, homeCanonical)) {
|
|
576
|
+
throw new Error(`CLINKX_HOME must not be an ancestor of the home directory; got ${JSON.stringify(selected)}`);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
function assertNotFilesystemRoot(selected, envVar) {
|
|
580
|
+
if (isFilesystemRootIdentity(assertRootRepresentable(selected, envVar))) {
|
|
581
|
+
throw new Error(`${envVar} must not be a filesystem root; use an absolute subdirectory; got ${JSON.stringify(selected)}`);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
/** Persistent workflow state directory. */
|
|
585
|
+
export function getStateDir(env = process.env, accountHomeProvider = () => userInfo().homedir) {
|
|
586
|
+
const explicit = env["CLINKX_WORKFLOWS_STATE_DIR"];
|
|
587
|
+
if (explicit != null && explicit !== "") {
|
|
588
|
+
if (!isAbsolute(explicit)) {
|
|
589
|
+
throw new Error(`CLINKX_WORKFLOWS_STATE_DIR must be an absolute path; got ${JSON.stringify(explicit)}`);
|
|
590
|
+
}
|
|
591
|
+
assertNotFilesystemRoot(explicit, "CLINKX_WORKFLOWS_STATE_DIR");
|
|
592
|
+
return explicit;
|
|
593
|
+
}
|
|
594
|
+
return getClinkxHome(env, accountHomeProvider);
|
|
545
595
|
}
|
|
546
596
|
export const DASHBOARD_PROGRESS_REPORT_OVERRIDE_DIR_ENV = "CLINKX_WORKFLOWS_PROGRESS_REPORT_OVERRIDE_DIR";
|
|
547
597
|
/**
|
|
@@ -568,8 +618,71 @@ export function getRunStateDir(runId) {
|
|
|
568
618
|
}
|
|
569
619
|
/** Disposable per-run artifacts directory. */
|
|
570
620
|
export function getArtifactsDir() {
|
|
621
|
+
const explicit = process.env["CLINKX_WORKFLOWS_ARTIFACTS_DIR"];
|
|
622
|
+
if (explicit != null && explicit !== "") {
|
|
623
|
+
if (!isAbsolute(explicit)) {
|
|
624
|
+
throw new Error(`CLINKX_WORKFLOWS_ARTIFACTS_DIR must be an absolute path; got ${JSON.stringify(explicit)}`);
|
|
625
|
+
}
|
|
626
|
+
assertNotFilesystemRoot(explicit, "CLINKX_WORKFLOWS_ARTIFACTS_DIR");
|
|
627
|
+
return explicit;
|
|
628
|
+
}
|
|
571
629
|
const tmpdir = process.env["TMPDIR"] ?? "/tmp";
|
|
572
|
-
|
|
630
|
+
const selected = `${tmpdir}/clinkx-workflows/artifacts`;
|
|
631
|
+
if (isFilesystemRootIdentity(assertRootRepresentable(selected, "CLINKX_WORKFLOWS_ARTIFACTS_DIR"))) {
|
|
632
|
+
throw new Error(`CLINKX_WORKFLOWS_ARTIFACTS_DIR is unset and its TMPDIR-derived default ${JSON.stringify(selected)} ` +
|
|
633
|
+
"resolves to a filesystem root; set CLINKX_WORKFLOWS_ARTIFACTS_DIR to an absolute subdirectory");
|
|
634
|
+
}
|
|
635
|
+
return selected;
|
|
636
|
+
}
|
|
637
|
+
export const HOME_TREE_STORAGE_ROOT_ENV_VARS = [
|
|
638
|
+
"CLINKX_WORKFLOWS_STATE_DIR",
|
|
639
|
+
"CLINKX_WORKFLOWS_ARTIFACTS_DIR",
|
|
640
|
+
];
|
|
641
|
+
/**
|
|
642
|
+
* Explicit state/artifacts overrides that equal or contain the effective HOME.
|
|
643
|
+
* They stay accepted for compatibility, but each is auto-admitted as an
|
|
644
|
+
* artifact-only allowed root, so callers (the servers) warn at startup.
|
|
645
|
+
* Pure: config.ts cannot log (logger.ts imports it).
|
|
646
|
+
*/
|
|
647
|
+
export function homeTreeStorageRootWarnings(env = process.env, accountHomeProvider = () => userInfo().homedir) {
|
|
648
|
+
const home = effectiveHomeCandidate(env, accountHomeProvider);
|
|
649
|
+
if (home === "" || !isAbsolute(home))
|
|
650
|
+
return [];
|
|
651
|
+
let homeCanonical;
|
|
652
|
+
try {
|
|
653
|
+
homeCanonical = directoryIdentity(home, "HOME").canonical;
|
|
654
|
+
}
|
|
655
|
+
catch {
|
|
656
|
+
return [];
|
|
657
|
+
}
|
|
658
|
+
const warnings = [];
|
|
659
|
+
for (const envVar of HOME_TREE_STORAGE_ROOT_ENV_VARS) {
|
|
660
|
+
const value = env[envVar];
|
|
661
|
+
if (value == null || value === "" || !isAbsolute(value))
|
|
662
|
+
continue;
|
|
663
|
+
let canonical;
|
|
664
|
+
try {
|
|
665
|
+
canonical = directoryIdentity(value, envVar).canonical;
|
|
666
|
+
}
|
|
667
|
+
catch {
|
|
668
|
+
continue;
|
|
669
|
+
}
|
|
670
|
+
const relation = canonical === homeCanonical
|
|
671
|
+
? "home"
|
|
672
|
+
: isStrictAncestorPath(canonical, homeCanonical) ? "home_ancestor" : undefined;
|
|
673
|
+
if (relation == null)
|
|
674
|
+
continue;
|
|
675
|
+
warnings.push({
|
|
676
|
+
envVar,
|
|
677
|
+
value,
|
|
678
|
+
relation,
|
|
679
|
+
message: `${envVar}=${JSON.stringify(value)} is ${relation === "home" ? "the home directory" : "an ancestor of the home directory"}; ` +
|
|
680
|
+
"it is auto-admitted as an artifact-only allowed root, so any file in that tree can be passed as a direct file reference " +
|
|
681
|
+
"that subprocess CLIs read, and ClinkX child processes may write anywhere in that tree. " +
|
|
682
|
+
"Set it to a dedicated absolute subdirectory.",
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
return warnings;
|
|
573
686
|
}
|
|
574
687
|
// ---------------------------------------------------------------------------
|
|
575
688
|
// Child env scrub/reinject constants
|
|
@@ -582,6 +695,8 @@ export const CHILD_ENV_SCRUB_PREFIX = "CLINKX_";
|
|
|
582
695
|
/**
|
|
583
696
|
* Config-discovery vars to also scrub (prevent child from inheriting parent's
|
|
584
697
|
* config resolution path, which would bypass workflow-owned adapter bundles).
|
|
698
|
+
* The child inherits the parent's resolved CLINKX_HOME, and CLINKX_CONFIG_PATH
|
|
699
|
+
* still replaces discovery when set.
|
|
585
700
|
*/
|
|
586
701
|
export const CHILD_ENV_SCRUB_EXTRA = ["XDG_CONFIG_HOME"];
|
|
587
702
|
/**
|
|
@@ -598,6 +713,8 @@ export const CHILD_ENV_REINJECT_MAP = {
|
|
|
598
713
|
configPath: "CLINKX_CONFIG_PATH",
|
|
599
714
|
allowedRoots: "CLINKX_ALLOWED_ROOTS",
|
|
600
715
|
logLevel: "CLINKX_LOG_LEVEL",
|
|
716
|
+
clinkxHome: "CLINKX_HOME",
|
|
717
|
+
stateDir: "CLINKX_WORKFLOWS_STATE_DIR",
|
|
601
718
|
};
|
|
602
719
|
/**
|
|
603
720
|
* Baseline OS env vars that are never scrubbed from the child.
|
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;AAC5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,SAAS,CAAC;AACvD,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAC;AACxD,MAAM,CAAC,MAAM,mCAAmC,GAC9C,gDAAgD,CAAC;AACnD,MAAM,CAAC,MAAM,mCAAmC,GAC9C,gDAAgD,CAAC;AAEnD,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E,SAAS,MAAM,CAAC,GAAW,EAAE,QAAgB;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9C,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAW,EACX,QAAsC;IAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAC/D,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,iDAAiD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,QAAgB;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,QAAgB;IACtD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1D,CAAC;AAED,8EAA8E;AAC9E,SAAS,cAAc,CAAC,GAAW,EAAE,QAAgB;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1D,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,QAAiB;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAU3C,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAChE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACxC,uBAAuB,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,oFAAoF;IACpF,wEAAwE;IACxE,kEAAkE;IAClE,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,wBAAwB;IACtC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CACjD,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,GAAG,CAAC,mCAAmC,CAAC,KAAK,MAAM,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oCAAoC,CAClD,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,GAAG,CAAC,mCAAmC,CAAC,KAAK,MAAM,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAAqB,EACrB,QAAgB,EAChB,YAAoB;IAEpB,uBAAuB,CAAC,aAAa,EAAE,iCAAiC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG;QACZ,aAAa;QACb,oBAAoB,CAAC,QAAQ,CAAC;QAC9B,oBAAoB,CAAC,YAAY,CAAC;KACnC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,+CAA+C;AAC/C,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB;IACtC,OAAO,sBAAsB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,0BAA0B;IACxC,OAAO,sBAAsB,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,iCAAiC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACjF,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,sBAAsB,CAAC,MAAM,CAAC,iCAAiC,EAAE,YAAY,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,8BAA8B;IAC5C,OAAO,cAAc,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,+BAA+B;IAC7C,OAAO,OAAO,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,wBAAwB;IACtC,OAAO,MAAM,CAAC,2CAA2C,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,yCAAyC,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,sBAAsB,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,4CAA4C,CAAC;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,iCAAiC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IACE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QACvB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5B,KAAK,GAAG,6BAA6B;QACrC,KAAK,GAAG,6BAA6B,EACrC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,4BAA4B,MAAM,CAAC,6BAA6B,CAAC,YAAY,MAAM,CAAC,6BAA6B,CAAC,QAAQ,CACjI,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAEhF,MAAM,CAAC,MAAM,+BAA+B,GAC1C,8CAA8C,CAAC;AACjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAC;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAC;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GACvC,2CAA2C,CAAC;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,oCAAoC,CAAC;AAC1E,MAAM,CAAC,MAAM,iCAAiC,GAC5C,gDAAgD,CAAC;AACnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC;AAC5D,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAM,CAAC;AAgB5D;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAW,EACX,KAAa;IAEb,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gEAAgE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,sDAAsD,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8DAA8D,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,+CAA+C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAChH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAsCD,SAAS,oCAAoC,CAC3C,SAAiB,EACjB,KAAa;IAEb,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,IACE,SAAS,KAAK,EAAE;WACb,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;WACxB,CAAC,UAAU,CAAC,SAAS,CAAC;WACtB,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EACpC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,+DAA+D,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CACjD,MAAyB,OAAO,CAAC,GAAG,EACpC,iBAAyB,WAAW,EAAE;IAEtC,MAAM,QAAQ,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC;IACnD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,oCAAoC,CACzC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EACtD,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,oCAAoC,CACzC,QAAQ,EACR,4BAA4B,CAC7B,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,wBAAwB,CACtC,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,GAAG,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IACxE,MAAM,IAAI,KAAK,CACb,GAAG,uBAAuB,8CAA8C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,cAAsB,EAAE,SAAkB;IAC/D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAC;IACb,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,KAAK,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA+B;IAE/B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACrC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,qBAAqB,oBAAoB,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,aAAa,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC7D,IAAI,iBAAiB,GAAG,qCAAqC,CAAC;IAC9D,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,GAAG,iCAAiC,6BAA6B,CAClE,CAAC;QACJ,CAAC;QACD,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAC1C,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC;eACrC,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAClD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,GAAG,iCAAiC,sCAAsC,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,mBAAmB,GAAG,oCAAoC,CAC9D,KAAK,CAAC,mBAAmB,EACzB,gCAAgC,CACjC,CAAC;IAEF,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxC,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;eAClC,KAAK,CAAC,SAAoB,GAAG,CAAC;eAC9B,KAAK,CAAC,SAAoB,GAAG,MAAM,EACvC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,YAAY,GAAG,aAAa,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,MAAM,cAAc,GAAG,UAAU,YAAY,EAAE,CAAC;QAChD,OAAO;YACL,MAAM;YACN,cAAc;YACd,YAAY,EAAE,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC;YACjD,YAAY;YACZ,aAAa,EAAE,KAAK;YACpB,mBAAmB;YACnB,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,CAAC,eAAe,KAAK,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IACvC,OAAO;QACL,MAAM;QACN,cAAc;QACd,YAAY,EAAE,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC;QAClD,YAAY,EAAE,MAAM,CAAC,IAAI;QACzB,aAAa,EAAE,IAAI;QACnB,mBAAmB;QACnB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,MAAM,GAAG,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAChD,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,uBAAuB,CAAC;QACtF,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,+BAA+B,CAAC;QAC1F,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,eAAe,UAAU,kHAAkH,CACrJ,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,yBAAyB,CAAC,MAAgB,EAAE,+BAA+B,CAAC,CAAC;IACzF,MAAM,EAAE,GAAG,yBAAyB,CAAC,KAAe,EAAE,uBAAuB,CAAC,CAAC;IAC/E,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,eAAe,EAAE,GAAG,CAAC,MAAM;QAC3B,QAAQ,EAAE,EAAE,CAAC,MAAM;QACnB,UAAU,EAAE,GAAG,CAAC,IAAI;KACrB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,eAAuB;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,yBAAyB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACjF,OAAO;QACL,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,iBAAiB;QACjB,sBAAsB,MAAM,EAAE;QAC9B,sBAAsB;QACtB,mBAAmB;QACnB,iBAAiB;QACjB,oBAAoB;QACpB,wBAAwB;KACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,gBAAgB,EAAE,iBAAiB,CAAC,qCAAqC,EAAE,0BAA0B,CAAC;QACtG,mBAAmB,EAAE,iBAAiB,CAAC,wCAAwC,EAAE,6BAA6B,CAAC;QAC/G,eAAe,EAAE,iBAAiB,CAAC,oCAAoC,EAAE,yBAAyB,CAAC;QACnG,eAAe,EAAE,iBAAiB,CAAC,oCAAoC,EAAE,yBAAyB,CAAC;QACnG,mBAAmB,EAAE,iBAAiB,CAAC,wCAAwC,EAAE,6BAA6B,CAAC;KAChH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAyB,OAAO,CAAC,GAAG,EACpC,sBAAoC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO;IAE5D,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IACtC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CACxE,CAAC;QACJ,CAAC;QACD,kBAAkB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAE/E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,gEAAgE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CACjG,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACjD,kBAAkB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,mBAAmB,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3E,IACE,WAAW,KAAK,EAAE;QAClB,CAAC,UAAU,CAAC,WAAW,CAAC;QACxB,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,EACvD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mEAAmE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC9C,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAsB,EACtB,mBAAiC;IAEjC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACtE,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,IAAY;IACxD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClE,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO;IACT,CAAC;IACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;IAChE,IAAI,QAAQ,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,kEAAkE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,MAAc;IAC/D,IAAI,wBAAwB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,qEAAqE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CACzG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,WAAW,CACzB,MAAyB,OAAO,CAAC,GAAG,EACpC,sBAAoC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO;IAE5D,MAAM,QAAQ,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC;IACnD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CACvF,CAAC;QACJ,CAAC;QACD,uBAAuB,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,0CAA0C,GACrD,+CAA+C,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAyB,OAAO,CAAC,GAAG,EACpC,sBAAoC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO;IAE5D,MAAM,QAAQ,GAAG,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACjE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,oCAAoC,CACzC,QAAQ,EACR,0CAA0C,CAC3C,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC/D,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,gEAAgE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAC3F,CAAC;QACJ,CAAC;QACD,uBAAuB,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QACpE,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;IAC/C,MAAM,QAAQ,GAAG,GAAG,MAAM,6BAA6B,CAAC;IACxD,IAAI,wBAAwB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC,EAAE,CAAC;QAClG,MAAM,IAAI,KAAK,CACb,0EAA0E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;YACnG,+FAA+F,CAClG,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,4BAA4B;IAC5B,gCAAgC;CACxB,CAAC;AASX;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAyB,OAAO,CAAC,GAAG,EACpC,sBAAoC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO;IAE5D,MAAM,IAAI,GAAG,sBAAsB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC9D,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAChD,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,KAAK,MAAM,MAAM,IAAI,+BAA+B,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QAClE,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,KAAK,aAAa;YAC1C,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,IAAI,QAAQ,IAAI,IAAI;YAAE,SAAS;QAC/B,QAAQ,CAAC,IAAI,CAAC;YACZ,MAAM;YACN,KAAK;YACL,QAAQ;YACR,OAAO,EACL,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mCAAmC,IAAI;gBAC7H,0HAA0H;gBAC1H,yFAAyF;gBACzF,8CAA8C;SACjD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,iBAAiB,CAAU,CAAC;AAElE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,uBAAuB;IACtC,gBAAgB,EAAE,2BAA2B;IAC7C,cAAc,EAAE,yBAAyB;IACzC,cAAc,EAAE,yBAAyB;IACzC,UAAU,EAAE,oBAAoB;IAChC,YAAY,EAAE,sBAAsB;IACpC,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,4BAA4B;CAC9B,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;CACA,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,wBAAwB;IACxB,6BAA6B;IAC7B,qCAAqC;CAC7B,CAAC"}
|