@tryglen/cli 0.2.0 → 0.4.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/README.md +80 -0
- package/dist/_utils/agent-adapter.d.ts +19 -0
- package/dist/_utils/agent-adapter.js +50 -0
- package/dist/_utils/agent-adapter.js.map +1 -0
- package/dist/_utils/build-turn-body.d.ts +2 -1
- package/dist/_utils/build-turn-body.js +3 -0
- package/dist/_utils/build-turn-body.js.map +1 -1
- package/dist/_utils/config.d.ts +2 -2
- package/dist/_utils/config.js +2 -2
- package/dist/_utils/config.js.map +1 -1
- package/dist/_utils/git-context.d.ts +10 -0
- package/dist/_utils/git-context.js +32 -0
- package/dist/_utils/git-context.js.map +1 -0
- package/dist/_utils/glen-headers.d.ts +8 -0
- package/dist/_utils/glen-headers.js +8 -0
- package/dist/_utils/glen-headers.js.map +1 -0
- package/dist/_utils/http.d.ts +1 -0
- package/dist/_utils/http.js +1 -0
- package/dist/_utils/http.js.map +1 -1
- package/dist/_utils/idempotency-key.d.ts +1 -1
- package/dist/_utils/idempotency-key.js +6 -2
- package/dist/_utils/idempotency-key.js.map +1 -1
- package/dist/_utils/state-line.d.ts +3 -0
- package/dist/_utils/state-line.js +10 -0
- package/dist/_utils/state-line.js.map +1 -0
- package/dist/_utils/state.d.ts +13 -0
- package/dist/_utils/state.js +41 -0
- package/dist/_utils/state.js.map +1 -0
- package/dist/_utils/update.d.ts +11 -0
- package/dist/_utils/update.js +122 -0
- package/dist/_utils/update.js.map +1 -0
- package/dist/_utils/version.d.ts +2 -0
- package/dist/_utils/version.js +10 -0
- package/dist/_utils/version.js.map +1 -0
- package/dist/_utils/which.d.ts +6 -0
- package/dist/_utils/which.js +16 -0
- package/dist/_utils/which.js.map +1 -0
- package/dist/bin.js +116 -16
- package/dist/bin.js.map +1 -1
- package/dist/commands/doctor.d.ts +13 -0
- package/dist/commands/doctor.js +91 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/incognito.d.ts +3 -0
- package/dist/commands/incognito.js +19 -0
- package/dist/commands/incognito.js.map +1 -0
- package/dist/commands/ingest.d.ts +1 -1
- package/dist/commands/ingest.js +59 -9
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/install.js +146 -27
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/login.js +26 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +2 -0
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/onboard.d.ts +3 -0
- package/dist/commands/onboard.js +20 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/org.d.ts +4 -0
- package/dist/commands/org.js +80 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/search.js +29 -5
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session-start.d.ts +19 -0
- package/dist/commands/session-start.js +57 -0
- package/dist/commands/session-start.js.map +1 -0
- package/dist/commands/status.js +24 -5
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/statusline.d.ts +13 -0
- package/dist/commands/statusline.js +38 -0
- package/dist/commands/statusline.js.map +1 -0
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.js +35 -0
- package/dist/commands/update.js.map +1 -0
- package/package.json +1 -1
- package/dist/commands/private.d.ts +0 -6
- package/dist/commands/private.js +0 -40
- package/dist/commands/private.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAe,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAe,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,MAAM,GAAG,KAAK,IAAmC,EAAE;IACvD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAE3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,UAAU,IAAI,CAAC,CAAC;IAEjD,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,MAAM,CAAC,OAAO,IAAI,CACzD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yDAAyD,MAAM,CAAC,OAAO,IAAI,CAC5E,CAAC;QACF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAChH,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAChH,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `glen statusline` — called by the agent's status-line hook.
|
|
3
|
+
*
|
|
4
|
+
* Reads stdin (Claude Code statusline JSON payload; parsed defensively, currently
|
|
5
|
+
* unused — reserved for future enrichment). Reads local session state. Outputs a
|
|
6
|
+
* single line to stdout and always exits 0 so it never breaks the host UI.
|
|
7
|
+
*
|
|
8
|
+
* Output:
|
|
9
|
+
* state + org → 🏔️ <slug|name|id>[ · incognito]
|
|
10
|
+
* no state → 🏔️ glen — run `glen org switch`
|
|
11
|
+
*/
|
|
12
|
+
declare const statusline: () => Promise<void>;
|
|
13
|
+
export { statusline };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { readState } from "../_utils/state.js";
|
|
2
|
+
// Reads stdin defensively (Claude Code statusline JSON — parse lenient, v1 ignores fields).
|
|
3
|
+
const readStdin = async () => {
|
|
4
|
+
const chunks = [];
|
|
5
|
+
for await (const chunk of process.stdin)
|
|
6
|
+
chunks.push(chunk);
|
|
7
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* `glen statusline` — called by the agent's status-line hook.
|
|
11
|
+
*
|
|
12
|
+
* Reads stdin (Claude Code statusline JSON payload; parsed defensively, currently
|
|
13
|
+
* unused — reserved for future enrichment). Reads local session state. Outputs a
|
|
14
|
+
* single line to stdout and always exits 0 so it never breaks the host UI.
|
|
15
|
+
*
|
|
16
|
+
* Output:
|
|
17
|
+
* state + org → 🏔️ <slug|name|id>[ · incognito]
|
|
18
|
+
* no state → 🏔️ glen — run `glen org switch`
|
|
19
|
+
*/
|
|
20
|
+
const statusline = async () => {
|
|
21
|
+
// Drain stdin before doing anything else (hook may pipe data to us).
|
|
22
|
+
try {
|
|
23
|
+
await readStdin();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Ignore stdin errors — the statusline must always produce output.
|
|
27
|
+
}
|
|
28
|
+
const state = await readState();
|
|
29
|
+
const line = (() => {
|
|
30
|
+
if (!state)
|
|
31
|
+
return "🏔️ glen — run `glen org switch`";
|
|
32
|
+
const slug = state.activeOrgSlug ?? state.activeOrgName ?? state.activeOrgId;
|
|
33
|
+
return state.incognito ? `🏔️ ${slug} · incognito` : `🏔️ ${slug}`;
|
|
34
|
+
})();
|
|
35
|
+
process.stdout.write(line);
|
|
36
|
+
};
|
|
37
|
+
export { statusline };
|
|
38
|
+
//# sourceMappingURL=statusline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../../src/commands/statusline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,4FAA4F;AAC5F,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;IAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;IAC3C,qEAAqE;IACrE,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAEhC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,IAAI,CAAC,KAAK;YAAE,OAAO,kCAAkC,CAAC;QACtD,MAAM,IAAI,GACR,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,CAAC;QAClE,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;IACrE,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Result } from "../_utils/result.js";
|
|
2
|
+
/**
|
|
3
|
+
* `glen update` — checks for a newer version and installs it if the CLI was
|
|
4
|
+
* installed globally via npm. Prints before/after version info.
|
|
5
|
+
*/
|
|
6
|
+
declare const update: () => Promise<Result<void, string>>;
|
|
7
|
+
export { update };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ok } from "../_utils/result.js";
|
|
2
|
+
import { fetchLatest, isNpmGlobalInstall, runSelfUpdate, } from "../_utils/update.js";
|
|
3
|
+
import { cliVersion } from "../_utils/version.js";
|
|
4
|
+
/**
|
|
5
|
+
* `glen update` — checks for a newer version and installs it if the CLI was
|
|
6
|
+
* installed globally via npm. Prints before/after version info.
|
|
7
|
+
*/
|
|
8
|
+
const update = async () => {
|
|
9
|
+
process.stdout.write(`Current version: ${cliVersion}\n`);
|
|
10
|
+
const latest = await fetchLatest();
|
|
11
|
+
if (!latest) {
|
|
12
|
+
process.stdout.write("Could not reach npm registry. Check your connection.\n");
|
|
13
|
+
return ok(undefined);
|
|
14
|
+
}
|
|
15
|
+
process.stdout.write(`Latest version: ${latest}\n`);
|
|
16
|
+
if (latest === cliVersion) {
|
|
17
|
+
process.stdout.write("Already up to date.\n");
|
|
18
|
+
return ok(undefined);
|
|
19
|
+
}
|
|
20
|
+
if (!isNpmGlobalInstall()) {
|
|
21
|
+
process.stdout.write(`Update available: v${latest}. Install with your package manager (e.g. npm i -g @tryglen/cli@latest).\n`);
|
|
22
|
+
return ok(undefined);
|
|
23
|
+
}
|
|
24
|
+
process.stdout.write(`Updating to v${latest}...\n`);
|
|
25
|
+
const updated = runSelfUpdate();
|
|
26
|
+
if (updated) {
|
|
27
|
+
process.stdout.write(`Updated to v${latest}.\n`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
process.stdout.write("Update failed or another update is already in progress. Try: npm i -g @tryglen/cli@latest\n");
|
|
31
|
+
}
|
|
32
|
+
return ok(undefined);
|
|
33
|
+
};
|
|
34
|
+
export { update };
|
|
35
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,GAAG,KAAK,IAAmC,EAAE;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,UAAU,IAAI,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wDAAwD,CACzD,CAAC;QACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,IAAI,CAAC,CAAC;IAErD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sBAAsB,MAAM,4EAA4E,CACzG,CAAC;QACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,MAAM,KAAK,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/package.json
CHANGED
package/dist/commands/private.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { config } from "../_utils/config.js";
|
|
2
|
-
import { resolveAuthHeader } from "../_utils/credentials.js";
|
|
3
|
-
import { httpJson } from "../_utils/http.js";
|
|
4
|
-
import { err, ok } from "../_utils/result.js";
|
|
5
|
-
const privateMode = async (state) => {
|
|
6
|
-
if (state !== "on" && state !== "off")
|
|
7
|
-
return err({ code: 2, message: "usage: glen private <on|off>" });
|
|
8
|
-
const header = await resolveAuthHeader();
|
|
9
|
-
if (!header)
|
|
10
|
-
return err({ code: 1, message: "glen: not connected — run `glen login`." });
|
|
11
|
-
const res = await httpJson(config.privateModeUrl, {
|
|
12
|
-
method: "POST",
|
|
13
|
-
headers: {
|
|
14
|
-
"content-type": "application/json",
|
|
15
|
-
[header.headerName]: header.headerValue,
|
|
16
|
-
},
|
|
17
|
-
body: JSON.stringify({ enabled: state === "on" }),
|
|
18
|
-
timeoutMs: config.privateModeTimeoutMs,
|
|
19
|
-
});
|
|
20
|
-
if (!res.ok)
|
|
21
|
-
return err({ code: 2, message: "glen private failed (network error)." });
|
|
22
|
-
if (res.value.status === 401 || res.value.status === 403) {
|
|
23
|
-
// Don't clear credentials — a concurrent `glen login` may have just saved a fresh key.
|
|
24
|
-
return err({
|
|
25
|
-
code: 1,
|
|
26
|
-
message: "glen: your connection expired — run `glen login` to reconnect.",
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
if (!res.value.isOk)
|
|
30
|
-
return err({
|
|
31
|
-
code: 2,
|
|
32
|
-
message: `glen private failed (HTTP ${res.value.status}).`,
|
|
33
|
-
});
|
|
34
|
-
process.stdout.write(state === "on"
|
|
35
|
-
? "glen: private mode ON — turns are no longer recorded (blocked server-side). Run `glen private off` to resume.\n"
|
|
36
|
-
: "glen: private mode OFF — memory recording resumed.\n");
|
|
37
|
-
return ok(undefined);
|
|
38
|
-
};
|
|
39
|
-
export { privateMode };
|
|
40
|
-
//# sourceMappingURL=private.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"private.js","sourceRoot":"","sources":["../../src/commands/private.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,GAAG,KAAK,EACvB,KAAa,EAC6C,EAAE;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK;QACnC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM;QACT,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;IAE9E,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE;QAChD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,WAAW;SACxC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;QACjD,SAAS,EAAE,MAAM,CAAC,oBAAoB;KACvC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;IAE3E,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACzD,uFAAuF;QACvF,OAAO,GAAG,CAAC;YACT,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,gEAAgE;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;QACjB,OAAO,GAAG,CAAC;YACT,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,6BAA6B,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI;SAC3D,CAAC,CAAC;IAEL,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,KAAK,IAAI;QACZ,CAAC,CAAC,iHAAiH;QACnH,CAAC,CAAC,sDAAsD,CAC3D,CAAC;IACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
|