pi-harness-runtime 1.1.280 → 1.1.281
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/e2e-tester/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/telegram/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/dist/src/memory-curator.d.ts +65 -0
- package/packages/trajectory/dist/src/memory-curator.d.ts.map +1 -0
- package/packages/trajectory/dist/src/memory-curator.js +157 -0
- package/packages/trajectory/dist/src/memory-curator.js.map +1 -0
- package/packages/trajectory/package.json +1 -1
- package/packages/trajectory/src/memory-curator.ts +223 -0
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/webmcp-tester/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Curator - Autonomous self-improvement for MEMORY.md
|
|
3
|
+
*
|
|
4
|
+
* Uses Jev to judge:
|
|
5
|
+
* 1. Is this a stable fact worth adding to MEMORY.md?
|
|
6
|
+
* 2. Is anything in MEMORY.md stale/outdated?
|
|
7
|
+
*
|
|
8
|
+
* Based on Hermes Agent's self-improvement pattern.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Configuration for autonomous curation
|
|
12
|
+
*/
|
|
13
|
+
export interface MemoryCuratorConfig {
|
|
14
|
+
/** Jev API key */
|
|
15
|
+
apiKey: string;
|
|
16
|
+
/** Jev confidence threshold for auto-add (default: 0.85) */
|
|
17
|
+
autoAddThreshold?: number;
|
|
18
|
+
/** Jev confidence threshold for auto-remove (default: 0.7) */
|
|
19
|
+
autoRemoveThreshold?: number;
|
|
20
|
+
/** Minimum entries before pruning (default: 5) */
|
|
21
|
+
minEntriesForPrune?: number;
|
|
22
|
+
/** Check interval in ms (default: 30 minutes) */
|
|
23
|
+
checkIntervalMs?: number;
|
|
24
|
+
/** Max facts to propose per check (default: 2) */
|
|
25
|
+
maxProposalsPerCheck?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Result of a curation check
|
|
29
|
+
*/
|
|
30
|
+
export interface CurationResult {
|
|
31
|
+
added: string[];
|
|
32
|
+
removed: number;
|
|
33
|
+
errors: string[];
|
|
34
|
+
timestamp: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Memory Curator - Autonomous curation using Jev
|
|
38
|
+
*/
|
|
39
|
+
export declare class MemoryCurator {
|
|
40
|
+
private config;
|
|
41
|
+
private timer;
|
|
42
|
+
private lastCheck;
|
|
43
|
+
private _disposed;
|
|
44
|
+
private memoryFile;
|
|
45
|
+
constructor(config: MemoryCuratorConfig);
|
|
46
|
+
/**
|
|
47
|
+
* Start autonomous curation cycle
|
|
48
|
+
*/
|
|
49
|
+
start(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Stop autonomous curation
|
|
52
|
+
*/
|
|
53
|
+
stop(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Run one curation cycle
|
|
56
|
+
*/
|
|
57
|
+
runCuration(): Promise<CurationResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Parse entries from MEMORY.md
|
|
60
|
+
*/
|
|
61
|
+
private parseEntries;
|
|
62
|
+
isRunning(): boolean;
|
|
63
|
+
getLastCheck(): number;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=memory-curator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-curator.d.ts","sourceRoot":"","sources":["../../src/memory-curator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAUD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAkDD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAE3B,YAAY,MAAM,EAAE,mBAAmB,EAItC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAQZ;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAMX;IAED;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAsD3C;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB,SAAS,IAAI,OAAO,CAEnB;IAED,YAAY,IAAI,MAAM,CAErB;CACF"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Curator - Autonomous self-improvement for MEMORY.md
|
|
3
|
+
*
|
|
4
|
+
* Uses Jev to judge:
|
|
5
|
+
* 1. Is this a stable fact worth adding to MEMORY.md?
|
|
6
|
+
* 2. Is anything in MEMORY.md stale/outdated?
|
|
7
|
+
*
|
|
8
|
+
* Based on Hermes Agent's self-improvement pattern.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
import { homedir } from "node:os";
|
|
13
|
+
const DEFAULT_CONFIG = {
|
|
14
|
+
autoAddThreshold: 0.85,
|
|
15
|
+
autoRemoveThreshold: 0.7,
|
|
16
|
+
minEntriesForPrune: 5,
|
|
17
|
+
checkIntervalMs: 30 * 60 * 1000,
|
|
18
|
+
maxProposalsPerCheck: 2,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Simple OpenAI-compatible API call for Jev decisions
|
|
22
|
+
*/
|
|
23
|
+
async function callJev(apiKey, prompt) {
|
|
24
|
+
const systemPrompt = "You are a memory curator. Evaluate facts and respond with confidence scores. Reply with JSON: {\"noul\": 0.0-1.0, \"action\": \"keep\" or \"remove\"}";
|
|
25
|
+
const response = await fetch("https://api.typesafe.ai/v1/chat/completions", {
|
|
26
|
+
method: "POST",
|
|
27
|
+
headers: {
|
|
28
|
+
"Content-Type": "application/json",
|
|
29
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
model: "system-one",
|
|
33
|
+
messages: [
|
|
34
|
+
{ role: "system", content: systemPrompt },
|
|
35
|
+
{ role: "user", content: prompt },
|
|
36
|
+
],
|
|
37
|
+
temperature: 0.1,
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Error(`Jev API error: ${response.status}`);
|
|
42
|
+
}
|
|
43
|
+
const data = await response.json();
|
|
44
|
+
const text = data.choices?.[0]?.message?.content ?? "";
|
|
45
|
+
try {
|
|
46
|
+
return JSON.parse(text);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return { noul: 0, action: "keep" };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Memory Curator - Autonomous curation using Jev
|
|
54
|
+
*/
|
|
55
|
+
export class MemoryCurator {
|
|
56
|
+
config;
|
|
57
|
+
timer = null;
|
|
58
|
+
lastCheck = 0;
|
|
59
|
+
_disposed = false;
|
|
60
|
+
memoryFile;
|
|
61
|
+
constructor(config) {
|
|
62
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
63
|
+
const memDir = join(homedir(), ".pi-harness", "memory");
|
|
64
|
+
this.memoryFile = join(memDir, "MEMORY.md");
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Start autonomous curation cycle
|
|
68
|
+
*/
|
|
69
|
+
start() {
|
|
70
|
+
if (this._disposed)
|
|
71
|
+
return;
|
|
72
|
+
void this.runCuration();
|
|
73
|
+
this.timer = setInterval(() => {
|
|
74
|
+
void this.runCuration();
|
|
75
|
+
}, this.config.checkIntervalMs);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Stop autonomous curation
|
|
79
|
+
*/
|
|
80
|
+
stop() {
|
|
81
|
+
if (this.timer) {
|
|
82
|
+
clearInterval(this.timer);
|
|
83
|
+
this.timer = null;
|
|
84
|
+
}
|
|
85
|
+
this._disposed = true;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Run one curation cycle
|
|
89
|
+
*/
|
|
90
|
+
async runCuration() {
|
|
91
|
+
const result = {
|
|
92
|
+
added: [],
|
|
93
|
+
removed: 0,
|
|
94
|
+
errors: [],
|
|
95
|
+
timestamp: Date.now(),
|
|
96
|
+
};
|
|
97
|
+
if (this._disposed) {
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
if (Date.now() - this.lastCheck < this.config.checkIntervalMs / 2) {
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
this.lastCheck = Date.now();
|
|
105
|
+
if (!existsSync(this.memoryFile)) {
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
const content = readFileSync(this.memoryFile, "utf-8");
|
|
109
|
+
const entries = this.parseEntries(content);
|
|
110
|
+
for (const entry of entries) {
|
|
111
|
+
try {
|
|
112
|
+
const decision = await callJev(this.config.apiKey, `Memory Entry: "${entry}"
|
|
113
|
+
|
|
114
|
+
Is this memory entry still relevant and accurate for future sessions?
|
|
115
|
+
Consider:
|
|
116
|
+
- Has the project/tool changed since this was added?
|
|
117
|
+
- Is this a preference that may have changed?
|
|
118
|
+
|
|
119
|
+
Respond with JSON: {"noul": 0.0-1.0, "action": "keep" or "remove"}`);
|
|
120
|
+
const staleConf = decision.noul ?? 0;
|
|
121
|
+
if (staleConf >= this.config.autoRemoveThreshold && decision.action === "remove") {
|
|
122
|
+
result.removed++;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
result.errors.push(`Eval error: ${err}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
result.errors.push(String(err));
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Parse entries from MEMORY.md
|
|
137
|
+
*/
|
|
138
|
+
parseEntries(content) {
|
|
139
|
+
const entries = [];
|
|
140
|
+
const lines = content.split("\n");
|
|
141
|
+
for (const line of lines) {
|
|
142
|
+
const trimmed = line.trim();
|
|
143
|
+
const match = trimmed.match(/^[-*]\s+(?:\[.+\]\s+)?(.+)/);
|
|
144
|
+
if (match) {
|
|
145
|
+
entries.push(match[1]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return entries;
|
|
149
|
+
}
|
|
150
|
+
isRunning() {
|
|
151
|
+
return this.timer !== null && !this._disposed;
|
|
152
|
+
}
|
|
153
|
+
getLastCheck() {
|
|
154
|
+
return this.lastCheck;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=memory-curator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-curator.js","sourceRoot":"","sources":["../../src/memory-curator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAoBlC,MAAM,cAAc,GAAG;IACrB,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,GAAG;IACxB,kBAAkB,EAAE,CAAC;IACrB,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC/B,oBAAoB,EAAE,CAAC;CACxB,CAAC;AAqBF;;GAEG;AACH,KAAK,UAAU,OAAO,CACpB,MAAc,EACd,MAAc;IAEd,MAAM,YAAY,GAAG,uJAAuJ,CAAC;IAE7K,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,6CAA6C,EAAE;QAC1E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,MAAM,EAAE;SACpC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;gBACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;aAClC;YACD,WAAW,EAAE,GAAG;SACjB,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6D,CAAC;IAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAEvD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,CAAgC;IACtC,KAAK,GAA0C,IAAI,CAAC;IACpD,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,GAAG,KAAK,CAAC;IAClB,UAAU,CAAS;IAE3B,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAExB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAmB;YAC7B,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBAClE,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAE3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,kBAAkB,KAAK;;;;;;;mEAOgC,CACxD,CAAC;oBAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;oBAErC,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACjF,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QAEH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe;QAClC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC1D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
|