@clawtrail/context-graph-openclaw 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chain-state.d.ts +2 -0
- package/dist/chain-state.d.ts.map +1 -1
- package/dist/chain-state.js +16 -6
- package/dist/chain-state.js.map +1 -1
- package/dist/register.d.ts +1 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +245 -73
- package/dist/register.js.map +1 -1
- package/package.json +1 -1
package/dist/chain-state.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export interface ChainStateSubmission {
|
|
|
8
8
|
export interface ChainState {
|
|
9
9
|
nextBlockNumber: number;
|
|
10
10
|
lastSubmission: ChainStateSubmission | null;
|
|
11
|
+
/** Epoch ms of the last successfully processed time window (submitted or idle-skipped). */
|
|
12
|
+
lastSubmittedAt: number | null;
|
|
11
13
|
}
|
|
12
14
|
/** Load chain state from disk. Returns default state if file doesn't exist. */
|
|
13
15
|
export declare function loadChainState(contextGraphRoot: string): Promise<ChainState>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-state.d.ts","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chain-state.d.ts","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,2FAA2F;IAC3F,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAYD,+EAA+E;AAC/E,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED,6DAA6D;AAC7D,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAIf"}
|
package/dist/chain-state.js
CHANGED
|
@@ -5,25 +5,35 @@
|
|
|
5
5
|
* survives process restarts. Stores the last submission's ID, merkle root,
|
|
6
6
|
* payload hash, and block number for building the next block's
|
|
7
7
|
* `cg:previousBlock` reference.
|
|
8
|
+
*
|
|
9
|
+
* Also tracks `lastSubmittedAt` — the epoch-ms timestamp of the last
|
|
10
|
+
* successful block submission (or the last time-window that was processed).
|
|
11
|
+
* Used by the catch-up system to detect gaps and submit retroactive blocks.
|
|
8
12
|
*/
|
|
9
|
-
import { readFile, writeFile, mkdir } from
|
|
10
|
-
import { join, dirname } from
|
|
13
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
14
|
+
import { join, dirname } from "node:path";
|
|
11
15
|
const DEFAULT_STATE = {
|
|
12
16
|
nextBlockNumber: 1,
|
|
13
17
|
lastSubmission: null,
|
|
18
|
+
lastSubmittedAt: null,
|
|
14
19
|
};
|
|
15
20
|
function chainStatePath(contextGraphRoot) {
|
|
16
|
-
return join(contextGraphRoot,
|
|
21
|
+
return join(contextGraphRoot, "chain-state.json");
|
|
17
22
|
}
|
|
18
23
|
/** Load chain state from disk. Returns default state if file doesn't exist. */
|
|
19
24
|
export async function loadChainState(contextGraphRoot) {
|
|
20
25
|
try {
|
|
21
|
-
const raw = await readFile(chainStatePath(contextGraphRoot),
|
|
26
|
+
const raw = await readFile(chainStatePath(contextGraphRoot), "utf-8");
|
|
22
27
|
const parsed = JSON.parse(raw);
|
|
23
28
|
// Validate essential fields
|
|
24
|
-
if (typeof parsed.nextBlockNumber !==
|
|
29
|
+
if (typeof parsed.nextBlockNumber !== "number" ||
|
|
30
|
+
parsed.nextBlockNumber < 1) {
|
|
25
31
|
return DEFAULT_STATE;
|
|
26
32
|
}
|
|
33
|
+
// Backfill lastSubmittedAt for existing chain-state files
|
|
34
|
+
if (typeof parsed.lastSubmittedAt !== "number") {
|
|
35
|
+
parsed.lastSubmittedAt = null;
|
|
36
|
+
}
|
|
27
37
|
return parsed;
|
|
28
38
|
}
|
|
29
39
|
catch {
|
|
@@ -34,6 +44,6 @@ export async function loadChainState(contextGraphRoot) {
|
|
|
34
44
|
export async function saveChainState(contextGraphRoot, state) {
|
|
35
45
|
const filePath = chainStatePath(contextGraphRoot);
|
|
36
46
|
await mkdir(dirname(filePath), { recursive: true });
|
|
37
|
-
await writeFile(filePath, JSON.stringify(state, null, 2),
|
|
47
|
+
await writeFile(filePath, JSON.stringify(state, null, 2), "utf-8");
|
|
38
48
|
}
|
|
39
49
|
//# sourceMappingURL=chain-state.js.map
|
package/dist/chain-state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-state.js","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chain-state.js","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiB1C,MAAM,aAAa,GAAe;IAChC,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;CACtB,CAAC;AAEF,SAAS,cAAc,CAAC,gBAAwB;IAC9C,OAAO,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,gBAAwB;IAExB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC7C,4BAA4B;QAC5B,IACE,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ;YAC1C,MAAM,CAAC,eAAe,GAAG,CAAC,EAC1B,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,0DAA0D;QAC1D,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,gBAAwB,EACxB,KAAiB;IAEjB,MAAM,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/register.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Hook event names as defined in OpenClaw's PluginHookName type */
|
|
2
|
-
type HookName =
|
|
2
|
+
type HookName = "message_received" | "tool_result_persist" | "after_tool_call" | "session_start" | "session_end" | "before_reset" | "agent_end" | "gateway_stop" | "llm_output" | "llm_input";
|
|
3
3
|
interface PluginApi {
|
|
4
4
|
config?: {
|
|
5
5
|
plugins?: {
|
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAqBA,oEAAoE;AACpE,KAAK,QAAQ,GACT,kBAAkB,GAClB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,cAAc,GACd,WAAW,GACX,cAAc,GACd,YAAY,GACZ,WAAW,CAAC;AAEhB,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;gBAAE,OAAO,CAAC,EAAE,OAAO,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,CACxD,CAAC;SACH,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,wEAAwE;IACxE,YAAY,CAAC,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACjE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,IAAI,CAAC;IACR,iEAAiE;IACjE,EAAE,CAAC,CACD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACrD,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,IAAI,CAAC;IACR,YAAY,CAAC,CAAC,IAAI,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;KACvB,GAAG,IAAI,CAAC;CACV;AAucD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAwWrD"}
|
package/dist/register.js
CHANGED
|
@@ -4,16 +4,29 @@
|
|
|
4
4
|
* Wires the context-graph adapter into OpenClaw's hook-based plugin system.
|
|
5
5
|
* Registers hooks for session lifecycle approximation and tool call capture,
|
|
6
6
|
* and optionally auto-submits signed provenance to the ClawTrail API.
|
|
7
|
+
*
|
|
8
|
+
* Session types:
|
|
9
|
+
* - active: Agent made real decisions/tool calls during this window
|
|
10
|
+
* - idle: Agent was online but did nothing (0 events) — proves uptime
|
|
11
|
+
* - offline: Retroactive catch-up block — agent was down during this window
|
|
7
12
|
*/
|
|
8
|
-
import { createHash } from
|
|
9
|
-
import { resolve } from
|
|
10
|
-
import { OpenClawAdapter } from
|
|
11
|
-
import { loadChainState, saveChainState } from
|
|
13
|
+
import { createHash } from "node:crypto";
|
|
14
|
+
import { resolve } from "node:path";
|
|
15
|
+
import { OpenClawAdapter } from "./OpenClawAdapter.js";
|
|
16
|
+
import { loadChainState, saveChainState } from "./chain-state.js";
|
|
12
17
|
// ── Helpers ──────────────────────────────────────────────────────────
|
|
13
|
-
const TAG =
|
|
18
|
+
const TAG = "[context-graph]";
|
|
14
19
|
function log(api, level, ...args) {
|
|
15
20
|
// Concatenate into a single string — OpenClaw's logger only captures the first arg
|
|
16
|
-
const msg = TAG +
|
|
21
|
+
const msg = TAG +
|
|
22
|
+
" " +
|
|
23
|
+
args
|
|
24
|
+
.map((a) => a instanceof Error
|
|
25
|
+
? a.message
|
|
26
|
+
: typeof a === "string"
|
|
27
|
+
? a
|
|
28
|
+
: JSON.stringify(a))
|
|
29
|
+
.join(" ");
|
|
17
30
|
if (api.logger?.[level]) {
|
|
18
31
|
api.logger[level](msg);
|
|
19
32
|
}
|
|
@@ -37,22 +50,25 @@ function deriveBaseUrl(submitUrl) {
|
|
|
37
50
|
// submitUrl is like https://sapi.clawtrail.ai/ct/api/context-graph/submit
|
|
38
51
|
// We need https://sapi.clawtrail.ai/ct
|
|
39
52
|
const url = new URL(submitUrl);
|
|
40
|
-
const pathParts = url.pathname.split(
|
|
41
|
-
url.pathname = pathParts[0] ||
|
|
42
|
-
return url.toString().replace(/\/$/,
|
|
53
|
+
const pathParts = url.pathname.split("/api/");
|
|
54
|
+
url.pathname = pathParts[0] || "";
|
|
55
|
+
return url.toString().replace(/\/$/, "");
|
|
43
56
|
}
|
|
44
57
|
/** SHA-256 hash for privacy — never store raw reasoning text */
|
|
45
58
|
function sha256(input) {
|
|
46
|
-
return createHash(
|
|
59
|
+
return createHash("sha256").update(input).digest("hex");
|
|
47
60
|
}
|
|
48
61
|
/**
|
|
49
|
-
* Fetch agent decisions from ClawTrail API
|
|
62
|
+
* Fetch agent decisions from ClawTrail API for a time window.
|
|
50
63
|
* These are the agent's real platform actions (votes, comments, etc.)
|
|
51
64
|
* logged via POST /api/agents/me/decisions during heartbeat cycles.
|
|
52
65
|
*/
|
|
53
|
-
async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs) {
|
|
66
|
+
async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs, untilMs) {
|
|
54
67
|
try {
|
|
55
|
-
|
|
68
|
+
let url = `${baseUrl}/api/agents/${encodeURIComponent(agentId)}/decisions?since=${sinceMs}&limit=100`;
|
|
69
|
+
if (untilMs != null) {
|
|
70
|
+
url += `&until=${untilMs}`;
|
|
71
|
+
}
|
|
56
72
|
const response = await fetch(url, {
|
|
57
73
|
headers: { Authorization: `Bearer ${apiKey}` },
|
|
58
74
|
signal: AbortSignal.timeout(10_000),
|
|
@@ -61,11 +77,11 @@ async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs) {
|
|
|
61
77
|
return [];
|
|
62
78
|
const data = (await response.json());
|
|
63
79
|
return (data.decisions ?? []).map((d) => ({
|
|
64
|
-
action: d.action ||
|
|
80
|
+
action: d.action || "unknown",
|
|
65
81
|
target_type: d.target_type,
|
|
66
82
|
target_id: d.target_id,
|
|
67
83
|
target_title: d.target_title,
|
|
68
|
-
decision: d.decision ||
|
|
84
|
+
decision: d.decision || "",
|
|
69
85
|
reasoning: d.reasoning,
|
|
70
86
|
created_at: d.created_at || Date.now(),
|
|
71
87
|
}));
|
|
@@ -74,7 +90,46 @@ async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs) {
|
|
|
74
90
|
return [];
|
|
75
91
|
}
|
|
76
92
|
}
|
|
77
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Fetch ALL decisions for a time range, paginating through the API.
|
|
95
|
+
* Used by the catch-up system to get decisions for potentially long gaps.
|
|
96
|
+
*/
|
|
97
|
+
async function fetchAllDecisions(baseUrl, apiKey, agentId, sinceMs, untilMs) {
|
|
98
|
+
const all = [];
|
|
99
|
+
let page = 1;
|
|
100
|
+
const MAX_PAGES = 50; // safety limit: 50 * 100 = 5000 decisions max
|
|
101
|
+
while (page <= MAX_PAGES) {
|
|
102
|
+
try {
|
|
103
|
+
const url = `${baseUrl}/api/agents/${encodeURIComponent(agentId)}/decisions?since=${sinceMs}&until=${untilMs}&limit=100&page=${page}`;
|
|
104
|
+
const response = await fetch(url, {
|
|
105
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
106
|
+
signal: AbortSignal.timeout(15_000),
|
|
107
|
+
});
|
|
108
|
+
if (!response.ok)
|
|
109
|
+
break;
|
|
110
|
+
const data = (await response.json());
|
|
111
|
+
const decisions = (data.decisions ?? []).map((d) => ({
|
|
112
|
+
action: d.action || "unknown",
|
|
113
|
+
target_type: d.target_type,
|
|
114
|
+
target_id: d.target_id,
|
|
115
|
+
target_title: d.target_title,
|
|
116
|
+
decision: d.decision || "",
|
|
117
|
+
reasoning: d.reasoning,
|
|
118
|
+
created_at: d.created_at || Date.now(),
|
|
119
|
+
}));
|
|
120
|
+
all.push(...decisions);
|
|
121
|
+
// If fewer than limit returned, we've exhausted this range
|
|
122
|
+
if (decisions.length < 100)
|
|
123
|
+
break;
|
|
124
|
+
page++;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return all;
|
|
131
|
+
}
|
|
132
|
+
async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgRoot, sessionType = "active") {
|
|
78
133
|
const MAX_RETRIES = 1;
|
|
79
134
|
const RETRY_DELAY = 2000;
|
|
80
135
|
// Decisions are now fetched and logged in endSessionAndSubmit() BEFORE the
|
|
@@ -90,26 +145,29 @@ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgR
|
|
|
90
145
|
submissionId: chainState.lastSubmission.submissionId,
|
|
91
146
|
merkleRoot: chainState.lastSubmission.merkleRoot,
|
|
92
147
|
payloadHash: chainState.lastSubmission.payloadHash,
|
|
93
|
-
...(chainState.lastSubmission.dkgUal
|
|
148
|
+
...(chainState.lastSubmission.dkgUal
|
|
149
|
+
? { dkgUal: chainState.lastSubmission.dkgUal }
|
|
150
|
+
: {}),
|
|
94
151
|
};
|
|
95
152
|
}
|
|
96
153
|
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
97
154
|
try {
|
|
98
155
|
const { signed } = await adapter.summarizeAndSign(sessionId, chainOpts);
|
|
99
156
|
if (!signed) {
|
|
100
|
-
log(api,
|
|
157
|
+
log(api, "warn", "No signed submission produced — skipping auto-submit");
|
|
101
158
|
return;
|
|
102
159
|
}
|
|
103
|
-
// Include chain metadata in the submission body
|
|
160
|
+
// Include chain metadata and session type in the submission body
|
|
104
161
|
const submissionBody = {
|
|
105
162
|
...signed,
|
|
106
163
|
chainBlockNumber: chainOpts.blockNumber,
|
|
107
164
|
previousSubmissionId: chainState.lastSubmission?.submissionId ?? null,
|
|
165
|
+
sessionType,
|
|
108
166
|
};
|
|
109
167
|
const response = await fetch(submitUrl, {
|
|
110
|
-
method:
|
|
168
|
+
method: "POST",
|
|
111
169
|
headers: {
|
|
112
|
-
|
|
170
|
+
"Content-Type": "application/json",
|
|
113
171
|
Authorization: `Bearer ${apiKey}`,
|
|
114
172
|
},
|
|
115
173
|
body: JSON.stringify(submissionBody),
|
|
@@ -117,7 +175,7 @@ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgR
|
|
|
117
175
|
});
|
|
118
176
|
if (response.ok) {
|
|
119
177
|
const result = (await response.json());
|
|
120
|
-
log(api,
|
|
178
|
+
log(api, "info", `Submitted session ${sessionId}:`, `type=${sessionType},`, `submissionId=${result.submissionId},`, `block=#${result.chainBlockNumber ?? chainOpts.blockNumber},`, `claims=${result.claimsExtracted}`);
|
|
121
179
|
// Save chain state for next submission
|
|
122
180
|
if (result.submissionId) {
|
|
123
181
|
await saveChainState(cgRoot, {
|
|
@@ -128,34 +186,125 @@ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgR
|
|
|
128
186
|
payloadHash: signed.payloadHash,
|
|
129
187
|
blockNumber: result.chainBlockNumber ?? chainOpts.blockNumber ?? 1,
|
|
130
188
|
},
|
|
189
|
+
lastSubmittedAt: Date.now(),
|
|
131
190
|
});
|
|
132
191
|
}
|
|
133
192
|
return;
|
|
134
193
|
}
|
|
135
|
-
const errorBody = await response.text().catch(() =>
|
|
136
|
-
log(api,
|
|
194
|
+
const errorBody = await response.text().catch(() => "");
|
|
195
|
+
log(api, "warn", `Submit failed (HTTP ${response.status}):`, errorBody.slice(0, 200));
|
|
137
196
|
// Don't retry client errors (bad request, auth failure, etc.)
|
|
138
197
|
if (response.status >= 400 && response.status < 500)
|
|
139
198
|
return;
|
|
140
199
|
}
|
|
141
200
|
catch (err) {
|
|
142
|
-
log(api,
|
|
201
|
+
log(api, "warn", `Submit error (attempt ${attempt + 1}):`, err instanceof Error ? err.message : String(err));
|
|
143
202
|
}
|
|
144
203
|
if (attempt < MAX_RETRIES) {
|
|
145
204
|
await new Promise((r) => setTimeout(r, RETRY_DELAY));
|
|
146
205
|
}
|
|
147
206
|
}
|
|
148
207
|
}
|
|
208
|
+
// ── Catch-Up System ─────────────────────────────────────────────────
|
|
209
|
+
/**
|
|
210
|
+
* Detect gaps in the submission chain and submit retroactive blocks.
|
|
211
|
+
*
|
|
212
|
+
* When the agent was offline (process not running) or the context graph
|
|
213
|
+
* plugin failed to submit, there will be a gap between `lastSubmittedAt`
|
|
214
|
+
* and the current time. This function:
|
|
215
|
+
*
|
|
216
|
+
* 1. Detects the gap duration
|
|
217
|
+
* 2. Fetches all decisions from the API for the missed period
|
|
218
|
+
* 3. Groups decisions into 5-minute windows
|
|
219
|
+
* 4. For each window: creates a session, logs events (or none), submits
|
|
220
|
+
* - Windows WITH decisions → 'active' blocks
|
|
221
|
+
* - Windows WITHOUT decisions → 'offline' blocks (proves downtime)
|
|
222
|
+
*
|
|
223
|
+
* Returns true if catch-up was performed, false if no gap detected.
|
|
224
|
+
*/
|
|
225
|
+
async function runCatchUp(adapter, api, cfg, cgRoot, windowMs) {
|
|
226
|
+
const submitUrl = cfg.submitUrl;
|
|
227
|
+
const apiKey = cfg.apiKey;
|
|
228
|
+
if (!submitUrl || !apiKey)
|
|
229
|
+
return false;
|
|
230
|
+
const chainState = await loadChainState(cgRoot);
|
|
231
|
+
// No history — can't determine gap. Let normal flow handle first block.
|
|
232
|
+
if (!chainState.lastSubmittedAt)
|
|
233
|
+
return false;
|
|
234
|
+
const now = Date.now();
|
|
235
|
+
const gapMs = now - chainState.lastSubmittedAt;
|
|
236
|
+
// Only catch up if gap is at least 2 windows (10+ minutes).
|
|
237
|
+
// Single-window gaps are handled by normal session recycling.
|
|
238
|
+
if (gapMs < windowMs * 2)
|
|
239
|
+
return false;
|
|
240
|
+
const missedWindows = Math.floor(gapMs / windowMs);
|
|
241
|
+
log(api, "info", `Catch-up: detected gap of ${Math.round(gapMs / 60_000)}min (${missedWindows} windows) since last submission`);
|
|
242
|
+
// Fetch all decisions for the missed period
|
|
243
|
+
const baseUrl = deriveBaseUrl(submitUrl);
|
|
244
|
+
const agentIdStr = cfg.agentId || "unknown";
|
|
245
|
+
const allDecisions = await fetchAllDecisions(baseUrl, apiKey, agentIdStr, chainState.lastSubmittedAt, now);
|
|
246
|
+
log(api, "info", `Catch-up: found ${allDecisions.length} decisions in missed period`);
|
|
247
|
+
// Cap catch-up at 100 blocks per run to avoid blocking the process too long.
|
|
248
|
+
// If gap is bigger, remaining blocks will be caught up on next cycle.
|
|
249
|
+
const MAX_CATCHUP_BLOCKS = 100;
|
|
250
|
+
const blocksToSubmit = Math.min(missedWindows, MAX_CATCHUP_BLOCKS);
|
|
251
|
+
let submitted = 0;
|
|
252
|
+
for (let i = 0; i < blocksToSubmit; i++) {
|
|
253
|
+
const windowStart = chainState.lastSubmittedAt + i * windowMs;
|
|
254
|
+
const windowEnd = windowStart + windowMs;
|
|
255
|
+
// Find decisions that fall within this window
|
|
256
|
+
const windowDecisions = allDecisions.filter((d) => d.created_at >= windowStart && d.created_at < windowEnd);
|
|
257
|
+
const sessionType = windowDecisions.length > 0 ? "active" : "offline";
|
|
258
|
+
try {
|
|
259
|
+
// Create ephemeral session for this catch-up block
|
|
260
|
+
const sessionKey = `catchup:${windowStart}`;
|
|
261
|
+
const agentId = cfg.agentId || undefined;
|
|
262
|
+
const ctx = createSessionContext(sessionKey, `catch-up:${sessionType}`, agentId);
|
|
263
|
+
const session = await adapter.onSessionStart(ctx);
|
|
264
|
+
// Log decisions as AGENT_ACTION events (if any)
|
|
265
|
+
for (const d of windowDecisions) {
|
|
266
|
+
await adapter.logExternalEvent(session.meta.session_id, {
|
|
267
|
+
type: "AGENT_ACTION",
|
|
268
|
+
status: "SUCCEEDED",
|
|
269
|
+
data: {
|
|
270
|
+
action: d.action,
|
|
271
|
+
target_type: d.target_type ?? null,
|
|
272
|
+
target_id: d.target_id ?? null,
|
|
273
|
+
decision: d.decision,
|
|
274
|
+
reasoning_hash: d.reasoning ? sha256(d.reasoning) : null,
|
|
275
|
+
},
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
// End session
|
|
279
|
+
await adapter.onSessionEnd(ctx);
|
|
280
|
+
// Submit
|
|
281
|
+
await submitToClawTrail(adapter, session.meta.session_id, submitUrl, apiKey, api, cgRoot, sessionType);
|
|
282
|
+
submitted++;
|
|
283
|
+
// Brief delay to avoid hammering the API
|
|
284
|
+
if (i < blocksToSubmit - 1) {
|
|
285
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch (err) {
|
|
289
|
+
log(api, "warn", `Catch-up block ${i + 1} failed:`, err);
|
|
290
|
+
// Stop catch-up on first failure — chain state is already saved for
|
|
291
|
+
// the last successful block, so next run picks up from there
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
log(api, "info", `Catch-up: submitted ${submitted}/${blocksToSubmit} blocks (${allDecisions.length} decisions total)`);
|
|
296
|
+
return submitted > 0;
|
|
297
|
+
}
|
|
149
298
|
// ── Plugin Register Function ────────────────────────────────────────
|
|
150
299
|
export default function register(api) {
|
|
151
300
|
// 1. Read config
|
|
152
|
-
const pluginEntry = api.config?.plugins?.entries?.[
|
|
301
|
+
const pluginEntry = api.config?.plugins?.entries?.["context-graph"];
|
|
153
302
|
const cfg = (pluginEntry?.config ?? {});
|
|
154
303
|
if (cfg.enabled === false)
|
|
155
304
|
return;
|
|
156
305
|
// 2. Create adapter — resolve contextGraphRoot to absolute path so it
|
|
157
306
|
// survives any cwd changes during tool call execution.
|
|
158
|
-
const cgRoot = resolve(cfg.contextGraphRoot ??
|
|
307
|
+
const cgRoot = resolve(cfg.contextGraphRoot ?? ".context-graph");
|
|
159
308
|
const adapter = new OpenClawAdapter({
|
|
160
309
|
enabled: true,
|
|
161
310
|
contextGraphRoot: cgRoot,
|
|
@@ -168,6 +317,8 @@ export default function register(api) {
|
|
|
168
317
|
});
|
|
169
318
|
// 3. Session map — keyed by OpenClaw sessionKey
|
|
170
319
|
const sessions = new Map();
|
|
320
|
+
// Track whether catch-up has run this process lifecycle
|
|
321
|
+
let catchUpDone = false;
|
|
171
322
|
// Helper: lazily create a session if one doesn't exist yet.
|
|
172
323
|
// The embedded heartbeat agent doesn't fire session_start, so we
|
|
173
324
|
// create a session on the first after_tool_call or llm_output event.
|
|
@@ -178,7 +329,7 @@ export default function register(api) {
|
|
|
178
329
|
try {
|
|
179
330
|
const sessionKey = `auto:${Date.now()}`;
|
|
180
331
|
const agentId = cfg.agentId || undefined;
|
|
181
|
-
const ctx = createSessionContext(sessionKey,
|
|
332
|
+
const ctx = createSessionContext(sessionKey, "auto-session", agentId);
|
|
182
333
|
const session = await adapter.onSessionStart(ctx);
|
|
183
334
|
const state = {
|
|
184
335
|
ctx,
|
|
@@ -187,15 +338,15 @@ export default function register(api) {
|
|
|
187
338
|
eventCount: 0,
|
|
188
339
|
};
|
|
189
340
|
sessions.set(sessionKey, state);
|
|
190
|
-
log(api,
|
|
341
|
+
log(api, "info", `Session auto-started: ${session.meta.session_id}`);
|
|
191
342
|
return state;
|
|
192
343
|
}
|
|
193
344
|
catch (err) {
|
|
194
|
-
log(api,
|
|
345
|
+
log(api, "warn", "Failed to auto-start session:", err);
|
|
195
346
|
return undefined;
|
|
196
347
|
}
|
|
197
348
|
}
|
|
198
|
-
// Helper: end session and
|
|
349
|
+
// Helper: end session and submit (always — idle blocks are valuable)
|
|
199
350
|
async function endSessionAndSubmit(sessionKey) {
|
|
200
351
|
const state = sessions.get(sessionKey);
|
|
201
352
|
if (!state)
|
|
@@ -207,18 +358,19 @@ export default function register(api) {
|
|
|
207
358
|
// Fetch and log real decisions BEFORE ending the session.
|
|
208
359
|
// logExternalEvent rejects events on COMPLETED sessions, so
|
|
209
360
|
// decisions must be injected while the session is still ACTIVE.
|
|
361
|
+
let decisionsLogged = 0;
|
|
210
362
|
if (autoSubmit && submitUrl && apiKey) {
|
|
211
363
|
try {
|
|
212
364
|
const baseUrl = deriveBaseUrl(submitUrl);
|
|
213
|
-
const agentIdStr = cfg.agentId ||
|
|
365
|
+
const agentIdStr = cfg.agentId || "unknown";
|
|
214
366
|
const decisions = await fetchDecisions(baseUrl, apiKey, agentIdStr, state.startedAt);
|
|
215
367
|
if (decisions.length > 0) {
|
|
216
|
-
log(api,
|
|
368
|
+
log(api, "info", `Fetched ${decisions.length} decisions for session ${state.sessionId}`);
|
|
217
369
|
}
|
|
218
370
|
for (const d of decisions) {
|
|
219
371
|
await adapter.logExternalEvent(state.sessionId, {
|
|
220
|
-
type:
|
|
221
|
-
status:
|
|
372
|
+
type: "AGENT_ACTION",
|
|
373
|
+
status: "SUCCEEDED",
|
|
222
374
|
data: {
|
|
223
375
|
action: d.action,
|
|
224
376
|
target_type: d.target_type ?? null,
|
|
@@ -227,28 +379,32 @@ export default function register(api) {
|
|
|
227
379
|
reasoning_hash: d.reasoning ? sha256(d.reasoning) : null,
|
|
228
380
|
},
|
|
229
381
|
});
|
|
382
|
+
decisionsLogged++;
|
|
230
383
|
}
|
|
231
384
|
}
|
|
232
385
|
catch (err) {
|
|
233
|
-
log(api,
|
|
386
|
+
log(api, "warn", "Failed to fetch decisions:", err);
|
|
234
387
|
}
|
|
235
388
|
}
|
|
389
|
+
// Determine session type: active (has events/decisions) or idle (online but nothing happened)
|
|
390
|
+
const totalEvents = state.eventCount + decisionsLogged;
|
|
391
|
+
const sessionType = totalEvents > 0 ? "active" : "idle";
|
|
236
392
|
// Now end the session — marks it COMPLETED
|
|
237
393
|
await adapter.onSessionEnd(state.ctx);
|
|
238
394
|
if (autoSubmit && submitUrl && apiKey) {
|
|
239
|
-
await submitToClawTrail(adapter, state.sessionId, submitUrl, apiKey, api, cgRoot);
|
|
395
|
+
await submitToClawTrail(adapter, state.sessionId, submitUrl, apiKey, api, cgRoot, sessionType);
|
|
240
396
|
}
|
|
241
397
|
}
|
|
242
398
|
catch (err) {
|
|
243
|
-
log(api,
|
|
399
|
+
log(api, "error", "Error ending session:", err);
|
|
244
400
|
}
|
|
245
401
|
finally {
|
|
246
402
|
sessions.delete(sessionKey);
|
|
247
403
|
}
|
|
248
404
|
}
|
|
249
405
|
// ── Require api.on() — the typed hook API (OpenClaw 2026.2+) ───────
|
|
250
|
-
if (typeof api.on !==
|
|
251
|
-
log(api,
|
|
406
|
+
if (typeof api.on !== "function") {
|
|
407
|
+
log(api, "warn", "api.on() not available — hooks will not fire. Upgrade OpenClaw to 2026.2+");
|
|
252
408
|
return;
|
|
253
409
|
}
|
|
254
410
|
const on = api.on; // bind for TS narrowing
|
|
@@ -256,15 +412,17 @@ export default function register(api) {
|
|
|
256
412
|
// OpenClaw fires session_start(event, ctx) where:
|
|
257
413
|
// event = { sessionId, resumedFrom? }
|
|
258
414
|
// ctx = { sessionId, agentId }
|
|
259
|
-
on(
|
|
415
|
+
on("session_start", async (...args) => {
|
|
260
416
|
try {
|
|
261
417
|
const event = (args[0] ?? {});
|
|
262
418
|
const hookCtx = (args[1] ?? {});
|
|
263
|
-
const sessionId = hookCtx.sessionId ||
|
|
419
|
+
const sessionId = hookCtx.sessionId ||
|
|
420
|
+
event.sessionId ||
|
|
421
|
+
"default";
|
|
264
422
|
const agentId = hookCtx.agentId || cfg.agentId || undefined;
|
|
265
423
|
if (sessions.has(sessionId))
|
|
266
424
|
return;
|
|
267
|
-
const ctx = createSessionContext(sessionId,
|
|
425
|
+
const ctx = createSessionContext(sessionId, "session", agentId);
|
|
268
426
|
const session = await adapter.onSessionStart(ctx);
|
|
269
427
|
sessions.set(sessionId, {
|
|
270
428
|
ctx,
|
|
@@ -272,28 +430,28 @@ export default function register(api) {
|
|
|
272
430
|
startedAt: Date.now(),
|
|
273
431
|
eventCount: 0,
|
|
274
432
|
});
|
|
275
|
-
log(api,
|
|
433
|
+
log(api, "info", `Session started: ${session.meta.session_id}`);
|
|
276
434
|
}
|
|
277
435
|
catch (err) {
|
|
278
|
-
log(api,
|
|
436
|
+
log(api, "warn", "Failed to start session:", err);
|
|
279
437
|
}
|
|
280
438
|
});
|
|
281
439
|
// ── Hook: after_tool_call → capture tool call (async) ─────────────
|
|
282
440
|
// OpenClaw fires after_tool_call(event, ctx) where:
|
|
283
441
|
// event = { toolName, params, result } or { toolName, params, error }
|
|
284
442
|
// ctx = { toolName }
|
|
285
|
-
on(
|
|
443
|
+
on("after_tool_call", async (...args) => {
|
|
286
444
|
try {
|
|
287
445
|
const event = (args[0] ?? {});
|
|
288
446
|
// Find or lazily create a session
|
|
289
447
|
const state = await ensureSession();
|
|
290
448
|
if (!state)
|
|
291
449
|
return;
|
|
292
|
-
const toolName = event.toolName ||
|
|
450
|
+
const toolName = event.toolName || "unknown";
|
|
293
451
|
const params = (event.params ?? {});
|
|
294
452
|
const result = (event.result ?? {});
|
|
295
453
|
const error = event.error
|
|
296
|
-
? typeof event.error ===
|
|
454
|
+
? typeof event.error === "string"
|
|
297
455
|
? new Error(event.error)
|
|
298
456
|
: event.error instanceof Error
|
|
299
457
|
? event.error
|
|
@@ -309,17 +467,17 @@ export default function register(api) {
|
|
|
309
467
|
state.eventCount++;
|
|
310
468
|
}
|
|
311
469
|
catch (err) {
|
|
312
|
-
log(api,
|
|
470
|
+
log(api, "warn", "Failed to capture tool result:", err);
|
|
313
471
|
}
|
|
314
472
|
});
|
|
315
473
|
// ── Hook: llm_output → capture HTTP references from LLM text ──────
|
|
316
474
|
// OpenClaw fires llm_output(event, ctx) where:
|
|
317
475
|
// event = { content, model?, usage?, toolCalls? }
|
|
318
476
|
// ctx = { sessionId?, agentId? }
|
|
319
|
-
on(
|
|
477
|
+
on("llm_output", async (...args) => {
|
|
320
478
|
try {
|
|
321
479
|
const event = (args[0] ?? {});
|
|
322
|
-
const content = event.content ||
|
|
480
|
+
const content = event.content || "";
|
|
323
481
|
if (!content)
|
|
324
482
|
return;
|
|
325
483
|
// Find or lazily create a session
|
|
@@ -330,11 +488,15 @@ export default function register(api) {
|
|
|
330
488
|
state.eventCount++;
|
|
331
489
|
}
|
|
332
490
|
catch (err) {
|
|
333
|
-
log(api,
|
|
491
|
+
log(api, "warn", "Failed to process LLM output:", err);
|
|
334
492
|
}
|
|
335
493
|
});
|
|
336
494
|
// ── Hooks: session_end, before_reset, gateway_stop → end session ───
|
|
337
|
-
for (const hookName of [
|
|
495
|
+
for (const hookName of [
|
|
496
|
+
"session_end",
|
|
497
|
+
"before_reset",
|
|
498
|
+
"gateway_stop",
|
|
499
|
+
]) {
|
|
338
500
|
on(hookName, async (...args) => {
|
|
339
501
|
const event = (args[0] ?? {});
|
|
340
502
|
const hookCtx = (args[1] ?? {});
|
|
@@ -350,16 +512,26 @@ export default function register(api) {
|
|
|
350
512
|
}
|
|
351
513
|
});
|
|
352
514
|
}
|
|
353
|
-
// ── Hook: agent_end → session recycling
|
|
354
|
-
// agent_end fires after every heartbeat run (~
|
|
355
|
-
// 1.
|
|
356
|
-
// 2.
|
|
515
|
+
// ── Hook: agent_end → session recycling + catch-up ────────────────
|
|
516
|
+
// agent_end fires after every heartbeat run (~5min). We use it to:
|
|
517
|
+
// 1. Run catch-up on first invocation (if agent was offline)
|
|
518
|
+
// 2. Ensure a session always exists (create one if none)
|
|
519
|
+
// 3. Recycle sessions that are older than SESSION_MAX_AGE_MS
|
|
357
520
|
// (submit the old one, start a fresh one)
|
|
358
|
-
//
|
|
359
|
-
// no synthetic heartbeat events are injected.
|
|
521
|
+
// ALL sessions get submitted — idle blocks prove the agent was online.
|
|
360
522
|
const SESSION_MAX_AGE_MS = 5 * 60_000; // 5 minutes
|
|
361
|
-
on(
|
|
523
|
+
on("agent_end", async () => {
|
|
362
524
|
try {
|
|
525
|
+
// Run catch-up once on first agent_end after process start
|
|
526
|
+
if (!catchUpDone) {
|
|
527
|
+
catchUpDone = true;
|
|
528
|
+
try {
|
|
529
|
+
await runCatchUp(adapter, api, cfg, cgRoot, SESSION_MAX_AGE_MS);
|
|
530
|
+
}
|
|
531
|
+
catch (err) {
|
|
532
|
+
log(api, "warn", "Catch-up failed:", err);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
363
535
|
const current = sessions.values().next().value;
|
|
364
536
|
if (!current) {
|
|
365
537
|
// No session exists — create one so the next cycle captures events
|
|
@@ -370,7 +542,7 @@ export default function register(api) {
|
|
|
370
542
|
if (age < SESSION_MAX_AGE_MS)
|
|
371
543
|
return; // session still fresh
|
|
372
544
|
// Session is old enough to recycle — fetch real decisions and submit
|
|
373
|
-
log(api,
|
|
545
|
+
log(api, "info", `Recycling session (age=${Math.round(age / 1000)}s, events=${current.eventCount})`);
|
|
374
546
|
for (const [key, state] of sessions) {
|
|
375
547
|
if (state === current) {
|
|
376
548
|
await endSessionAndSubmit(key);
|
|
@@ -381,30 +553,30 @@ export default function register(api) {
|
|
|
381
553
|
await ensureSession();
|
|
382
554
|
}
|
|
383
555
|
catch (err) {
|
|
384
|
-
log(api,
|
|
556
|
+
log(api, "warn", "Session recycle error:", err);
|
|
385
557
|
}
|
|
386
558
|
});
|
|
387
559
|
// ── Agent tools (optional — depends on api.registerTool) ──────────
|
|
388
|
-
if (typeof api.registerTool ===
|
|
560
|
+
if (typeof api.registerTool === "function") {
|
|
389
561
|
api.registerTool({
|
|
390
|
-
name:
|
|
391
|
-
description:
|
|
392
|
-
parameters: { type:
|
|
562
|
+
name: "context_graph_status",
|
|
563
|
+
description: "Check current context graph session status, event count, and capture health.",
|
|
564
|
+
parameters: { type: "object", properties: {} },
|
|
393
565
|
handler: async (_params, ctx) => {
|
|
394
|
-
const key = ctx.sessionKey ||
|
|
566
|
+
const key = ctx.sessionKey || "default";
|
|
395
567
|
const state = sessions.get(key);
|
|
396
568
|
return adapter.getStatus(state?.sessionId);
|
|
397
569
|
},
|
|
398
570
|
});
|
|
399
571
|
api.registerTool({
|
|
400
|
-
name:
|
|
401
|
-
description:
|
|
402
|
-
parameters: { type:
|
|
572
|
+
name: "context_graph_summarize",
|
|
573
|
+
description: "Generate metrics and derived claims for the current session.",
|
|
574
|
+
parameters: { type: "object", properties: {} },
|
|
403
575
|
handler: async (_params, ctx) => {
|
|
404
|
-
const key = ctx.sessionKey ||
|
|
576
|
+
const key = ctx.sessionKey || "default";
|
|
405
577
|
const state = sessions.get(key);
|
|
406
578
|
if (!state)
|
|
407
|
-
return { status:
|
|
579
|
+
return { status: "no_active_session" };
|
|
408
580
|
const { summary, signed } = await adapter.summarizeAndSign(state.sessionId);
|
|
409
581
|
return {
|
|
410
582
|
...summary,
|
|
@@ -418,6 +590,6 @@ export default function register(api) {
|
|
|
418
590
|
},
|
|
419
591
|
});
|
|
420
592
|
}
|
|
421
|
-
log(api,
|
|
593
|
+
log(api, "info", "Plugin registered — provenance capture active (catch-up enabled)");
|
|
422
594
|
}
|
|
423
595
|
//# sourceMappingURL=register.js.map
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA+DlE,wEAAwE;AAExE,MAAM,GAAG,GAAG,iBAAiB,CAAC;AAE9B,SAAS,GAAG,CAAC,GAAc,EAAE,KAAgC,EAAE,GAAG,IAAe;IAC/E,mFAAmF;IACnF,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACnC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAC/E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAAkB,EAClB,cAAuB,EACvB,OAAgB;IAEhB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,OAAO;QACL,UAAU;QACV,cAAc;QACd,OAAO;QACP,GAAG,EAAE,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC3D,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,uEAAuE;AAEvE,uDAAuD;AACvD,SAAS,aAAa,CAAC,SAAiB;IACtC,0EAA0E;IAC1E,uCAAuC;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,gEAAgE;AAChE,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAe,EACf,MAAc,EACd,OAAe,EACf,OAAe;IAUf,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,OAAO,eAAe,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,OAAO,YAAY,CAAC;QACxG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;YAC9C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAElC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,EAAG,CAAC,CAAC,MAAiB,IAAI,SAAS;YACzC,WAAW,EAAE,CAAC,CAAC,WAAiC;YAChD,SAAS,EAAE,CAAC,CAAC,SAA+B;YAC5C,YAAY,EAAE,CAAC,CAAC,YAAkC;YAClD,QAAQ,EAAG,CAAC,CAAC,QAAmB,IAAI,EAAE;YACtC,SAAS,EAAE,CAAC,CAAC,SAA+B;YAC5C,UAAU,EAAG,CAAC,CAAC,UAAqB,IAAI,IAAI,CAAC,GAAG,EAAE;SACnD,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,MAAc,EACd,GAAc,EACd,MAAc;IAEd,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,IAAI,CAAC;IAEzB,2EAA2E;IAC3E,4EAA4E;IAE5E,oDAAoD;IACpD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,SAAS,GAAsJ;QACnK,WAAW,EAAE,UAAU,CAAC,eAAe;KACxC,CAAC;IACF,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;QAC9B,SAAS,CAAC,aAAa,GAAG;YACxB,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW;YAClD,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,YAAY;YACpD,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU;YAChD,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW;YAClD,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1F,CAAC;IACJ,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,sDAAsD,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;YAED,gDAAgD;YAChD,MAAM,cAAc,GAAG;gBACrB,GAAG,MAAM;gBACT,gBAAgB,EAAE,SAAS,CAAC,WAAW;gBACvC,oBAAoB,EAAE,UAAU,CAAC,cAAc,EAAE,YAAY,IAAI,IAAI;aACtE,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;gBACtC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;gBACpC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;aACpC,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAKpC,CAAC;gBAEF,GAAG,CACD,GAAG,EACH,MAAM,EACN,qBAAqB,SAAS,GAAG,EACjC,gBAAgB,MAAM,CAAC,YAAY,GAAG,EACtC,UAAU,MAAM,CAAC,gBAAgB,IAAI,SAAS,CAAC,WAAW,GAAG,EAC7D,UAAU,MAAM,CAAC,eAAe,EAAE,CACnC,CAAC;gBAEF,uCAAuC;gBACvC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACxB,MAAM,cAAc,CAAC,MAAM,EAAE;wBAC3B,eAAe,EAAE,CAAC,MAAM,CAAC,gBAAgB,IAAI,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC;wBAC5E,cAAc,EAAE;4BACd,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,MAAM,CAAC,WAAW;4BAC5D,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,WAAW,EAAE,MAAM,CAAC,gBAAgB,IAAI,SAAS,CAAC,WAAW,IAAI,CAAC;yBACnE;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,GAAG,CACD,GAAG,EACH,MAAM,EACN,uBAAuB,QAAQ,CAAC,MAAM,IAAI,EAC1C,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CACxB,CAAC;YAEF,8DAA8D;YAC9D,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;gBAAE,OAAO;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CACD,GAAG,EACH,MAAM,EACN,yBAAyB,OAAO,GAAG,CAAC,IAAI,EACxC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAc;IAC7C,iBAAiB;IACjB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,IAAI,EAAE,CAA4B,CAAC;IAEnE,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO;IAElC,sEAAsE;IACtE,0DAA0D;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAE,GAAG,CAAC,gBAA2B,IAAI,gBAAgB,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;QAClC,OAAO,EAAE,IAAI;QACb,gBAAgB,EAAE,MAAM;QACxB,OAAO,EAAE,GAAG,CAAC,OAA6B;QAC1C,UAAU,EAAE,GAAG,CAAC,UAAgC;QAChD,WAAW,EAAG,GAAG,CAAC,WAAuB,IAAI,IAAI;QACjD,YAAY,EAAG,GAAG,CAAC,YAAwB,IAAI,IAAI;QACnD,UAAU,EAAG,GAAG,CAAC,UAAsB,IAAI,IAAI;QAC/C,cAAc,EAAE,GAAG,CAAC,cAAoC;KACzD,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEjD,4DAA4D;IAC5D,iEAAiE;IACjE,qEAAqE;IACrE,KAAK,UAAU,aAAa;QAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAiC,CAAC;QAC5E,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACxC,MAAM,OAAO,GAAI,GAAG,CAAC,OAAkB,IAAI,SAAS,CAAC;YACrD,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAElD,MAAM,KAAK,GAAiB;gBAC1B,GAAG;gBACH,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;gBAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,UAAU,EAAE,CAAC;aACd,CAAC;YACF,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAChC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,yBAAyB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,+BAA+B,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,KAAK,UAAU,mBAAmB,CAAC,UAAkB;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,SAA+B,CAAC;YACtD,MAAM,MAAM,GAAG,GAAG,CAAC,MAA4B,CAAC;YAChD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,eAAe;YAE5D,0DAA0D;YAC1D,4DAA4D;YAC5D,gEAAgE;YAChE,IAAI,UAAU,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;gBACtC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;oBACzC,MAAM,UAAU,GAAI,GAAG,CAAC,OAAkB,IAAI,SAAS,CAAC;oBACxD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;oBAErF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAS,CAAC,MAAM,0BAA0B,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;oBAC3F,CAAC;oBAED,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;wBAC1B,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE;4BAC9C,IAAI,EAAE,cAAc;4BACpB,MAAM,EAAE,WAAwE;4BAChF,IAAI,EAAE;gCACJ,MAAM,EAAE,CAAC,CAAC,MAAM;gCAChB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;gCAClC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;gCAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gCACpB,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;6BACzD;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,4BAA4B,EAAE,GAAG,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEtC,IAAI,UAAU,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;gBACtC,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;QACjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,2EAA2E,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,wBAAwB;IAE3C,qEAAqE;IACrE,kDAAkD;IAClD,wCAAwC;IACxC,mCAAmC;IAEnC,EAAE,CACA,eAAe,EACf,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;YACzD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;YAC3D,MAAM,SAAS,GAAI,OAAO,CAAC,SAAoB,IAAK,KAAK,CAAC,SAAoB,IAAI,SAAS,CAAC;YAC5F,MAAM,OAAO,GAAI,OAAO,CAAC,OAAkB,IAAK,GAAG,CAAC,OAAkB,IAAI,SAAS,CAAC;YAEpF,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO;YAEpC,MAAM,GAAG,GAAG,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAElD,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE;gBACtB,GAAG;gBACH,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;gBAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,UAAU,EAAE,CAAC;aACd,CAAC,CAAC;YAEH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,0BAA0B,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qEAAqE;IACrE,oDAAoD;IACpD,wEAAwE;IACxE,yBAAyB;IAEzB,EAAE,CACA,iBAAiB,EACjB,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;YAEzD,kCAAkC;YAClC,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAmB,IAAI,SAAS,CAAC;YACzD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;YAC/D,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;gBACvB,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;oBAC/B,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;oBACxB,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK;wBAC5B,CAAC,CAAC,KAAK,CAAC,KAAK;wBACb,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,SAAS,GAAkB;gBAC/B,QAAQ;gBACR,MAAM;gBACN,MAAM;gBACN,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC;YAEF,MAAM,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACpD,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qEAAqE;IACrE,+CAA+C;IAC/C,oDAAoD;IACpD,qCAAqC;IAErC,EAAE,CACA,YAAY,EACZ,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;YACzD,MAAM,OAAO,GAAI,KAAK,CAAC,OAAkB,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,kCAAkC;YAClC,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,KAAK,MAAM,QAAQ,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,CAAU,EAAE,CAAC;QAChF,EAAE,CACA,QAAQ,EACR,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;YACzD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;YAC3D,MAAM,SAAS,GAAI,OAAO,CAAC,SAAoB,IAAK,KAAK,CAAC,SAAoB,CAAC;YAE/E,IAAI,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBACvC,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,kEAAkE;IAClE,yDAAyD;IACzD,6DAA6D;IAC7D,6CAA6C;IAC7C,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,YAAY;IAEnD,EAAE,CACA,WAAW,EACX,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAiC,CAAC;YAE3E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,mEAAmE;gBACnE,MAAM,aAAa,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;YAC3C,IAAI,GAAG,GAAG,kBAAkB;gBAAE,OAAO,CAAC,sBAAsB;YAE5D,qEAAqE;YACrE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,0BAA0B,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;YACrG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBACtB,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACR,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,MAAM,aAAa,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qEAAqE;IAErE,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;QAC3C,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EACT,8EAA8E;YAChF,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YAC9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;gBAC9B,MAAM,GAAG,GAAI,GAAG,CAAC,UAAqB,IAAI,SAAS,CAAC;gBACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC7C,CAAC;SACF,CAAC,CAAC;QAEH,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EACT,8DAA8D;YAChE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YAC9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;gBAC9B,MAAM,GAAG,GAAI,GAAG,CAAC,UAAqB,IAAI,SAAS,CAAC;gBACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK;oBAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;gBACnD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,gBAAgB,CACxD,KAAK,CAAC,SAAS,CAChB,CAAC;gBACF,OAAO;oBACL,GAAG,OAAO;oBACV,MAAM,EAAE,MAAM;wBACZ,CAAC,CAAC;4BACE,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;yBACxB;wBACH,CAAC,CAAC,SAAS;iBACd,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,+CAA+C,CAAC,CAAC;AACpE,CAAC"}
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED