@evomap/evolver-core 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/algo/antiDistill.js +1 -167
  2. package/dist/algo/bans.js +1 -33
  3. package/dist/algo/candidateAssembly.js +1 -273
  4. package/dist/algo/capabilityCandidates.js +1 -146
  5. package/dist/algo/confidence.js +1 -196
  6. package/dist/algo/conversationSniffer.js +1 -149
  7. package/dist/algo/cycleEngine.js +1 -625
  8. package/dist/algo/cycleFailureClassifier.js +1 -112
  9. package/dist/algo/epigenetics.js +1 -41
  10. package/dist/algo/evolutionEvent.js +1 -24
  11. package/dist/algo/exploration.js +1 -68
  12. package/dist/algo/geneHealth.js +1 -17
  13. package/dist/algo/geneIntake.js +1 -128
  14. package/dist/algo/genePromotion.js +1 -53
  15. package/dist/algo/geneSelection.js +1 -546
  16. package/dist/algo/index.js +1 -22
  17. package/dist/algo/memoryGraph.js +1 -86
  18. package/dist/algo/mutation.js +1 -22
  19. package/dist/algo/orchestrator.js +1 -87
  20. package/dist/algo/publishEligibility.js +1 -52
  21. package/dist/algo/solidify.js +1 -63
  22. package/dist/algo/strategyPresets.js +1 -61
  23. package/dist/algo/ucb1.js +1 -156
  24. package/dist/benchmark/antiGeneBenchmark.js +1 -252
  25. package/dist/benchmark/antiGeneImpact.js +1 -34
  26. package/dist/benchmark/antiGeneRollout.js +1 -269
  27. package/dist/benchmark/benchmark.js +1 -26
  28. package/dist/benchmark/evolutionThesisSolver.js +1 -41
  29. package/dist/benchmark/index.js +1 -7
  30. package/dist/benchmark/selectionFlatAbstention.js +1 -481
  31. package/dist/benchmark/thesis.js +1 -150
  32. package/dist/benchmark/triggerShift.js +1 -106
  33. package/dist/cycle/cycleTimeline.js +1 -74
  34. package/dist/cycle/index.js +1 -2
  35. package/dist/cycle/stateMachine.js +1 -25
  36. package/dist/hub/agentDirectory.js +1 -104
  37. package/dist/hub/assetCallLog.js +1 -195
  38. package/dist/hub/bindings.js +1 -121
  39. package/dist/hub/capability.js +1 -1
  40. package/dist/hub/conversationDistiller.js +1 -264
  41. package/dist/hub/fake.js +1 -70
  42. package/dist/hub/hubReview.js +1 -106
  43. package/dist/hub/index.js +1 -11
  44. package/dist/hub/ingest.js +1 -15
  45. package/dist/hub/questionGenerator.js +1 -408
  46. package/dist/hub/reuseDecision.js +1 -127
  47. package/dist/hub/sanitize.js +1 -322
  48. package/dist/material/boundary.js +1 -14
  49. package/dist/material/consumer.js +1 -55
  50. package/dist/material/emit.js +1 -52
  51. package/dist/material/factory.js +1 -25
  52. package/dist/material/index.js +1 -9
  53. package/dist/material/materialArchive.js +1 -466
  54. package/dist/material/materialStore.js +1 -69
  55. package/dist/material/sampling.js +1 -39
  56. package/dist/material/sources.js +1 -33
  57. package/dist/material/watermark.js +1 -76
  58. package/dist/personality/drift.js +1 -106
  59. package/dist/personality/events.js +1 -37
  60. package/dist/personality/evolveOps.js +1 -93
  61. package/dist/personality/index.js +1 -11
  62. package/dist/personality/mutate.js +1 -39
  63. package/dist/personality/pivot.js +1 -22
  64. package/dist/personality/prompt.js +1 -62
  65. package/dist/personality/riskGate.js +1 -80
  66. package/dist/personality/schema.js +1 -119
  67. package/dist/personality/select.js +1 -71
  68. package/dist/personality/stats.js +1 -82
  69. package/dist/personality/store.js +1 -92
  70. package/dist/schema/common.js +1 -17
  71. package/dist/schema/evolutionGraph.js +1 -187
  72. package/dist/schema/index.js +1 -6
  73. package/dist/schema/material.js +1 -50
  74. package/dist/schema/problem.js +1 -45
  75. package/dist/schema/proofOfWork.js +1 -9
  76. package/dist/schema/signal.js +1 -19
  77. package/dist/signals/curriculum.js +1 -202
  78. package/dist/signals/cycleHistoryFromEvents.js +1 -105
  79. package/dist/signals/expand.js +1 -293
  80. package/dist/signals/extractor.js +1 -82
  81. package/dist/signals/index.js +1 -8
  82. package/dist/signals/metaSignals.js +1 -200
  83. package/dist/signals/signalGate.js +1 -40
  84. package/dist/signals/taskDomain.js +1 -43
  85. package/dist/signals/traceSignals.js +1 -123
  86. package/dist/strategy/constraintAblation.js +1 -2820
  87. package/dist/strategy/constraintAblationPredicates.js +1 -339
  88. package/dist/strategy/experiment.js +1 -63
  89. package/dist/strategy/index.js +1 -3
  90. package/dist/strategy/strategyPoint.js +1 -23
  91. package/package.json +1 -1
@@ -1,196 +1 @@
1
- // Preferred-gene confidence edges (positive cross-cycle learning, ported from v1 src/gep/memoryGraph.js,
2
- // adapted to v2's derive-from-events model). The negative side (ban / epigenetic penalty) is already ported;
3
- // this is the missing POSITIVE half: a gene that keeps succeeding under a given signal fingerprint should be
4
- // nudged UP in ranking for that fingerprint — without ever resurrecting a gene that a hard gate excluded.
5
- //
6
- // Sidecar principle (same as epigenetics.ts): edges are DERIVED from the append-only root_events log at
7
- // selection time. We never mutate an asset, never add an asset field, never persist a separate store — so
8
- // asset_id stays stable and the edges can be replayed byte-for-byte from the events alone.
9
- //
10
- // Edge key: (signalFingerprint, geneId). Edge value: { successCount, failCount, inertCount, lastAt, confidence },
11
- // where confidence is a Laplace-smoothed, half-life-decayed expected success rate in [0, 1] (port of v1
12
- // edgeExpectedSuccess). The fingerprint is a stable, deterministic digest of the signal set (port of v1
13
- // computeSignalKey): sorted, de-duplicated, normalized — so the same signals always map to the same edge.
14
- //
15
- // This file also carries the negative #195 half of the same scoring data: an `inert` (zero-work) outcome
16
- // builds no confidence (tallied apart as inertCount), and `inertBannedGeneIds` bans a gene stuck producing only
17
- // inert cycles on a signal — so a sole-matching do-nothing gene can no longer dominate `--loop` selection.
18
- //
19
- // Purity: no Date.now(), no Math.random(). Time enters only through event timestamps and an injected `now`.
20
- import { createHash } from 'node:crypto';
21
- /** Default half-life for confidence decay (days). Aligned with v1 edgeExpectedSuccess half_life_days=30. */
22
- export const CONFIDENCE_HALF_LIFE_DAYS = 30;
23
- const MS_PER_DAY = 24 * 60 * 60 * 1000;
24
- /**
25
- * Composite map key for an edge: `<fingerprint>::<geneId>`. The fingerprint is fixed-length hex (no `:`), so
26
- * `::` is an unambiguous separator. Exported so callers/tests look edges up the same way they are stored,
27
- * instead of hand-building the key string.
28
- */
29
- export function confidenceEdgeKey(signalFingerprint, geneId) {
30
- return `${signalFingerprint}::${geneId}`;
31
- }
32
- /**
33
- * Stable signal fingerprint (port of v1 computeSignalKey): normalize → de-duplicate → sort → digest.
34
- * Deterministic and order-independent, so the same signal SET always yields the same fingerprint.
35
- * An empty set maps to a fixed sentinel digest so "no signals" is still a well-defined edge key.
36
- */
37
- export function signalFingerprint(signals) {
38
- const norm = (Array.isArray(signals) ? signals : [])
39
- .map((s) => String(s ?? '').trim())
40
- .filter((s) => s.length > 0);
41
- const uniqSorted = Array.from(new Set(norm)).sort();
42
- const canonical = uniqSorted.length > 0 ? uniqSorted.join('|') : '(none)';
43
- // Short, collision-resistant, deterministic. 16 hex chars (64 bits) is ample for an edge key.
44
- return createHash('sha256').update(canonical, 'utf8').digest('hex').slice(0, 16);
45
- }
46
- /**
47
- * Laplace-smoothed expected success rate (port of v1 edgeExpectedSuccess, smoothing only — decay is separate).
48
- * p = (success + 1) / (success + fail + 2). With zero evidence this is 0.5 (a neutral prior), not 0 or 1.
49
- */
50
- function laplaceSuccessRate(success, fail) {
51
- const total = success + fail;
52
- return (success + 1) / (total + 2);
53
- }
54
- /**
55
- * Half-life decay weight in (0,1] (port of v1 decayWeight): 0.5^(ageDays / halfLife).
56
- * Age is measured from the edge's lastAt to `now`. Future/zero/negative age → no decay (weight 1).
57
- */
58
- export function decayWeight(lastAt, now, halfLifeDays = CONFIDENCE_HALF_LIFE_DAYS) {
59
- if (!Number.isFinite(halfLifeDays) || halfLifeDays <= 0)
60
- return 1;
61
- if (!Number.isFinite(lastAt) || !Number.isFinite(now))
62
- return 1;
63
- const ageDays = (now - lastAt) / MS_PER_DAY;
64
- if (!Number.isFinite(ageDays) || ageDays <= 0)
65
- return 1;
66
- return Math.pow(0.5, ageDays / halfLifeDays);
67
- }
68
- /**
69
- * Derive confidence edges from a flat list of per-(fingerprint, gene) outcome observations.
70
- * Pure and deterministic: the same observations (in any order — we track the max `at` for lastAt) always
71
- * produce the same edges. This is the replay primitive — feed it the observations re-extracted from
72
- * root_events and you get byte-identical edges back.
73
- */
74
- export function deriveConfidenceEdges(observations) {
75
- const map = new Map();
76
- for (const o of observations) {
77
- if (!o || !o.geneId || !o.signalFingerprint)
78
- continue;
79
- if (o.status !== 'success' && o.status !== 'failed' && o.status !== 'inert')
80
- continue;
81
- const k = confidenceEdgeKey(o.signalFingerprint, o.geneId);
82
- const cur = map.get(k) ?? {
83
- signalFingerprint: o.signalFingerprint,
84
- geneId: o.geneId,
85
- successCount: 0,
86
- failCount: 0,
87
- inertCount: 0,
88
- lastAt: 0,
89
- baseConfidence: 0,
90
- };
91
- // #195: inert (zero-work) outcomes are tallied apart — they must NOT raise success/fail counts, so they
92
- // build no positive confidence. They still advance lastAt (the gene WAS exercised; freshness is real).
93
- if (o.status === 'success')
94
- cur.successCount += 1;
95
- else if (o.status === 'failed')
96
- cur.failCount += 1;
97
- else
98
- cur.inertCount += 1;
99
- const at = Number.isFinite(o.at) ? o.at : 0;
100
- if (at > cur.lastAt)
101
- cur.lastAt = at;
102
- map.set(k, cur);
103
- }
104
- // Finalize baseConfidence once counts are known. Inert outcomes are excluded from the smoothing inputs, so an
105
- // all-inert edge has success=0/fail=0 → the neutral 0.5 prior (no climb toward 1.0). Order-independent: the
106
- // result is a pure function of the observation SET (counts + max `at`), never their sequence.
107
- for (const edge of map.values()) {
108
- edge.baseConfidence = laplaceSuccessRate(edge.successCount, edge.failCount);
109
- }
110
- return map;
111
- }
112
- /**
113
- * Query the confidence of `geneId` under `signalFingerprint` at time `now`, in [0,1].
114
- * = baseConfidence (Laplace-smoothed success rate) × half-life decay weight.
115
- * Returns 0 when there is no edge (no history) so a never-tried gene gets no positive nudge —
116
- * absence of evidence is not evidence of success — and 0 for a purely-inert edge (only zero-work cycles),
117
- * so a do-nothing gene gets the same zero nudge as a never-tried one (#195).
118
- */
119
- export function confidenceFor(edges, signalFingerprint, geneId, now, halfLifeDays = CONFIDENCE_HALF_LIFE_DAYS) {
120
- const edge = edges.get(confidenceEdgeKey(signalFingerprint, geneId));
121
- if (!edge)
122
- return 0;
123
- // #195: a purely-inert edge (only zero-work cycles — no real success or failure) carries no positive evidence,
124
- // so it must give the SAME zero nudge as a never-tried gene, not the neutral-prior 0.5 (which would leak a
125
- // +CONFIDENCE_WEIGHT×0.5 boost and let a do-nothing gene out-rank an equal-health fresh candidate before the
126
- // inert ban trips). Mirrors v1's hasPositiveEvidence (success>0) gate. A fail-only edge keeps its small Laplace
127
- // nudge unchanged — that is pre-existing v2 behavior, out of #195's scope.
128
- if (edge.successCount === 0 && edge.failCount === 0)
129
- return 0;
130
- const w = decayWeight(edge.lastAt, now, halfLifeDays);
131
- const c = edge.baseConfidence * w;
132
- return c < 0 ? 0 : c > 1 ? 1 : c;
133
- }
134
- /**
135
- * Consecutive inert (zero-work) outcomes on a (fingerprint, gene) edge after which a gene with NO real success
136
- * on that signal is banned, so `--loop` selection explores instead of re-running a do-nothing gene (#195).
137
- * Port of v1 `GENE_INERT_BAN_STREAK` (env `EVOLVER_GENE_INERT_BAN_STREAK`, default 8); kept an inline const to
138
- * match v2's algo-tunable convention (BAN_THRESHOLD / MIN_ENV_ATTEMPTS), not env-driven.
139
- */
140
- export const GENE_INERT_BAN_STREAK = 8;
141
- /**
142
- * Observation window (in raw events) over which the inert ban is derived — deliberately MUCH wider than the
143
- * small recency window used for confidence SCORING. A banned gene runs as `ad-hoc` and accrues no new
144
- * observation for itself, so its trailing inert run must be recomputed from a history wide enough that
145
- * intervening innovate/ad-hoc cycles cannot evict it — and cannot evict an earlier real success that exempts
146
- * the gene (`successCount > 0`). With a small window the run/exemption age out purely from unrelated cycles, so
147
- * the ban flaps: the do-nothing gene resurfaces and the productive gene gets falsely banned (#195 regression).
148
- * ~14000 events ≈ 2000 cycles, mirroring v1's multi-hundred-cycle memory-graph read horizon: far past any
149
- * realistic flap window, yet still bounded (a long-idle gene's stale success eventually ages out, matching v1).
150
- * `EventStore.tail()` reads the entire log regardless of window size, so a larger window costs no extra I/O.
151
- */
152
- export const INERT_BAN_OBSERVATION_WINDOW = 14_000;
153
- /**
154
- * Trailing consecutive-inert run per (fingerprint, gene), keyed by `confidenceEdgeKey`. Unlike
155
- * `deriveConfidenceEdges` (a pure function of the observation SET), this is deliberately order-DEPENDENT: it
156
- * counts inert outcomes from the most recent backward and ANY real success/failure resets the run to 0 — so a
157
- * gene that ever does real work is never punished for older idle cycles. Input MUST be chronological
158
- * (oldest→newest, i.e. the order `ingestor.tail` yields); the trailing run is the value left after the final
159
- * observation per edge.
160
- */
161
- export function trailingInertByEdge(observations) {
162
- const run = new Map();
163
- for (const o of observations) {
164
- if (!o || !o.geneId || !o.signalFingerprint)
165
- continue;
166
- const k = confidenceEdgeKey(o.signalFingerprint, o.geneId);
167
- if (o.status === 'inert')
168
- run.set(k, (run.get(k) ?? 0) + 1);
169
- else if (o.status === 'success' || o.status === 'failed')
170
- run.set(k, 0); // any real outcome breaks the run
171
- }
172
- return run;
173
- }
174
- /**
175
- * Gene ids to ban for the CURRENT signal fingerprint because they are stuck producing inert (zero-work)
176
- * cycles (#195). A gene is banned iff, on this fingerprint's edge, its trailing inert run ≥ `streak` AND it has
177
- * ZERO real success on this signal (double guard: the consecutive run is reset by any real outcome, and a gene
178
- * that ever truly succeeded here keeps successCount > 0). Banning a sole-matching inert gene lets selection
179
- * fall through to mutation (selected:null → fresh gene), restoring diversity — the failure-streak ban never
180
- * fires on these because nothing "fails". Per-signal, mirroring v1's per-signal-key ban: a gene idle on THIS
181
- * signal can still be tried on others.
182
- */
183
- export function inertBannedGeneIds(edges, observations, fingerprint, streak = GENE_INERT_BAN_STREAK) {
184
- const trailing = trailingInertByEdge(observations);
185
- const banned = new Set();
186
- for (const edge of edges.values()) {
187
- if (edge.signalFingerprint !== fingerprint)
188
- continue;
189
- if (edge.successCount > 0)
190
- continue; // ever did real work here → never banned for idle cycles
191
- const k = confidenceEdgeKey(fingerprint, edge.geneId);
192
- if ((trailing.get(k) ?? 0) >= streak)
193
- banned.add(edge.geneId);
194
- }
195
- return banned;
196
- }
1
+ function _0x1963(_0x2b57e4,_0x5a6d7f){_0x2b57e4=_0x2b57e4-(-0xb*-0x1a3+-0x1351+-0x2de*-0x1);const _0x32877a=_0x563e();let _0x514526=_0x32877a[_0x2b57e4];if(_0x1963['\x69\x66\x52\x5a\x41\x75']===undefined){var _0x2932de=function(_0x54f077){const _0x580316='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x35436e='',_0x53b85f='';for(let _0x4f2440=-0x1*0x25f+0x71d*-0x4+0x1ed3,_0x240f70,_0x55f6f0,_0x57cba5=-0xe6d+0x73f+0x72e;_0x55f6f0=_0x54f077['\x63\x68\x61\x72\x41\x74'](_0x57cba5++);~_0x55f6f0&&(_0x240f70=_0x4f2440%(-0x1369*-0x2+-0xb9+0x2615*-0x1)?_0x240f70*(-0xf4d+0x475*-0x5+-0x12eb*-0x2)+_0x55f6f0:_0x55f6f0,_0x4f2440++%(-0x1942+-0x1*0x110d+0x2a53))?_0x35436e+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x4f6+-0x67*0x3+-0x1*0x2c2&_0x240f70>>(-(0x606+-0x30*0x8+-0x484)*_0x4f2440&-0x1*0x2345+-0x1011*-0x1+-0x6b*-0x2e)):0x1*0x614+0x1d*-0x156+0x2*0x1055){_0x55f6f0=_0x580316['\x69\x6e\x64\x65\x78\x4f\x66'](_0x55f6f0);}for(let _0x2e9dd=-0x1049+0x1190+-0x1*0x147,_0x1a1310=_0x35436e['\x6c\x65\x6e\x67\x74\x68'];_0x2e9dd<_0x1a1310;_0x2e9dd++){_0x53b85f+='\x25'+('\x30\x30'+_0x35436e['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2e9dd)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x9d*0xb+0xc2c+-0x3*0x649))['\x73\x6c\x69\x63\x65'](-(0xcdb+-0x4f7+-0x7e2));}return decodeURIComponent(_0x53b85f);};const _0x5a44ac=function(_0x3a16cd,_0x324135){let _0x51427d=[],_0x4d559e=0x2d1*0x7+-0x1dd5+0xa1e,_0x4b97d6,_0x2f6e31='';_0x3a16cd=_0x2932de(_0x3a16cd);let _0x47016b;for(_0x47016b=0x847*-0x1+0x1763+-0x4*0x3c7;_0x47016b<-0xa1*0xb+-0x1*0x264e+-0x2e39*-0x1;_0x47016b++){_0x51427d[_0x47016b]=_0x47016b;}for(_0x47016b=-0x730+-0xf4c+0x167c;_0x47016b<0x1832+0xc2e+0x236*-0x10;_0x47016b++){_0x4d559e=(_0x4d559e+_0x51427d[_0x47016b]+_0x324135['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x47016b%_0x324135['\x6c\x65\x6e\x67\x74\x68']))%(-0x3f5+0x1913+0x406*-0x5),_0x4b97d6=_0x51427d[_0x47016b],_0x51427d[_0x47016b]=_0x51427d[_0x4d559e],_0x51427d[_0x4d559e]=_0x4b97d6;}_0x47016b=0x1014+0x203e+0x1*-0x3052,_0x4d559e=-0x68f+0x28c+-0x4f*-0xd;for(let _0x2b5018=0x74*0x12+0x2333+-0xb*0x3f1;_0x2b5018<_0x3a16cd['\x6c\x65\x6e\x67\x74\x68'];_0x2b5018++){_0x47016b=(_0x47016b+(-0x71a+0x2366+-0x1*0x1c4b))%(0x1482+0x572+-0x18f4),_0x4d559e=(_0x4d559e+_0x51427d[_0x47016b])%(-0x7f*-0x1a+0x1f75+-0x2b5b),_0x4b97d6=_0x51427d[_0x47016b],_0x51427d[_0x47016b]=_0x51427d[_0x4d559e],_0x51427d[_0x4d559e]=_0x4b97d6,_0x2f6e31+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x3a16cd['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2b5018)^_0x51427d[(_0x51427d[_0x47016b]+_0x51427d[_0x4d559e])%(-0x1b59*0x1+0x1*0x144f+0x80a)]);}return _0x2f6e31;};_0x1963['\x68\x44\x6d\x72\x57\x6f']=_0x5a44ac,_0x1963['\x70\x69\x53\x65\x52\x75']={},_0x1963['\x69\x66\x52\x5a\x41\x75']=!![];}const _0x323d66=_0x32877a[0x17ca+0x2427+-0x9*0x6a9],_0x53e5b7=_0x2b57e4+_0x323d66,_0x5130a1=_0x1963['\x70\x69\x53\x65\x52\x75'][_0x53e5b7];return!_0x5130a1?(_0x1963['\x56\x47\x51\x50\x6f\x49']===undefined&&(_0x1963['\x56\x47\x51\x50\x6f\x49']=!![]),_0x514526=_0x1963['\x68\x44\x6d\x72\x57\x6f'](_0x514526,_0x5a6d7f),_0x1963['\x70\x69\x53\x65\x52\x75'][_0x53e5b7]=_0x514526):_0x514526=_0x5130a1,_0x514526;}function _0x563e(){const _0x4ede4b=['\x57\x35\x64\x63\x4c\x53\x6b\x6a\x57\x51\x64\x64\x50\x6d\x6b\x75\x6f\x4c\x56\x63\x4a\x57','\x57\x52\x68\x64\x4e\x74\x4a\x64\x53\x53\x6f\x37\x57\x51\x78\x63\x47\x61','\x57\x37\x31\x6d\x57\x34\x38','\x57\x4f\x31\x63\x77\x6d\x6b\x56\x57\x35\x4e\x63\x4d\x6d\x6b\x48\x57\x37\x33\x64\x55\x57','\x74\x6d\x6f\x49\x79\x38\x6f\x73\x57\x4f\x6e\x4c\x64\x78\x4b\x43\x62\x63\x44\x6d\x57\x51\x57','\x77\x30\x4e\x63\x55\x38\x6f\x68\x43\x38\x6b\x70\x43\x6d\x6f\x4c\x57\x52\x43\x6d\x57\x51\x74\x64\x52\x32\x4b','\x78\x59\x56\x63\x49\x71','\x66\x62\x75\x35\x57\x4f\x78\x63\x48\x61','\x57\x37\x52\x63\x4e\x4d\x56\x63\x50\x43\x6b\x54\x57\x36\x78\x64\x47\x6d\x6b\x38\x57\x36\x37\x64\x4e\x38\x6b\x71\x41\x76\x4f','\x57\x34\x42\x64\x4a\x53\x6b\x49','\x57\x4f\x6c\x63\x4b\x43\x6b\x7a\x64\x53\x6b\x48\x64\x57','\x61\x76\x56\x64\x50\x43\x6f\x4c\x57\x35\x50\x61','\x62\x38\x6f\x2b\x57\x4f\x6d\x35\x57\x35\x31\x48\x57\x52\x74\x63\x4c\x57','\x57\x50\x33\x63\x47\x43\x6b\x75\x63\x53\x6b\x57\x66\x63\x69\x6b','\x67\x57\x6d\x51\x57\x36\x74\x63\x50\x6d\x6f\x53','\x70\x43\x6f\x4a\x57\x37\x52\x63\x4d\x4d\x64\x64\x4d\x61','\x57\x50\x42\x64\x54\x4d\x4e\x63\x52\x38\x6f\x47\x57\x4f\x38','\x57\x51\x70\x64\x50\x77\x56\x63\x4b\x58\x65\x78\x66\x43\x6f\x43','\x44\x57\x44\x50\x57\x37\x7a\x39\x57\x4f\x66\x37\x6f\x57','\x57\x50\x74\x64\x4e\x53\x6b\x6f','\x74\x30\x4c\x4f\x57\x50\x38','\x57\x37\x2f\x63\x54\x4b\x52\x63\x54\x4a\x71\x6b\x66\x38\x6f\x30','\x57\x36\x5a\x64\x4f\x67\x30','\x76\x75\x6a\x2f\x57\x4f\x75\x6e\x42\x57','\x57\x4f\x6c\x64\x47\x43\x6f\x78\x57\x4f\x37\x64\x4e\x38\x6b\x61','\x6f\x49\x6a\x57\x68\x6d\x6f\x2f\x68\x30\x66\x46','\x44\x38\x6b\x34\x65\x43\x6b\x6a\x57\x4f\x48\x76','\x63\x58\x2f\x64\x51\x47','\x57\x37\x6d\x46\x57\x52\x66\x47\x57\x35\x6d\x38','\x57\x35\x6c\x64\x4a\x53\x6b\x49','\x63\x6d\x6f\x44\x6e\x53\x6f\x4b\x57\x50\x34\x6c\x57\x4f\x34\x6f','\x57\x52\x57\x44\x57\x37\x2f\x64\x48\x53\x6f\x61\x57\x52\x33\x63\x49\x6d\x6f\x67','\x57\x4f\x4e\x63\x4b\x43\x6b\x7a\x64\x6d\x6b\x43\x61\x57','\x57\x51\x69\x42\x79\x78\x61\x76\x41\x6d\x6f\x31\x71\x76\x57\x41\x43\x73\x71','\x57\x52\x66\x7a\x57\x36\x65\x53\x57\x50\x62\x2b\x75\x32\x70\x63\x53\x38\x6b\x39\x57\x35\x54\x7a\x71\x57','\x57\x35\x5a\x64\x48\x43\x6b\x5a\x66\x4d\x79','\x57\x50\x75\x54\x73\x6d\x6f\x47','\x70\x74\x7a\x74\x62\x38\x6f\x48\x62\x66\x58\x75','\x57\x50\x42\x63\x49\x6d\x6f\x41','\x74\x6d\x6f\x50\x42\x53\x6f\x76\x57\x4f\x44\x49\x63\x78\x43\x70\x64\x64\x54\x65\x57\x51\x4b','\x57\x52\x37\x64\x51\x32\x4e\x63\x4a\x57\x61\x6a\x6f\x53\x6f\x42','\x6c\x53\x6f\x45\x6b\x43\x6f\x61','\x57\x51\x78\x64\x4a\x74\x78\x64\x54\x6d\x6f\x78\x57\x52\x69','\x57\x35\x61\x48\x6e\x47\x48\x53\x79\x71','\x68\x57\x6d\x57\x57\x36\x33\x63\x47\x53\x6f\x4e\x68\x71\x79','\x57\x52\x47\x59\x57\x50\x61\x38\x74\x77\x65','\x57\x51\x37\x64\x54\x53\x6f\x35\x57\x34\x34\x74\x44\x71','\x57\x52\x30\x4b\x57\x52\x47\x59\x76\x32\x61\x4a\x69\x57','\x57\x37\x6c\x64\x51\x68\x4f\x46\x6f\x53\x6b\x6f\x57\x35\x53\x6e','\x70\x31\x34\x76\x57\x51\x65\x47\x57\x36\x71','\x6c\x6d\x6b\x4a\x68\x43\x6b\x65\x57\x4f\x47\x70\x57\x34\x75','\x57\x37\x39\x66\x6e\x64\x54\x43\x69\x38\x6f\x42\x77\x61','\x6a\x6d\x6f\x33\x57\x37\x4a\x63\x4d\x57','\x6d\x6d\x6b\x4a\x65\x6d\x6b\x74','\x6b\x53\x6b\x4d\x67\x53\x6b\x67\x57\x50\x4b\x7a','\x57\x51\x43\x68\x74\x38\x6f\x62\x41\x43\x6b\x72','\x57\x4f\x4e\x63\x4b\x43\x6b\x64','\x57\x51\x52\x64\x50\x32\x64\x63\x48\x63\x47\x62','\x57\x4f\x46\x63\x4d\x53\x6b\x73\x67\x38\x6b\x48\x6a\x64\x34\x38','\x57\x34\x42\x64\x47\x53\x6b\x58\x63\x4e\x6d\x7a\x71\x6d\x6f\x77','\x45\x53\x6b\x57\x57\x51\x46\x64\x4c\x5a\x70\x63\x4d\x4c\x43\x41\x69\x67\x71\x78\x72\x59\x47','\x76\x47\x33\x64\x4b\x43\x6b\x7a\x57\x4f\x4f','\x57\x50\x78\x64\x4d\x53\x6b\x74\x64\x4a\x33\x63\x4d\x71','\x6f\x6d\x6b\x5a\x63\x47','\x66\x74\x71\x66\x57\x52\x74\x63\x4a\x48\x70\x63\x51\x4a\x43','\x57\x50\x66\x6a\x57\x37\x75\x7a\x71\x4c\x42\x64\x47\x53\x6b\x45','\x57\x37\x6c\x64\x54\x78\x57\x66\x6c\x53\x6b\x72','\x57\x37\x62\x7a\x65\x38\x6b\x62\x6e\x6d\x6f\x71\x72\x58\x70\x63\x48\x53\x6f\x47\x57\x37\x79\x6c\x57\x50\x6d','\x67\x53\x6f\x57\x57\x4f\x65\x4c\x57\x34\x58\x2f\x57\x50\x56\x63\x4b\x61','\x44\x48\x78\x64\x56\x53\x6b\x50\x57\x51\x4a\x64\x4d\x43\x6f\x45','\x57\x35\x53\x4c\x6b\x58\x4c\x4b\x43\x71','\x6c\x6d\x6f\x4e\x57\x37\x4a\x63\x49\x4b\x5a\x64\x4a\x57','\x57\x37\x61\x38\x57\x36\x4a\x63\x54\x53\x6f\x2f\x57\x36\x43','\x45\x43\x6f\x4e\x57\x4f\x56\x63\x56\x6d\x6f\x49\x57\x51\x75\x6b\x57\x51\x53','\x45\x53\x6b\x39\x57\x34\x52\x63\x49\x65\x33\x64\x52\x4a\x50\x36','\x57\x34\x38\x30\x6a\x61\x48\x79\x7a\x47','\x57\x36\x35\x33\x76\x32\x33\x63\x47\x53\x6f\x44','\x74\x4d\x37\x64\x52\x78\x7a\x56','\x6d\x6d\x6f\x64\x6b\x43\x6f\x64','\x79\x67\x47\x67\x74\x6d\x6b\x4f\x74\x33\x6a\x6e\x68\x53\x6f\x55\x65\x38\x6b\x74','\x57\x50\x2f\x64\x4d\x53\x6b\x6a\x66\x48\x4e\x63\x49\x71','\x57\x51\x74\x64\x49\x74\x6c\x64\x56\x43\x6f\x44\x57\x52\x4e\x63\x48\x53\x6b\x34','\x57\x4f\x46\x64\x4e\x66\x6e\x4c\x57\x52\x46\x64\x49\x49\x64\x63\x4d\x43\x6f\x58\x64\x53\x6f\x51\x64\x49\x65','\x6a\x6d\x6b\x44\x57\x51\x48\x77','\x57\x37\x6c\x64\x54\x68\x34\x73\x70\x53\x6b\x72\x57\x36\x34\x4e','\x57\x34\x44\x63\x57\x35\x78\x64\x4b\x38\x6f\x66','\x74\x49\x75\x65\x57\x50\x70\x63\x51\x4a\x74\x63\x55\x47','\x63\x65\x2f\x64\x4f\x53\x6f\x39','\x77\x59\x2f\x63\x47\x49\x43\x6c\x73\x57'];_0x563e=function(){return _0x4ede4b;};return _0x563e();}(function(_0x79964e,_0x41ae48){const _0x281a6f=_0x1963,_0x4545b1=_0x79964e();while(!![]){try{const _0x4f573a=-parseInt(_0x281a6f(0x1db,'\x6b\x35\x75\x76'))/(0x4e4*-0x4+0x1*-0x1499+0x282a)*(parseInt(_0x281a6f(0x1d5,'\x56\x6a\x75\x37'))/(-0x1*-0x1804+-0x993+-0xe6f))+parseInt(_0x281a6f(0x1dc,'\x78\x57\x52\x57'))/(0x1*-0x1f1b+-0xbd4*-0x1+0x6*0x337)+-parseInt(_0x281a6f(0x1d1,'\x49\x29\x36\x72'))/(0xbf7+-0x7*0x3c7+0xe7e)+-parseInt(_0x281a6f(0x1bb,'\x71\x6f\x6e\x5e'))/(-0x4c*-0x1+0x6a4+0xa1*-0xb)+-parseInt(_0x281a6f(0x194,'\x5d\x4e\x61\x40'))/(0x63*-0x23+-0x2418+-0x1*-0x31a7)*(parseInt(_0x281a6f(0x1ce,'\x39\x68\x78\x74'))/(-0x16ee+0x2*-0x1343+0x1*0x3d7b))+-parseInt(_0x281a6f(0x1a6,'\x78\x57\x52\x57'))/(0x1*-0x18d+-0x1*-0x1ec7+-0x1d32)+parseInt(_0x281a6f(0x1e0,'\x48\x70\x7a\x79'))/(-0x2*-0x1208+-0x156a+-0xe9d);if(_0x4f573a===_0x41ae48)break;else _0x4545b1['push'](_0x4545b1['shift']());}catch(_0x12d999){_0x4545b1['push'](_0x4545b1['shift']());}}}(_0x563e,-0x3b*-0xb26+-0x1f4e0+-0x318b*-0xf));import{createHash}from'\x6e\x6f\x64\x65\x3a\x63\x72\x79\x70\x74\x6f';export const CONFIDENCE_HALF_LIFE_DAYS=0x38*-0x78+-0xa68*-0x1+0xff6;const MS_PER_DAY=(0x1db+-0xba*-0x2+-0x337)*(0x270b*0x1+0x13f*-0x11+-0x11a0)*(0xdf8+-0x48*0x26+-0x30c)*(0x2*0xed7+-0x46c+-0x155a);export function confidenceEdgeKey(_0x49e728,_0x2842db){return _0x49e728+'\x3a\x3a'+_0x2842db;}export function signalFingerprint(_0x165753){const _0x2064c0=_0x1963,_0x1c3c8d=(Array[_0x2064c0(0x1c4,'\x78\x75\x75\x51')](_0x165753)?_0x165753:[])[_0x2064c0(0x195,'\x43\x67\x6f\x40')](_0x5bbe10=>String(_0x5bbe10??'')[_0x2064c0(0x1cd,'\x36\x6a\x66\x5a')]())[_0x2064c0(0x1b6,'\x43\x59\x33\x74')](_0x222841=>_0x222841[_0x2064c0(0x1ac,'\x5b\x28\x57\x73')]>0x20*-0xd8+0xce6+0xe1a),_0x2df33f=Array['\x66\x72\x6f\x6d'](new Set(_0x1c3c8d))[_0x2064c0(0x193,'\x72\x76\x67\x62')](),_0x3e6771=_0x2df33f[_0x2064c0(0x1e2,'\x74\x6e\x33\x29')]>0x201b*-0x1+-0x1b59+0x4*0xedd?_0x2df33f[_0x2064c0(0x1a8,'\x36\x6a\x66\x5a')]('\x7c'):_0x2064c0(0x199,'\x43\x66\x6b\x59');return createHash('\x73\x68\x61\x32\x35\x36')[_0x2064c0(0x1b5,'\x43\x66\x6b\x59')](_0x3e6771,_0x2064c0(0x1d2,'\x71\x41\x55\x58'))[_0x2064c0(0x18f,'\x48\x4d\x58\x43')](_0x2064c0(0x1de,'\x45\x56\x5d\x28'))[_0x2064c0(0x1cc,'\x59\x55\x45\x32')](-0x1ab9*0x1+0x17ca+-0x1*-0x2ef,0x38f*-0x1+0x2304+0x37d*-0x9);}function laplaceSuccessRate(_0xba0e04,_0x41abab){const _0x10455f=_0xba0e04+_0x41abab;return(_0xba0e04+(0x1b73+0x1*0x22e3+-0x3e55))/(_0x10455f+(0x19c5*0x1+-0x987+-0x103c));}export function decayWeight(_0x5653a1,_0x15b4bb,_0x6550f6=CONFIDENCE_HALF_LIFE_DAYS){const _0x2e1acc=_0x1963;if(!Number[_0x2e1acc(0x198,'\x39\x68\x78\x74')](_0x6550f6)||_0x6550f6<=0x2d7*0x3+-0x1*-0x21a+-0x1*0xa9f)return 0x4d5*-0x6+0xc12+-0x10ed*-0x1;if(!Number[_0x2e1acc(0x19d,'\x43\x26\x76\x45')](_0x5653a1)||!Number[_0x2e1acc(0x1bf,'\x56\x6a\x75\x37')](_0x15b4bb))return 0x82*0x8+-0x12a8+-0x25*-0x65;const _0x4b8f15=(_0x15b4bb-_0x5653a1)/MS_PER_DAY;if(!Number[_0x2e1acc(0x1ae,'\x5b\x28\x57\x73')](_0x4b8f15)||_0x4b8f15<=-0x10b6+-0x26e3+0x3799)return 0x2095+0x21af+-0x4243;return Math['\x70\x6f\x77'](-0x10cf*0x1+0x25dc+-0x150d+0.5,_0x4b8f15/_0x6550f6);}export function deriveConfidenceEdges(_0x4681f4){const _0x47bca3=_0x1963,_0x481aba=new Map();for(const _0x1066f1 of _0x4681f4){if(!_0x1066f1||!_0x1066f1[_0x47bca3(0x1c6,'\x71\x6f\x6e\x5e')]||!_0x1066f1[_0x47bca3(0x1e4,'\x6d\x4a\x7a\x70')+_0x47bca3(0x1c3,'\x6d\x4a\x7a\x70')+'\x74'])continue;if(_0x1066f1[_0x47bca3(0x1ad,'\x70\x76\x6d\x52')]!=='\x73\x75\x63\x63\x65\x73\x73'&&_0x1066f1[_0x47bca3(0x1ca,'\x23\x4d\x75\x70')]!==_0x47bca3(0x1bd,'\x48\x2a\x34\x45')&&_0x1066f1['\x73\x74\x61\x74\x75\x73']!==_0x47bca3(0x1a2,'\x6a\x5a\x52\x73'))continue;const _0x3d4b74=confidenceEdgeKey(_0x1066f1[_0x47bca3(0x1c8,'\x6d\x52\x6d\x48')+'\x6e\x67\x65\x72\x70\x72\x69\x6e'+'\x74'],_0x1066f1[_0x47bca3(0x19f,'\x74\x6e\x33\x29')]),_0x19db48=_0x481aba[_0x47bca3(0x192,'\x48\x2a\x34\x45')](_0x3d4b74)??{'\x73\x69\x67\x6e\x61\x6c\x46\x69\x6e\x67\x65\x72\x70\x72\x69\x6e\x74':_0x1066f1[_0x47bca3(0x1af,'\x43\x67\x6f\x40')+_0x47bca3(0x1b2,'\x38\x64\x50\x72')+'\x74'],'\x67\x65\x6e\x65\x49\x64':_0x1066f1[_0x47bca3(0x1b8,'\x5d\x4e\x61\x40')],'\x73\x75\x63\x63\x65\x73\x73\x43\x6f\x75\x6e\x74':0x0,'\x66\x61\x69\x6c\x43\x6f\x75\x6e\x74':0x0,'\x69\x6e\x65\x72\x74\x43\x6f\x75\x6e\x74':0x0,'\x6c\x61\x73\x74\x41\x74':0x0,'\x62\x61\x73\x65\x43\x6f\x6e\x66\x69\x64\x65\x6e\x63\x65':0x0};if(_0x1066f1['\x73\x74\x61\x74\x75\x73']===_0x47bca3(0x1d9,'\x48\x70\x7a\x79'))_0x19db48['\x73\x75\x63\x63\x65\x73\x73\x43'+_0x47bca3(0x1b3,'\x71\x6f\x6e\x5e')]+=-0x1*-0x26b4+0x7e5+-0x2e98;else{if(_0x1066f1[_0x47bca3(0x1b0,'\x63\x79\x42\x33')]===_0x47bca3(0x1e3,'\x70\x2a\x4e\x64'))_0x19db48['\x66\x61\x69\x6c\x43\x6f\x75\x6e'+'\x74']+=0x35*-0x8b+0x16dc+0x5ec;else _0x19db48[_0x47bca3(0x1b9,'\x74\x6e\x33\x29')+'\x6e\x74']+=-0x1*-0x2686+0x977+-0x2ffc;}const _0x2f32cf=Number['\x69\x73\x46\x69\x6e\x69\x74\x65'](_0x1066f1['\x61\x74'])?_0x1066f1['\x61\x74']:0x846+-0x1*-0x209f+-0x28e5;if(_0x2f32cf>_0x19db48[_0x47bca3(0x1d7,'\x45\x56\x5d\x28')])_0x19db48[_0x47bca3(0x1cf,'\x48\x2a\x34\x45')]=_0x2f32cf;_0x481aba[_0x47bca3(0x1e1,'\x6a\x5a\x52\x73')](_0x3d4b74,_0x19db48);}for(const _0x435cb2 of _0x481aba[_0x47bca3(0x18e,'\x71\x6f\x6e\x5e')]()){if('\x68\x52\x7a\x58\x64'!==_0x47bca3(0x1df,'\x56\x6a\x75\x37')){const _0x1f16ce=_0x2d56e3+_0x26eef4;return(_0x35beb7+(0x200b+-0x92*-0x12+-0x2a4e*0x1))/(_0x1f16ce+(0xe7d+0x1b9e+-0x2a19));}else _0x435cb2[_0x47bca3(0x1ab,'\x72\x47\x71\x55')+_0x47bca3(0x196,'\x72\x76\x67\x62')]=laplaceSuccessRate(_0x435cb2[_0x47bca3(0x1d3,'\x43\x67\x6f\x40')+_0x47bca3(0x1d6,'\x70\x2a\x4e\x64')],_0x435cb2[_0x47bca3(0x1d0,'\x48\x70\x7a\x79')+'\x74']);}return _0x481aba;}export function confidenceFor(_0x1a6a3f,_0x2d859d,_0x20eaad,_0x5efbde,_0x5a6131=CONFIDENCE_HALF_LIFE_DAYS){const _0x408ad6=_0x1963,_0x4ec858=_0x1a6a3f[_0x408ad6(0x19c,'\x6a\x5a\x52\x73')](confidenceEdgeKey(_0x2d859d,_0x20eaad));if(!_0x4ec858)return 0x28*-0x66+0x1fbd+-0x1*0xfcd;if(_0x4ec858[_0x408ad6(0x1e5,'\x74\x6e\x33\x29')+_0x408ad6(0x1a3,'\x31\x28\x34\x46')]===0xaba+0x8*-0x10c+-0x25a&&_0x4ec858[_0x408ad6(0x191,'\x32\x5a\x4a\x55')+'\x74']===-0x2*-0xbee+-0x79*0x4a+0xb1e)return-0x1e16+-0x8b*0xa+-0x2*-0x11c2;const _0x3cca53=decayWeight(_0x4ec858[_0x408ad6(0x1aa,'\x23\x4d\x75\x70')],_0x5efbde,_0x5a6131),_0x20161b=_0x4ec858['\x62\x61\x73\x65\x43\x6f\x6e\x66'+_0x408ad6(0x1cb,'\x4d\x63\x26\x28')]*_0x3cca53;return _0x20161b<0x1*0x1c45+-0x15*-0x102+0x316f*-0x1?-0x2*0x881+0x6f8+0x202*0x5:_0x20161b>0x5*0x5ae+-0x794+0x14d1*-0x1?-0x132d+-0x1*-0x783+-0x1*-0xbab:_0x20161b;}export const GENE_INERT_BAN_STREAK=0xf15+0x7*-0x311+0x66a;export const INERT_BAN_OBSERVATION_WINDOW=0x23*0x77+-0x3c5a+0x62c5;export function trailingInertByEdge(_0x108133){const _0x366aa0=_0x1963,_0x1e71d4=new Map();for(const _0x4abdf3 of _0x108133){if(_0x366aa0(0x1bc,'\x78\x75\x75\x51')!==_0x366aa0(0x1d4,'\x42\x4b\x40\x49'))return _0x4ffe50+'\x3a\x3a'+_0x111e6d;else{if(!_0x4abdf3||!_0x4abdf3[_0x366aa0(0x1c5,'\x23\x4d\x75\x70')]||!_0x4abdf3[_0x366aa0(0x1a7,'\x5d\x4e\x61\x40')+_0x366aa0(0x190,'\x5d\x4e\x61\x40')+'\x74'])continue;const _0x4268d1=confidenceEdgeKey(_0x4abdf3[_0x366aa0(0x1c0,'\x6d\x4c\x79\x41')+_0x366aa0(0x1c9,'\x34\x23\x35\x4a')+'\x74'],_0x4abdf3[_0x366aa0(0x197,'\x78\x49\x76\x53')]);if(_0x4abdf3[_0x366aa0(0x1c1,'\x43\x67\x6f\x40')]==='\x69\x6e\x65\x72\x74')_0x1e71d4[_0x366aa0(0x1da,'\x42\x4b\x40\x49')](_0x4268d1,(_0x1e71d4[_0x366aa0(0x1b7,'\x74\x6e\x33\x29')](_0x4268d1)??-0x8fe+0x258d*-0x1+-0x5*-0x94f)+(-0x1b83*0x1+0x13*-0x178+0x376c));else{if(_0x4abdf3[_0x366aa0(0x19b,'\x57\x72\x42\x69')]===_0x366aa0(0x1b1,'\x43\x66\x6b\x59')||_0x4abdf3['\x73\x74\x61\x74\x75\x73']===_0x366aa0(0x1e6,'\x72\x47\x71\x55'))_0x1e71d4[_0x366aa0(0x1a5,'\x77\x28\x75\x5b')](_0x4268d1,0x614+-0x1a1a+0x1406*0x1);}}}return _0x1e71d4;}export function inertBannedGeneIds(_0x16c8bc,_0x23a403,_0x29e032,_0x39c5cb=GENE_INERT_BAN_STREAK){const _0x21b88a=_0x1963,_0x445a4d=trailingInertByEdge(_0x23a403),_0x1cbff2=new Set();for(const _0xc03d62 of _0x16c8bc[_0x21b88a(0x1c7,'\x48\x4c\x47\x48')]()){if(_0xc03d62[_0x21b88a(0x1ba,'\x6a\x5a\x52\x73')+_0x21b88a(0x1a4,'\x39\x68\x78\x74')+'\x74']!==_0x29e032)continue;if(_0xc03d62[_0x21b88a(0x1e5,'\x74\x6e\x33\x29')+_0x21b88a(0x1b4,'\x43\x66\x6b\x59')]>0x1b44+-0x1fb3+0x46f)continue;const _0xff33e4=confidenceEdgeKey(_0x29e032,_0xc03d62['\x67\x65\x6e\x65\x49\x64']);if((_0x445a4d[_0x21b88a(0x1be,'\x43\x66\x6b\x59')](_0xff33e4)??-0x33*-0xc1+0x6bf*-0x3+-0x3f*0x4a)>=_0x39c5cb)_0x1cbff2[_0x21b88a(0x19a,'\x37\x79\x71\x66')](_0xc03d62[_0x21b88a(0x1a9,'\x48\x70\x7a\x79')]);}return _0x1cbff2;}
@@ -1,149 +1 @@
1
- import { createHash } from 'node:crypto';
2
- import { redactString } from '../hub/sanitize.js';
3
- // The Chinese branches require compound/intentful phrases on purpose: everyday words (能力/流程/成功/通过)
4
- // occur in nearly every Chinese dev session, and matching them bare made this fallback the DOMINANT distill
5
- // path — 105 of 118 drafts in one bulk ingest (#562). English gets specificity from \b word boundaries;
6
- // Chinese has no \b, so specificity must come from the phrase itself.
7
- const REUSABLE_RE = /\b(reusable|repeatable|workflow|playbook|runbook|capability|procedure|pattern|recipe|documented|future runs?|next time|can reuse|reuse this)\b|复用|可重用|工作流(?!程)|方法论|沉淀/i;
8
- const PROOF_RE = /\b(validated|verified|passed|green|success(?:ful|fully)?|succeeded|works?|completed|published|uploaded|recorded:true|exit code:?\s*0|all tests passed)\b|(?:验证|校验|测试|检查|构建|编译|运行|执行|部署|发布)(?:都|均|全部)?(?:通过|成功)|全部通过|跑通|已(?:验证|发布|上线)/i;
9
- const FAILURE_RE = /\b(failed|failure|error|exception|traceback|exit code:?\s*[1-9]|not working|unable to)\b|失败|错误|报错/i;
10
- const CHINESE_NEGATED_PROOF_PREFIX_SOURCE = '(?:尚未|并未|还没有|尚没有|并没有|没有|未能|无法|不能|不曾|并非|未|没)';
11
- const CHINESE_NEGATED_PROOF_SOURCE = `(?:${CHINESE_NEGATED_PROOF_PREFIX_SOURCE}\\s*(?:验证|校验|测试|检查|构建|编译|运行|执行|部署|发布)(?:都|均|全部)?\\s*(?:通过|成功)|(?:验证|校验|测试|检查|构建|编译|运行|执行|部署|发布)(?:仍|还|尚)?(?:没有|未能|未)(?:都|均|全部)?\\s*(?:通过|成功))`;
12
- const CHINESE_NEGATED_PROOF_RE = new RegExp(CHINESE_NEGATED_PROOF_SOURCE, 'i');
13
- const CHINESE_NEGATED_PROOF_GLOBAL_RE = new RegExp(CHINESE_NEGATED_PROOF_SOURCE, 'gi');
14
- const EXIT_ZERO_RE = /\bexit code:?\s*0\b/i;
15
- const EXIT_NON_ZERO_RE = /\bexit code:?\s*[1-9]\d*\b/i;
16
- const DOMAIN_TOKENS = [
17
- [/\b(lark|feishu|飞书)\b/i, 'lark'],
18
- [/\b(github|gh|pull request|bugbot)\b/i, 'github'],
19
- [/\b(playwright|screenshot|visual)\b/i, 'playwright'],
20
- [/\b(vitest|jest|test)\b/i, 'test'],
21
- [/\b(pnpm|npm|yarn)\b/i, 'package-manager'],
22
- [/\b(hub|publish|marketplace)\b/i, 'hub-publish'],
23
- [/\b(release|checksum|sha256)\b/i, 'release'],
24
- [/\b(api|http|endpoint)\b/i, 'api'],
25
- [/\b(document|docs?|markdown)\b/i, 'docs'],
26
- ];
27
- function cleanText(value, max = 220) {
28
- const text = redactString(String(value ?? '').replace(/\s+/g, ' ').trim());
29
- return text.length > max ? `${text.slice(0, max - 3)}...` : text;
30
- }
31
- function turnText(turn) {
32
- return cleanText([turn.text, turn.toolResult, turn.errorMessage].filter(Boolean).join('\n'), 500);
33
- }
34
- function stableId(parts) {
35
- return `conversation_capability_${createHash('sha1').update(JSON.stringify(parts), 'utf8').digest('hex').slice(0, 12)}`;
36
- }
37
- function normalizeSignal(value) {
38
- return value.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '').slice(0, 48);
39
- }
40
- function collectToolCalls(turns) {
41
- const seen = new Set();
42
- for (const turn of turns) {
43
- const tool = cleanText(turn.toolName ?? '', 80);
44
- if (tool)
45
- seen.add(tool);
46
- }
47
- return [...seen].slice(0, 8);
48
- }
49
- function domainSignals(text, toolCalls) {
50
- const out = new Set();
51
- for (const [re, signal] of DOMAIN_TOKENS) {
52
- if (re.test(text))
53
- out.add(signal);
54
- }
55
- for (const tool of toolCalls) {
56
- const normalized = normalizeSignal(tool);
57
- if (normalized)
58
- out.add(normalized);
59
- }
60
- return [...out].slice(0, 6);
61
- }
62
- function isToolTurn(turn) {
63
- return turn.role === 'tool' || Boolean(turn.toolName);
64
- }
65
- function hasPositiveProof(text) {
66
- return PROOF_RE.test(text.replace(CHINESE_NEGATED_PROOF_GLOBAL_RE, ''));
67
- }
68
- function hasFailure(text) {
69
- return FAILURE_RE.test(text) || CHINESE_NEGATED_PROOF_RE.test(text);
70
- }
71
- function classifyToolOutcome(turn) {
72
- const text = turnText(turn);
73
- if (EXIT_NON_ZERO_RE.test(text))
74
- return 'failure';
75
- // A semantic "not yet successful" result is not proof even when the command process itself exited zero.
76
- if (CHINESE_NEGATED_PROOF_RE.test(text))
77
- return 'failure';
78
- if (EXIT_ZERO_RE.test(text))
79
- return 'success';
80
- if (hasPositiveProof(text) && !FAILURE_RE.test(text))
81
- return 'success';
82
- if (hasFailure(text))
83
- return 'failure';
84
- return 'unknown';
85
- }
86
- function hasTerminalSuccessfulToolRun(turns) {
87
- let lastDecisive = 'unknown';
88
- for (const turn of turns) {
89
- if (!isToolTurn(turn))
90
- continue;
91
- const outcome = classifyToolOutcome(turn);
92
- if (outcome !== 'unknown')
93
- lastDecisive = outcome;
94
- }
95
- return lastDecisive === 'success';
96
- }
97
- function pickEvidence(turns, matcher, max = 3) {
98
- const evidence = [];
99
- for (const turn of turns) {
100
- const text = turnText(turn);
101
- if (!text || !(typeof matcher === 'function' ? matcher(text) : matcher.test(text)))
102
- continue;
103
- evidence.push(cleanText(text, 180));
104
- if (evidence.length >= max)
105
- break;
106
- }
107
- return evidence;
108
- }
109
- function pickSummary(turns, reusableEvidence, proofEvidence) {
110
- const assistant = turns
111
- .filter((turn) => turn.role === 'assistant' && !turn.isMeta)
112
- .map(turnText)
113
- .find((text) => text.length >= 40 && (REUSABLE_RE.test(text) || hasPositiveProof(text)));
114
- return cleanText(assistant ?? reusableEvidence[0] ?? proofEvidence[0] ?? 'Verified reusable conversation capability.', 180);
115
- }
116
- export function sniffConversationCapabilities(turns, opts = {}) {
117
- const usableTurns = turns.filter((turn) => !turn.isMeta);
118
- if (usableTurns.length === 0)
119
- return [];
120
- const allText = usableTurns.map(turnText).filter(Boolean).join('\n');
121
- if (!allText.trim())
122
- return [];
123
- const reusableEvidence = pickEvidence(usableTurns, REUSABLE_RE);
124
- const proofEvidence = pickEvidence(usableTurns, hasPositiveProof);
125
- if (reusableEvidence.length === 0 || proofEvidence.length === 0)
126
- return [];
127
- const failureOnly = hasFailure(allText) && !hasPositiveProof(allText);
128
- if (failureOnly)
129
- return [];
130
- if (!hasTerminalSuccessfulToolRun(usableTurns))
131
- return [];
132
- const toolCalls = collectToolCalls(usableTurns);
133
- const domain = domainSignals(allText, toolCalls);
134
- const signals = [...new Set(['reusable_capability', 'verified_workflow', ...domain])].slice(0, 8);
135
- const score = 4 + Math.min(2, reusableEvidence.length) + Math.min(2, proofEvidence.length) + Math.min(2, toolCalls.length);
136
- const summary = pickSummary(usableTurns, reusableEvidence, proofEvidence);
137
- const titleSignal = domain[0] ?? 'verified workflow';
138
- const hit = {
139
- id: stableId({ summary, signals, evidence: [...reusableEvidence, ...proofEvidence].slice(0, 4) }),
140
- title: `Verified reusable capability: ${titleSignal}`,
141
- summary,
142
- signals,
143
- evidence: [...reusableEvidence, ...proofEvidence].slice(0, 4),
144
- score,
145
- reasons: ['reusable_marker', 'proof_marker', ...(toolCalls.length > 0 ? ['tool_evidence'] : [])],
146
- toolCalls,
147
- };
148
- return [hit].slice(0, opts.maxHits ?? 1);
149
- }
1
+ const _0x3324bd=_0x2844;function _0x2844(_0x328278,_0x911d33){_0x328278=_0x328278-(-0x1*0x653+0x1*-0x692+0xe62);const _0x69814=_0x3528();let _0x451638=_0x69814[_0x328278];if(_0x2844['\x62\x67\x49\x72\x58\x43']===undefined){var _0x4412a0=function(_0x36df19){const _0x37e00a='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x28af0f='',_0x44a96a='';for(let _0x4fa23b=-0x1e29+0x40c+0x1a1d,_0x3bad0f,_0x56ff6f,_0x496a86=-0xb2*-0x25+0x176c+-0x3126;_0x56ff6f=_0x36df19['\x63\x68\x61\x72\x41\x74'](_0x496a86++);~_0x56ff6f&&(_0x3bad0f=_0x4fa23b%(0x19*-0xa3+0x122b*0x2+0x6cd*-0x3)?_0x3bad0f*(0x10b+0x20f+-0x2da)+_0x56ff6f:_0x56ff6f,_0x4fa23b++%(0x1b8b*0x1+0x1505+0x1a*-0x1de))?_0x28af0f+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x219+-0xc*0x227+0x4*0x73b&_0x3bad0f>>(-(0xa6*-0xb+-0x4*0x7da+0x268c)*_0x4fa23b&-0x2323+-0x9d*0xe+0x1*0x2bbf)):-0xd5f*-0x2+-0x13a*-0x1c+-0x3d16){_0x56ff6f=_0x37e00a['\x69\x6e\x64\x65\x78\x4f\x66'](_0x56ff6f);}for(let _0x12dcd5=-0x225a+-0x1a8d+-0x3*-0x144d,_0x9dd93c=_0x28af0f['\x6c\x65\x6e\x67\x74\x68'];_0x12dcd5<_0x9dd93c;_0x12dcd5++){_0x44a96a+='\x25'+('\x30\x30'+_0x28af0f['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x12dcd5)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x129c+0x6fb+-0x1987))['\x73\x6c\x69\x63\x65'](-(-0x2*-0xec5+-0x1*0x17de+-0x5aa));}return decodeURIComponent(_0x44a96a);};const _0x13def3=function(_0x567630,_0x4cfb38){let _0x20d05=[],_0x5ecd08=-0x3bd*0x3+-0x18cf+-0xae*-0x35,_0x3ade98,_0x4ae6bf='';_0x567630=_0x4412a0(_0x567630);let _0x11c104;for(_0x11c104=0x98*-0x28+-0x3*-0x217+0x37f*0x5;_0x11c104<-0x1fd1+-0x457+0x2528;_0x11c104++){_0x20d05[_0x11c104]=_0x11c104;}for(_0x11c104=0x8b*0x38+-0x3*-0x99b+-0x3b39;_0x11c104<0x3f0+-0xeed+0xbfd;_0x11c104++){_0x5ecd08=(_0x5ecd08+_0x20d05[_0x11c104]+_0x4cfb38['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x11c104%_0x4cfb38['\x6c\x65\x6e\x67\x74\x68']))%(0x1544+0x218+-0x165c),_0x3ade98=_0x20d05[_0x11c104],_0x20d05[_0x11c104]=_0x20d05[_0x5ecd08],_0x20d05[_0x5ecd08]=_0x3ade98;}_0x11c104=-0x2*-0x1131+0x249d+-0x46ff,_0x5ecd08=-0xe2c+-0x1b6+0xfe2;for(let _0x5f5b86=-0x511*0x4+-0x14b4+0x28f8;_0x5f5b86<_0x567630['\x6c\x65\x6e\x67\x74\x68'];_0x5f5b86++){_0x11c104=(_0x11c104+(0x1*-0x64+-0x1*-0x2196+-0x2131*0x1))%(-0xf3b+-0x9be*0x1+0x19f9),_0x5ecd08=(_0x5ecd08+_0x20d05[_0x11c104])%(0x17ee+0x177e+0x1*-0x2e6c),_0x3ade98=_0x20d05[_0x11c104],_0x20d05[_0x11c104]=_0x20d05[_0x5ecd08],_0x20d05[_0x5ecd08]=_0x3ade98,_0x4ae6bf+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x567630['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5f5b86)^_0x20d05[(_0x20d05[_0x11c104]+_0x20d05[_0x5ecd08])%(-0x1da8+0x1*0x43a+0x1a6e)]);}return _0x4ae6bf;};_0x2844['\x71\x4b\x48\x44\x6e\x65']=_0x13def3,_0x2844['\x78\x57\x6d\x44\x68\x47']={},_0x2844['\x62\x67\x49\x72\x58\x43']=!![];}const _0x3c47ba=_0x69814[-0x1e01+-0x3*0x8bd+0x3838],_0x4f8f22=_0x328278+_0x3c47ba,_0x47969c=_0x2844['\x78\x57\x6d\x44\x68\x47'][_0x4f8f22];return!_0x47969c?(_0x2844['\x63\x46\x77\x5a\x43\x70']===undefined&&(_0x2844['\x63\x46\x77\x5a\x43\x70']=!![]),_0x451638=_0x2844['\x71\x4b\x48\x44\x6e\x65'](_0x451638,_0x911d33),_0x2844['\x78\x57\x6d\x44\x68\x47'][_0x4f8f22]=_0x451638):_0x451638=_0x47969c,_0x451638;}(function(_0x1d041d,_0x2d05e8){const _0x401b3a=_0x2844,_0x32b67f=_0x1d041d();while(!![]){try{const _0xef9d31=-parseInt(_0x401b3a(0x1ed,'\x5a\x6b\x34\x6a'))/(0xd7f+-0x25da+-0x1*-0x185c)+parseInt(_0x401b3a(0x199,'\x6f\x5e\x52\x57'))/(-0x637+-0x2*0xb59+-0x1*-0x1ceb)+-parseInt(_0x401b3a(0x21a,'\x4b\x69\x55\x21'))/(0xa29+0x1949+0x1*-0x236f)*(-parseInt(_0x401b3a(0x1d0,'\x7a\x45\x4e\x29'))/(-0x261a+0xaf*-0xb+0x2da3))+-parseInt(_0x401b3a(0x1a0,'\x75\x43\x6d\x29'))/(-0x37c+-0x8*-0x28f+-0x1*0x10f7)+parseInt(_0x401b3a(0x1e7,'\x56\x66\x64\x4e'))/(0x5*-0x205+0x15c*-0x5+0x10eb)*(-parseInt(_0x401b3a(0x1f9,'\x4a\x4a\x70\x6c'))/(-0x565*-0x5+-0x2a2+-0x1850))+-parseInt(_0x401b3a(0x18a,'\x45\x56\x24\x74'))/(-0xd2b+-0x1f9e+0x2cd1)+parseInt(_0x401b3a(0x180,'\x30\x47\x31\x4e'))/(-0x6*-0x493+0x235f+-0x3ec8)*(parseInt(_0x401b3a(0x18e,'\x78\x59\x29\x71'))/(-0x9dd+0xc43+-0x12e*0x2));if(_0xef9d31===_0x2d05e8)break;else _0x32b67f['push'](_0x32b67f['shift']());}catch(_0x3186d9){_0x32b67f['push'](_0x32b67f['shift']());}}}(_0x3528,-0xf09dd+-0x9382b+0x3d6*0x883));import{createHash}from'\x6e\x6f\x64\x65\x3a\x63\x72\x79\x70\x74\x6f';import{redactString}from'\x2e\x2e\x2f\x68\x75\x62\x2f\x73\x61\x6e\x69\x74\x69\x7a\x65\x2e\x6a\x73';const REUSABLE_RE=/\b(reusable|repeatable|workflow|playbook|runbook|capability|procedure|pattern|recipe|documented|future runs?|next time|can reuse|reuse this)\b|复用|可重用|工作流(?!程)|方法论|沉淀/i,PROOF_RE=/\b(validated|verified|passed|green|success(?:ful|fully)?|succeeded|works?|completed|published|uploaded|recorded:true|exit code:?\s*0|all tests passed)\b|(?:验证|校验|测试|检查|构建|编译|运行|执行|部署|发布)(?:都|均|全部)?(?:通过|成功)|全部通过|跑通|已(?:验证|发布|上线)/i,FAILURE_RE=/\b(failed|failure|error|exception|traceback|exit code:?\s*[1-9]|not working|unable to)\b|失败|错误|报错/i,CHINESE_NEGATED_PROOF_PREFIX_SOURCE=_0x3324bd(0x190,'\x5d\x5a\x4b\x5e')+_0x3324bd(0x184,'\x4f\x70\x43\x71')+_0x3324bd(0x20b,'\x34\x6e\x34\x38')+_0x3324bd(0x1c9,'\x74\x59\x6c\x4a')+_0x3324bd(0x208,'\x36\x30\x32\x5e')+_0x3324bd(0x1f7,'\x61\x2a\x71\x76'),CHINESE_NEGATED_PROOF_SOURCE='\x28\x3f\x3a'+CHINESE_NEGATED_PROOF_PREFIX_SOURCE+(_0x3324bd(0x1ca,'\x4e\x72\x25\x29')+_0x3324bd(0x19a,'\x57\x49\x47\x5e')+_0x3324bd(0x19f,'\x75\x43\x6d\x29')+_0x3324bd(0x1dc,'\x4e\x36\x39\x71')+_0x3324bd(0x195,'\x43\x69\x78\x47')+_0x3324bd(0x1b4,'\x46\x5a\x4b\x67')+_0x3324bd(0x218,'\x48\x28\x2a\x31')+_0x3324bd(0x193,'\x62\x29\x74\x4d')+'\u8bc1\x7c\u6821\u9a8c\x7c\u6d4b\u8bd5\x7c'+_0x3324bd(0x214,'\x52\x52\x72\x79')+'\x7c\u8fd0\u884c\x7c\u6267\u884c\x7c\u90e8'+_0x3324bd(0x19e,'\x57\x49\x47\x5e')+_0x3324bd(0x1cc,'\x4e\x72\x25\x29')+_0x3324bd(0x1a5,'\x48\x4b\x51\x64')+_0x3324bd(0x1c3,'\x34\x6e\x34\x38')+_0x3324bd(0x1c1,'\x74\x59\x6c\x4a')+_0x3324bd(0x1f3,'\x34\x6e\x34\x38')+'\x29\x29'),CHINESE_NEGATED_PROOF_RE=new RegExp(CHINESE_NEGATED_PROOF_SOURCE,'\x69'),CHINESE_NEGATED_PROOF_GLOBAL_RE=new RegExp(CHINESE_NEGATED_PROOF_SOURCE,'\x67\x69'),EXIT_ZERO_RE=/\bexit code:?\s*0\b/i,EXIT_NON_ZERO_RE=/\bexit code:?\s*[1-9]\d*\b/i,DOMAIN_TOKENS=[[/\b(lark|feishu|飞书)\b/i,_0x3324bd(0x1c4,'\x28\x6e\x42\x5d')],[/\b(github|gh|pull request|bugbot)\b/i,_0x3324bd(0x1b9,'\x78\x59\x29\x71')],[/\b(playwright|screenshot|visual)\b/i,_0x3324bd(0x1cd,'\x64\x37\x28\x75')+'\x68\x74'],[/\b(vitest|jest|test)\b/i,_0x3324bd(0x194,'\x35\x67\x75\x56')],[/\b(pnpm|npm|yarn)\b/i,'\x70\x61\x63\x6b\x61\x67\x65\x2d'+'\x6d\x61\x6e\x61\x67\x65\x72'],[/\b(hub|publish|marketplace)\b/i,_0x3324bd(0x1f4,'\x75\x43\x6d\x29')+_0x3324bd(0x1ad,'\x4e\x72\x25\x29')],[/\b(release|checksum|sha256)\b/i,_0x3324bd(0x205,'\x34\x6e\x34\x38')],[/\b(api|http|endpoint)\b/i,'\x61\x70\x69'],[/\b(document|docs?|markdown)\b/i,_0x3324bd(0x1fd,'\x26\x5a\x51\x62')]];function cleanText(_0x371382,_0x11fbd7=0x124f+0x1759+-0x28cc){const _0x4edfc1=_0x3324bd,_0x5eb57f=redactString(String(_0x371382??'')[_0x4edfc1(0x1ef,'\x4e\x72\x25\x29')](/\s+/g,'\x20')[_0x4edfc1(0x20d,'\x57\x49\x47\x5e')]());return _0x5eb57f[_0x4edfc1(0x1d1,'\x6b\x66\x55\x30')]>_0x11fbd7?_0x5eb57f[_0x4edfc1(0x1e0,'\x42\x24\x33\x4c')](0x1939+0x1a70+-0x33a9,_0x11fbd7-(-0x2517+-0x2618+0x4b32))+_0x4edfc1(0x1da,'\x76\x66\x71\x6f'):_0x5eb57f;}function turnText(_0x454af8){const _0x5e8063=_0x3324bd;return cleanText([_0x454af8[_0x5e8063(0x185,'\x46\x79\x61\x31')],_0x454af8[_0x5e8063(0x1af,'\x4a\x4a\x70\x6c')+'\x6c\x74'],_0x454af8[_0x5e8063(0x1aa,'\x35\x67\x75\x56')+_0x5e8063(0x1f0,'\x4e\x49\x4a\x24')]][_0x5e8063(0x1ff,'\x46\x5a\x4b\x67')](Boolean)[_0x5e8063(0x1ee,'\x56\x66\x64\x4e')]('\x0a'),0x2509+-0x69d+-0x71e*0x4);}function _0x3528(){const _0x2de05d=['\x57\x34\x35\x67\x57\x34\x65\x75\x75\x63\x4f','\x57\x35\x39\x36\x71\x65\x70\x63\x53\x43\x6f\x73\x63\x57','\x44\x38\x6f\x4f\x76\x6d\x6f\x71','\x57\x34\x2f\x64\x4a\x38\x6f\x57\x45\x74\x6d\x65\x57\x36\x37\x64\x4c\x59\x74\x63\x4e\x47\x44\x34','\x6f\x55\x41\x48\x50\x45\x4d\x4f\x52\x58\x4a\x4d\x54\x79\x4a\x4f\x52\x35\x78\x63\x47\x55\x41\x49\x4d\x57','\x42\x38\x6f\x32\x73\x43\x6b\x54\x73\x53\x6f\x39','\x57\x50\x6d\x49\x67\x58\x5a\x64\x52\x6d\x6f\x2f\x70\x78\x62\x53\x6e\x43\x6f\x6f','\x79\x74\x4e\x63\x55\x38\x6b\x67','\x35\x37\x59\x30\x6f\x6f\x77\x6e\x53\x55\x77\x35\x50\x59\x4f\x4f\x57\x34\x66\x48','\x35\x50\x59\x72\x6c\x45\x41\x44\x4e\x45\x77\x37\x4a\x43\x6b\x6b\x35\x37\x2b\x2b\x36\x6b\x36\x37\x6d\x47','\x57\x34\x44\x4a\x57\x36\x53\x6f\x57\x34\x70\x64\x4d\x31\x4f\x35\x57\x35\x4e\x63\x55\x62\x4c\x53\x79\x61','\x64\x53\x6b\x34\x57\x35\x6e\x4b','\x70\x78\x6c\x64\x54\x4e\x33\x64\x52\x49\x61\x32\x57\x36\x4b','\x57\x51\x47\x6f\x57\x37\x37\x64\x4f\x61','\x57\x35\x53\x79\x57\x52\x72\x4e\x57\x34\x52\x63\x4f\x57','\x65\x4e\x74\x4d\x53\x37\x64\x4d\x4e\x35\x70\x64\x53\x45\x41\x43\x51\x45\x49\x62\x54\x38\x6f\x54','\x57\x37\x35\x70\x57\x51\x78\x64\x56\x67\x58\x43','\x70\x38\x6f\x61\x57\x51\x37\x64\x4a\x62\x4e\x63\x51\x67\x76\x32','\x78\x53\x6b\x64\x41\x57\x66\x2f','\x57\x37\x2f\x64\x47\x43\x6f\x36\x78\x71','\x75\x53\x6f\x70\x72\x6d\x6f\x71\x57\x37\x53\x72\x64\x6d\x6b\x79','\x57\x37\x4b\x68\x57\x36\x39\x68\x57\x52\x44\x45\x57\x51\x52\x64\x51\x71','\x7a\x5a\x38\x50\x57\x50\x78\x64\x4c\x57','\x42\x38\x6f\x32\x42\x61','\x71\x33\x30\x64\x73\x61','\x69\x73\x6e\x67\x7a\x43\x6b\x69\x57\x4f\x62\x4a\x75\x61','\x67\x61\x52\x64\x53\x4b\x4c\x35\x65\x4e\x52\x63\x51\x61','\x76\x53\x6f\x6f\x75\x57','\x71\x63\x38\x48','\x7a\x38\x6f\x48\x79\x61','\x57\x35\x56\x4c\x4e\x42\x6c\x64\x53\x6f\x77\x65\x4d\x45\x4d\x64\x4a\x67\x69\x59\x57\x52\x30','\x63\x43\x6f\x4c\x57\x50\x33\x63\x47\x77\x64\x63\x4a\x57','\x75\x74\x78\x64\x52\x57','\x6d\x38\x6b\x75\x57\x52\x71','\x57\x36\x72\x75\x57\x4f\x4e\x63\x51\x61','\x73\x53\x6b\x67\x44\x47\x50\x56\x79\x47','\x44\x68\x70\x64\x50\x61\x50\x5a\x7a\x38\x6b\x72\x68\x61','\x57\x37\x48\x73\x57\x51\x4a\x63\x53\x73\x46\x63\x55\x58\x7a\x6f\x6b\x59\x64\x63\x49\x5a\x61\x33','\x57\x34\x7a\x58\x72\x75\x52\x63\x51\x53\x6f\x6e','\x57\x4f\x72\x70\x57\x36\x47\x35\x57\x4f\x56\x64\x55\x6d\x6f\x41\x69\x4a\x6c\x63\x53\x57\x38\x32\x57\x35\x61','\x57\x50\x64\x64\x48\x38\x6f\x6e\x57\x36\x66\x49\x6e\x38\x6f\x64\x57\x50\x75','\x63\x53\x6f\x75\x57\x37\x4c\x48\x61\x4c\x78\x64\x4a\x38\x6b\x59','\x61\x6d\x6f\x6a\x57\x37\x30','\x57\x51\x4e\x4c\x48\x6c\x68\x50\x47\x37\x6c\x64\x55\x38\x6b\x59\x6b\x38\x6b\x72\x57\x52\x61','\x57\x4f\x72\x6b\x57\x36\x69\x59\x57\x4f\x37\x64\x55\x6d\x6b\x79\x65\x58\x68\x63\x4f\x74\x79\x6f','\x35\x50\x32\x70\x57\x51\x4e\x64\x4d\x38\x6f\x7a\x6c\x55\x4d\x61\x4d\x4e\x37\x4c\x4e\x42\x43','\x76\x4a\x66\x6c\x68\x57','\x6e\x73\x4a\x64\x49\x47\x44\x4d','\x70\x78\x4a\x64\x51\x4d\x75','\x71\x33\x43\x46\x75\x61','\x78\x74\x57\x2b\x57\x52\x78\x64\x51\x31\x5a\x64\x50\x38\x6f\x57','\x35\x50\x2b\x2f\x36\x69\x6b\x4b\x7a\x55\x41\x75\x53\x55\x41\x58\x4d\x61\x56\x4b\x55\x36\x2f\x4f\x47\x41\x43','\x77\x53\x6f\x32\x6c\x53\x6f\x47\x61\x43\x6b\x4d\x36\x41\x4d\x33\x36\x6b\x2b\x44','\x57\x35\x48\x2f\x74\x4c\x38','\x35\x6c\x55\x6c\x57\x37\x4e\x4f\x56\x35\x5a\x63\x54\x6f\x77\x57\x50\x6d\x6b\x31\x57\x34\x71\x30','\x43\x43\x6b\x46\x43\x43\x6b\x54\x61\x75\x4e\x64\x4c\x6d\x6f\x43','\x57\x51\x69\x63\x57\x37\x37\x64\x4f\x32\x64\x64\x50\x47','\x61\x63\x4f\x68\x41\x66\x4b\x46\x57\x50\x44\x73','\x57\x37\x54\x6c\x57\x50\x6a\x6d\x57\x50\x70\x63\x4c\x38\x6b\x54\x57\x51\x61','\x57\x34\x4f\x62\x57\x51\x62\x68\x6b\x6d\x6b\x38','\x79\x53\x6f\x65\x73\x64\x2f\x63\x51\x43\x6b\x76\x57\x36\x61','\x6a\x59\x4c\x43\x45\x53\x6b\x37\x57\x4f\x44\x38\x71\x61','\x57\x50\x2f\x63\x53\x6d\x6f\x4f\x57\x50\x39\x71\x75\x57','\x71\x43\x6b\x6b\x42\x61\x76\x55\x41\x61','\x67\x38\x6b\x39\x75\x57\x54\x46\x76\x43\x6f\x49','\x68\x53\x6f\x4e\x69\x65\x65\x6c\x75\x43\x6b\x39\x57\x37\x4f','\x57\x50\x4a\x63\x50\x43\x6f\x38\x57\x50\x6a\x66\x76\x73\x69','\x57\x37\x39\x7a\x57\x50\x61','\x57\x50\x4c\x74\x57\x37\x71','\x57\x35\x53\x6e\x57\x35\x66\x62\x57\x51\x7a\x73\x57\x52\x33\x64\x4a\x47','\x36\x6c\x32\x36\x36\x6b\x67\x79\x76\x2b\x41\x6a\x49\x55\x49\x49\x4b\x53\x6f\x7a\x36\x79\x6b\x6e\x35\x37\x32\x68','\x74\x5a\x4a\x64\x54\x53\x6b\x55\x6d\x71','\x57\x35\x37\x63\x4d\x38\x6b\x68\x57\x52\x61\x5a\x41\x53\x6f\x48\x57\x50\x64\x63\x4a\x76\x47\x41\x57\x4f\x71','\x6f\x38\x6b\x74\x57\x52\x37\x64\x49\x47\x74\x63\x51\x4d\x66\x51','\x68\x53\x6f\x51\x70\x75\x53\x62','\x57\x34\x6e\x55\x66\x6d\x6b\x55\x64\x61\x34\x30\x57\x36\x79','\x57\x36\x65\x62\x57\x35\x44\x72\x57\x37\x4f\x42','\x57\x52\x4a\x64\x4a\x38\x6f\x47\x67\x31\x43','\x64\x33\x4a\x63\x4a\x33\x4a\x64\x54\x38\x6b\x55\x6f\x38\x6b\x48','\x74\x6d\x6f\x6b\x57\x37\x50\x4e\x64\x65\x65','\x7a\x43\x6f\x4b\x73\x38\x6f\x71\x57\x34\x4e\x63\x4c\x71','\x76\x73\x30\x45\x61\x43\x6b\x46\x57\x4f\x33\x63\x4d\x71','\x7a\x53\x6b\x54\x72\x6d\x6f\x6c\x57\x34\x6c\x63\x4b\x76\x42\x63\x4e\x47','\x57\x51\x2f\x64\x4e\x53\x6f\x38\x65\x76\x58\x36\x57\x35\x57\x73','\x57\x36\x57\x6b\x57\x34\x50\x65\x57\x51\x4c\x70\x57\x51\x68\x64\x54\x71','\x57\x34\x7a\x67\x57\x37\x38\x79\x76\x5a\x39\x53\x57\x4f\x38','\x6a\x33\x46\x63\x48\x38\x6b\x6d\x57\x52\x50\x49\x77\x61','\x57\x37\x68\x64\x4e\x6d\x6b\x56\x79\x38\x6b\x6b\x57\x52\x62\x6e\x57\x37\x34\x34\x57\x4f\x4f\x7a\x57\x51\x53','\x63\x72\x61\x4d\x62\x47','\x44\x6d\x6f\x47\x44\x6d\x6b\x4b\x78\x38\x6f\x2f\x57\x50\x34','\x77\x43\x6f\x63\x57\x37\x66\x32','\x66\x53\x6f\x38\x74\x53\x6f\x79\x62\x61','\x6c\x33\x5a\x64\x53\x68\x33\x64\x48\x64\x43\x4c','\x74\x43\x6b\x2f\x57\x34\x4e\x50\x47\x37\x5a\x4f\x56\x35\x70\x63\x4d\x2b\x41\x69\x4b\x55\x77\x6b\x52\x57','\x57\x50\x57\x4b\x57\x52\x53\x41\x57\x4f\x42\x63\x4e\x71\x47\x49','\x75\x75\x54\x33\x77\x38\x6f\x50\x57\x36\x5a\x64\x4b\x43\x6f\x45\x63\x78\x4e\x64\x47\x53\x6b\x6a\x57\x37\x75','\x57\x52\x6e\x6c\x77\x72\x65\x4b\x57\x35\x4f\x6e','\x6e\x45\x41\x59\x56\x6d\x6b\x57','\x69\x38\x6f\x2f\x71\x53\x6f\x72\x57\x35\x2f\x63\x48\x4c\x68\x63\x47\x61','\x7a\x33\x47\x72\x6f\x53\x6f\x50\x57\x35\x65\x48\x75\x6d\x6b\x45\x57\x51\x31\x68\x57\x51\x47\x7a','\x57\x52\x76\x6c\x77\x47\x4b','\x57\x34\x75\x73\x57\x52\x7a\x4c','\x68\x6d\x6b\x2b\x57\x35\x6a\x53\x57\x50\x6c\x63\x53\x59\x7a\x68','\x57\x51\x76\x62\x73\x47\x34','\x57\x51\x65\x32\x44\x43\x6b\x2b\x57\x34\x6d\x77\x57\x4f\x2f\x64\x56\x57','\x57\x34\x66\x43\x57\x36\x61\x66\x71\x74\x4b','\x46\x38\x6f\x6e\x57\x4f\x34','\x77\x53\x6f\x43\x74\x53\x6f\x33\x57\x36\x61\x4f\x67\x47','\x57\x51\x52\x64\x52\x38\x6b\x38\x45\x53\x6f\x6c\x66\x65\x57','\x78\x43\x6b\x4c\x65\x6d\x6b\x6d\x77\x75\x62\x4a\x57\x37\x53\x37\x57\x36\x79\x30\x57\x34\x6c\x64\x50\x61','\x44\x6d\x6b\x78\x57\x34\x70\x64\x56\x5a\x79','\x66\x38\x6f\x4c\x57\x50\x2f\x63\x47\x33\x78\x63\x4c\x67\x43','\x57\x35\x48\x58\x77\x30\x68\x63\x56\x38\x6f\x67\x61\x61','\x57\x35\x35\x58\x77\x66\x4b','\x57\x37\x68\x4b\x55\x41\x78\x4d\x4d\x7a\x31\x75\x35\x42\x51\x32\x36\x7a\x32\x4c\x57\x51\x74\x4d\x4e\x4f\x61','\x6e\x72\x4f\x39\x61\x43\x6b\x38\x57\x52\x68\x63\x48\x43\x6f\x70','\x44\x53\x6f\x61\x76\x63\x64\x63\x56\x43\x6b\x66\x57\x36\x4e\x64\x4b\x57','\x67\x45\x77\x37\x54\x55\x41\x58\x4b\x55\x41\x46\x52\x32\x4a\x4d\x53\x79\x42\x4d\x4e\x69\x54\x6d','\x57\x4f\x70\x64\x4e\x43\x6f\x48\x63\x4c\x4c\x37\x57\x35\x4b\x42','\x6d\x4a\x42\x64\x49\x47\x4b','\x57\x50\x4e\x63\x4f\x43\x6f\x34\x57\x50\x44\x6c\x77\x67\x46\x63\x51\x57','\x57\x52\x64\x64\x4a\x38\x6f\x47\x68\x30\x7a\x31','\x44\x53\x6f\x66\x57\x50\x4e\x63\x52\x49\x4f\x73','\x57\x37\x5a\x64\x4d\x6d\x6f\x52\x64\x75\x66\x38\x57\x35\x43\x79','\x79\x43\x6f\x7a\x57\x50\x33\x63\x51\x64\x57\x76\x57\x36\x53','\x57\x37\x7a\x6d\x57\x4f\x4e\x64\x55\x33\x66\x72\x41\x38\x6f\x45','\x35\x51\x63\x79\x35\x50\x32\x56\x57\x52\x64\x4d\x4e\x50\x6c\x4c\x55\x7a\x61\x6c\x35\x37\x59\x2f\x36\x6b\x36\x72','\x57\x35\x72\x7a\x57\x36\x75\x73\x71\x71','\x6d\x32\x4e\x63\x4a\x43\x6b\x61\x57\x52\x58\x35\x78\x59\x75','\x73\x73\x76\x41\x66\x32\x69\x6b\x57\x50\x71','\x6b\x43\x6f\x6b\x57\x36\x78\x63\x4e\x65\x33\x50\x47\x34\x74\x4f\x56\x34\x44\x34','\x75\x78\x65\x43\x73\x68\x65\x44','\x66\x4a\x5a\x64\x4d\x4a\x5a\x63\x54\x53\x6b\x76\x61\x43\x6b\x69\x57\x50\x42\x64\x4a\x53\x6f\x47','\x64\x30\x78\x64\x56\x75\x30','\x73\x64\x33\x64\x53\x6d\x6b\x4a\x63\x58\x6c\x63\x4f\x53\x6b\x67','\x57\x35\x61\x62\x57\x52\x58\x6a\x6f\x53\x6b\x39\x62\x43\x6f\x34','\x78\x38\x6b\x78\x57\x35\x72\x55\x61\x64\x69\x5a\x72\x61','\x6e\x53\x6b\x66\x57\x51\x70\x64\x48\x61\x70\x63\x54\x47','\x57\x52\x68\x63\x48\x38\x6f\x2b\x6d\x53\x6f\x46','\x7a\x59\x43\x41\x57\x52\x2f\x64\x56\x57','\x46\x2b\x49\x39\x4c\x45\x41\x59\x48\x55\x41\x45\x52\x43\x6f\x71\x35\x42\x6f\x39\x35\x52\x6b\x73\x35\x50\x2b\x4c','\x57\x50\x37\x63\x50\x43\x6f\x30\x57\x4f\x4f','\x46\x73\x4e\x63\x50\x53\x6b\x6a\x65\x43\x6b\x35','\x57\x52\x6a\x61\x57\x51\x78\x63\x47\x38\x6f\x7a','\x57\x37\x30\x64\x57\x36\x5a\x63\x49\x6d\x6f\x64\x69\x43\x6b\x64','\x57\x36\x47\x45\x57\x52\x54\x57\x57\x35\x2f\x63\x51\x43\x6b\x64\x6f\x71','\x57\x35\x37\x63\x4c\x38\x6b\x69\x57\x52\x38\x38\x41\x38\x6b\x71\x57\x50\x64\x63\x4e\x65\x75\x38\x57\x50\x4b\x67','\x77\x6d\x6f\x6d\x57\x37\x50\x32','\x6c\x38\x6b\x6f\x57\x51\x42\x64\x4a\x72\x4a\x63\x51\x77\x34','\x57\x34\x58\x39\x72\x31\x4e\x63\x55\x38\x6f\x78','\x67\x38\x6f\x41\x6f\x4c\x43\x50\x6e\x43\x6b\x52\x57\x36\x4e\x64\x4a\x6d\x6f\x31\x57\x36\x5a\x64\x4d\x75\x30','\x57\x34\x57\x6c\x57\x51\x44\x6f','\x68\x59\x44\x6b\x35\x42\x63\x4d\x35\x50\x59\x2b\x65\x2b\x77\x36\x4b\x55\x41\x43\x47\x71','\x57\x37\x2f\x64\x4c\x53\x6f\x47\x72\x61','\x57\x36\x53\x6a\x57\x34\x50\x65\x57\x52\x76\x6a\x57\x52\x30','\x35\x4f\x49\x75\x35\x79\x49\x36\x63\x63\x2f\x64\x54\x6d\x6f\x79\x57\x52\x2f\x50\x51\x6c\x4f','\x71\x38\x6f\x79\x72\x43\x6f\x6c','\x66\x6f\x77\x6d\x47\x6f\x77\x36\x56\x49\x4e\x64\x54\x6d\x6f\x54\x43\x45\x4d\x64\x4e\x57'];_0x3528=function(){return _0x2de05d;};return _0x3528();}function stableId(_0x337a78){const _0x4a9736=_0x3324bd;return _0x4a9736(0x1e1,'\x49\x5b\x6d\x33')+_0x4a9736(0x17e,'\x2a\x71\x57\x2a')+_0x4a9736(0x1ea,'\x36\x30\x32\x5e')+createHash(_0x4a9736(0x1b8,'\x6a\x4b\x4f\x68'))[_0x4a9736(0x1d4,'\x46\x79\x61\x31')](JSON[_0x4a9736(0x1e9,'\x58\x6e\x71\x61')+'\x79'](_0x337a78),'\x75\x74\x66\x38')[_0x4a9736(0x210,'\x61\x4b\x44\x35')](_0x4a9736(0x1d9,'\x6a\x4b\x4f\x68'))[_0x4a9736(0x1f1,'\x5b\x79\x6d\x72')](0x43a+0x2075+0x24af*-0x1,-0x211d*0x1+-0x767*-0x2+0x125b);}function normalizeSignal(_0x1af980){const _0x7c2bef=_0x3324bd;return _0x1af980[_0x7c2bef(0x1ab,'\x36\x30\x32\x5e')+_0x7c2bef(0x1b1,'\x35\x67\x75\x56')]()[_0x7c2bef(0x1f6,'\x26\x5a\x51\x62')](/[^a-z0-9]+/g,'\x5f')[_0x7c2bef(0x206,'\x4e\x36\x39\x71')](/^_+|_+$/g,'')[_0x7c2bef(0x1f1,'\x5b\x79\x6d\x72')](-0x5a9+-0xade+0x1087,-0x190+0x28c*0xb+0x2*-0xd22);}function collectToolCalls(_0x4b6c3f){const _0x42da3c=_0x3324bd,_0x5f08d5=new Set();for(const _0x83fe0 of _0x4b6c3f){if(_0x42da3c(0x1ac,'\x48\x4b\x51\x64')!==_0x42da3c(0x187,'\x4a\x69\x75\x71')){const _0x3cf0bd=_0x2f3648[_0x42da3c(0x1e5,'\x4e\x49\x4a\x24')](_0x41509f=>_0x41509f[_0x42da3c(0x17d,'\x5a\x75\x4f\x73')]===_0x42da3c(0x1eb,'\x46\x5a\x4b\x67')+'\x74'&&!_0x41509f[_0x42da3c(0x196,'\x46\x5a\x4b\x67')])[_0x42da3c(0x1b6,'\x2a\x71\x57\x2a')](_0x58adcc)[_0x42da3c(0x1a3,'\x4d\x40\x25\x50')](_0x1b0985=>_0x1b0985[_0x42da3c(0x1b5,'\x34\x6e\x34\x38')]>=0x2316+0x22f7*0x1+-0x45e5&&(_0x7973bb[_0x42da3c(0x194,'\x35\x67\x75\x56')](_0x1b0985)||_0x1d194b(_0x1b0985)));return _0x4cacb2(_0x3cf0bd??_0x2a0506[0x1be7+0x3b*0x71+-0x35f2]??_0x5a1796[0x34*0x4+-0x66e+0x59e]??_0x42da3c(0x1db,'\x36\x30\x32\x5e')+_0x42da3c(0x1f8,'\x4f\x70\x43\x71')+_0x42da3c(0x1e8,'\x4f\x70\x43\x71')+_0x42da3c(0x20e,'\x46\x79\x61\x31')+_0x42da3c(0x216,'\x59\x45\x6f\x34')+'\x79\x2e',0xc37+-0x3e*-0x71+-0x10d*0x25);}else{const _0x5a2808=cleanText(_0x83fe0[_0x42da3c(0x1fc,'\x43\x69\x78\x47')]??'',-0x6*0x147+0x1c95+0x5*-0x41f);if(_0x5a2808)_0x5f08d5['\x61\x64\x64'](_0x5a2808);}}return[..._0x5f08d5][_0x42da3c(0x215,'\x46\x5a\x4b\x67')](-0x23a+-0x136d+0x15a7,-0x616+0x29c*-0x1+0x2*0x45d);}function domainSignals(_0x99bbfb,_0x20764d){const _0x27a228=_0x3324bd,_0x1f3a3f=new Set();for(const [_0x5ecde6,_0x23c743]of DOMAIN_TOKENS){if(_0x5ecde6[_0x27a228(0x1ae,'\x5d\x5a\x4b\x5e')](_0x99bbfb))_0x1f3a3f[_0x27a228(0x1b3,'\x4e\x72\x25\x29')](_0x23c743);}for(const _0x2f7a86 of _0x20764d){const _0x30d601=normalizeSignal(_0x2f7a86);if(_0x30d601)_0x1f3a3f['\x61\x64\x64'](_0x30d601);}return[..._0x1f3a3f][_0x27a228(0x1dd,'\x2a\x71\x57\x2a')](-0x1f*0xad+-0xae3+0xa*0x32f,-0x1e64+0x2277+-0x11*0x3d);}function isToolTurn(_0x3bbf52){const _0x5057e2=_0x3324bd;return _0x3bbf52[_0x5057e2(0x1fb,'\x76\x66\x71\x6f')]===_0x5057e2(0x1c7,'\x5d\x5a\x4b\x5e')||Boolean(_0x3bbf52[_0x5057e2(0x1fe,'\x74\x59\x6c\x4a')]);}function hasPositiveProof(_0x57c35e){const _0x46394f=_0x3324bd;return PROOF_RE['\x74\x65\x73\x74'](_0x57c35e[_0x46394f(0x202,'\x52\x52\x72\x79')](CHINESE_NEGATED_PROOF_GLOBAL_RE,''));}function hasFailure(_0x437482){const _0x5c746a=_0x3324bd;return FAILURE_RE[_0x5c746a(0x198,'\x4f\x70\x43\x71')](_0x437482)||CHINESE_NEGATED_PROOF_RE[_0x5c746a(0x1fa,'\x26\x5a\x51\x62')](_0x437482);}function classifyToolOutcome(_0x868111){const _0x187fff=_0x3324bd,_0x23967c=turnText(_0x868111);if(EXIT_NON_ZERO_RE[_0x187fff(0x1a9,'\x7a\x34\x26\x62')](_0x23967c))return _0x187fff(0x1f2,'\x61\x2a\x71\x76');if(CHINESE_NEGATED_PROOF_RE['\x74\x65\x73\x74'](_0x23967c))return _0x187fff(0x1d2,'\x62\x29\x74\x4d');if(EXIT_ZERO_RE[_0x187fff(0x207,'\x4e\x36\x39\x71')](_0x23967c))return _0x187fff(0x212,'\x61\x4b\x44\x35');if(hasPositiveProof(_0x23967c)&&!FAILURE_RE['\x74\x65\x73\x74'](_0x23967c))return _0x187fff(0x212,'\x61\x4b\x44\x35');if(hasFailure(_0x23967c))return _0x187fff(0x192,'\x36\x30\x32\x5e');return _0x187fff(0x197,'\x4e\x36\x39\x71');}function hasTerminalSuccessfulToolRun(_0x1b71c5){const _0x2aa247=_0x3324bd;let _0x69256d=_0x2aa247(0x1ec,'\x59\x45\x6f\x34');for(const _0x2d7fc8 of _0x1b71c5){if(!isToolTurn(_0x2d7fc8))continue;const _0x157828=classifyToolOutcome(_0x2d7fc8);if(_0x157828!==_0x2aa247(0x18c,'\x48\x28\x2a\x31'))_0x69256d=_0x157828;}return _0x69256d===_0x2aa247(0x217,'\x28\x6e\x42\x5d');}function pickEvidence(_0x59796e,_0x25263e,_0x4a593d=-0x2490+0x490+0x2003){const _0x320f59=_0x3324bd,_0x3eeb52=[];for(const _0x416671 of _0x59796e){if(_0x320f59(0x183,'\x48\x4b\x51\x64')===_0x320f59(0x204,'\x69\x21\x70\x40'))return _0x264af8[_0x320f59(0x1ae,'\x5d\x5a\x4b\x5e')](_0x54cd55[_0x320f59(0x1d8,'\x46\x79\x61\x31')](_0x52dc5a,''));else{const _0x269737=turnText(_0x416671);if(!_0x269737||!(typeof _0x25263e==='\x66\x75\x6e\x63\x74\x69\x6f\x6e'?_0x25263e(_0x269737):_0x25263e[_0x320f59(0x1c6,'\x61\x2a\x71\x76')](_0x269737)))continue;_0x3eeb52[_0x320f59(0x19d,'\x43\x43\x43\x73')](cleanText(_0x269737,-0x2525+0xdf9+0x17e0));if(_0x3eeb52[_0x320f59(0x1bc,'\x4e\x36\x39\x71')]>=_0x4a593d)break;}}return _0x3eeb52;}function pickSummary(_0x1d1c02,_0x1ee37b,_0x4e6aff){const _0x7951f=_0x3324bd,_0x5721c2=_0x1d1c02[_0x7951f(0x18d,'\x4e\x36\x39\x71')](_0x5ed6f3=>_0x5ed6f3[_0x7951f(0x18b,'\x4e\x49\x4a\x24')]===_0x7951f(0x1df,'\x48\x28\x2a\x31')+'\x74'&&!_0x5ed6f3[_0x7951f(0x19b,'\x4e\x72\x25\x29')])[_0x7951f(0x200,'\x61\x4b\x44\x35')](turnText)[_0x7951f(0x1a1,'\x43\x69\x78\x47')](_0x596e86=>_0x596e86[_0x7951f(0x1d5,'\x78\x59\x29\x71')]>=0x4*0x39e+-0x1188+-0x4*-0xce&&(REUSABLE_RE['\x74\x65\x73\x74'](_0x596e86)||hasPositiveProof(_0x596e86)));return cleanText(_0x5721c2??_0x1ee37b[-0xaff+-0x407*0x2+0x130d]??_0x4e6aff[0x7*-0x22+-0x1d6+0x3*0xec]??'\x56\x65\x72\x69\x66\x69\x65\x64'+_0x7951f(0x211,'\x58\x6e\x71\x61')+_0x7951f(0x1a7,'\x48\x28\x2a\x31')+_0x7951f(0x1d7,'\x42\x24\x33\x4c')+_0x7951f(0x213,'\x6a\x4b\x4f\x68')+'\x79\x2e',-0x1f7b+-0xbc1*0x2+0x37b1);}export function sniffConversationCapabilities(_0x37e83e,_0x4092fa={}){const _0x4b847a=_0x3324bd,_0x1d016c=_0x37e83e[_0x4b847a(0x1e6,'\x4f\x70\x43\x71')](_0xd35fa4=>!_0xd35fa4[_0x4b847a(0x1a6,'\x6a\x4b\x4f\x68')]);if(_0x1d016c[_0x4b847a(0x186,'\x43\x43\x43\x73')]===0x1d1f+-0x1cbf+-0x60)return[];const _0x27bd64=_0x1d016c[_0x4b847a(0x1b2,'\x48\x4b\x51\x64')](turnText)[_0x4b847a(0x219,'\x5d\x5a\x4b\x5e')](Boolean)[_0x4b847a(0x18f,'\x6b\x66\x55\x30')]('\x0a');if(!_0x27bd64[_0x4b847a(0x191,'\x7a\x34\x26\x62')]())return[];const _0x15c04c=pickEvidence(_0x1d016c,REUSABLE_RE),_0xd85837=pickEvidence(_0x1d016c,hasPositiveProof);if(_0x15c04c[_0x4b847a(0x181,'\x48\x28\x2a\x31')]===-0x8*0x2+-0x2*-0xa6b+-0xa63*0x2||_0xd85837[_0x4b847a(0x1a4,'\x76\x66\x71\x6f')]===0x1e14+-0x56c+-0x18a8)return[];const _0x2d1b33=hasFailure(_0x27bd64)&&!hasPositiveProof(_0x27bd64);if(_0x2d1b33)return[];if(!hasTerminalSuccessfulToolRun(_0x1d016c))return[];const _0x54aaf6=collectToolCalls(_0x1d016c),_0x545316=domainSignals(_0x27bd64,_0x54aaf6),_0x6aff5c=[...new Set([_0x4b847a(0x20a,'\x62\x29\x74\x4d')+_0x4b847a(0x189,'\x76\x66\x71\x6f')+_0x4b847a(0x1b7,'\x48\x28\x2a\x31'),_0x4b847a(0x17f,'\x6b\x66\x55\x30')+_0x4b847a(0x20c,'\x58\x6e\x71\x61')+'\x77',..._0x545316])][_0x4b847a(0x1a8,'\x78\x59\x29\x71')](0x2*0x95d+0x1*-0x10+0x955*-0x2,-0x2350+-0x25a7+0x1855*0x3),_0x1be7af=0x870+-0x1*-0x13e9+-0x1c55+Math[_0x4b847a(0x1c0,'\x30\x47\x31\x4e')](0x17f*-0x7+-0x1fd6+0x1d7*0x17,_0x15c04c['\x6c\x65\x6e\x67\x74\x68'])+Math[_0x4b847a(0x1c0,'\x30\x47\x31\x4e')](-0x12f1*-0x1+0x4b*0x2d+-0x201e,_0xd85837[_0x4b847a(0x1ce,'\x4d\x40\x25\x50')])+Math['\x6d\x69\x6e'](0x217d+0x2fb+-0x2476,_0x54aaf6[_0x4b847a(0x20f,'\x58\x6e\x71\x61')]),_0x393b8c=pickSummary(_0x1d016c,_0x15c04c,_0xd85837),_0x51aff7=_0x545316[0xeb+-0x373*-0x1+-0x45e*0x1]??_0x4b847a(0x1be,'\x45\x56\x24\x74')+_0x4b847a(0x1bf,'\x4e\x49\x4a\x24')+'\x77',_0x216b7d={'\x69\x64':stableId({'\x73\x75\x6d\x6d\x61\x72\x79':_0x393b8c,'\x73\x69\x67\x6e\x61\x6c\x73':_0x6aff5c,'\x65\x76\x69\x64\x65\x6e\x63\x65':[..._0x15c04c,..._0xd85837]['\x73\x6c\x69\x63\x65'](-0x1*-0xc53+-0x3aa+-0x8a9,-0x944+0x2693+-0x1*0x1d4b)}),'\x74\x69\x74\x6c\x65':_0x4b847a(0x209,'\x56\x66\x64\x4e')+_0x4b847a(0x1e4,'\x4b\x69\x55\x21')+_0x4b847a(0x1b0,'\x5a\x75\x4f\x73')+_0x4b847a(0x1e2,'\x36\x30\x32\x5e')+_0x51aff7,'\x73\x75\x6d\x6d\x61\x72\x79':_0x393b8c,'\x73\x69\x67\x6e\x61\x6c\x73':_0x6aff5c,'\x65\x76\x69\x64\x65\x6e\x63\x65':[..._0x15c04c,..._0xd85837][_0x4b847a(0x182,'\x5a\x6b\x34\x6a')](0x5c6+0xd76*0x1+-0x2*0x99e,0x6c7*-0x3+0x2447*-0x1+0x38a0),'\x73\x63\x6f\x72\x65':_0x1be7af,'\x72\x65\x61\x73\x6f\x6e\x73':[_0x4b847a(0x1d3,'\x4a\x4a\x70\x6c')+_0x4b847a(0x188,'\x45\x51\x51\x55'),_0x4b847a(0x1c8,'\x48\x4b\x51\x64')+_0x4b847a(0x1cb,'\x4e\x36\x39\x71'),..._0x54aaf6[_0x4b847a(0x1b5,'\x34\x6e\x34\x38')]>0x1380+0x171c+-0x4*0xaa7?[_0x4b847a(0x1a2,'\x61\x2a\x71\x76')+_0x4b847a(0x1e3,'\x58\x6e\x71\x61')]:[]],'\x74\x6f\x6f\x6c\x43\x61\x6c\x6c\x73':_0x54aaf6};return[_0x216b7d][_0x4b847a(0x1c5,'\x57\x49\x47\x5e')](-0x439*0x8+0x1cc1+-0x63*-0xd,_0x4092fa[_0x4b847a(0x201,'\x35\x67\x75\x56')]??0x15d8+-0x11d4+-0xd*0x4f);}