From fb6595c175ce25a32c0a38da3a35350215aebe0a Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Fri, 18 Sep 2026 06:27:54 +0200 Subject: [PATCH 1/5] Cover every code path with behavioural tests and raise coverage gate to 100 - Add test/coverage.test.ts with 127 behavioural tests driving every line, branch, and function in index.ts to 100% coverage - Remove dead beforeCommand fallback hook (SDK always provides afterCommand) - Remove dead postToSlack throw ternary (postToSlackOnce only rejects Error) - Remove dead statusCode ?? 0 (HTTP responses always have status codes) - Simplify statusIsClosed parameter to string (callers always pass strings) - Remove dead ALL_EVENTS.find ?? 'create' (parseEvents always non-empty) - Introduce toErrorMessage() helper consolidating 4 catch-block ternaries - Raise coverageGate thresholds from 77/85/79 to 100/100/100 --- .agents/pm/history/pm-slack-hn3n.jsonl | 6 + .agents/pm/tasks/pm-slack-hn3n.toon | 24 + dist/index.d.ts | 15 + dist/index.d.ts.map | 2 +- dist/index.js | 62 +- dist/index.js.map | 2 +- index.ts | 64 +- package.json | 6 +- test/coverage.test.ts | 2396 ++++++++++++++++++++++++ 9 files changed, 2500 insertions(+), 77 deletions(-) create mode 100644 .agents/pm/history/pm-slack-hn3n.jsonl create mode 100644 .agents/pm/tasks/pm-slack-hn3n.toon create mode 100644 test/coverage.test.ts diff --git a/.agents/pm/history/pm-slack-hn3n.jsonl b/.agents/pm/history/pm-slack-hn3n.jsonl new file mode 100644 index 0000000..19742db --- /dev/null +++ b/.agents/pm/history/pm-slack-hn3n.jsonl @@ -0,0 +1,6 @@ +{"hash_algorithm":"sha256","ts":"2026-09-18T03:12:15.680Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"create","patch":[{"op":"add","path":"/metadata/id","value":"pm-slack-hn3n"},{"op":"add","path":"/metadata/title","value":"Cover every pm-slack code path with behavioural tests and raise the coverage gate to 100"},{"op":"add","path":"/metadata/description","value":"The coverage gate floor is 77/85/79; the fleet mandate is 100/100/100. Drive every uncovered line, branch, and function in index.ts through real behaviour and raise coverageGate.thresholds to 100."},{"op":"add","path":"/metadata/type","value":"Task"},{"op":"add","path":"/metadata/status","value":"open"},{"op":"add","path":"/metadata/priority","value":2},{"op":"add","path":"/metadata/tags","value":[]},{"op":"add","path":"/metadata/created_at","value":"2026-09-18T03:12:15.680Z"},{"op":"add","path":"/metadata/updated_at","value":"2026-09-18T03:12:15.680Z"},{"op":"add","path":"/metadata/author","value":"pi-agent"},{"op":"add","path":"/metadata/acceptance_criteria","value":"npm run coverage reports 100.00 for lines, branches, and functions; coverageGate.thresholds in package.json is 100/100/100; npm run release:check exits 0"}],"before_hash":"3cc22dff72be7b14824654a7a64ea62b04799939b2fee54c1b5f52ca60bf6df0","after_hash":"aa4eba224d0918bc3f6da9cf52fca44ab9dd5348480bdcf908ff0b27b2d04573","item_hash_version":3,"message":"","event_class":"substantive","record_hash_version":1,"record_hash":"cfd6bb891f204c0c2f3c360cfaabe76aec5bd97f5ff5f6ca6855f060eaf77bd7"} +{"hash_algorithm":"sha256","ts":"2026-09-18T03:12:23.764Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"claim","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T03:12:23.764Z"},{"op":"add","path":"/metadata/assignee","value":"pi-agent"},{"op":"add","path":"/metadata/claim_principal","value":"pi-agent"}],"before_hash":"aa4eba224d0918bc3f6da9cf52fca44ab9dd5348480bdcf908ff0b27b2d04573","after_hash":"48d63d0aae01f53be0ae192faae50fdcdb049c6fb0d38e525c68f8c01521c02f","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"62d9dbfa617bf5cfd6c40d880fa57238c1996d7a759132729c62a3e224764d92"} +{"hash_algorithm":"sha256","ts":"2026-09-18T03:12:24.263Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T03:12:24.263Z"},{"op":"add","path":"/metadata/comments","value":[{"created_at":"2026-09-18T03:12:24.263Z","author":"pi-agent","text":"Baseline: lines 82.63%, branches 86.28%, functions 86.21%. Uncovered regions: 642-652 (loadConfig valid/invalid webhook), 690-694 (meetsMinPriority), 870/874-875 (eventReason block+cancel fallback), 906-908 (buildTextMessage status transitions), 1246-1248 (parseRetryAfterMs date form), 1320-1325/1330/1334 (postToSlackOnce error paths), 1356-1371 (postToSlack retry), 1436-1459 (readStoreItems), 1822-1837 (extractItem), 1866-1930 (afterCommand+beforeCommand hooks), 1933-1957 (preflight run), 2046-2163 (slack notify handler), 2203-2268 (slack test handler), 2301-2359 (slack digest handler)"}]}],"before_hash":"48d63d0aae01f53be0ae192faae50fdcdb049c6fb0d38e525c68f8c01521c02f","after_hash":"697ac945ea0bd5f5d991499d6ac3a7f06b23caa11fffc987b64b8713bc2d1efd","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"90941ff8e0b6a1f53159779be12a68d646c916ef4d926d85fee498f340d609f9"} +{"hash_algorithm":"sha256","ts":"2026-09-18T03:19:48.560Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/1","value":{"created_at":"2026-09-18T03:19:48.560Z","author":"pi-agent","text":"Dead-code removed: index.ts lines 1932-1957 (beforeCommand fallback hook). Invariant: the SDK's ExtensionApiRegistrar constructor always binds api.hooks.afterCommand as a function (see @unbrained/pm-cli extension-types.js: this.hooks = { beforeCommand: ..., afterCommand: ..., ... }), so the 'else if (typeof api.hooks?.beforeCommand === \"function\")' branch is never reached when afterCommand is available. The peer dependency >=2026.7.29 guarantees afterCommand exists. Removed the entire else-if block and the unused BeforeCommandHookContext import."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T03:19:48.560Z"}],"before_hash":"697ac945ea0bd5f5d991499d6ac3a7f06b23caa11fffc987b64b8713bc2d1efd","after_hash":"68697107f46af4c34a19adec0d0e33847dfea9f35b145017a2b14c610e5e08b4","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"e65cc62933c8c4c08b9d3d3f30759a52cf76124d88ef24682f5042f79e599123"} +{"hash_algorithm":"sha256","ts":"2026-09-18T04:27:33.963Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/2","value":{"created_at":"2026-09-18T04:27:33.963Z","author":"pi-agent","text":"Coverage achieved 100/100/100 (lines/branches/functions). Dead code removed: (1) beforeCommand fallback hook (lines 1932-1957) — invariant: SDK always provides afterCommand; (2) postToSlack throw ternary (line 1369) — invariant: postToSlackOnce only rejects with Error instances; (3) res.statusCode ?? 0 — invariant: HTTP responses always have a status code; (4) statusIsClosed ?? '' — invariant: aggregateDigest always passes a lowercased string; (5) ALL_EVENTS.find(...) ?? 'create' (2 sites) — invariant: parseEvents always returns a non-empty set of valid EventKind values. Introduced toErrorMessage() helper consolidating err instanceof Error ternaries from 4 catch blocks; exported in __test__ with both arms tested. Coverage gate raised to 100/100/100."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T04:27:33.963Z"}],"before_hash":"68697107f46af4c34a19adec0d0e33847dfea9f35b145017a2b14c610e5e08b4","after_hash":"a4d3eb999d62b897b0d508bbe17c7dedf8fa9e87cd50d717e5eaf59a459e0ecd","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"9a1a8e50b2a18d95b939ed284b228c98a1269628049d628f9c61bb9d7bd158e8"} +{"hash_algorithm":"sha256","ts":"2026-09-18T04:27:42.977Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T04:27:42.977Z"},{"op":"add","path":"/metadata/files","value":[{"path":"index.ts","scope":"project"},{"path":"test/coverage.test.ts","scope":"project"},{"path":"package.json","scope":"project"}]},{"op":"add","path":"/metadata/tests","value":[{"command":"npm run coverage","scope":"project","provenance":{"author":"pi-agent","created_at":"2026-09-18T04:27:42.867Z","source_kind":"local_mutation","source_ref":"test/cover-pm-slack-to-full-coverage"}}]}],"before_hash":"a4d3eb999d62b897b0d508bbe17c7dedf8fa9e87cd50d717e5eaf59a459e0ecd","after_hash":"2d7d3e650d61a35a0b77b75ea06bcd1938a6f0c6ef581668275cd4b0e49aa0fe","item_hash_version":3,"event_class":"maintenance","record_hash_version":1,"record_hash":"d08021879499a780ab7eee46a6032063a14cc947c769b0d9d660fc650bd590dc"} diff --git a/.agents/pm/tasks/pm-slack-hn3n.toon b/.agents/pm/tasks/pm-slack-hn3n.toon new file mode 100644 index 0000000..eb2d1a1 --- /dev/null +++ b/.agents/pm/tasks/pm-slack-hn3n.toon @@ -0,0 +1,24 @@ +id: pm-slack-hn3n +title: Cover every pm-slack code path with behavioural tests and raise the coverage gate to 100 +description: "The coverage gate floor is 77/85/79; the fleet mandate is 100/100/100. Drive every uncovered line, branch, and function in index.ts through real behaviour and raise coverageGate.thresholds to 100." +type: Task +status: open +priority: 2 +tags: [] +created_at: "2026-09-18T03:12:15.680Z" +updated_at: "2026-09-18T04:27:42.977Z" +assignee: pi-agent +claim_principal: pi-agent +author: pi-agent +acceptance_criteria: "npm run coverage reports 100.00 for lines, branches, and functions; coverageGate.thresholds in package.json is 100/100/100; npm run release:check exits 0" +comments[3]{created_at,author,text}: + "2026-09-18T03:12:24.263Z",pi-agent,"Baseline: lines 82.63%, branches 86.28%, functions 86.21%. Uncovered regions: 642-652 (loadConfig valid/invalid webhook), 690-694 (meetsMinPriority), 870/874-875 (eventReason block+cancel fallback), 906-908 (buildTextMessage status transitions), 1246-1248 (parseRetryAfterMs date form), 1320-1325/1330/1334 (postToSlackOnce error paths), 1356-1371 (postToSlack retry), 1436-1459 (readStoreItems), 1822-1837 (extractItem), 1866-1930 (afterCommand+beforeCommand hooks), 1933-1957 (preflight run), 2046-2163 (slack notify handler), 2203-2268 (slack test handler), 2301-2359 (slack digest handler)" + "2026-09-18T03:19:48.560Z",pi-agent,"Dead-code removed: index.ts lines 1932-1957 (beforeCommand fallback hook). Invariant: the SDK's ExtensionApiRegistrar constructor always binds api.hooks.afterCommand as a function (see @unbrained/pm-cli extension-types.js: this.hooks = { beforeCommand: ..., afterCommand: ..., ... }), so the 'else if (typeof api.hooks?.beforeCommand === \"function\")' branch is never reached when afterCommand is available. The peer dependency >=2026.7.29 guarantees afterCommand exists. Removed the entire else-if block and the unused BeforeCommandHookContext import." + "2026-09-18T04:27:33.963Z",pi-agent,"Coverage achieved 100/100/100 (lines/branches/functions). Dead code removed: (1) beforeCommand fallback hook (lines 1932-1957) — invariant: SDK always provides afterCommand; (2) postToSlack throw ternary (line 1369) — invariant: postToSlackOnce only rejects with Error instances; (3) res.statusCode ?? 0 — invariant: HTTP responses always have a status code; (4) statusIsClosed ?? '' — invariant: aggregateDigest always passes a lowercased string; (5) ALL_EVENTS.find(...) ?? 'create' (2 sites) — invariant: parseEvents always returns a non-empty set of valid EventKind values. Introduced toErrorMessage() helper consolidating err instanceof Error ternaries from 4 catch blocks; exported in __test__ with both arms tested. Coverage gate raised to 100/100/100." +files[3]{path,scope}: + index.ts,project + test/coverage.test.ts,project + package.json,project +tests[1]{command,scope,provenance{author,created_at,source_kind,source_ref}}: + npm run coverage,project,pi-agent,"2026-09-18T04:27:42.867Z",local_mutation,test/cover-pm-slack-to-full-coverage +body: "" diff --git a/dist/index.d.ts b/dist/index.d.ts index a3aafd4..e9f895a 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -35,6 +35,20 @@ declare class CommandError extends Error { constructor(message: string, exitCode?: number); } type Priority = 1 | 2 | 3 | 4; +/** + * Extract a human-readable message from a thrown value. + * + * Every throw site in this package produces an `Error` instance + * (`CommandError`, `SlackHttpError`, or `new Error(…)`), so the `String(err)` + * fallback is not reached at runtime. It is kept as a defensive guard against + * a future throw site that violates that invariant, and is exported for test + * so both arms can be exercised without constructing an unreachable production + * path. + * + * @param err - The value caught in a `catch` block. + * @returns The error message, or a stringified fallback for non-`Error` values. + */ +declare function toErrorMessage(err: unknown): string; interface PmItem { id: string; title: string; @@ -624,6 +638,7 @@ export declare const __test__: { readonly USAGE: 2; readonly NOT_FOUND: 3; }; + toErrorMessage: typeof toErrorMessage; CommandError: typeof CommandError; parseFilter: typeof parseFilter; filterMatches: typeof filterMatches; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index 8089e06..11693da 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 830962a..b8c988b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -55,6 +55,22 @@ class CommandError extends Error { this.exitCode = exitCode; } } +/** + * Extract a human-readable message from a thrown value. + * + * Every throw site in this package produces an `Error` instance + * (`CommandError`, `SlackHttpError`, or `new Error(…)`), so the `String(err)` + * fallback is not reached at runtime. It is kept as a defensive guard against + * a future throw site that violates that invariant, and is exported for test + * so both arms can be exercised without constructing an unreachable production + * path. + * + * @param err - The value caught in a `catch` block. + * @returns The error message, or a stringified fallback for non-`Error` values. + */ +function toErrorMessage(err) { + return err instanceof Error ? err.message : String(err); +} // --------------------------------------------------------------------------- // Option helpers // @@ -1139,7 +1155,7 @@ function postToSlackOnce(webhookUrl, payload) { data += chunk.toString(); }); res.on("end", () => { - const status = res.statusCode ?? 0; + const status = res.statusCode; if (status >= 200 && status < 300) { resolve(); } @@ -1188,7 +1204,7 @@ async function postToSlack(webhookUrl, payload) { await sleep(slackRetryDelayMs(attempt, retryAfterMs)); } } - throw lastErr instanceof Error ? lastErr : new Error(String(lastErr)); + throw lastErr; } // --------------------------------------------------------------------------- // Digest: reading the pm store + activity aggregation @@ -1293,7 +1309,7 @@ function resolveWindow(since, days, now = Date.now()) { return { cutoffMs: now - d * 24 * 60 * 60 * 1000, label: `last ${d} day${d === 1 ? "" : "s"}` }; } function statusIsClosed(status) { - const s = (status ?? "").toLowerCase(); + const s = status.toLowerCase(); return s === "closed" || s === "done" || s === "resolved" || s === "complete" || s === "completed"; } /** @@ -1659,38 +1675,11 @@ export default defineExtension({ } catch (err) { // Hooks must never throw or block the command — swallow everything. - const message = err instanceof Error ? err.message : String(err); + const message = toErrorMessage(err); console.error(`[pm-slack] afterCommand hook error (ignored): ${message}`); } }); } - else if (typeof api.hooks?.beforeCommand === "function") { - // Fallback: use beforeCommand if afterCommand is unavailable - // (result data is unavailable, so we can only notify on command name). - api.hooks.beforeCommand(async (ctx) => { - try { - console.error("[pm-slack] afterCommand not available — limited event detection active"); - const config = loadConfig(); - if (!config) - return; - const cmd = ctx.command?.toLowerCase() ?? ""; - let event = null; - if (CREATE_COMMANDS.has(cmd)) - event = "create"; - else if (CLOSE_COMMANDS.has(cmd)) - event = "close"; - if (!event || !config.events.has(event)) - return; - const cmdArgs = (ctx.args ?? []).join(" "); - const text = `pm command \`${ctx.command}\` triggered event *${event}*\n${cmdArgs}`; - await postToSlack(config.webhookUrl, { text, mrkdwn: true, channel: config.channel }); - } - catch (err) { - const message = err instanceof Error ? err.message : String(err); - console.error(`[pm-slack] beforeCommand hook error (ignored): ${message}`); - } - }); - } // ----------------------------------------------------------------------- // preflight — fail-fast webhook validation gate for the Slack-posting // commands. Scoped to `slack notify` / `slack digest` (the command paths @@ -1731,7 +1720,7 @@ export default defineExtension({ catch (err) { // The runtime swallows throws here; emit a visible warning so the // signal isn't lost. The handler-level gate provides the real abort. - const message = err instanceof Error ? err.message : String(err); + const message = toErrorMessage(err); console.error(`[pm-slack] preflight: ${message}`); } return {}; @@ -1793,7 +1782,7 @@ export default defineExtension({ } // `--on` selects the message template. First event wins for the header verb. const events = parseEvents(readStrOption(options, "on") ?? "create"); - const event = (ALL_EVENTS.find((e) => events.has(e)) ?? "create"); + const event = ALL_EVENTS.find((e) => events.has(e)); // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); const effectiveChannel = channelOverrides.get(event) ?? channel; @@ -1866,7 +1855,7 @@ export default defineExtension({ } catch (err) { // Never throw on network failure: warn and exit 0. - const message = err instanceof Error ? err.message : String(err); + const message = toErrorMessage(err); console.error(`[pm-slack] Slack post failed (continuing): ${message}`); return { posted: false, error: message }; } @@ -1914,7 +1903,7 @@ export default defineExtension({ const format = parseFormat(readStrOption(options, "format") ?? process.env.PM_SLACK_FORMAT); const channel = (readStrOption(options, "channel") ?? process.env.PM_SLACK_CHANNEL?.trim()) || undefined; const events = parseEvents(readStrOption(options, "on") ?? "create"); - const event = (ALL_EVENTS.find((e) => events.has(e)) ?? "create"); + const event = ALL_EVENTS.find((e) => events.has(e)); // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); const effectiveChannel = channelOverrides.get(event) ?? channel; @@ -2039,7 +2028,7 @@ export default defineExtension({ await postToSlack(webhookUrl, payload); } catch (err) { - const message = err instanceof Error ? err.message : String(err); + const message = toErrorMessage(err); throw new CommandError(`Failed to post digest to Slack: ${message}`, EXIT_CODE.GENERIC_FAILURE); } return { posted: true, format, channel, thread_ts: threadTs, counts: summary.counts, total: summary.total, window: label }; @@ -2106,6 +2095,7 @@ export const __test__ = { postToSlackOnce, SlackHttpError, EXIT_CODE, + toErrorMessage, CommandError, parseFilter, filterMatches, diff --git a/dist/index.js.map b/dist/index.js.map index 75881b3..bcf000b 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,8EAA8E;AAC9E,oDAAoD;AACpD,EAAE;AACF,yEAAyE;AACzE,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,wEAAwE;AACxE,gFAAgF;AAChF,8EAA8E;AAE9E,MAAM,SAAS,GAAG;IAChB,eAAe,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,MAAM,YAAa,SAAQ,KAAK;IAC9B,QAAQ,CAAS;IACjB,YAAY,OAAe,EAAE,QAAQ,GAAW,SAAS,CAAC,eAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAsED,8EAA8E;AAC9E,iBAAiB;AACjB,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,gCAAgC;AAChC,8EAA8E;AAE9E,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,cAAc,CAAC,OAAgC,EAAE,GAAW;IACnE,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACxE,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,aAAa,CAAC,OAAgC,EAAE,GAAW;IAClE,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,UAAU,GAAgB;IAC9B,QAAQ;IACR,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;CACT,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAA8B;IAC/C,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,OAAO;IACpB,aAAa,EAAE,OAAO;IACtB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAc,CAAC;QAAE,OAAO,CAAc,CAAC;IAC/D,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAC,IAAwB;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,WAAW,GAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAAwB,EAAE,QAAQ,GAAkB,UAAU;IACjF,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IAC3F,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IAChE,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IACxE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,uEAAuE;AACvE,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CAAC,IAAwB;IAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE,SAAS,CAAC,yCAAyC;QAC7E,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,IAAe,EAAE,KAAgB,EAAE,IAAY;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,GAAG,KAAK,KAAK,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAClB,KAAgB,EAChB,IAAY,EACZ,MAAmB,EACnB,cAAsB,EACtB,cAAuB;IAEvB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;YAClD,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAC7B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IACD,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AACjE,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,kBAAkB;AAClB,sDAAsD;AACtD,uDAAuD;AACvD,sDAAsD;AACtD,wEAAwE;AACxE,8EAA8E;AAE9E,+DAA+D;AAC/D,SAAS,WAAW,CAAC,IAAwB;IAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAc,EAAE,KAAgB,EAAE,IAAY;IACnE,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;IACzC,CAAC;IACD,uDAAuD;IACvD,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,OAAiB,EAAE,KAAgB,EAAE,IAAY;IACtE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,wCAAwC;AACxC,EAAE;AACF,gEAAgE;AAChE,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,8EAA8E;AAE9E,yEAAyE;AACzE,SAAS,oBAAoB,CAAC,IAAwB;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,KAAK;YAAE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,sEAAsE;AACtE,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,WAA+B;IAI9D,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;IACjC,IAAI,IAAI;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACjD,IAAI,GAAG;QAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEnD,8EAA8E;IAC9E,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAE9E,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,cAAc,EAAE,cAAc,CAAU,CAAC;AAEhF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,YAAY,CAAU,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAQ,sBAA4C,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAQ,sBAA4C,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,uBAAuB,CAAC,WAA+B,EAAE,YAAoB;IACpF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAEpE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,YAAY,CACpB,qCAAqC,YAAY,MAAM;YACrD,uEAAuE;YACvE,uDAAuD;YACvD,yDAAyD,EAC3D,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,YAAY,CACpB,uBAAuB,YAAY,wBAAwB;gBACzD,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,MAAM,UAAU,OAAO;gBAC/E,kEAAkE,EACpE,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChE,MAAM,IAAI,YAAY,CACpB,uBAAuB,YAAY,4BAA4B;gBAC7D,kBAAkB,MAAM,CAAC,QAAQ,SAAS;gBAC1C,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAC7D,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAkBD,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,kEAAkE;AAClE,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,SAAS,oBAAoB;IAC3B,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAExD,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,0EAA0E;QAC1E,yEAAyE;QACzE,wCAAwC;QACxC,oBAAoB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAElE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,WAAW,GACf,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC,CAAE,WAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxD,uEAAuE;IACvE,qEAAqE;IACrE,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtF,MAAM,eAAe,GACnB,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,KAAK;QACzF,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC;IAE3B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AACpG,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,eAAe,GAA6B;IAChD,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,KAAK;CACT,CAAC;AAEF,SAAS,aAAa,CAAC,CAAuB;IAC5C,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,WAAqB;IAC3D,+CAA+C;IAC/C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,iCAAiC;IAC/E,OAAO,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,+EAA+E;AAC/E,wEAAwE;AACxE,8EAA8E;AAE9E,0EAA0E;AAC1E,SAAS,gBAAgB,CAAC,IAAwB;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,IAAI,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAE,GAAwB;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH;;;;;GAKG;AACH,SAAS,eAAe,CACtB,QAA4B,EAC5B,GAAG,GAAkD;IACnD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IAC9C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;CAC7C;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,cAAc,CAAC,IAAY,EAAE,QAAiB;IACrD,MAAM,UAAU,GAAG;QACjB,QAAQ;QACR,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,SAAS;QACd,IAAI,CAAC,QAAQ;QACb,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,SAAS;QACd,IAAI,CAAC,IAAI;KACV,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,GAAuD;IACrE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IACxC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE;IAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;IACzC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;IACrC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IACvC,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;CAC1C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,KAAgB;IACjD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC7E,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,mEAAmE;QACnE,6DAA6D;QAC7D,OAAO,CACL,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;YACzB,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;YACzB,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;YACzB,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAChF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAgB,EAAE,OAAgB,EAAE,OAAgB;IAC1F,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,KAAK,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAEjE,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,GAAG,IAAI,eAAe,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,UAAU,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;IACzG,CAAC;SAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACxE,qDAAqD;QACrD,GAAG,IAAI,aAAa,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,GAAG,IAAI,aAAa,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACxG,CAAC;IAED,IAAI,OAAO;QAAE,GAAG,IAAI,eAAe,OAAO,EAAE,CAAC;IAC7C,IAAI,OAAO;QAAE,GAAG,IAAI,eAAe,OAAO,GAAG,CAAC;IAC9C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,uEAAuE;AACvE,6EAA6E;AAC7E,kDAAkD;AAClD,8EAA8E;AAE9E,qEAAqE;AACrE,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAgB,EAAE,IAAqB;IACjF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI;QAChC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;QACtC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAgB,EAAE,QAAgB,EAAE,IAAI,GAAoB,EAAE;IACtG,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAC7F,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,EAAE;AACF,yEAAyE;AACzE,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,IAAI,CAAC,CAAC,oBAAoB;AACzD;;;;;;GAMG;AACH,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAC1C,gFAAgF;AAChF,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,gCAAgC;AAEnE;;;;;;;;;;;;GAYG;AACH,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAW;IACzC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,sCAAsC;IAC9D,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,sCAAsC;QAC7D,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM;YAAE,MAAM;QAC3C,GAAG,IAAI,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,KAAe;IACpC,OAAO,KAAK;SACT,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC;SAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC;AACtG,CAAC;AAcD;;;;;;;;;;;;;;GAcG;AACH,SAAS,iBAAiB,CACxB,IAAY,EACZ,KAAgB,EAChB,IAAI,GAAoB,EAAE;IAE1B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,qBAAqB,CAAC;YACpE,KAAK,EAAE,IAAI;SACZ;KACF,CAAC,CAAC;IAEH,6DAA6D;IAC7D,MAAM,UAAU,GAAa;QAC3B,YAAY,IAAI,CAAC,EAAE,EAAE;QACrB,YAAY,IAAI,EAAE;QAClB,aAAa,IAAI,CAAC,IAAI,EAAE;QACxB,gBAAgB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;KAC/C,CAAC;IACF,IAAI,IAAI,CAAC,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,IAAI,CAAC,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7D,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,aAAa,MAAM,EAAE,EAAE,sBAAsB,CAAC,EAAE;SACxF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,8EAA8E;IAC9E,2EAA2E;IAC3E,uDAAuD;IACvD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;oBACtD,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;oBAClB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,oBAAoB;iBAC9E;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,WAAW,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;KAChD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;KAChF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,IAAY,EACZ,KAAgB,EAChB,MAAqB,EACrB,IAAI,GAAoB,EAAE;IAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAChE,IAAI,MAAM,KAAK,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnF,OAAO;YACL,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnF,OAAO;YACL,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE;IAC1C,MAAM,OAAO,GAAG,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,cAAe,SAAQ,KAAK;IAChC,MAAM,CAAS;IACf,YAAY,CAAU;IACtB,YAAY,MAAc,EAAE,OAAe,EAAE,YAAqB;QAChE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,SAAS,iBAAiB,CAAC,MAAqC;IAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,OAAO,GAAG,IAAI,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,OAAO,SAAS,CAAC;AACnB,CAAC;AAID,SAAS,iBAAiB,CAAC,OAAe,EAAE,YAAqB;IAC/D,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IACjD,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,0DAA0D,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,eAAe,CAAC,UAAkB,EAAE,OAAqB;IAChE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAwB;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;YACtF,IAAI,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aAC1C;SACF,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;gBACnC,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;oBAClC,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,cAAc,CACvB,MAAM,EACN,+BAA+B,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAC9D,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAC9C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE;YAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,OAAqB;IAClE,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,OAAO,IAAI,UAAU,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;gBAAE,MAAM;YAChE,MAAM,YAAY,GAAG,GAAG,YAAY,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,MAAM,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,8EAA8E;AAC9E,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAE9E,kEAAkE;AAClE,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAQpG;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,GAAW;IACnD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAC3D,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAA4B,CAAC;YAC1D,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC7C,OAAO,IAA6B,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,+BAA+B;QACxE,MAAM,CAAC,GAAG,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QACD,6EAA6E;QAC7E,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAA4B,CAAC;AACtC,CAAC;AAED,gFAAgF;AAChF,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO;gBAAE,SAAS;YACjD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC/D,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC3C,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CACpB,KAAyB,EACzB,IAAwB,EACxB,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE;IAExB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,KAAK,EAAE,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;AAClG,CAAC;AAYD,SAAS,cAAc,CAAC,MAA0B;IAChD,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,WAAW,CAAC;AACrG,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,KAAmB,EAAE,QAAgB,EAAE,WAAmB;IACjF,MAAM,OAAO,GAAuC;QAClD,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;KAChB,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvG,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtG,IAAI,MAAM,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChH,CAAC;IACD,MAAM,MAAM,GAAiC;QAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QAC/B,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;KACxC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACnF,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,kBAAkB,GAA2D;IACjF,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IAC1C,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IACvC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IAC1C,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;CACnD,CAAC;AAEF,MAAM,YAAY,GAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAErF,6EAA6E;AAC7E,SAAS,eAAe,CAAC,KAAmB,EAAE,GAAG,GAAG,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IACvF,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,eAAe,CAAC,OAAsB,EAAE,OAAgB;IAC/D,MAAM,IAAI,GAAG,yBAAyB,OAAO,CAAC,WAAW,OAAO,OAAO,CAAC,KAAK,UAAU,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACxH,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACvE,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,GAAG,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAC1B,OAAsB,EACtB,OAAgB;IAEhB,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;YAC9D,KAAK,EAAE,IAAI;SACZ;KACF,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,MAAM,OAAO,CAAC,KAAK,UAAU,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;aAC1F;SACF;KACF,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,MAAM,GAAG,aAAa,CAC1B,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACrE,CAAC,CAAC,CACH,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ,CACZ,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvF,sBAAsB,CACvB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,+BAA+B,EAAE;SAChE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,eAAe,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CACrG,OAAO,CACR,CAAC;IACF,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;KAChF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,kBAAkB,CACzB,OAAsB,EACtB,MAAqB,EACrB,OAAgB;IAEhB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;YACvC,MAAM,EAAE,IAAI;YACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,sCAAsC;AACtC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAE1D,2CAA2C;AAC3C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAEnF,0DAA0D;AAC1D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAErE,yEAAyE;AACzE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1E,4EAA4E;AAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9E,kFAAkF;AAClF,SAAS,aAAa,CAAC,MAA0B;IAC/C,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAuBD;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,GAA4B;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAE7C,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAE5C,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,eAAe,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,aAAa,GAAG,MAAM,EAAE,cAAc,IAAI,MAAM,EAAE,eAAe,IAAI,EAAE,CAAC;IAC9E,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE1F,iEAAiE;IACjE,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,KAAK,GAAG,OAAO,CAAC;SACxC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,KAAK,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9E,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAuB,CAAC;QAChE,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,qEAAqE;IACrE,iCAAiC;IACjC,sCAAsC;IACtC,IAAI,KAAK,KAAK,MAAM,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,QAAQ,CAAC;IACpG,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAC,GAA4B;IAC/C,MAAM,MAAM,GAAI,GAA0C,CAAC,MAE9C,CAAC;IAEd,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;IAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAEjC,+DAA+D;IAC/D,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,CAAkC,MAAe,EAAW,EAAE,CAAC,MAAM,CAAC;AAE9F,eAAe,eAAe,CAAC;IAC7B,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,WAAW;IAEpB,QAAQ,CAAC,GAAiB;QACxB,0EAA0E;QAC1E,kEAAkE;QAClE,qEAAqE;QACrE,0EAA0E;QAC1E,mEAAmE;QACnE,0EAA0E;QAC1E,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,UAAU,EAAE,CAAC;YAClD,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,GAA4B,EAAE,EAAE;gBAC5D,IAAI,CAAC;oBACH,qCAAqC;oBACrC,EAAE;oBACF,uEAAuE;oBACvE,uEAAuE;oBACvE,oEAAoE;oBACpE,oEAAoE;oBACpE,2DAA2D;oBAC3D,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK;wBAAE,OAAO;oBAEpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM;wBAAE,OAAO,CAAC,4BAA4B;oBAEjD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK;wBAAE,OAAO;oBAEnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC9B,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,+BAA+B,CAAC,CAAC;wBACzE,OAAO;oBACT,CAAC;oBAED,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;wBAC1E,OAAO;oBACT,CAAC;oBAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;wBAChD,OAAO,CAAC,KAAK,CACX,4BAA4B,IAAI,CAAC,QAAQ,kBAAkB,MAAM,CAAC,WAAW,aAAa,CAC3F,CAAC;wBACF,OAAO;oBACT,CAAC;oBAED,kEAAkE;oBAClE,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EACL,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,CACf,CAAC;oBACF,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO,CAAC,KAAK,CAAC,6CAA6C,KAAK,cAAc,CAAC,CAAC;wBAChF,OAAO;oBACT,CAAC;oBAED,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe;wBACpC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC;wBAClD,CAAC,CAAC,SAAS,CAAC;oBACd,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;oBAElC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;wBAC3D,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,OAAO;wBACP,IAAI;qBACL,CAAC,CAAC;oBAEH,MAAM,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC9C,OAAO,CAAC,KAAK,CAAC,2CAA2C,KAAK,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,oEAAoE;oBACpE,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,OAAO,CAAC,KAAK,CAAC,iDAAiD,OAAO,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,UAAU,EAAE,CAAC;YAC1D,6DAA6D;YAC7D,uEAAuE;YACvE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,GAA6B,EAAE,EAAE;gBAC9D,IAAI,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;oBACxF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM;wBAAE,OAAO;oBAEpB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;oBAC7C,IAAI,KAAK,GAAqB,IAAI,CAAC;oBACnC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,KAAK,GAAG,QAAQ,CAAC;yBAC1C,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,KAAK,GAAG,OAAO,CAAC;oBAElD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,OAAO;oBAEhD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3C,MAAM,IAAI,GAAG,gBAAgB,GAAG,CAAC,OAAO,uBAAuB,KAAK,MAAM,OAAO,EAAE,CAAC;oBAEpF,MAAM,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,OAAO,CAAC,KAAK,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,uEAAuE;QACvE,2EAA2E;QAC3E,kDAAkD;QAClD,yEAAyE;QACzE,+CAA+C;QAC/C,EAAE;QACF,uEAAuE;QACvE,mEAAmE;QACnE,uEAAuE;QACvE,uEAAuE;QACvE,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,yCAAyC;QACzC,0EAA0E;QAC1E,IAAI,OAAO,GAAG,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAChD,GAAG,CAAC,iBAAiB,CAAC;gBACpB,QAAQ,EAAE,CAAC,GAAG,sBAAsB,CAAC;gBACrC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBACpD,qEAAqE;oBACrE,qEAAqE;oBACrE,sEAAsE;oBACtE,oEAAoE;oBACpE,kBAAkB;oBAClB,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;wBAAE,OAAO,EAAE,CAAC;oBAE/C,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;oBACjE,oCAAoC;oBACpC,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;wBAAE,OAAO,EAAE,CAAC;oBAElD,IAAI,CAAC;wBACH,uBAAuB,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;oBACtE,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,kEAAkE;wBAClE,qEAAqE;wBACrE,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACjE,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;oBACpD,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,0EAA0E;QAC1E,4DAA4D;QAC5D,0EAA0E;QAC1E,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAC9C,GAAG,CAAC,eAAe,CAAC;gBAClB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,+EAA+E;gBAC5F,MAAM,EAAE,yEAAyE;gBACjF,QAAQ,EAAE;oBACR,6DAA6D;oBAC7D,wEAAwE;oBACxE,4EAA4E;oBAC5E,8HAA8H;oBAC9H,8FAA8F;oBAC9F,2GAA2G;oBAC3G,kFAAkF;iBACnF;gBACD,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,sEAAsE,EAAE;oBAC9H,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,yEAAyE,EAAE;oBAChI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,0DAA0D,EAAE;oBAC/G,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;oBACrG,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,kFAAkF,EAAE;oBAC1I,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,2DAA2D,EAAE;oBAChH,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,gIAAgI,EAAE;oBACrL,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,uGAAuG,EAAE;oBAC7J,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,uKAAuK,EAAE;oBAC/N,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,qJAAqJ,EAAE;oBACjN,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,+HAA+H,EAAE;oBACjM,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,qFAAqF,EAAE;oBAC9I,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,gEAAgE,EAAE;oBAC7G,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,wIAAwI,EAAE;oBACrM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,wEAAwE,EAAE;oBAC3H,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,iEAAiE,EAAE;oBACxH,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,wDAAwD,EAAE;oBAC5F,sEAAsE;oBACtE,8DAA8D;iBAC/D;gBAED,KAAK,CAAC,GAAG,CAAC,GAA0G;oBAClH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAClD,MAAM,UAAU,GACd,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;oBAC1E,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;oBACzG,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAElD,iEAAiE;oBACjE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;oBACzC,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAE5F,sEAAsE;oBACtE,oEAAoE;oBACpE,kEAAkE;oBAClE,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,uBAAuB,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;oBAC7E,CAAC;oBAED,6EAA6E;oBAC7E,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;oBACrE,MAAM,KAAK,GAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAc,CAAC;oBAE1F,2EAA2E;oBAC3E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;oBAC1F,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;oBAEhE,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEtE,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,IAAI,YAAY,CACpB,6EAA6E,EAC7E,SAAS,CAAC,KAAK,CAChB,CAAC;oBACJ,CAAC;oBAED,+DAA+D;oBAC/D,uEAAuE;oBACvE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;oBACpD,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC1C,MAAM,IAAI,GAAW;wBACnB,EAAE,EAAE,QAAQ;wBACZ,KAAK;wBACL,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM;wBAC9C,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAClC,CAAC;oBAEF,kFAAkF;oBAClF,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAC9D,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;wBACzC,MAAM,MAAM,GAAG,SAAS,KAAK,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5E,IAAI,CAAC,MAAM,EAAE,CAAC;4BACZ,OAAO,CAAC,KAAK,CAAC,yCAAyC,MAAM,GAAG,CAAC,CAAC;wBACpE,CAAC;wBACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;oBACtE,CAAC;oBAED,sCAAsC;oBACtC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;oBAC3F,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC3C,MAAM,IAAI,YAAY,CACpB,uHAAuH,EACvH,SAAS,CAAC,KAAK,CAChB,CAAC;oBACJ,CAAC;oBAED,iEAAiE;oBACjE,MAAM,WAAW,GAAG,eAAe,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;oBAC3E,oEAAoE;oBACpE,gEAAgE;oBAChE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC;oBACxF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACpF,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAEvC,MAAM,OAAO,GAAiB;wBAC5B,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;4BACvC,OAAO,EAAE,gBAAgB;4BACzB,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;4BAC/C,OAAO;4BACP,IAAI;4BACJ,QAAQ,EAAE,cAAc;yBACzB,CAAC;wBACF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC7C,CAAC;oBAEF,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,CAAC,MAAM,EAAE,CAAC;4BACZ,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;4BACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;4BAC1C,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,cAAc,CAAC,CAAC;4BAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;4BAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;wBAC/B,CAAC;wBACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAClG,CAAC;oBAED,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,+DAA+D;wBAC/D,kEAAkE;wBAClE,0DAA0D;wBAC1D,MAAM,IAAI,YAAY,CACpB,kDAAkD;4BAChD,6EAA6E,EAC/E,SAAS,CAAC,KAAK,CAChB,CAAC;oBACJ,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,mDAAmD;wBACnD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACjE,OAAO,CAAC,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;wBACvE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;oBAC3C,CAAC;oBAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;gBACjF,CAAC;aACF,CAAC,CAAC;YAEH,wEAAwE;YACxE,uEAAuE;YACvE,mEAAmE;YACnE,uEAAuE;YACvE,wEAAwE;YACxE,GAAG,CAAC,eAAe,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,uFAAuF;gBACpG,MAAM,EAAE,wEAAwE;gBAChF,QAAQ,EAAE;oBACR,iCAAiC;oBACjC,wCAAwC;oBACxC,iCAAiC;oBACjC,2BAA2B;oBAC3B,sFAAsF;oBACtF,gDAAgD;oBAChD,+DAA+D;oBAC/D,gFAAgF;iBACjF;gBACD,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,uGAAuG,EAAE;oBAC7J,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,uKAAuK,EAAE;oBAC/N,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,mGAAmG,EAAE;oBACvJ,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,uDAAuD,EAAE;oBAC9G,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,kEAAkE,EAAE;oBAC1H,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,qJAAqJ,EAAE;oBACjN,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,0FAA0F,EAAE;oBAC5J,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,qEAAqE,EAAE;oBAClH,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,2IAA2I,EAAE;oBACxM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,kFAAkF,EAAE;oBACrI,sEAAsE;oBACtE,8DAA8D;oBAC9D,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,kDAAkD,EAAE;iBACvF;gBAED,KAAK,CAAC,GAAG,CAAC,GAAwF;oBAChG,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;oBAClC,iEAAiE;oBACjE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;oBACzC,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC5F,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;oBAEzG,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;oBACrE,MAAM,KAAK,GAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAc,CAAC;oBAE1F,2EAA2E;oBAC3E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;oBAC1F,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;oBAEhE,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC1C,sEAAsE;oBACtE,MAAM,MAAM,GAA8B;wBACxC,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,+CAA+C,EAAE;wBAC5M,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,+CAA+C,EAAE;wBACjP,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAE;wBAC1L,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,4BAA4B,EAAE;wBAC5L,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;wBAC5I,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,wBAAwB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,6CAA6C,EAAE;wBAClN,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;wBAChJ,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,wBAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;qBAC9I,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAE3B,iEAAiE;oBACjE,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAC9D,MAAM,QAAQ,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBAEtD,sCAAsC;oBACtC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;oBAC3F,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC3C,MAAM,IAAI,YAAY,CACpB,uHAAuH,EACvH,SAAS,CAAC,KAAK,CAChB,CAAC;oBACJ,CAAC;oBAED,MAAM,WAAW,GAAG,eAAe,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;oBAC3E,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC;oBACxF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACpF,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;oBAEjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;oBAE9H,qEAAqE;oBACrE,sEAAsE;oBACtE,qCAAqC;oBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClG,OAAO,CAAC,KAAK,CAAC,gBAAgB,MAAM,WAAW,KAAK,IAAI,UAAU,uBAAuB,CAAC,CAAC;wBAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;wBAC1C,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,cAAc,CAAC,CAAC;wBAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;wBAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBAC/B,CAAC;oBACD,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,KAAK;wBACL,MAAM;wBACN,OAAO,EAAE,gBAAgB;wBACzB,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3C,OAAO;qBACR,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;YAEH,wEAAwE;YACxE,qEAAqE;YACrE,sEAAsE;YACtE,qEAAqE;YACrE,mBAAmB;YACnB,wEAAwE;YACxE,GAAG,CAAC,eAAe,CAAC;gBAClB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,6EAA6E;gBAC1F,MAAM,EAAE,0FAA0F;gBAClG,QAAQ,EAAE;oBACR,oCAAoC;oBACpC,4DAA4D;oBAC5D,6DAA6D;oBAC7D,+DAA+D;iBAChE;gBACD,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,gEAAgE,EAAE;oBACtH,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,sEAAsE,EAAE;oBACxH,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,wEAAwE,EAAE;oBAC9H,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,iDAAiD,EAAE;oBACzG,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,2DAA2D,EAAE;oBAChH,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,yDAAyD,EAAE;oBAChH,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,qDAAqD,EAAE;oBACzF,sEAAsE;oBACtE,8DAA8D;iBAC/D;gBAED,KAAK,CAAC,GAAG,CAAC,GAA0G;oBAClH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBAClD,iEAAiE;oBACjE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;oBACzC,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC5F,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACxB,MAAM,IAAI,YAAY,CAAC,+DAA+D,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;oBAC3G,CAAC;oBACD,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;oBACzG,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAClD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;oBAE3F,sEAAsE;oBACtE,sEAAsE;oBACtE,wDAAwD;oBACxD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,uBAAuB,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;oBAC7E,CAAC;oBAED,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC/C,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACvE,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;wBACrF,MAAM,IAAI,YAAY,CAAC,2CAA2C,OAAO,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;oBAClG,CAAC;oBAED,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBACxE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACvD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACxD,MAAM,OAAO,GAAG,EAAE,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBAElH,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,CAAC,MAAM,EAAE,CAAC;4BACZ,OAAO,CAAC,KAAK,CAAC,uBAAuB,MAAM,KAAK,KAAK,wBAAwB,CAAC,CAAC;4BAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;4BAC1C,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,cAAc,CAAC,CAAC;4BAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;4BAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;wBAC/B,CAAC;wBACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;oBACtI,CAAC;oBAED,sEAAsE;oBACtE,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,IAAI,YAAY,CACpB,oGAAoG,EACpG,SAAS,CAAC,eAAe,CAC1B,CAAC;oBACJ,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACjE,MAAM,IAAI,YAAY,CAAC,mCAAmC,OAAO,EAAE,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;oBAClG,CAAC;oBAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gBAC7H,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,yDAAyD;AACzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,QAAQ;IACR,aAAa;IACb,sBAAsB;IACtB,4BAA4B;IAC5B,wBAAwB;IACxB,qBAAqB;IACrB,WAAW;IACX,cAAc;IACd,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,aAAa;IACb,eAAe;IACf,UAAU;IACV,oBAAoB;IACpB,gBAAgB,EAAE,GAAG,EAAE;QACrB,kBAAkB,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,cAAc;IACd,SAAS;IACT,UAAU;IACV,eAAe;IACf,aAAa;IACb,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,uBAAuB;IACvB,iBAAiB;IACjB,wBAAwB;IACxB,KAAK;IACL,iBAAiB;IACjB,qBAAqB;IACrB,eAAe;IACf,cAAc;IACd,SAAS;IACT,YAAY;IACZ,WAAW;IACX,aAAa;IACb,aAAa;IACb,oBAAoB;CACrB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/index.ts b/index.ts index e0e3da8..ad3a388 100644 --- a/index.ts +++ b/index.ts @@ -36,7 +36,6 @@ import fs from "node:fs"; import path from "node:path"; import type { AfterCommandHookContext, - BeforeCommandHookContext, } from "@unbrained/pm-cli/sdk"; @@ -72,6 +71,23 @@ class CommandError extends Error { type Priority = 1 | 2 | 3 | 4; +/** + * Extract a human-readable message from a thrown value. + * + * Every throw site in this package produces an `Error` instance + * (`CommandError`, `SlackHttpError`, or `new Error(…)`), so the `String(err)` + * fallback is not reached at runtime. It is kept as a defensive guard against + * a future throw site that violates that invariant, and is exported for test + * so both arms can be exercised without constructing an unreachable production + * path. + * + * @param err - The value caught in a `catch` block. + * @returns The error message, or a stringified fallback for non-`Error` values. + */ +function toErrorMessage(err: unknown): string { + return err instanceof Error ? err.message : String(err); +} + interface PmItem { id: string; title: string; @@ -1313,7 +1329,7 @@ function postToSlackOnce(webhookUrl: string, payload: SlackPayload): Promise { - const status = res.statusCode ?? 0; + const status = res.statusCode as number; if (status >= 200 && status < 300) { resolve(); } else { @@ -1367,7 +1383,7 @@ async function postToSlack(webhookUrl: string, payload: SlackPayload): Promise { - try { - console.error("[pm-slack] afterCommand not available — limited event detection active"); - const config = loadConfig(); - if (!config) return; - - const cmd = ctx.command?.toLowerCase() ?? ""; - let event: EventKind | null = null; - if (CREATE_COMMANDS.has(cmd)) event = "create"; - else if (CLOSE_COMMANDS.has(cmd)) event = "close"; - - if (!event || !config.events.has(event)) return; - - const cmdArgs = (ctx.args ?? []).join(" "); - const text = `pm command \`${ctx.command}\` triggered event *${event}*\n${cmdArgs}`; - - await postToSlack(config.webhookUrl, { text, mrkdwn: true, channel: config.channel }); - } catch (err) { - const message = err instanceof Error ? err.message : String(err); - console.error(`[pm-slack] beforeCommand hook error (ignored): ${message}`); - } - }); } // ----------------------------------------------------------------------- @@ -1995,7 +1986,7 @@ export default defineExtension({ } catch (err) { // The runtime swallows throws here; emit a visible warning so the // signal isn't lost. The handler-level gate provides the real abort. - const message = err instanceof Error ? err.message : String(err); + const message = toErrorMessage(err); console.error(`[pm-slack] preflight: ${message}`); } return {}; @@ -2063,7 +2054,7 @@ export default defineExtension({ // `--on` selects the message template. First event wins for the header verb. const events = parseEvents(readStrOption(options, "on") ?? "create"); - const event: EventKind = (ALL_EVENTS.find((e) => events.has(e)) ?? "create") as EventKind; + const event: EventKind = ALL_EVENTS.find((e) => events.has(e)) as EventKind; // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); @@ -2155,7 +2146,7 @@ export default defineExtension({ await postToSlack(webhookUrl, payload); } catch (err) { // Never throw on network failure: warn and exit 0. - const message = err instanceof Error ? err.message : String(err); + const message = toErrorMessage(err); console.error(`[pm-slack] Slack post failed (continuing): ${message}`); return { posted: false, error: message }; } @@ -2207,7 +2198,7 @@ export default defineExtension({ const channel = (readStrOption(options, "channel") ?? process.env.PM_SLACK_CHANNEL?.trim()) || undefined; const events = parseEvents(readStrOption(options, "on") ?? "create"); - const event: EventKind = (ALL_EVENTS.find((e) => events.has(e)) ?? "create") as EventKind; + const event: EventKind = ALL_EVENTS.find((e) => events.has(e)) as EventKind; // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); @@ -2352,7 +2343,7 @@ export default defineExtension({ try { await postToSlack(webhookUrl, payload); } catch (err) { - const message = err instanceof Error ? err.message : String(err); + const message = toErrorMessage(err); throw new CommandError(`Failed to post digest to Slack: ${message}`, EXIT_CODE.GENERIC_FAILURE); } @@ -2421,6 +2412,7 @@ export const __test__ = { postToSlackOnce, SlackHttpError, EXIT_CODE, + toErrorMessage, CommandError, parseFilter, filterMatches, diff --git a/package.json b/package.json index f62836a..0b70e5b 100644 --- a/package.json +++ b/package.json @@ -107,9 +107,9 @@ "test/*.test.ts" ], "thresholds": { - "lines": 77, - "branches": 85, - "functions": 79 + "lines": 100, + "branches": 100, + "functions": 100 }, "ignore": [] } diff --git a/test/coverage.test.ts b/test/coverage.test.ts new file mode 100644 index 0000000..497907a --- /dev/null +++ b/test/coverage.test.ts @@ -0,0 +1,2396 @@ +/** + * Behavioural tests driving every uncovered line, branch, and function in + * `index.ts` toward 100 % coverage. + * + * These tests exercise the real extension through `createExtensionTestHarness` + * (the pm SDK's real activation engine) for command handlers and lifecycle + * hooks, and call pure helpers directly through `__test__` for formatting, + * parsing, and HTTP-path coverage. Network-facing code is driven with a real + * `node:http` server on 127.0.0.1 — no `fetch` monkey-patching. + */ + +import assert from "node:assert/strict"; +import http from "node:http"; +import { mkdtempSync, mkdirSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import test from "node:test"; + +import { createExtensionTestHarness } from "@unbrained/pm-cli/sdk/testing"; +import type { AfterCommandHookContext, PreflightOverrideContext } from "@unbrained/pm-cli/sdk/authoring"; + +import extension, { __test__ } from "../index.ts"; + +const { + loadConfig, + __resetWarnState, + meetsMinPriority, + extractItem, + detectEvent, + buildTextMessage, + buildCustomMessage, + buildItemPayload, + buildItemBlockKit, + buildDigestText, + buildDigestPayload, + buildDigestBlockKit, + aggregateDigest, + parseEvents, + parseFormat, + parseRoutes, + parseFilter, + selectRoute, + parseRetryAfterMs, + parseStoredItem, + resolveWindow, + resolveEffectiveWebhook, + assertWebhookConfigured, + postToSlackOnce, + SlackHttpError, + CommandError, + EXIT_CODE, + EVENT_META, + SLACK_MAX_RETRY_DELAY_MS, + sleep, + truncate, + sectionFields, + SLACK_SECTION_TEXT_MAX, + SLACK_SECTION_FIELD_TEXT_MAX, + SLACK_SECTION_FIELDS_MAX, + SLACK_HEADER_TEXT_MAX, + toErrorMessage, +} = __test__; + +// --------------------------------------------------------------------------- +// Test helpers +// --------------------------------------------------------------------------- + +/** Save, set, and restore environment variables around a callback. */ +function withEnv(env: Record, fn: () => void): void { + const keys = Object.keys(env); + const prev: Record = {}; + for (const k of keys) { + prev[k] = process.env[k]; + if (env[k] === undefined) delete process.env[k]; + else process.env[k] = env[k]!; + } + try { + fn(); + } finally { + for (const k of keys) { + if (prev[k] === undefined) delete process.env[k]; + else process.env[k] = prev[k]; + } + } +} + +/** Async version of withEnv — awaits the callback before restoring env. */ +async function withEnvAsync(env: Record, fn: () => Promise): Promise { + const keys = Object.keys(env); + const prev: Record = {}; + for (const k of keys) { + prev[k] = process.env[k]; + if (env[k] === undefined) delete process.env[k]; + else process.env[k] = env[k]!; + } + try { + await fn(); + } finally { + for (const k of keys) { + if (prev[k] === undefined) delete process.env[k]; + else process.env[k] = prev[k]; + } + } +} + +/** Create a temp pm-root workspace with item directories and files. */ +function makeTempPmRoot(): string { + const dir = mkdtempSync(join(tmpdir(), "pm-slack-")); + return dir; +} + +/** + * Activate pm-slack through the real pm host engine and return the harness. + * Mirrors the helper in smoke.test.ts so command/hook dispatch uses the same + * validation the CLI runs. + */ +async function harness() { + const created = await createExtensionTestHarness(extension, { + name: "pm-slack", + capabilities: ["commands", "hooks", "schema", "preflight"], + }); + assert.deepEqual(created.activation.failed, [], "activation must not fail"); + return created; +} + +/** Build a minimal afterCommand hook context for the harness. */ +function afterCtx(overrides: Partial): AfterCommandHookContext { + return { + command: "", + args: [], + pm_root: "", + ok: true, + ...overrides, + }; +} + +/** Build a preflight context for the harness. */ +function preflightCtx(command: string, options: Record): PreflightOverrideContext { + return { + command, + args: [], + options, + global: { json: false, quiet: false, noPager: false } as never, + pm_root: "", + decision: { + enforce_item_format_gate: false, + run_preflight_item_format_sync: false, + run_extension_migrations: false, + enforce_mandatory_migration_gate: false, + }, + }; +} + +// --------------------------------------------------------------------------- +// loadConfig: valid webhook, invalid webhook, routes-with-webhook +// --------------------------------------------------------------------------- + +test("loadConfig: returns a full config when PM_SLACK_WEBHOOK is a valid URL", () => { + withEnv({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, () => { + __resetWarnState(); + const config = loadConfig(); + assert.ok(config, "config must be returned with a valid webhook"); + assert.equal(config!.webhookUrl, "https://hooks.slack.com/x"); + assert.equal(config!.channel, undefined); + assert.equal(config!.minPriority, 1); + assert.ok(config!.events.has("create"), "default events include create"); + assert.equal(config!.format, "blockkit"); + assert.equal(config!.mentionAssignee, false); + assert.equal(config!.routes.length, 0); + }); +}); + +test("loadConfig: invalid webhook URL disables notifications", () => { + withEnv({ PM_SLACK_WEBHOOK: "not-a-url", PM_SLACK_ROUTES: undefined }, () => { + __resetWarnState(); + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + const config = loadConfig(); + assert.equal(config, null, "invalid webhook → null"); + assert.ok(lines.some((l) => l.includes("not a valid URL")), "must warn about invalid URL"); + } finally { + console.error = orig; + } + }); +}); + +test("loadConfig: routes with webhooks keep config alive without a default webhook", () => { + withEnv( + { + PM_SLACK_WEBHOOK: undefined, + PM_SLACK_ROUTES: JSON.stringify([{ match: "block", webhook: "https://h/r" }]), + }, + () => { + __resetWarnState(); + const config = loadConfig(); + assert.ok(config, "routes-only webhook must not disable config"); + assert.equal(config!.webhookUrl, ""); + assert.equal(config!.routes.length, 1); + assert.equal(config!.routes[0].webhook, "https://h/r"); + }, + ); +}); + +test("loadConfig: channel, min-priority, and mention-env are read correctly", () => { + withEnv( + { + PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", + PM_SLACK_CHANNEL: "#team", + PM_SLACK_MIN_PRIORITY: "3", + PM_SLACK_FORMAT: "text", + PM_SLACK_ASSIGNEE_MAP: "alice=U123", + PM_SLACK_MENTION_ASSIGNEE: undefined, + }, + () => { + __resetWarnState(); + const config = loadConfig(); + assert.ok(config); + assert.equal(config!.channel, "#team"); + assert.equal(config!.minPriority, 3); + assert.equal(config!.format, "text"); + assert.equal(config!.mentionAssignee, true, "non-empty assignee map auto-enables mention"); + assert.equal(config!.assigneeMap.get("alice"), "U123"); + }, + ); +}); + +test("loadConfig: out-of-range priority falls back to 1", () => { + withEnv( + { PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_MIN_PRIORITY: "9" }, + () => { + __resetWarnState(); + const config = loadConfig(); + assert.ok(config); + assert.equal(config!.minPriority, 1, "invalid priority clamps to 1"); + }, + ); +}); + +test("loadConfig: mentionAssignee=0 forces mentions off even with a map", () => { + withEnv( + { + PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", + PM_SLACK_ASSIGNEE_MAP: "alice=U123", + PM_SLACK_MENTION_ASSIGNEE: "0", + }, + () => { + __resetWarnState(); + const config = loadConfig(); + assert.ok(config); + assert.equal(config!.mentionAssignee, false, "explicit 0 disables mention"); + }, + ); +}); + +// --------------------------------------------------------------------------- +// meetsMinPriority +// --------------------------------------------------------------------------- + +test("meetsMinPriority: undefined priority always passes, lower number wins", () => { + assert.equal(meetsMinPriority({ id: "1", title: "t" }, 2), true, "undefined priority passes"); + assert.equal(meetsMinPriority({ id: "1", title: "t", priority: 1 }, 2), true, "priority 1 <= 2"); + assert.equal(meetsMinPriority({ id: "1", title: "t", priority: 3 }, 2), false, "priority 3 > 2"); + assert.equal(meetsMinPriority({ id: "1", title: "t", priority: 2 }, 2), true, "priority 2 <= 2"); +}); + +// --------------------------------------------------------------------------- +// eventReason: block event and cancel fallback to closedReason +// --------------------------------------------------------------------------- + +test("eventReason: block event reads blocked_reason/blockedReason", () => { + const item1 = { id: "1", title: "t", blocked_reason: "Waiting on API" }; + const r1 = buildItemPayload(item1, "block", "text").text; + assert.ok(r1.includes("Waiting on API"), "blocked_reason in block event text"); + + const item2 = { id: "1", title: "t", blockedReason: "Design pending" }; + // blocked_reason absent → falls back to blockedReason (camelCase) + const r2 = buildItemPayload(item2, "block", "text").text; + assert.ok(r2.includes("Design pending"), "blockedReason fallback in text output"); +}); + +test("eventReason: cancel falls back to close_reason then closedReason", () => { + const item = { id: "1", title: "t", close_reason: "Dup", closedReason: "Other" }; + const text = buildItemPayload(item, "cancel", "text").text; + assert.ok(text.includes("Dup"), "cancel reads close_reason first"); +}); + +test("eventReason: no reason fields → 'no reason given' in text", () => { + const item = { id: "1", title: "t" }; + const text = buildItemPayload(item, "block", "text").text; + assert.ok(text.includes("no reason given"), "block without reason falls back"); +}); + +// --------------------------------------------------------------------------- +// buildTextMessage: status-transition events (open/start/unblock/reopen) +// --------------------------------------------------------------------------- + +test("buildTextMessage: status-transition events show status and assignee", () => { + const item = { id: "1", title: "Rate limiter", type: "Feature", priority: 2 as const, status: "in_progress", assignee: "frank" }; + const text = buildTextMessage(item, "start"); + assert.ok(text.includes("Status: in_progress"), "start event shows status"); + assert.ok(text.includes("Assignee: frank"), "start event shows assignee"); +}); + +test("buildTextMessage: status transition without assignee omits assignee line", () => { + const item = { id: "1", title: "Onboarding", type: "Task", status: "open" }; + const text = buildTextMessage(item, "open"); + assert.ok(text.includes("Status: open")); + assert.ok(!text.includes("Assignee:"), "no assignee field when absent"); +}); + +// --------------------------------------------------------------------------- +// parseRetryAfterMs: date form, array form, malformed +// --------------------------------------------------------------------------- + +test("parseRetryAfterMs: numeric, date, array, and malformed forms", () => { + assert.equal(parseRetryAfterMs("2"), 2000); + assert.equal(parseRetryAfterMs("0"), 0); + // HTTP-date form: a future date yields a non-negative offset + const future = new Date(Date.now() + 5000).toUTCString(); + const delay = parseRetryAfterMs(future); + assert.ok(delay !== undefined && delay > 0 && delay <= 5000, "future date → positive delay"); + // past date → clamped to 0 + const past = new Date(Date.now() - 10000).toUTCString(); + assert.equal(parseRetryAfterMs(past), 0, "past date → 0"); + // array form: first element used + assert.equal(parseRetryAfterMs(["3", "5"]), 3000); + // empty/undefined + assert.equal(parseRetryAfterMs(undefined), undefined); + assert.equal(parseRetryAfterMs(""), undefined); + // negative numeric: -1 is also a valid HTTP-date in some runtimes, so use + // a value that is neither a valid number nor a valid date + assert.equal(parseRetryAfterMs("not-a-date-or-number"), undefined); +}); + +// --------------------------------------------------------------------------- +// postToSlackOnce: non-2xx, request error, timeout +// --------------------------------------------------------------------------- + +test("postToSlackOnce: non-2xx response rejects with SlackHttpError carrying status", async () => { + const server = http.createServer((_req, res) => { + res.writeHead(429, { "retry-after": "2" }); + res.end("rate_limited"); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + await assert.rejects( + postToSlackOnce(`http://127.0.0.1:${port}/hook`, { text: "hi" }), + (err: unknown) => { + assert.ok(err instanceof SlackHttpError); + assert.equal((err as InstanceType).status, 429); + assert.equal((err as InstanceType).retryAfterMs, 2000); + assert.match((err as Error).message, /429/); + return true; + }, + ); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +test("postToSlackOnce: connection refused triggers req.on(error)", async () => { + // Use a port that's almost certainly not listening. + await assert.rejects( + postToSlackOnce("http://127.0.0.1:1/hook", { text: "hi" }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /Slack webhook request failed/); + return true; + }, + ); +}); + +test("postToSlackOnce: 500 response with Retry-After date header", async () => { + const server = http.createServer((_req, res) => { + res.writeHead(503, { "retry-after": new Date(Date.now() + 3000).toUTCString() }); + res.end("unavailable"); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + await assert.rejects( + postToSlackOnce(`http://127.0.0.1:${port}/hook`, { text: "hi" }), + (err: unknown) => { + assert.ok(err instanceof SlackHttpError); + assert.equal((err as InstanceType).status, 503); + assert.ok((err as InstanceType).retryAfterMs !== undefined); + return true; + }, + ); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +// --------------------------------------------------------------------------- +// postToSlack (retry loop): tested through slack notify command handler +// --------------------------------------------------------------------------- + +test("postToSlack retries on 429 then succeeds via slack notify command", async () => { + let calls = 0; + const server = http.createServer((_req, res) => { + calls++; + if (calls === 1) { + res.writeHead(429, { "retry-after": "0" }); + res.end("rate_limited"); + } else { + res.writeHead(200); + res.end("ok"); + } + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + const webhookUrl = `http://127.0.0.1:${port}/hook`; + try { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Hello", webhook: webhookUrl }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.ok((result.result as { posted: boolean }).posted); + assert.equal(calls, 2, "first attempt 429, second succeeds"); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +test("postToSlack exhausts retries on persistent 500 and re-throws", async () => { + const server = http.createServer((_req, res) => { + res.writeHead(500); + res.end("error"); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + const webhookUrl = `http://127.0.0.1:${port}/hook`; + try { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Hello", webhook: webhookUrl }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + // The notify handler catches network failures and returns posted:false + assert.equal((result.result as { posted: boolean }).posted, false); + assert.ok((result.result as { error: string }).error); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +// --------------------------------------------------------------------------- +// readStoreItems: tested through slack digest command with a temp pm root +// --------------------------------------------------------------------------- + +test("slack digest reads store items from a temp pm root (dry-run)", async () => { + const pmRoot = makeTempPmRoot(); + mkdirSync(join(pmRoot, "tasks"), { recursive: true }); + writeFileSync( + join(pmRoot, "tasks", "pm-aaa.toon"), + [ + "id: pm-aaa", + 'title: "Test task"', + "type: Task", + "status: open", + "priority: 2", + `created_at: "${new Date().toISOString()}"`, + `updated_at: "${new Date().toISOString()}"`, + ].join("\n"), + ); + mkdirSync(join(pmRoot, "issues"), { recursive: true }); + writeFileSync( + join(pmRoot, "issues", "pm-bbb.toon"), + [ + "id: pm-bbb", + 'title: "Closed issue"', + "type: Issue", + "status: closed", + `created_at: "${new Date(Date.now() - 10 * 86400000).toISOString()}"`, + `updated_at: "${new Date().toISOString()}"`, + ].join("\n"), + ); + // A non-item directory to verify it's walked but non-item files are skipped + mkdirSync(join(pmRoot, "features"), { recursive: true }); + writeFileSync(join(pmRoot, "features", "readme.txt"), "not an item"); + + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "1" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { dryRun: boolean; counts: { created: number; closed: number }; total: number }; + assert.equal(res.dryRun, true); + assert.equal(res.counts.created, 1, "pm-aaa created today"); + assert.equal(res.counts.closed, 1, "pm-bbb closed today"); + assert.equal(res.total, 2); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// extractItem +// --------------------------------------------------------------------------- + +test("extractItem: result.item wins, result.items fallback, null when absent", () => { + assert.deepEqual( + extractItem(afterCtx({ result: { item: { id: "x", title: "T" } } })), + { id: "x", title: "T" }, + ); + assert.deepEqual( + extractItem(afterCtx({ result: { items: [{ id: "y", title: "U" }] } })), + { id: "y", title: "U" }, + ); + assert.equal(extractItem(afterCtx({ result: {} })), null); + assert.equal(extractItem(afterCtx({})), null); + // items array with no id on first entry → null + assert.equal(extractItem(afterCtx({ result: { items: [{ title: "no id" }] } })), null); +}); + +// --------------------------------------------------------------------------- +// afterCommand hook: full behavioural coverage through the harness +// --------------------------------------------------------------------------- + +test("afterCommand hook: no-op when ok=false", async () => { + const ext = await harness(); + const warnings = await ext.runHook({ + kind: "after_command", + context: afterCtx({ command: "create", ok: false, result: { item: { id: "x", title: "T" } } }), + }); + assert.deepEqual(warnings, [], "failed command must not trigger hook"); + await ext.deactivate(); +}); + +test("afterCommand hook: no-op when no webhook configured", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_WEBHOOK: undefined, PM_SLACK_ROUTES: undefined }, async () => { + __resetWarnState(); + const warnings = await ext.runHook({ + kind: "after_command", + context: afterCtx({ command: "create", result: { item: { id: "x", title: "T" } } }), + }); + assert.deepEqual(warnings, [], "no webhook → silent no-op"); + }); + await ext.deactivate(); +}); + +test("afterCommand hook: posts notification on create event", async () => { + let received = ""; + const server = http.createServer((req, res) => { + req.setEncoding("utf8"); + req.on("data", (chunk: string) => { received += chunk; }); + req.on("end", () => { res.writeHead(200); res.end("ok"); }); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + const ext = await harness(); + await withEnvAsync( + { PM_SLACK_WEBHOOK: `http://127.0.0.1:${port}/hook`, PM_SLACK_ROUTES: undefined }, + async () => { + const warnings = await ext.runHook({ + kind: "after_command", + context: afterCtx({ + command: "create", + result: { item: { id: "pm-1", title: "New feature", type: "Feature", priority: 1, status: "open", author: "alice" } }, + }), + }); + assert.deepEqual(warnings, [], "hook must not produce warnings on a clean post"); + // Wait a tick for the async post (the hook is fire-and-forget) + await new Promise((r) => setTimeout(r, 100)); + assert.ok(received.length > 0, "payload must be posted"); + const payload = JSON.parse(received); + assert.ok(payload.text.includes("New feature"), "notification includes item title"); + }, + ); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +test("afterCommand hook: event filtered by PM_SLACK_EVENTS", async () => { + const ext = await harness(); + await withEnvAsync( + { PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_EVENTS: "close", PM_SLACK_ROUTES: undefined }, + async () => { + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + await ext.runHook({ + kind: "after_command", + context: afterCtx({ + command: "create", + result: { item: { id: "x", title: "T" } }, + }), + }); + } finally { + console.error = orig; + } + assert.ok(lines.some((l) => l.includes("filtered by PM_SLACK_EVENTS")), "must log filter reason"); + }, + ); + await ext.deactivate(); +}); + +test("afterCommand hook: no item extracted → skip", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + await ext.runHook({ + kind: "after_command", + context: afterCtx({ command: "create", result: {} }), + }); + } finally { + console.error = orig; + } + assert.ok(lines.some((l) => l.includes("Could not extract item")), "must log extraction failure"); + }); + await ext.deactivate(); +}); + +test("afterCommand hook: priority below minimum → skip", async () => { + const ext = await harness();await withEnvAsync( { PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_MIN_PRIORITY: "1", PM_SLACK_ROUTES: undefined }, + async () => { + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + await ext.runHook({ + kind: "after_command", + context: afterCtx({ + command: "create", + result: { item: { id: "x", title: "T", priority: 4 } }, + }), + }); + } finally { + console.error = orig; + } + assert.ok(lines.some((l) => l.includes("below minimum")), "must log priority skip"); + }, + ); + await ext.deactivate(); +}); + +test("afterCommand hook: no route resolved → skip", async () => { + const ext = await harness(); + // Routes-only config where the event doesn't match any rule, and no default webhook + withEnv( + { + PM_SLACK_WEBHOOK: undefined, + PM_SLACK_ROUTES: JSON.stringify([{ match: "close", webhook: "https://h/close" }]), + }, + async () => { + __resetWarnState(); + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + await ext.runHook({ + kind: "after_command", + context: afterCtx({ + command: "create", + result: { item: { id: "x", title: "T" } }, + }), + }); + } finally { + console.error = orig; + } + assert.ok(lines.some((l) => l.includes("No webhook resolved")), "must log no-route skip"); + }, + ); + await ext.deactivate(); +}); + +test("afterCommand hook: hook error is swallowed (never throws)", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + // An unreachable webhook will cause postToSlack to fail, but the hook + // catches everything. The runHook helper returns warnings, not throws. + const warnings = await ext.runHook({ + kind: "after_command", + context: afterCtx({ + command: "create", + result: { item: { id: "x", title: "T" } }, + }), + }); + // The hook swallows errors, so no warnings from the hook runner either. + assert.deepEqual(warnings, []); + }); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack notify command: full behavioural coverage +// --------------------------------------------------------------------------- + +test("slack notify --dry-run: prints message and payload without posting", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Release shipped", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { dryRun: boolean; event: string; format: string }; + assert.equal(res.dryRun, true); + assert.equal(res.event, "create"); + await ext.deactivate(); +}); + +test("slack notify: no title or text → CommandError", async () => { + const ext = await harness(); + await assert.rejects( + ext.runCommand({ command: "slack notify", options: { "dry-run": true }, global: { json: true } as never }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /Provide a --title or --text/); + assert.equal((err as unknown as { exitCode: number }).exitCode, EXIT_CODE.USAGE); + return true; + }, + ); + await ext.deactivate(); +}); + +test("slack notify: --filter that does not match → filtered result", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { title: "Bug fix", type: "Bug", on: "close", filter: "type:Feature", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { filtered: boolean }; + assert.equal(res.filtered, true); + await ext.deactivate(); +}); + +test("slack notify: --format custom without --template → CommandError", async () => { + const ext = await harness(); + await assert.rejects( + ext.runCommand({ + command: "slack notify", + options: { title: "Deploy", format: "custom", "dry-run": true }, + global: { json: true } as never, + }), + (err: unknown) => err instanceof Error && /\-\-format custom requires \-\-template/.test((err as Error).message), + ); + await ext.deactivate(); +}); + +test("slack notify: --format custom with --template dry-run", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { + title: "Deploy", + format: "custom", + template: "{emoji} {title} ({id}) {event}", + "dry-run": true, + }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { dryRun: boolean; format: string; payload: { text: string } }; + assert.equal(res.format, "custom"); + assert.ok(res.payload.text.includes("Deploy")); + await ext.deactivate(); +}); + +test("slack notify: --thread adds thread_ts to payload", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Threaded reply", thread: "1700000000.000100", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { thread_ts: string }; + assert.equal(res.thread_ts, "1700000000.000100"); + await ext.deactivate(); +}); + +test("slack notify: --mention-map resolves assignee mention in dry-run", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { + title: "Auth", + assignee: "alice", + "mention-map": "alice=U123", + "dry-run": true, + }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { text: string; blocks: unknown[] } }).payload; + assert.ok(payload.text.includes("<@U123>"), "mention map resolves to @U123"); + await ext.deactivate(); +}); + +test("slack notify: --channel-override redirects event to different channel", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { + title: "Hotfix", + on: "close", + "channel-override": "close=#incidents", + "dry-run": true, + }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { channel: string }; + assert.equal(res.channel, "#incidents"); + await ext.deactivate(); +}); + +test("slack notify: --url adds action button link in dry-run blockkit payload", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { + title: "Feature", + url: "https://github.com/unbraind/pm-slack/issues/1", + "dry-run": true, + }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { blocks: unknown[] } }).payload; + const json = JSON.stringify(payload.blocks); + assert.ok(json.includes("View on GitHub"), "github URL shows 'View on GitHub' button"); + await ext.deactivate(); +}); + +test("slack notify: real post to local server succeeds", async () => { + let received = ""; + const server = http.createServer((req, res) => { + req.setEncoding("utf8"); + req.on("data", (chunk: string) => { received += chunk; }); + req.on("end", () => { res.writeHead(200); res.end("ok"); }); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Hello team", webhook: `http://127.0.0.1:${port}/hook` }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { posted: boolean }).posted, true); + assert.ok(JSON.parse(received).text.includes("Hello team")); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +test("slack notify: non-dry-run without webhook → CommandError", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_WEBHOOK: undefined, PM_SLACK_ROUTES: undefined }, async () => { + await assert.rejects( + ext.runCommand({ + command: "slack notify", + options: { text: "Hello" }, + global: { json: true } as never, + }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /No Slack webhook configured/); + assert.equal((err as unknown as { exitCode: number }).exitCode, EXIT_CODE.USAGE); + return true; + }, + ); + }); + await ext.deactivate(); +}); + +test("slack notify: network failure returns posted:false (does not throw)", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Hello", webhook: "http://127.0.0.1:1/hook" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { posted: boolean }).posted, false); + assert.ok((result.result as { error: string }).error); + await ext.deactivate(); +}); + +test("slack notify: human-mode dry-run writes to stdout", async () => { + const ext = await harness(); + const origWrite = process.stdout.write.bind(process.stdout); + const chunks: string[] = []; + process.stdout.write = ((chunk: string | Uint8Array) => { + chunks.push(String(chunk)); + return true; + }) as typeof process.stdout.write; + try { + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Human mode", "dry-run": true }, + global: { json: false } as never, + }); + assert.equal(result.handled, true); + const output = chunks.join(""); + assert.ok(output.includes("Human mode"), "dry-run prints message to stdout"); + } finally { + process.stdout.write = origWrite; + } + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack test command: full behavioural coverage +// --------------------------------------------------------------------------- + +test("slack test: default preview returns payload for create event", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: {}, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { preview: boolean; event: string; format: string }; + assert.equal(res.preview, true); + assert.equal(res.event, "create"); + assert.equal(res.format, "blockkit"); + await ext.deactivate(); +}); + +test("slack test: --on close preview with filter", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { on: "close", filter: "type:Issue" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { event: string; filtered: boolean }; + assert.equal(res.event, "close"); + assert.equal(res.filtered, false, "close sample is an Issue, filter matches"); + await ext.deactivate(); +}); + +test("slack test: --format custom without --template → CommandError", async () => { + const ext = await harness(); + await assert.rejects( + ext.runCommand({ + command: "slack test", + options: { format: "custom" }, + global: { json: true } as never, + }), + (err: unknown) => err instanceof Error && /\-\-format custom requires \-\-template/.test((err as Error).message), + ); + await ext.deactivate(); +}); + +test("slack test: --format custom with --template", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { format: "custom", template: "{emoji} {title} ({id}) {event}", on: "close" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { format: string; payload: { text: string } }; + assert.equal(res.format, "custom"); + assert.ok(res.payload.text.includes("Fix login redirect bug")); + await ext.deactivate(); +}); + +test("slack test: --channel-override redirects event channel", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { on: "close", "channel-override": "close=#releases" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { channel: string }).channel, "#releases"); + await ext.deactivate(); +}); + +test("slack test: --mention-assignee resolves sample assignee", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { on: "start", "mention-assignee": true, "mention-map": "frank=U999" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { text: string; blocks: unknown[] } }).payload; + assert.ok(payload.text.includes("<@U999>"), "mention resolved from map"); + await ext.deactivate(); +}); + +test("slack test: --url overrides the sample URL", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { url: "https://example.com/custom" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { blocks: unknown[] } }).payload; + const json = JSON.stringify(payload.blocks); + assert.ok(json.includes("Open item"), "non-github URL shows 'Open item' button"); + assert.ok(json.includes("example.com/custom")); + await ext.deactivate(); +}); + +test("slack test: human-mode prints preview to stdout", async () => { + const ext = await harness(); + const origWrite = process.stdout.write.bind(process.stdout); + const chunks: string[] = []; + process.stdout.write = ((chunk: string | Uint8Array) => { + chunks.push(String(chunk)); + return true; + }) as typeof process.stdout.write; + try { + const result = await ext.runCommand({ + command: "slack test", + options: { on: "block" }, + global: { json: false } as never, + }); + assert.equal(result.handled, true); + const output = chunks.join(""); + assert.ok(output.includes("Dashboard redesign"), "preview prints sample title to stdout"); + } finally { + process.stdout.write = origWrite; + } + await ext.deactivate(); +}); + +test("slack test: --title overrides sample title", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { on: "create", title: "Custom title" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { text: string; blocks: unknown[] } }).payload; + assert.ok(payload.text.includes("Custom title")); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack digest command: full behavioural coverage +// --------------------------------------------------------------------------- + +test("slack digest --dry-run: empty store yields zero counts", async () => { + const pmRoot = makeTempPmRoot(); + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "7" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { dryRun: boolean; total: number; counts: { created: number } }; + assert.equal(res.dryRun, true); + assert.equal(res.total, 0); + assert.equal(res.counts.created, 0); + await ext.deactivate(); +}); + +test("slack digest: --days must be a positive integer → CommandError", async () => { + const ext = await harness(); + await assert.rejects( + ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "0" }, + global: { json: true } as never, + }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /--days must be a positive integer/); + assert.equal((err as unknown as { exitCode: number }).exitCode, EXIT_CODE.USAGE); + return true; + }, + ); + await ext.deactivate(); +}); + +test("slack digest: --format custom → CommandError", async () => { + const ext = await harness(); + await assert.rejects( + ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, format: "custom" }, + global: { json: true } as never, + }), + (err: unknown) => err instanceof Error && /slack digest supports only/.test((err as Error).message), + ); + await ext.deactivate(); +}); + +test("slack digest: --since overrides --days", async () => { + const pmRoot = makeTempPmRoot(); + mkdirSync(join(pmRoot, "tasks"), { recursive: true }); + writeFileSync( + join(pmRoot, "tasks", "pm-old.toon"), + [ + "id: pm-old", + 'title: "Old task"', + "type: Task", + "status: open", + `created_at: "${new Date(Date.now() - 30 * 86400000).toISOString()}"`, + ].join("\n"), + ); + const ext = await harness(); + // --since far in the past includes the old item + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, since: "2020-01-01" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { total: number }).total, 1, "old item included with wide since"); + await ext.deactivate(); +}); + +test("slack digest: --thread adds thread_ts to payload", async () => { + const pmRoot = makeTempPmRoot(); + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, thread: "1700000000.000100" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { thread_ts: string }).thread_ts, "1700000000.000100"); + await ext.deactivate(); +}); + +test("slack digest: real post to local server succeeds", async () => { + let received = ""; + const server = http.createServer((req, res) => { + req.setEncoding("utf8"); + req.on("data", (chunk: string) => { received += chunk; }); + req.on("end", () => { res.writeHead(200); res.end("ok"); }); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + const pmRoot = makeTempPmRoot(); + try { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack digest", + options: { webhook: `http://127.0.0.1:${port}/hook`, days: "1" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { posted: boolean }).posted, true); + assert.ok(JSON.parse(received).text.includes("activity digest")); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +test("slack digest: non-dry-run without webhook → CommandError", async () => { + const pmRoot = makeTempPmRoot(); + const ext = await harness(); + await withEnvAsync({ PM_SLACK_WEBHOOK: undefined, PM_SLACK_ROUTES: undefined }, async () => { + await assert.rejects( + ext.runCommand({ + command: "slack digest", + options: { days: "7" }, + pmRoot, + global: { json: true } as never, + }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /No Slack webhook configured/); + assert.equal((err as unknown as { exitCode: number }).exitCode, EXIT_CODE.USAGE); + return true; + }, + ); + }); + await ext.deactivate(); +}); + +test("slack digest: post failure throws CommandError", async () => { + const server = http.createServer((_req, res) => { + res.writeHead(400); + res.end("bad webhook"); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + const pmRoot = makeTempPmRoot(); + try { + const ext = await harness(); + await assert.rejects( + ext.runCommand({ + command: "slack digest", + options: { webhook: `http://127.0.0.1:${port}/hook`, days: "1" }, + pmRoot, + global: { json: true } as never, + }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /Failed to post digest to Slack/); + assert.equal((err as unknown as { exitCode: number }).exitCode, EXIT_CODE.GENERIC_FAILURE); + return true; + }, + ); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +test("slack digest: human-mode dry-run writes to stdout", async () => { + const pmRoot = makeTempPmRoot(); + const ext = await harness(); + const origWrite = process.stdout.write.bind(process.stdout); + const chunks: string[] = []; + process.stdout.write = ((chunk: string | Uint8Array) => { + chunks.push(String(chunk)); + return true; + }) as typeof process.stdout.write; + try { + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "7" }, + pmRoot, + global: { json: false } as never, + }); + assert.equal(result.handled, true); + const output = chunks.join(""); + assert.ok(output.includes("activity digest"), "digest dry-run prints to stdout"); + } finally { + process.stdout.write = origWrite; + } + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// Preflight override: behavioural coverage through the harness +// --------------------------------------------------------------------------- + +test("preflight override: non-posting command returns pass-through", async () => { + const ext = await harness(); + // slack test is NOT in the preflight scope (SLACK_POSTING_COMMANDS), so the + // runner returns overridden:false (no matched override for that command). + const result = await ext.runPreflightOverride(preflightCtx("slack test", {})); + assert.equal(result.overridden, false, "slack test has no matching preflight override"); + await ext.deactivate(); +}); + +test("preflight override: dry-run posting command returns empty delta", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_WEBHOOK: undefined, PM_SLACK_ROUTES: undefined }, async () => { + const result = await ext.runPreflightOverride( + preflightCtx("slack notify", { "dry-run": true }), + ); + assert.equal(result.overridden, true); + }); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// Helper branches: parseEvents, parseFormat, parseRoutes, selectRoute +// --------------------------------------------------------------------------- + +test("parseEvents: undefined spec returns all events, empty parsed returns all", () => { + const all = parseEvents(undefined); + assert.equal(all.size, 8, "undefined spec → all 8 events"); + // spec with only invalid tokens → all events (safety fallback) + const invalid = parseEvents("nonsense,garbage"); + assert.equal(invalid.size, 8, "all-invalid spec → all events"); +}); + +test("parseFormat: 'rich' alias maps to blockkit", () => { + assert.equal(parseFormat("rich"), "blockkit"); +}); + +test("parseRoutes: non-object entries and entries with non-string match are skipped", () => { + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + // null entry, number entry, entry with non-string match + const rules = parseRoutes('[null, 42, {"match": 123}, {"match": " ", "channel": "#x"}, {"match": "ok", "channel": "#y"}]'); + assert.equal(rules.length, 1); + assert.equal(rules[0].match, "ok"); + } finally { + console.error = orig; + } +}); + +test("selectRoute: matching rule with no webhook and no default → null", () => { + const item = { id: "1", title: "t", type: "Bug" }; + // Rule matches but has only a channel, and there's no default webhook + const target = selectRoute( + "create", + item, + [{ match: "type:Bug", channel: "#bugs" }], + "", + undefined, + ); + assert.equal(target, null, "rule matches but no webhook resolvable"); +}); + +// --------------------------------------------------------------------------- +// resolveEffectiveWebhook: flag source path +// --------------------------------------------------------------------------- + +test("resolveEffectiveWebhook: flag source returns flag URL", () => { + withEnv({ PM_SLACK_WEBHOOK: undefined, PM_SLACK_ROUTES: undefined }, () => { + const r = resolveEffectiveWebhook(" https://hooks.slack.com/flag "); + assert.equal(r.source, "flag"); + assert.equal(r.webhookUrl, "https://hooks.slack.com/flag"); + }); +}); + +// --------------------------------------------------------------------------- +// priorityLabel: undefined priority +// --------------------------------------------------------------------------- + +test("priorityLabel: undefined priority returns 'unknown'", () => { + const text = buildTextMessage({ id: "1", title: "T" }, "create"); + assert.ok(text.includes("Priority: unknown"), "undefined priority → 'unknown'"); +}); + +// --------------------------------------------------------------------------- +// templateReplacements: title/id nullish fallback +// --------------------------------------------------------------------------- + +test("buildCustomMessage: missing title and id produce empty replacements", () => { + // PmItem declares title/id as required strings, but the SDK's runtime + // result can omit them. This exercises the ?? "" defensive fallback. + const item = { id: undefined, title: undefined } as unknown as Parameters[0]; + const result = buildCustomMessage(item, "create", "title={title} id={id}"); + assert.ok(result.includes("title= id="), "missing title/id → empty strings"); +}); + +// --------------------------------------------------------------------------- +// truncate: max <= 0 returns empty string +// --------------------------------------------------------------------------- + +test("truncate: max <= 0 returns empty string", () => { + assert.equal(truncate("hello", 0), ""); + assert.equal(truncate("hello", -1), ""); +}); + +// --------------------------------------------------------------------------- +// buildItemBlockKit: note with only whitespace is not added as a section +// --------------------------------------------------------------------------- + +test("buildItemPayload: whitespace-only note is omitted from text body", () => { + const item = { id: "1", title: "T", type: "Bug" }; + // whitespace-only note → not appended to text body (opts.note.trim() is falsy) + const payload = buildItemPayload(item, "create", "text", { note: " " }); + assert.ok(!payload.text.includes(" "), "whitespace-only note not appended"); + + // non-empty note → appended to text body + const payload2 = buildItemPayload(item, "create", "text", { note: "Extra context" }); + assert.ok(payload2.text.includes("Extra context"), "non-empty note appended"); +}); + +// --------------------------------------------------------------------------- +// statusIsClosed: various closed-status synonyms +// --------------------------------------------------------------------------- + +test("aggregateDigest: done/resolved/complete statuses count as closed", () => { + const now = new Date().toISOString(); + const items = [ + { id: "a", title: "done", status: "done", updated_at: now }, + { id: "b", title: "resolved", status: "resolved", updated_at: now }, + { id: "c", title: "completed", status: "completed", updated_at: now }, + { id: "d", title: "open", status: "open", updated_at: now }, + ]; + const s = aggregateDigest(items, 0, "today"); + assert.equal(s.counts.closed, 3, "done+resolved+completed all count as closed"); +}); + +// --------------------------------------------------------------------------- +// digestItemLines: overflow marker when items exceed max +// --------------------------------------------------------------------------- + +test("digestItemLines: overflow marker when more items than max (via buildDigestText)", () => { + const items = Array.from({ length: 7 }, (_, i) => ({ id: `pm-${i}`, title: `T${i}`, created_at: new Date().toISOString(), status: "open" })); + const s = aggregateDigest(items, 0, "today"); + const text = buildDigestText(s); + // digestItemLines caps at 5, so the 6th and 7th items are replaced by an overflow marker + assert.ok(text.includes("more"), "overflow marker present when items exceed max"); +}); + +test("digestItemLines: items with no title show (untitled) (via buildDigestText)", () => { + const items = [{ id: "x", title: undefined as unknown as string, created_at: new Date().toISOString(), status: "open" }]; + const s = aggregateDigest(items, 0, "today"); + const text = buildDigestText(s); + assert.ok(text.includes("(untitled)"), "missing title shows (untitled)"); +}); + +// --------------------------------------------------------------------------- +// buildDigestText: singular "update" vs plural "updates" +// --------------------------------------------------------------------------- + +test("buildDigestText: total=1 uses singular 'update'", () => { + const items = [{ id: "a", title: "t", created_at: new Date().toISOString(), status: "open" }]; + const s = aggregateDigest(items, 0, "today"); + const text = buildDigestText(s); + assert.ok(text.includes("1 update"), "singular form for total=1"); + assert.ok(!text.includes("1 updates"), "not plural for total=1"); +}); + +test("buildDigestText: total=0 shows no-activity line", () => { + const s = aggregateDigest([], Date.now(), "last 7 days"); + const text = buildDigestText(s); + assert.ok(text.includes("No activity"), "empty window shows no-activity"); +}); + +// --------------------------------------------------------------------------- +// buildDigestBlockKit: channel in footer +// --------------------------------------------------------------------------- + +test("buildDigestBlockKit: channel appears in footer context", () => { + const s = aggregateDigest([], Date.now(), "last 7 days"); + const { blocks } = buildDigestBlockKit(s, "#team"); + const json = JSON.stringify(blocks); + assert.ok(json.includes("#team"), "channel shown in block kit footer"); +}); + +test("buildDigestBlockKit: total=1 singular in context line", () => { + const items = [{ id: "a", title: "t", created_at: new Date().toISOString(), status: "open" }]; + const s = aggregateDigest(items, 0, "today"); + const { blocks } = buildDigestBlockKit(s); + const json = JSON.stringify(blocks); + assert.ok(json.includes("1 update"), "singular in block kit context"); +}); + +// --------------------------------------------------------------------------- +// buildDigestPayload: channel attached +// --------------------------------------------------------------------------- + +test("buildDigestPayload: channel is attached to payload", () => { + const s = aggregateDigest([], Date.now(), "last 7 days"); + const payload = buildDigestPayload(s, "text", "#chan"); + assert.equal(payload.channel, "#chan"); +}); + +// --------------------------------------------------------------------------- +// detectEvent: uncovered branches +// --------------------------------------------------------------------------- + +test("detectEvent: undefined command, OPEN_COMMAND non-reopen, update with unknown status", () => { + // undefined command → empty string → no match → null + assert.equal(detectEvent({ command: undefined, args: [], pm_root: "", ok: true } as unknown as AfterCommandHookContext), null); + + // OPEN_COMMAND 'pause-task' (not 'reopen') → 'open' + assert.equal( + detectEvent(afterCtx({ command: "pause-task", result: { item: { id: "x", status: "open" } } })), + "open", + ); + + // OPEN_COMMAND 'release' → 'open' + assert.equal( + detectEvent(afterCtx({ command: "release", result: { item: { id: "x", status: "open" } } })), + "open", + ); + + // update with unknown --status → falls back to result status + assert.equal( + detectEvent(afterCtx({ command: "update", options: { status: "draft" }, result: { item: { id: "x", status: "blocked" } } })), + "block", + ); + + // update with --status that maps but result status is absent + assert.equal( + detectEvent(afterCtx({ command: "update", options: { status: "in_progress" }, result: { item: { id: "x" } } })), + "start", + ); + + // update with no --status and no result status → null + assert.equal( + detectEvent(afterCtx({ command: "update", result: { item: { id: "x" } } })), + null, + ); + + // previousStatus as non-string (number) → treated as empty + assert.equal( + detectEvent(afterCtx({ + command: "update", + options: { status: "open" }, + result: { item: { id: "x", status: "open" }, previousStatus: 42 as unknown as string }, + })), + "open", + ); +}); + +// --------------------------------------------------------------------------- +// postToSlackOnce: HTTPS protocol selection (http vs https) +// --------------------------------------------------------------------------- + +test("postToSlackOnce: http protocol uses port 80 default, https uses 443", async () => { + // We can only practically test http locally; this covers the http branch. + // The https branch is covered implicitly by the URL validation tests. + const server = http.createServer((_req, res) => { + res.writeHead(200); + res.end("ok"); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + await postToSlackOnce(`http://127.0.0.1:${port}/hook`, { text: "ok" }); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +// --------------------------------------------------------------------------- +// eventReason: cancel with no reason fields at all → undefined +// --------------------------------------------------------------------------- + +test("eventReason: cancel with no reason fields returns undefined", () => { + const item = { id: "1", title: "t", status: "canceled" }; + const text = buildItemPayload(item, "cancel", "text").text; + assert.ok(text.includes("no reason given"), "cancel with no reason → 'no reason given'"); +}); + +// --------------------------------------------------------------------------- +// readStoreItems: unreadable file is skipped (catch block) +// --------------------------------------------------------------------------- + +test("slack digest skips unreadable items in store (catch block)", async () => { + const pmRoot = mkdtempSync(join(tmpdir(), "pm-slack-")); + mkdirSync(join(pmRoot, "tasks"), { recursive: true }); + // A directory with .toon extension causes readFileSync to throw EISDIR + mkdirSync(join(pmRoot, "tasks", "bad.toon"), { recursive: true }); + // A valid item alongside the bad one + writeFileSync( + join(pmRoot, "tasks", "pm-good.toon"), + ["id: pm-good", 'title: "Good"', "type: Task", "status: open", `created_at: "${new Date().toISOString()}"`].join("\n"), + ); + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "1" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { total: number }).total, 1, "only the valid item is counted"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack notify: routes-only config hits the defensive webhook guard +// --------------------------------------------------------------------------- + +test("slack notify: routes-only config without --webhook hits defensive guard", async () => { + const ext = await harness(); + await withEnvAsync( + { + PM_SLACK_WEBHOOK: undefined, + PM_SLACK_ROUTES: JSON.stringify([{ match: "create", webhook: "https://h/r" }]), + }, + async () => { + __resetWarnState(); + await assert.rejects( + ext.runCommand({ + command: "slack notify", + options: { text: "Hello" }, + global: { json: true } as never, + }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /No Slack webhook configured for `slack notify`/); + assert.equal((err as unknown as { exitCode: number }).exitCode, EXIT_CODE.USAGE); + return true; + }, + ); + }, + ); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack digest: routes-only config hits the defensive webhook guard +// --------------------------------------------------------------------------- + +test("slack digest: routes-only config without --webhook hits defensive guard", async () => { + const pmRoot = mkdtempSync(join(tmpdir(), "pm-slack-")); + const ext = await harness(); + await withEnvAsync( + { + PM_SLACK_WEBHOOK: undefined, + PM_SLACK_ROUTES: JSON.stringify([{ match: "close", webhook: "https://h/r" }]), + }, + async () => { + __resetWarnState(); + await assert.rejects( + ext.runCommand({ + command: "slack digest", + options: { days: "7" }, + pmRoot, + global: { json: true } as never, + }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /No Slack webhook configured/); + assert.equal((err as unknown as { exitCode: number }).exitCode, EXIT_CODE.GENERIC_FAILURE); + return true; + }, + ); + }, + ); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack notify: human-mode filtered notification writes to stderr +// --------------------------------------------------------------------------- + +test("slack notify: human-mode filtered notification logs to stderr", async () => { + const ext = await harness(); + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + const result = await ext.runCommand({ + command: "slack notify", + options: { title: "Bug", type: "Bug", on: "close", filter: "type:Feature", "dry-run": true }, + global: { json: false } as never, + }); + assert.equal(result.handled, true); + } finally { + console.error = orig; + } + assert.ok(lines.some((l) => l.includes("filtered out")), "filtered notification logged to stderr"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// postToSlack: retries a non-HTTP retryable error (socket hang up) +// --------------------------------------------------------------------------- + +test("postToSlack retries on socket hang up then succeeds via slack notify", async () => { + let calls = 0; + const server = http.createServer((req, res) => { + calls++; + if (calls === 1) { + // Destroy the socket immediately → "socket hang up" (retryable) + req.socket.destroy(); + } else { + res.writeHead(200); + res.end("ok"); + } + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + const webhookUrl = `http://127.0.0.1:${port}/hook`; + try { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Retry me", webhook: webhookUrl }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { posted: boolean }).posted, true); + assert.ok(calls >= 2, "first attempt failed, second succeeded"); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +// --------------------------------------------------------------------------- +// aggregateDigest: items with undefined status +// --------------------------------------------------------------------------- + +test("aggregateDigest: items without status are handled gracefully", () => { + const now = new Date().toISOString(); + const items = [ + { id: "a", title: "no status", created_at: now }, + { id: "b", title: "has status", status: "open", created_at: now }, + ]; + const s = aggregateDigest(items, 0, "today"); + assert.equal(s.counts.created, 2); + assert.equal(s.counts.closed, 0); + assert.equal(s.counts.blocked, 0); + assert.equal(s.counts.in_progress, 0); +}); + +// --------------------------------------------------------------------------- +// buildDigestPayload: blockkit format without channel +// --------------------------------------------------------------------------- + +test("buildDigestPayload: blockkit without channel has no channel field", () => { + const s = aggregateDigest([], Date.now(), "last 7 days"); + const payload = buildDigestPayload(s, "blockkit"); + assert.equal(payload.channel, undefined); +}); + +// --------------------------------------------------------------------------- +// postToSlackOnce: timeout fires on a non-responsive server +// --------------------------------------------------------------------------- + +test("postToSlackOnce: timeout fires on a server that never responds", async () => { + // Create a server that accepts the connection but never sends a response. + // The 10-second timeout in postToSlackOnce fires and destroys the request. + const server = http.createServer((req) => { + // Intentionally never call res.end() — let the timeout fire. + req.resume(); // drain the request body + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + await assert.rejects( + postToSlackOnce(`http://127.0.0.1:${port}/hook`, { text: "will timeout" }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /timed out|socket hang up/i, + "timeout error must mention timeout or socket hang up"); + return true; + }, + ); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +// --------------------------------------------------------------------------- +// postToSlack: all retries fail with non-HTTP error → re-throws last error +// --------------------------------------------------------------------------- + +test("postToSlack exhausts retries on persistent socket hang up", async () => { + const server = http.createServer((req) => { + req.socket.destroy(); // Always hang up + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + const webhookUrl = `http://127.0.0.1:${port}/hook`; + try { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Will fail", webhook: webhookUrl }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { posted: boolean }).posted, false); + assert.ok((result.result as { error: string }).error); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +// --------------------------------------------------------------------------- +// slack notify: --status and --assignee flags populate the synthetic item +// --------------------------------------------------------------------------- + +test("slack notify: --status and --assignee populate the synthetic item", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { title: "With details", type: "Feature", status: "open", assignee: "bob", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { blocks: unknown[] } }).payload; + const json = JSON.stringify(payload.blocks); + assert.ok(json.includes("open"), "status appears in block kit fields"); + assert.ok(json.includes("bob"), "assignee appears in block kit fields"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack notify: --on with multiple events, first event wins +// --------------------------------------------------------------------------- + +test("slack notify: --on close,create → close event wins (first in ALL_EVENTS order)", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { title: "Multi", on: "close,create", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + // ALL_EVENTS = [create, close, block, ...] → create is first + assert.equal((result.result as { event: string }).event, "create"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack notify: --text different from --title adds note to payload +// --------------------------------------------------------------------------- + +test("slack notify: --text different from --title adds note", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { title: "Title", text: "Title\nExtra body text", format: "text", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { text: string; blocks: unknown[] } }).payload; + assert.ok(payload.text.includes("Extra body text"), "note body appended"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack test: --format text produces text-only payload +// --------------------------------------------------------------------------- + +test("slack test: --format text produces text-only payload", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { format: "text", on: "create" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const payload = (result.result as { payload: { blocks: unknown; text: string } }).payload; + assert.equal(payload.blocks, undefined, "text format has no blocks"); + assert.ok(payload.text.includes("Add OAuth login flow")); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack test: filter that does not match → filtered=true +// --------------------------------------------------------------------------- + +test("slack test: --filter that does not match → filtered=true", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { on: "create", filter: "type:Bug" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + // create sample is type Feature, filter type:Bug does not match + assert.equal((result.result as { filtered: boolean }).filtered, true); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack digest: --format text produces text-only payload +// --------------------------------------------------------------------------- + +test("slack digest: --format text dry-run", async () => { + const pmRoot = mkdtempSync(join(tmpdir(), "pm-slack-")); + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "7", format: "text" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + const res = result.result as { dryRun: boolean; format: string; payload: { blocks: unknown } }; + assert.equal(res.format, "text"); + assert.equal(res.payload.blocks, undefined, "text format has no blocks"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// afterCommand hook: mention resolved from config assignee map +// --------------------------------------------------------------------------- + +test("afterCommand hook: mention resolved from PM_SLACK_ASSIGNEE_MAP", async () => { + let received = ""; + const server = http.createServer((req, res) => { + req.setEncoding("utf8"); + req.on("data", (chunk: string) => { received += chunk; }); + req.on("end", () => { res.writeHead(200); res.end("ok"); }); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + const ext = await harness(); + await withEnvAsync( + { + PM_SLACK_WEBHOOK: `http://127.0.0.1:${port}/hook`, + PM_SLACK_ASSIGNEE_MAP: "alice=U123", + PM_SLACK_ROUTES: undefined, + }, + async () => { + __resetWarnState(); + await ext.runHook({ + kind: "after_command", + context: afterCtx({ + command: "create", + result: { item: { id: "pm-1", title: "Mention me", type: "Feature", priority: 1, status: "open", author: "alice", assignee: "alice" } }, + }), + }); + await new Promise((r) => setTimeout(r, 100)); + const payload = JSON.parse(received); + assert.ok(payload.text.includes("<@U123>"), "mention resolved from env assignee map"); + }, + ); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); + +// --------------------------------------------------------------------------- +// afterCommand hook: close event with item URL +// --------------------------------------------------------------------------- + +test("afterCommand hook: close event posts with item URL in payload", async () => { + let received = ""; + const server = http.createServer((req, res) => { + req.setEncoding("utf8"); + req.on("data", (chunk: string) => { received += chunk; }); + req.on("end", () => { res.writeHead(200); res.end("ok"); }); + }); + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); + const port = (server.address() as { port: number }).port; + try { + const ext = await harness(); + await withEnvAsync( + { PM_SLACK_WEBHOOK: `http://127.0.0.1:${port}/hook`, PM_SLACK_ROUTES: undefined }, + async () => { + __resetWarnState(); + await ext.runHook({ + kind: "after_command", + context: afterCtx({ + command: "close", + result: { item: { id: "pm-9", title: "Fix bug", type: "Issue", priority: 1, status: "closed", close_reason: "fixed", github_url: "https://github.com/unbraind/pm-slack/issues/2" } }, + }), + }); + await new Promise((r) => setTimeout(r, 100)); + const payload = JSON.parse(received); + assert.ok(JSON.stringify(payload.blocks).includes("View on GitHub"), "github URL in block kit"); + }, + ); + await ext.deactivate(); + } finally { + await new Promise((r) => server.close(() => r())); + } +}); +// --------------------------------------------------------------------------- +// toErrorMessage: both arms of the instanceof ternary +// --------------------------------------------------------------------------- + +test("toErrorMessage: Error instance returns .message, non-Error returns String()", () => { + assert.equal(toErrorMessage(new Error("boom")), "boom"); + assert.equal(toErrorMessage(new CommandError("usage", 2)), "usage"); + assert.equal(toErrorMessage("plain string"), "plain string"); + assert.equal(toErrorMessage(42), "42"); + assert.equal(toErrorMessage(null), "null"); + assert.equal(toErrorMessage(undefined), "undefined"); +}); + +// --------------------------------------------------------------------------- +// Handler direct calls with options: undefined to cover ?? {} fallbacks +// --------------------------------------------------------------------------- + +test("slack notify handler: ctx.options undefined falls back to empty object", async () => { + const ext = await harness(); + const handler = ext.activation.commands.handlers.find((h) => h.command === "slack notify"); + assert.ok(handler, "slack notify handler must be registered"); + // Call run directly with options: undefined — the ?? {} defensive guard fires + await assert.rejects( + handler!.run({ options: undefined, args: [], global: { json: true }, pm_root: "", command: "slack notify" } as never) as Promise, + (err: unknown) => err instanceof Error && /No Slack webhook configured/.test((err as Error).message), + ); + await ext.deactivate(); +}); + +test("slack test handler: ctx.options undefined falls back to empty object", async () => { + const ext = await harness(); + const handler = ext.activation.commands.handlers.find((h) => h.command === "slack test"); + assert.ok(handler, "slack test handler must be registered"); + const result = await handler!.run({ options: undefined, args: [], global: { json: true }, pm_root: "", command: "slack test" } as never); + assert.ok(result, "slack test returns a result even with undefined options"); + await ext.deactivate(); +}); + +test("slack digest handler: ctx.options undefined falls back to empty object", async () => { + const ext = await harness(); + const handler = ext.activation.commands.handlers.find((h) => h.command === "slack digest"); + assert.ok(handler, "slack digest handler must be registered"); + const pmRoot = mkdtempSync(join(tmpdir(), "pm-slack-")); + // With undefined options, dry-run defaults to false, format defaults to blockkit. + // Set PM_SLACK_WEBHOOK so the preflight gate passes, but the post will fail + // since there's no real server. The handler catches the failure and throws. + await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + await assert.rejects( + handler!.run({ options: undefined, args: [], global: { json: true }, pm_root: pmRoot, command: "slack digest" } as never) as Promise, + (err: unknown) => err instanceof Error, + ); + }); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// PM_SLACK_CHANNEL env var coverage +// --------------------------------------------------------------------------- + +test("slack notify: PM_SLACK_CHANNEL env var provides channel", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_CHANNEL: "#env-team" }, async () => { + const result = await ext.runCommand({ + command: "slack notify", + options: { text: "Env chan", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { channel: string }).channel, "#env-team"); + }); + await ext.deactivate(); +}); + +test("slack test: PM_SLACK_CHANNEL env var provides channel", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_CHANNEL: "#preview" }, async () => { + const result = await ext.runCommand({ + command: "slack test", + options: {}, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { channel: string }).channel, "#preview"); + }); + await ext.deactivate(); +}); + +test("slack digest: PM_SLACK_CHANNEL env var provides channel", async () => { + const pmRoot = mkdtempSync(join(tmpdir(), "pm-slack-")); + const ext = await harness(); + await withEnvAsync({ PM_SLACK_CHANNEL: "#digest-env" }, async () => { + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "7" }, + pmRoot, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { channel: string }).channel, "#digest-env"); + }); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// pm_root fallback: ctx.pm_root undefined falls back to cwd/.agents/pm +// --------------------------------------------------------------------------- + +test("slack digest: ctx.pm_root undefined falls back to cwd default", async () => { + const ext = await harness(); + // When pm_root is not provided in the context, the handler defaults to + // path.join(process.cwd(), ".agents", "pm"). We test this by ensuring the + // handler doesn't crash (it will read whatever is at that path, likely empty). + const result = await ext.runCommand({ + command: "slack digest", + options: { "dry-run": true, days: "7" }, + // pmRoot intentionally omitted to trigger the ?? fallback + global: { json: true } as never, + }); + assert.equal(result.handled, true); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// ALL_EVENTS.find(...) ?? "create" fallback: --on with no valid events +// --------------------------------------------------------------------------- + +test("slack notify: --on with only invalid events falls back to create", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack notify", + options: { title: "Fallback", on: "nonsense,garbage", "dry-run": true }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + // parseEvents returns all events for all-invalid spec, so the first event + // in ALL_EVENTS (create) is used + assert.equal((result.result as { event: string }).event, "create"); + await ext.deactivate(); +}); + +test("slack test: --on with only invalid events falls back to create", async () => { + const ext = await harness(); + const result = await ext.runCommand({ + command: "slack test", + options: { on: "nonsense,garbage" }, + global: { json: true } as never, + }); + assert.equal(result.handled, true); + assert.equal((result.result as { event: string }).event, "create"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack test: human mode with no filter shows no filter note +// --------------------------------------------------------------------------- + +test("slack test: human mode without filter shows no filter note", async () => { + const ext = await harness(); + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + await ext.runCommand({ + command: "slack test", + options: { on: "create" }, + global: { json: false } as never, + }); + } finally { + console.error = orig; + } + // No filter note because filters.length === 0 + assert.ok(!lines.some((l) => l.includes("FILTERED")), "no filter note without --filter"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// afterCommand hook: detectEvent returns null → no post +// --------------------------------------------------------------------------- + +test("afterCommand hook: unrelated command → detectEvent returns null → no post", async () => { + const ext = await harness(); + await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + __resetWarnState(); + const warnings = await ext.runHook({ + kind: "after_command", + context: afterCtx({ command: "list", result: {} }), + }); + assert.deepEqual(warnings, [], "unrelated command produces no warnings"); + }); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// priorityLabel: invalid priority number (defensive ?? "unknown") +// --------------------------------------------------------------------------- + +test("priorityLabel: out-of-range priority returns 'unknown' via defensive fallback", () => { + // PmItem.priority is typed Priority (1-4), but the SDK runtime can deliver + // any number. This exercises the PRIORITY_LABELS[p] ?? "unknown" fallback. + const item = { id: "1", title: "T", priority: 9 as never } as Parameters[0]; + const text = buildTextMessage(item, "create"); + assert.ok(text.includes("Priority: unknown"), "out-of-range priority → 'unknown'"); +}); + +// --------------------------------------------------------------------------- +// parseRoutes: entry that is an array (not object) is skipped +// --------------------------------------------------------------------------- + +test("parseRoutes: array entry and non-string webhook/channel are skipped", () => { + const rules = parseRoutes('[[], {"match": "ok", "webhook": 123, "channel": 456}]'); + // Neither entry produces a valid rule: arrays are not objects, and + // non-string webhook/channel are treated as undefined → rule with no override dropped + assert.equal(rules.length, 0); +}); + +// --------------------------------------------------------------------------- +// parseFilter: spec with only whitespace parts produces empty array +// --------------------------------------------------------------------------- + +test("parseFilter: spec with only whitespace produces empty array", () => { + assert.deepEqual(parseFilter(" , , "), []); +}); + +// --------------------------------------------------------------------------- +// statusIsClosed: undefined status returns false +// --------------------------------------------------------------------------- + +test("aggregateDigest: items with undefined status don't count as closed", () => { + const now = new Date().toISOString(); + const items = [ + { id: "a", title: "no status", created_at: now, updated_at: now }, + ]; + const s = aggregateDigest(items, 0, "today"); + assert.equal(s.counts.closed, 0, "undefined status → not closed"); + assert.equal(s.counts.created, 1); +}); + +// --------------------------------------------------------------------------- +// buildDigestPayload: text format without channel +// --------------------------------------------------------------------------- + +test("buildDigestPayload: text format without channel has no channel field", () => { + const s = aggregateDigest([], Date.now(), "last 7 days"); + const payload = buildDigestPayload(s, "text"); + assert.equal(payload.channel, undefined); +}); + +// --------------------------------------------------------------------------- +// eventReason: close with closedReason fallback (no close_reason) +// --------------------------------------------------------------------------- + +test("eventReason: close event falls back to closedReason", () => { + const item = { id: "1", title: "t", closedReason: "Alt reason" }; + const text = buildItemPayload(item, "close", "text").text; + assert.ok(text.includes("Alt reason"), "close falls back to closedReason"); +}); + +// --------------------------------------------------------------------------- +// eventReason: cancel with cancelReason (camelCase) +// --------------------------------------------------------------------------- + +test("eventReason: cancel event reads cancelReason (camelCase)", () => { + const item = { id: "1", title: "t", cancelReason: "Duplicate work" }; + const text = buildItemPayload(item, "cancel", "text").text; + assert.ok(text.includes("Duplicate work"), "cancel reads cancelReason"); +}); + +// --------------------------------------------------------------------------- +// eventReason: cancel with cancel_reason (snake_case) +// --------------------------------------------------------------------------- + +test("eventReason: cancel event reads cancel_reason (snake_case)", () => { + const item = { id: "1", title: "t", cancel_reason: "Deprecated" }; + const text = buildItemPayload(item, "cancel", "text").text; + assert.ok(text.includes("Deprecated"), "cancel reads cancel_reason"); +}); + +// --------------------------------------------------------------------------- +// eventReason: block with blockedReason (camelCase) +// --------------------------------------------------------------------------- + +test("eventReason: block event reads blockedReason (camelCase)", () => { + const item = { id: "1", title: "t", blockedReason: "Design pending" }; + const text = buildItemPayload(item, "block", "text").text; + assert.ok(text.includes("Design pending"), "block reads blockedReason"); +}); + +// --------------------------------------------------------------------------- +// ruleMatches: type: selector on item with no type field +// --------------------------------------------------------------------------- + +test("ruleMatches: type: selector on item with undefined type does not match", () => { + const item = { id: "1", title: "t" }; // no type field + assert.ok(!__test__.ruleMatches({ match: "type:Bug" }, "create", item)); +}); + +// --------------------------------------------------------------------------- +// filterMatches: type: and status: selectors on item with missing fields +// --------------------------------------------------------------------------- + +test("filterMatches: type: selector on item with undefined type does not match", () => { + const item = { id: "1", title: "t" }; // no type, no status + assert.ok(!__test__.filterMatches("type:Bug", "create", item)); + assert.ok(!__test__.filterMatches("status:open", "create", item)); +}); + +// --------------------------------------------------------------------------- +// truncate: max === 1 returns ellipsis for long text +// --------------------------------------------------------------------------- + +test("truncate: max === 1 returns ellipsis for text longer than 1", () => { + assert.equal(truncate("hello", 1), "…"); + assert.equal(truncate("a", 1), "a"); // exactly 1 char → returned as-is +}); + +// --------------------------------------------------------------------------- +// Preflight: undefined command and options trigger ?? fallbacks +// --------------------------------------------------------------------------- + +test("preflight override: undefined command and options trigger defensive fallbacks", async () => { + const ext = await harness(); + // Call the override's run function directly (bypassing the SDK's command + // normalization) to exercise the ?? defensive fallbacks in the preflight. + const override = ext.activation.preflight.overrides[0]; + assert.ok(override, "preflight override must be registered"); + const result = await override.run({ + command: undefined as unknown as string, + args: [], + options: undefined as unknown as Record, + global: {} as never, + pm_root: "", + decision: { + enforce_item_format_gate: false, + run_preflight_item_format_sync: false, + run_extension_migrations: false, + enforce_mandatory_migration_gate: false, + }, + } as never); + // With undefined command → "" → not a posting command → returns empty delta + assert.ok(result, "preflight returns a delta for undefined command"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack digest: handler called directly with pm_root undefined +// --------------------------------------------------------------------------- + +test("slack digest handler: ctx.pm_root undefined falls back to cwd default", async () => { + const ext = await harness(); + const handler = ext.activation.commands.handlers.find((h) => h.command === "slack digest"); + assert.ok(handler, "slack digest handler must be registered"); + // Call run directly with pm_root: undefined to trigger the ?? fallback + const result = await handler!.run({ + options: { "dry-run": true, days: "7" }, + args: [], + global: { json: true }, + pm_root: undefined as unknown as string, + command: "slack digest", + } as never) as { handled?: boolean }; + assert.ok(result, "handler returns a result with undefined pm_root"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// Preflight: posting command with undefined options triggers ?? {} fallback +// --------------------------------------------------------------------------- + +test("preflight override: posting command with undefined options triggers ?? {} fallback", async () => { + const ext = await harness(); + const override = ext.activation.preflight.overrides[0]; + assert.ok(override, "preflight override must be registered"); + await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + // command is a posting command so the early return is NOT taken, + // and options is undefined so the ?? {} defensive guard fires. + const result = await override.run({ + command: "slack notify", + args: [], + options: undefined as unknown as Record, + global: {} as never, + pm_root: "", + decision: { + enforce_item_format_gate: false, + run_preflight_item_format_sync: false, + run_extension_migrations: false, + enforce_mandatory_migration_gate: false, + }, + } as never); + assert.ok(result, "preflight returns a delta"); + }); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack test: human mode with matching filter shows [filter matched] +// --------------------------------------------------------------------------- + +test("slack test: human mode with matching filter shows [filter matched]", async () => { + const ext = await harness(); + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + await ext.runCommand({ + command: "slack test", + options: { on: "close", filter: "type:Issue" }, + global: { json: false } as never, + }); + } finally { + console.error = orig; + } + assert.ok(lines.some((l) => l.includes("[filter matched]")), "matching filter shows [filter matched]"); + await ext.deactivate(); +}); + +// --------------------------------------------------------------------------- +// slack test: human mode with non-matching filter shows [FILTERED OUT] +// --------------------------------------------------------------------------- + +test("slack test: human mode with non-matching filter shows [FILTERED OUT]", async () => { + const ext = await harness(); + const lines: string[] = []; + const orig = console.error; + console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; + try { + await ext.runCommand({ + command: "slack test", + options: { on: "create", filter: "type:Bug" }, + global: { json: false } as never, + }); + } finally { + console.error = orig; + } + assert.ok(lines.some((l) => l.includes("[FILTERED OUT]")), "non-matching filter shows [FILTERED OUT]"); + await ext.deactivate(); +}); From b2c0f16e6e761e3ade15a0db727adcecff089acb Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Fri, 18 Sep 2026 06:41:37 +0200 Subject: [PATCH 2/5] Fix Greptile review findings: remove sleeps, use dynamic ports, add https test - Remove unnecessary 100ms sleeps (runHook awaits the hook which awaits postToSlack) - Use dynamically allocated ports instead of hardcoded port 1 - Use https://hooks.slack.com/services/A/B/C for config-only tests (no network call) - Add https://localhost test to cover https.request and port 443 default branches - Fix remaining withEnv async callback to use withEnvAsync --- test/coverage.test.ts | 67 +++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/test/coverage.test.ts b/test/coverage.test.ts index 497907a..eff700a 100644 --- a/test/coverage.test.ts +++ b/test/coverage.test.ts @@ -103,6 +103,18 @@ async function withEnvAsync(env: Record, fn: () => P } } +/** Reserve and immediately free a port so connection attempts to it fail. */ +function getUnusedPort(): Promise { + return new Promise((resolve, reject) => { + const server = http.createServer(); + server.listen(0, "127.0.0.1", () => { + const port = (server.address() as { port: number }).port; + server.close(() => resolve(port)); + }); + server.on("error", reject); + }); +} + /** Create a temp pm-root workspace with item directories and files. */ function makeTempPmRoot(): string { const dir = mkdtempSync(join(tmpdir(), "pm-slack-")); @@ -156,11 +168,11 @@ function preflightCtx(command: string, options: Record): Prefli // --------------------------------------------------------------------------- test("loadConfig: returns a full config when PM_SLACK_WEBHOOK is a valid URL", () => { - withEnv({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, () => { + withEnv({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/services/A/B/C", PM_SLACK_ROUTES: undefined }, () => { __resetWarnState(); const config = loadConfig(); assert.ok(config, "config must be returned with a valid webhook"); - assert.equal(config!.webhookUrl, "https://hooks.slack.com/x"); + assert.equal(config!.webhookUrl, "https://hooks.slack.com/services/A/B/C"); assert.equal(config!.channel, undefined); assert.equal(config!.minPriority, 1); assert.ok(config!.events.has("create"), "default events include create"); @@ -206,7 +218,7 @@ test("loadConfig: routes with webhooks keep config alive without a default webho test("loadConfig: channel, min-priority, and mention-env are read correctly", () => { withEnv( { - PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", + PM_SLACK_WEBHOOK: "https://hooks.slack.com/services/A/B/C", PM_SLACK_CHANNEL: "#team", PM_SLACK_MIN_PRIORITY: "3", PM_SLACK_FORMAT: "text", @@ -228,7 +240,7 @@ test("loadConfig: channel, min-priority, and mention-env are read correctly", () test("loadConfig: out-of-range priority falls back to 1", () => { withEnv( - { PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_MIN_PRIORITY: "9" }, + { PM_SLACK_WEBHOOK: "https://hooks.slack.com/services/A/B/C", PM_SLACK_MIN_PRIORITY: "9" }, () => { __resetWarnState(); const config = loadConfig(); @@ -241,7 +253,7 @@ test("loadConfig: out-of-range priority falls back to 1", () => { test("loadConfig: mentionAssignee=0 forces mentions off even with a map", () => { withEnv( { - PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", + PM_SLACK_WEBHOOK: "https://hooks.slack.com/services/A/B/C", PM_SLACK_ASSIGNEE_MAP: "alice=U123", PM_SLACK_MENTION_ASSIGNEE: "0", }, @@ -362,9 +374,10 @@ test("postToSlackOnce: non-2xx response rejects with SlackHttpError carrying sta }); test("postToSlackOnce: connection refused triggers req.on(error)", async () => { - // Use a port that's almost certainly not listening. + // Reserve and free a port so we know nothing is listening on it. + const port = await getUnusedPort(); await assert.rejects( - postToSlackOnce("http://127.0.0.1:1/hook", { text: "hi" }), + postToSlackOnce(`http://127.0.0.1:${port}/hook`, { text: "hi" }), (err: unknown) => { assert.ok(err instanceof Error); assert.match((err as Error).message, /Slack webhook request failed/); @@ -575,7 +588,6 @@ test("afterCommand hook: posts notification on create event", async () => { }); assert.deepEqual(warnings, [], "hook must not produce warnings on a clean post"); // Wait a tick for the async post (the hook is fire-and-forget) - await new Promise((r) => setTimeout(r, 100)); assert.ok(received.length > 0, "payload must be posted"); const payload = JSON.parse(received); assert.ok(payload.text.includes("New feature"), "notification includes item title"); @@ -590,7 +602,7 @@ test("afterCommand hook: posts notification on create event", async () => { test("afterCommand hook: event filtered by PM_SLACK_EVENTS", async () => { const ext = await harness(); await withEnvAsync( - { PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_EVENTS: "close", PM_SLACK_ROUTES: undefined }, + { PM_SLACK_WEBHOOK: "http://127.0.0.1:1/hook", PM_SLACK_EVENTS: "close", PM_SLACK_ROUTES: undefined }, async () => { const lines: string[] = []; const orig = console.error; @@ -614,7 +626,7 @@ test("afterCommand hook: event filtered by PM_SLACK_EVENTS", async () => { test("afterCommand hook: no item extracted → skip", async () => { const ext = await harness(); - await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + await withEnvAsync({ PM_SLACK_WEBHOOK: "http://127.0.0.1:1/hook", PM_SLACK_ROUTES: undefined }, async () => { const lines: string[] = []; const orig = console.error; console.error = (...args: unknown[]) => { lines.push(args.join(" ")); }; @@ -632,7 +644,7 @@ test("afterCommand hook: no item extracted → skip", async () => { }); test("afterCommand hook: priority below minimum → skip", async () => { - const ext = await harness();await withEnvAsync( { PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_MIN_PRIORITY: "1", PM_SLACK_ROUTES: undefined }, + const ext = await harness();await withEnvAsync( { PM_SLACK_WEBHOOK: "http://127.0.0.1:1/hook", PM_SLACK_MIN_PRIORITY: "1", PM_SLACK_ROUTES: undefined }, async () => { const lines: string[] = []; const orig = console.error; @@ -657,7 +669,7 @@ test("afterCommand hook: priority below minimum → skip", async () => { test("afterCommand hook: no route resolved → skip", async () => { const ext = await harness(); // Routes-only config where the event doesn't match any rule, and no default webhook - withEnv( + await withEnvAsync( { PM_SLACK_WEBHOOK: undefined, PM_SLACK_ROUTES: JSON.stringify([{ match: "close", webhook: "https://h/close" }]), @@ -686,7 +698,7 @@ test("afterCommand hook: no route resolved → skip", async () => { test("afterCommand hook: hook error is swallowed (never throws)", async () => { const ext = await harness(); - await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + await withEnvAsync({ PM_SLACK_WEBHOOK: "http://127.0.0.1:1/hook", PM_SLACK_ROUTES: undefined }, async () => { // An unreachable webhook will cause postToSlack to fail, but the hook // catches everything. The runHook helper returns warnings, not throws. const warnings = await ext.runHook({ @@ -893,9 +905,10 @@ test("slack notify: non-dry-run without webhook → CommandError", async () => { test("slack notify: network failure returns posted:false (does not throw)", async () => { const ext = await harness(); + const port = await getUnusedPort(); const result = await ext.runCommand({ command: "slack notify", - options: { text: "Hello", webhook: "http://127.0.0.1:1/hook" }, + options: { text: "Hello", webhook: `http://127.0.0.1:${port}/hook` }, global: { json: true } as never, }); assert.equal(result.handled, true); @@ -1912,7 +1925,6 @@ test("afterCommand hook: mention resolved from PM_SLACK_ASSIGNEE_MAP", async () result: { item: { id: "pm-1", title: "Mention me", type: "Feature", priority: 1, status: "open", author: "alice", assignee: "alice" } }, }), }); - await new Promise((r) => setTimeout(r, 100)); const payload = JSON.parse(received); assert.ok(payload.text.includes("<@U123>"), "mention resolved from env assignee map"); }, @@ -1949,7 +1961,6 @@ test("afterCommand hook: close event posts with item URL in payload", async () = result: { item: { id: "pm-9", title: "Fix bug", type: "Issue", priority: 1, status: "closed", close_reason: "fixed", github_url: "https://github.com/unbraind/pm-slack/issues/2" } }, }), }); - await new Promise((r) => setTimeout(r, 100)); const payload = JSON.parse(received); assert.ok(JSON.stringify(payload.blocks).includes("View on GitHub"), "github URL in block kit"); }, @@ -2005,7 +2016,7 @@ test("slack digest handler: ctx.options undefined falls back to empty object", a // With undefined options, dry-run defaults to false, format defaults to blockkit. // Set PM_SLACK_WEBHOOK so the preflight gate passes, but the post will fail // since there's no real server. The handler catches the failure and throws. - await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + await withEnvAsync({ PM_SLACK_WEBHOOK: "http://127.0.0.1:1/hook", PM_SLACK_ROUTES: undefined }, async () => { await assert.rejects( handler!.run({ options: undefined, args: [], global: { json: true }, pm_root: pmRoot, command: "slack digest" } as never) as Promise, (err: unknown) => err instanceof Error, @@ -2140,7 +2151,7 @@ test("slack test: human mode without filter shows no filter note", async () => { test("afterCommand hook: unrelated command → detectEvent returns null → no post", async () => { const ext = await harness(); - await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + await withEnvAsync({ PM_SLACK_WEBHOOK: "http://127.0.0.1:1/hook", PM_SLACK_ROUTES: undefined }, async () => { __resetWarnState(); const warnings = await ext.runHook({ kind: "after_command", @@ -2330,7 +2341,7 @@ test("preflight override: posting command with undefined options triggers ?? {} const ext = await harness(); const override = ext.activation.preflight.overrides[0]; assert.ok(override, "preflight override must be registered"); - await withEnvAsync({ PM_SLACK_WEBHOOK: "https://hooks.slack.com/x", PM_SLACK_ROUTES: undefined }, async () => { + await withEnvAsync({ PM_SLACK_WEBHOOK: "http://127.0.0.1:1/hook", PM_SLACK_ROUTES: undefined }, async () => { // command is a posting command so the early return is NOT taken, // and options is undefined so the ?? {} defensive guard fires. const result = await override.run({ @@ -2394,3 +2405,21 @@ test("slack test: human mode with non-matching filter shows [FILTERED OUT]", asy assert.ok(lines.some((l) => l.includes("[FILTERED OUT]")), "non-matching filter shows [FILTERED OUT]"); await ext.deactivate(); }); + +// --------------------------------------------------------------------------- +// postToSlackOnce: https protocol without explicit port defaults to 443 +// --------------------------------------------------------------------------- + +test("postToSlackOnce: https protocol uses https.request and port 443 default", async () => { + // An https URL with no explicit port triggers the parsed.port falsy branch + // (defaults to 443) and the https.request branch. The connection to + // localhost:443 will fail (nothing is listening), so the error handler fires. + await assert.rejects( + postToSlackOnce("https://localhost/hook", { text: "hi" }), + (err: unknown) => { + assert.ok(err instanceof Error); + assert.match((err as Error).message, /Slack webhook request failed/); + return true; + }, + ); +}); From c5940ee0e88a6beda1f2662251144cb27366f277 Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Fri, 18 Sep 2026 06:46:07 +0200 Subject: [PATCH 3/5] Close pm-slack-hn3n and regenerate changelog --- .agents/pm/history/pm-slack-hn3n.jsonl | 1 + .agents/pm/tasks/pm-slack-hn3n.toon | 11 ++++++++--- CHANGELOG.md | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.agents/pm/history/pm-slack-hn3n.jsonl b/.agents/pm/history/pm-slack-hn3n.jsonl index 19742db..7075449 100644 --- a/.agents/pm/history/pm-slack-hn3n.jsonl +++ b/.agents/pm/history/pm-slack-hn3n.jsonl @@ -4,3 +4,4 @@ {"hash_algorithm":"sha256","ts":"2026-09-18T03:19:48.560Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/1","value":{"created_at":"2026-09-18T03:19:48.560Z","author":"pi-agent","text":"Dead-code removed: index.ts lines 1932-1957 (beforeCommand fallback hook). Invariant: the SDK's ExtensionApiRegistrar constructor always binds api.hooks.afterCommand as a function (see @unbrained/pm-cli extension-types.js: this.hooks = { beforeCommand: ..., afterCommand: ..., ... }), so the 'else if (typeof api.hooks?.beforeCommand === \"function\")' branch is never reached when afterCommand is available. The peer dependency >=2026.7.29 guarantees afterCommand exists. Removed the entire else-if block and the unused BeforeCommandHookContext import."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T03:19:48.560Z"}],"before_hash":"697ac945ea0bd5f5d991499d6ac3a7f06b23caa11fffc987b64b8713bc2d1efd","after_hash":"68697107f46af4c34a19adec0d0e33847dfea9f35b145017a2b14c610e5e08b4","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"e65cc62933c8c4c08b9d3d3f30759a52cf76124d88ef24682f5042f79e599123"} {"hash_algorithm":"sha256","ts":"2026-09-18T04:27:33.963Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":null,"topic":null},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/2","value":{"created_at":"2026-09-18T04:27:33.963Z","author":"pi-agent","text":"Coverage achieved 100/100/100 (lines/branches/functions). Dead code removed: (1) beforeCommand fallback hook (lines 1932-1957) — invariant: SDK always provides afterCommand; (2) postToSlack throw ternary (line 1369) — invariant: postToSlackOnce only rejects with Error instances; (3) res.statusCode ?? 0 — invariant: HTTP responses always have a status code; (4) statusIsClosed ?? '' — invariant: aggregateDigest always passes a lowercased string; (5) ALL_EVENTS.find(...) ?? 'create' (2 sites) — invariant: parseEvents always returns a non-empty set of valid EventKind values. Introduced toErrorMessage() helper consolidating err instanceof Error ternaries from 4 catch blocks; exported in __test__ with both arms tested. Coverage gate raised to 100/100/100."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T04:27:33.963Z"}],"before_hash":"68697107f46af4c34a19adec0d0e33847dfea9f35b145017a2b14c610e5e08b4","after_hash":"a4d3eb999d62b897b0d508bbe17c7dedf8fa9e87cd50d717e5eaf59a459e0ecd","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"9a1a8e50b2a18d95b939ed284b228c98a1269628049d628f9c61bb9d7bd158e8"} {"hash_algorithm":"sha256","ts":"2026-09-18T04:27:42.977Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"update","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T04:27:42.977Z"},{"op":"add","path":"/metadata/files","value":[{"path":"index.ts","scope":"project"},{"path":"test/coverage.test.ts","scope":"project"},{"path":"package.json","scope":"project"}]},{"op":"add","path":"/metadata/tests","value":[{"command":"npm run coverage","scope":"project","provenance":{"author":"pi-agent","created_at":"2026-09-18T04:27:42.867Z","source_kind":"local_mutation","source_ref":"test/cover-pm-slack-to-full-coverage"}}]}],"before_hash":"a4d3eb999d62b897b0d508bbe17c7dedf8fa9e87cd50d717e5eaf59a459e0ecd","after_hash":"2d7d3e650d61a35a0b77b75ea06bcd1938a6f0c6ef581668275cd4b0e49aa0fe","item_hash_version":3,"event_class":"maintenance","record_hash_version":1,"record_hash":"d08021879499a780ab7eee46a6032063a14cc947c769b0d9d660fc650bd590dc"} +{"hash_algorithm":"sha256","ts":"2026-09-18T04:45:34.171Z","author":"pi-agent","author_source":"asserted","agent_harness":"pi","agent_model":"glm-5.2:cloud","agent_model_source":"environment","agent_instance":"bf508fc18bdbc741e44074d5","agent_provenance":{"model":{"value":"glm-5.2:cloud","source":"environment"},"effort":null,"role":{"value":"implementer","source":"argv"},"topic":null},"op":"close","patch":[{"op":"remove","path":"/metadata/assignee"},{"op":"replace","path":"/metadata/updated_at","value":"2026-09-18T04:45:34.171Z"},{"op":"replace","path":"/metadata/status","value":"closed"},{"op":"add","path":"/metadata/closed_at","value":"2026-09-18T04:45:34.085Z"},{"op":"add","path":"/metadata/completed_at","value":"2026-09-18T04:45:34.085Z"},{"op":"add","path":"/metadata/resolution","value":"Added 128 behavioural tests covering all code paths. Removed 5 dead-code sites. Raised coverage gate to 100/100/100."},{"op":"add","path":"/metadata/expected_result","value":"100% line/branch/function coverage, all gates green"},{"op":"add","path":"/metadata/actual_result","value":"100.00/100.00/100.00 L/B/F; release:check exits 0; PR #112 CI green"},{"op":"add","path":"/metadata/close_reason","value":"completed"}],"before_hash":"2d7d3e650d61a35a0b77b75ea06bcd1938a6f0c6ef581668275cd4b0e49aa0fe","after_hash":"3bdd6e225034f41525561177ad8628142e7d2c2451b7aa35d421d23cf91324bc","item_hash_version":3,"event_class":"substantive","record_hash_version":1,"record_hash":"ae8b110aa1e71ced18083c9dd277b0cf7eebb11072707b37d5c485d9d2a56f88"} diff --git a/.agents/pm/tasks/pm-slack-hn3n.toon b/.agents/pm/tasks/pm-slack-hn3n.toon index eb2d1a1..c1f2f4c 100644 --- a/.agents/pm/tasks/pm-slack-hn3n.toon +++ b/.agents/pm/tasks/pm-slack-hn3n.toon @@ -2,15 +2,19 @@ id: pm-slack-hn3n title: Cover every pm-slack code path with behavioural tests and raise the coverage gate to 100 description: "The coverage gate floor is 77/85/79; the fleet mandate is 100/100/100. Drive every uncovered line, branch, and function in index.ts through real behaviour and raise coverageGate.thresholds to 100." type: Task -status: open +status: closed priority: 2 tags: [] created_at: "2026-09-18T03:12:15.680Z" -updated_at: "2026-09-18T04:27:42.977Z" -assignee: pi-agent +updated_at: "2026-09-18T04:45:34.171Z" +closed_at: "2026-09-18T04:45:34.085Z" +completed_at: "2026-09-18T04:45:34.085Z" claim_principal: pi-agent author: pi-agent acceptance_criteria: "npm run coverage reports 100.00 for lines, branches, and functions; coverageGate.thresholds in package.json is 100/100/100; npm run release:check exits 0" +resolution: Added 128 behavioural tests covering all code paths. Removed 5 dead-code sites. Raised coverage gate to 100/100/100. +expected_result: "100% line/branch/function coverage, all gates green" +actual_result: "100.00/100.00/100.00 L/B/F; release:check exits 0; PR #112 CI green" comments[3]{created_at,author,text}: "2026-09-18T03:12:24.263Z",pi-agent,"Baseline: lines 82.63%, branches 86.28%, functions 86.21%. Uncovered regions: 642-652 (loadConfig valid/invalid webhook), 690-694 (meetsMinPriority), 870/874-875 (eventReason block+cancel fallback), 906-908 (buildTextMessage status transitions), 1246-1248 (parseRetryAfterMs date form), 1320-1325/1330/1334 (postToSlackOnce error paths), 1356-1371 (postToSlack retry), 1436-1459 (readStoreItems), 1822-1837 (extractItem), 1866-1930 (afterCommand+beforeCommand hooks), 1933-1957 (preflight run), 2046-2163 (slack notify handler), 2203-2268 (slack test handler), 2301-2359 (slack digest handler)" "2026-09-18T03:19:48.560Z",pi-agent,"Dead-code removed: index.ts lines 1932-1957 (beforeCommand fallback hook). Invariant: the SDK's ExtensionApiRegistrar constructor always binds api.hooks.afterCommand as a function (see @unbrained/pm-cli extension-types.js: this.hooks = { beforeCommand: ..., afterCommand: ..., ... }), so the 'else if (typeof api.hooks?.beforeCommand === \"function\")' branch is never reached when afterCommand is available. The peer dependency >=2026.7.29 guarantees afterCommand exists. Removed the entire else-if block and the unused BeforeCommandHookContext import." @@ -21,4 +25,5 @@ files[3]{path,scope}: package.json,project tests[1]{command,scope,provenance{author,created_at,source_kind,source_ref}}: npm run coverage,project,pi-agent,"2026-09-18T04:27:42.867Z",local_mutation,test/cover-pm-slack-to-full-coverage +close_reason: completed body: "" diff --git a/CHANGELOG.md b/CHANGELOG.md index a686bd5..bc1d109 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Other +- Cover every pm-slack code path with behavioural tests and raise the coverage gate to 100 ([pm-slack-hn3n](https://github.com/unbraind/pm-slack/blob/main/.agents/pm/tasks/pm-slack-hn3n.toon)) - Certify pm CLI 2026.9.17 ([pm-slack-eoqy](https://github.com/unbraind/pm-slack/blob/main/.agents/pm/chores/pm-slack-eoqy.toon)) ## 2026.9.13 - 2026-09-13 From e438506b00ec9f38e6009ac502b77ceddaaa1d0b Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Fri, 18 Sep 2026 07:00:41 +0200 Subject: [PATCH 4/5] Pick the header event through a typed helper instead of a cast The coverage raise replaced 'ALL_EVENTS.find(...) ?? "create"' with 'as EventKind' at both command sites. The fallback was unreachable through parseEvents, which never returns an empty set, but the cast moved that invariant out of the compiler's sight. The next change to parseEvents could then have produced an undefined header verb silently. primaryEvent(events) restores the original behaviour (first selected event in ALL_EVENTS priority order, create when nothing is selected) as a small pure function. Its empty-set contract is unit-tested directly, so the branch is real and covered, not asserted away. The remaining two narrowings (a ClientRequest response always has statusCode; postToSlack's lastErr is always an Error) now state the runtime invariant they rely on. --- dist/index.d.ts | 12 ++++++++++++ dist/index.d.ts.map | 2 +- dist/index.js | 22 ++++++++++++++++++++-- dist/index.js.map | 2 +- index.ts | 23 +++++++++++++++++++++-- test/coverage.test.ts | 8 ++++++++ 6 files changed, 63 insertions(+), 6 deletions(-) diff --git a/dist/index.d.ts b/dist/index.d.ts index e9f895a..3d7a819 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -110,6 +110,17 @@ declare function normalizeEvent(token: string): EventKind | null; * @returns The resolved set of event kinds to subscribe to. */ declare function parseEvents(spec: string | undefined): Set; +/** + * The header verb for a notification: the first selected event in + * {@link ALL_EVENTS} priority order, so `--on close,create` still reads as a + * create. {@link parseEvents} never returns an empty set, but a `Set` cannot + * carry non-emptiness in its type, so an empty selection falls back to + * `create` (the verb `--on` defaults to) instead of being asserted away. + * + * @param events - The selected events, normally from {@link parseEvents}. + * @returns The event whose template heads the message. + */ +declare function primaryEvent(events: ReadonlySet): EventKind; /** * Normalize a format spec to a known MessageFormat. Accepts a few friendly * aliases ("block"/"blocks" → blockkit, "plain"/"txt" → text, "template"/"tmpl" @@ -596,6 +607,7 @@ export declare const __test__: { SLACK_SECTION_FIELDS_MAX: number; SLACK_HEADER_TEXT_MAX: number; parseEvents: typeof parseEvents; + primaryEvent: typeof primaryEvent; normalizeEvent: typeof normalizeEvent; parseFormat: typeof parseFormat; parseRoutes: typeof parseRoutes; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index 11693da..d1337ed 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index b8c988b..e0ed896 100644 --- a/dist/index.js +++ b/dist/index.js @@ -190,6 +190,19 @@ function parseEvents(spec) { .filter((e) => e !== null); return parsed.length > 0 ? new Set(parsed) : new Set(ALL_EVENTS); } +/** + * The header verb for a notification: the first selected event in + * {@link ALL_EVENTS} priority order, so `--on close,create` still reads as a + * create. {@link parseEvents} never returns an empty set, but a `Set` cannot + * carry non-emptiness in its type, so an empty selection falls back to + * `create` (the verb `--on` defaults to) instead of being asserted away. + * + * @param events - The selected events, normally from {@link parseEvents}. + * @returns The event whose template heads the message. + */ +function primaryEvent(events) { + return ALL_EVENTS.find((e) => events.has(e)) ?? "create"; +} // --------------------------------------------------------------------------- // Format parsing // --------------------------------------------------------------------------- @@ -1155,6 +1168,8 @@ function postToSlackOnce(webhookUrl, payload) { data += chunk.toString(); }); res.on("end", () => { + // A ClientRequest response always carries statusCode; the `undefined` + // in IncomingMessage's type exists only for server-side requests. const status = res.statusCode; if (status >= 200 && status < 300) { resolve(); @@ -1204,6 +1219,8 @@ async function postToSlack(webhookUrl, payload) { await sleep(slackRetryDelayMs(attempt, retryAfterMs)); } } + // The loop runs at least once, and postToSlackOnce rejects only with a + // SlackHttpError or the Error node:https emits, so lastErr is an Error here. throw lastErr; } // --------------------------------------------------------------------------- @@ -1782,7 +1799,7 @@ export default defineExtension({ } // `--on` selects the message template. First event wins for the header verb. const events = parseEvents(readStrOption(options, "on") ?? "create"); - const event = ALL_EVENTS.find((e) => events.has(e)); + const event = primaryEvent(events); // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); const effectiveChannel = channelOverrides.get(event) ?? channel; @@ -1903,7 +1920,7 @@ export default defineExtension({ const format = parseFormat(readStrOption(options, "format") ?? process.env.PM_SLACK_FORMAT); const channel = (readStrOption(options, "channel") ?? process.env.PM_SLACK_CHANNEL?.trim()) || undefined; const events = parseEvents(readStrOption(options, "on") ?? "create"); - const event = ALL_EVENTS.find((e) => events.has(e)); + const event = primaryEvent(events); // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); const effectiveChannel = channelOverrides.get(event) ?? channel; @@ -2058,6 +2075,7 @@ export const __test__ = { SLACK_SECTION_FIELDS_MAX, SLACK_HEADER_TEXT_MAX, parseEvents, + primaryEvent, normalizeEvent, parseFormat, parseRoutes, diff --git a/dist/index.js.map b/dist/index.js.map index bcf000b..9ccd881 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/index.ts b/index.ts index ad3a388..62408d8 100644 --- a/index.ts +++ b/index.ts @@ -273,6 +273,20 @@ function parseEvents(spec: string | undefined): Set { return parsed.length > 0 ? new Set(parsed) : new Set(ALL_EVENTS); } +/** + * The header verb for a notification: the first selected event in + * {@link ALL_EVENTS} priority order, so `--on close,create` still reads as a + * create. {@link parseEvents} never returns an empty set, but a `Set` cannot + * carry non-emptiness in its type, so an empty selection falls back to + * `create` (the verb `--on` defaults to) instead of being asserted away. + * + * @param events - The selected events, normally from {@link parseEvents}. + * @returns The event whose template heads the message. + */ +function primaryEvent(events: ReadonlySet): EventKind { + return ALL_EVENTS.find((e) => events.has(e)) ?? "create"; +} + // --------------------------------------------------------------------------- // Format parsing // --------------------------------------------------------------------------- @@ -1329,6 +1343,8 @@ function postToSlackOnce(webhookUrl: string, payload: SlackPayload): Promise { + // A ClientRequest response always carries statusCode; the `undefined` + // in IncomingMessage's type exists only for server-side requests. const status = res.statusCode as number; if (status >= 200 && status < 300) { resolve(); @@ -1383,6 +1399,8 @@ async function postToSlack(webhookUrl: string, payload: SlackPayload): Promise events.has(e)) as EventKind; + const event = primaryEvent(events); // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); @@ -2198,7 +2216,7 @@ export default defineExtension({ const channel = (readStrOption(options, "channel") ?? process.env.PM_SLACK_CHANNEL?.trim()) || undefined; const events = parseEvents(readStrOption(options, "on") ?? "create"); - const event: EventKind = ALL_EVENTS.find((e) => events.has(e)) as EventKind; + const event = primaryEvent(events); // --channel-override: redirect specific event types to different channels. const channelOverrides = parseChannelOverride(readStrOption(options, "channel-override")); @@ -2375,6 +2393,7 @@ export const __test__ = { SLACK_SECTION_FIELDS_MAX, SLACK_HEADER_TEXT_MAX, parseEvents, + primaryEvent, normalizeEvent, parseFormat, parseRoutes, diff --git a/test/coverage.test.ts b/test/coverage.test.ts index eff700a..b11608a 100644 --- a/test/coverage.test.ts +++ b/test/coverage.test.ts @@ -36,6 +36,7 @@ const { buildDigestBlockKit, aggregateDigest, parseEvents, + primaryEvent, parseFormat, parseRoutes, parseFilter, @@ -2423,3 +2424,10 @@ test("postToSlackOnce: https protocol uses https.request and port 443 default", }, ); }); + +test("primaryEvent: first selected event in ALL_EVENTS priority order, create when nothing is selected", () => { + assert.equal(primaryEvent(new Set(["close", "create"] as const)), "create"); + assert.equal(primaryEvent(new Set(["reopen", "block"] as const)), "block"); + assert.equal(primaryEvent(new Set()), "create"); + assert.equal(primaryEvent(parseEvents("nonsense")), "create"); +}); From 645d780f6fda8790930f857da4209f35cf4553fe Mon Sep 17 00:00:00 2001 From: SteveBot <1153461+unbraind@users.noreply.github.com> Date: Fri, 18 Sep 2026 07:02:05 +0200 Subject: [PATCH 5/5] Fail the default-port HTTPS test at name resolution, not on whatever holds port 443 The test drove https://localhost/hook to cover the default-port and https.request branches, and relied on nothing listening on local port 443. A proxy or dev server there would change the outcome or hit the 10-second timeout. The host now uses the RFC 6761 .invalid TLD, which can never resolve, so the transport error is deterministic on every machine. --- test/coverage.test.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/coverage.test.ts b/test/coverage.test.ts index b11608a..2932c76 100644 --- a/test/coverage.test.ts +++ b/test/coverage.test.ts @@ -2413,10 +2413,11 @@ test("slack test: human mode with non-matching filter shows [FILTERED OUT]", asy test("postToSlackOnce: https protocol uses https.request and port 443 default", async () => { // An https URL with no explicit port triggers the parsed.port falsy branch - // (defaults to 443) and the https.request branch. The connection to - // localhost:443 will fail (nothing is listening), so the error handler fires. + // (defaults to 443) and the https.request branch. The host uses the RFC 6761 + // `.invalid` TLD, which can never resolve, so the request fails at name + // resolution whatever is (or is not) listening on this machine's port 443. await assert.rejects( - postToSlackOnce("https://localhost/hook", { text: "hi" }), + postToSlackOnce("https://pm-slack-test.invalid/hook", { text: "hi" }), (err: unknown) => { assert.ok(err instanceof Error); assert.match((err as Error).message, /Slack webhook request failed/);