@mrc2204/agent-smart-memo 4.1.3 → 5.0.1
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 +445 -141
- package/dist/adapters/openclaw/tool-runtime.d.ts +29 -0
- package/dist/adapters/openclaw/tool-runtime.d.ts.map +1 -0
- package/dist/adapters/openclaw/tool-runtime.js +48 -0
- package/dist/adapters/openclaw/tool-runtime.js.map +1 -0
- package/dist/commands/telegram-addproject-command.d.ts +33 -0
- package/dist/commands/telegram-addproject-command.d.ts.map +1 -0
- package/dist/commands/telegram-addproject-command.js +208 -0
- package/dist/commands/telegram-addproject-command.js.map +1 -0
- package/dist/core/contracts/adapter-contracts.d.ts +31 -0
- package/dist/core/contracts/adapter-contracts.d.ts.map +1 -0
- package/dist/core/contracts/adapter-contracts.js +2 -0
- package/dist/core/contracts/adapter-contracts.js.map +1 -0
- package/dist/core/runtime-boundary.d.ts +23 -0
- package/dist/core/runtime-boundary.d.ts.map +1 -0
- package/dist/core/runtime-boundary.js +39 -0
- package/dist/core/runtime-boundary.js.map +1 -0
- package/dist/core/usecases/default-memory-usecase-port.d.ts +54 -0
- package/dist/core/usecases/default-memory-usecase-port.d.ts.map +1 -0
- package/dist/core/usecases/default-memory-usecase-port.js +1139 -0
- package/dist/core/usecases/default-memory-usecase-port.js.map +1 -0
- package/dist/core/usecases/semantic-memory-usecase.d.ts +52 -0
- package/dist/core/usecases/semantic-memory-usecase.d.ts.map +1 -0
- package/dist/core/usecases/semantic-memory-usecase.js +136 -0
- package/dist/core/usecases/semantic-memory-usecase.js.map +1 -0
- package/dist/db/slot-db.d.ts +293 -0
- package/dist/db/slot-db.d.ts.map +1 -1
- package/dist/db/slot-db.js +1272 -0
- package/dist/db/slot-db.js.map +1 -1
- package/dist/index.d.ts +537 -64
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +239 -99
- package/dist/index.js.map +1 -1
- package/dist/services/qdrant.d.ts.map +1 -1
- package/dist/services/qdrant.js +17 -0
- package/dist/services/qdrant.js.map +1 -1
- package/dist/tools/graph-tools.d.ts +2 -0
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +126 -177
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/project-tools.d.ts +8 -0
- package/dist/tools/project-tools.d.ts.map +1 -0
- package/dist/tools/project-tools.js +649 -0
- package/dist/tools/project-tools.js.map +1 -0
- package/dist/tools/semantic-memory-tools.d.ts +8 -0
- package/dist/tools/semantic-memory-tools.d.ts.map +1 -0
- package/dist/tools/semantic-memory-tools.js +111 -0
- package/dist/tools/semantic-memory-tools.js.map +1 -0
- package/dist/tools/slot-tools.d.ts +3 -1
- package/dist/tools/slot-tools.d.ts.map +1 -1
- package/dist/tools/slot-tools.js +82 -156
- package/dist/tools/slot-tools.js.map +1 -1
- package/openclaw.plugin.json +22 -2
- package/package.json +25 -32
- package/dist/config.d.ts +0 -62
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -102
- package/dist/config.js.map +0 -1
- package/dist/scripts/reembed-collection.d.ts +0 -2
- package/dist/scripts/reembed-collection.d.ts.map +0 -1
- package/dist/scripts/reembed-collection.js +0 -165
- package/dist/scripts/reembed-collection.js.map +0 -1
- package/dist/tools/memory_search.d.ts +0 -89
- package/dist/tools/memory_search.d.ts.map +0 -1
- package/dist/tools/memory_search.js +0 -188
- package/dist/tools/memory_search.js.map +0 -1
- package/dist/tools/memory_store.d.ts +0 -65
- package/dist/tools/memory_store.d.ts.map +0 -1
- package/dist/tools/memory_store.js +0 -196
- package/dist/tools/memory_store.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-runtime.d.ts","sourceRoot":"","sources":["../../../src/adapters/openclaw/tool-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,gCAAgC,CAAC;AAQxC,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,qBAAqB,GAAG,SAAS,CAAC;CACnF,GAAG,mBAAmB,CAStB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE9C;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAEA;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAQpD;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,GAAG,iBAAiB,CAU1E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ;;;;;;;;;;;EAEjE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { SlotDB } from "../../db/slot-db.js";
|
|
2
|
+
import { DefaultMemoryUseCasePort } from "../../core/usecases/default-memory-usecase-port.js";
|
|
3
|
+
import { createInitialRuntimeConfig, createToolTextResult, parseSessionIdentity, resolveSlotDbDirForContext, } from "../../core/runtime-boundary.js";
|
|
4
|
+
// OpenClaw runtime adapter state
|
|
5
|
+
let runtimeConfig = createInitialRuntimeConfig();
|
|
6
|
+
const dbInstances = new Map();
|
|
7
|
+
const useCasePortInstances = new Map();
|
|
8
|
+
let semanticUseCaseFactory;
|
|
9
|
+
export function configureOpenClawRuntime(options) {
|
|
10
|
+
runtimeConfig = {
|
|
11
|
+
stateDir: options?.stateDir || runtimeConfig.stateDir,
|
|
12
|
+
slotDbDir: options?.slotDbDir || runtimeConfig.slotDbDir,
|
|
13
|
+
};
|
|
14
|
+
if (options?.semanticUseCaseFactory) {
|
|
15
|
+
semanticUseCaseFactory = options.semanticUseCaseFactory;
|
|
16
|
+
}
|
|
17
|
+
return runtimeConfig;
|
|
18
|
+
}
|
|
19
|
+
export function getSessionKey(ctx) {
|
|
20
|
+
return ctx?.sessionKey || "agent:main:default";
|
|
21
|
+
}
|
|
22
|
+
export function parseOpenClawSessionIdentity(sessionKey) {
|
|
23
|
+
return parseSessionIdentity(sessionKey);
|
|
24
|
+
}
|
|
25
|
+
export function getSlotDBForContext(ctx) {
|
|
26
|
+
const slotDbDir = resolveSlotDbDirForContext(ctx, runtimeConfig);
|
|
27
|
+
let db = dbInstances.get(slotDbDir);
|
|
28
|
+
if (!db) {
|
|
29
|
+
db = new SlotDB(runtimeConfig.stateDir, { slotDbDir });
|
|
30
|
+
dbInstances.set(slotDbDir, db);
|
|
31
|
+
}
|
|
32
|
+
return db;
|
|
33
|
+
}
|
|
34
|
+
export function getMemoryUseCasePortForContext(ctx) {
|
|
35
|
+
const slotDbDir = resolveSlotDbDirForContext(ctx, runtimeConfig);
|
|
36
|
+
let port = useCasePortInstances.get(slotDbDir);
|
|
37
|
+
if (!port) {
|
|
38
|
+
const db = getSlotDBForContext(ctx);
|
|
39
|
+
const semanticUseCase = semanticUseCaseFactory ? semanticUseCaseFactory(slotDbDir) : undefined;
|
|
40
|
+
port = new DefaultMemoryUseCasePort(db, semanticUseCase);
|
|
41
|
+
useCasePortInstances.set(slotDbDir, port);
|
|
42
|
+
}
|
|
43
|
+
return port;
|
|
44
|
+
}
|
|
45
|
+
export function createOpenClawResult(text, isError = false) {
|
|
46
|
+
return createToolTextResult(text, isError);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=tool-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-runtime.js","sourceRoot":"","sources":["../../../src/adapters/openclaw/tool-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAG9F,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,GAE3B,MAAM,gCAAgC,CAAC;AAExC,iCAAiC;AACjC,IAAI,aAAa,GAAwB,0BAA0B,EAAE,CAAC;AACtE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC9C,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAClE,IAAI,sBAA8F,CAAC;AAEnG,MAAM,UAAU,wBAAwB,CAAC,OAIxC;IACC,aAAa,GAAG;QACd,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,aAAa,CAAC,QAAQ;QACrD,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,aAAa,CAAC,SAAS;KACzD,CAAC;IACF,IAAI,OAAO,EAAE,sBAAsB,EAAE,CAAC;QACpC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAC1D,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,OAAO,GAAG,EAAE,UAAU,IAAI,oBAAoB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,UAAkB;IAI7D,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,MAAM,SAAS,GAAG,0BAA0B,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACjE,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,GAAQ;IACrD,MAAM,SAAS,GAAG,0BAA0B,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACjE,IAAI,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,IAAI,GAAG,IAAI,wBAAwB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QACzD,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK;IAChE,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
2
|
+
import { getMemoryUseCasePortForContext } from "../adapters/openclaw/tool-runtime.js";
|
|
3
|
+
export interface AddProjectCommandPayload {
|
|
4
|
+
mode: "preview" | "confirm";
|
|
5
|
+
repo_url?: string;
|
|
6
|
+
project_alias?: string;
|
|
7
|
+
jira_space_key?: string;
|
|
8
|
+
default_epic_key?: string;
|
|
9
|
+
index_now?: boolean;
|
|
10
|
+
project_name?: string;
|
|
11
|
+
repo_root?: string;
|
|
12
|
+
active_version?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AddProjectCommandDependencies {
|
|
15
|
+
getUseCasePortForContext?: typeof getMemoryUseCasePortForContext;
|
|
16
|
+
now?: () => number;
|
|
17
|
+
}
|
|
18
|
+
export declare function parseAddProjectCommandArgs(args?: string): AddProjectCommandPayload | {
|
|
19
|
+
help: true;
|
|
20
|
+
};
|
|
21
|
+
type AddProjectCommandContext = {
|
|
22
|
+
senderId?: string;
|
|
23
|
+
channel: string;
|
|
24
|
+
accountId?: string;
|
|
25
|
+
from?: string;
|
|
26
|
+
messageThreadId?: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function composeAddProjectScopeUserId(ctx: AddProjectCommandContext): string;
|
|
29
|
+
export declare function formatAddProjectUsage(): string;
|
|
30
|
+
export declare function formatAddProjectResult(result: any): string;
|
|
31
|
+
export declare function registerTelegramAddProjectCommand(api: OpenClawPluginApi, deps?: AddProjectCommandDependencies): void;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=telegram-addproject-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-addproject-command.d.ts","sourceRoot":"","sources":["../../src/commands/telegram-addproject-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAEtF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,6BAA6B;IAC5C,wBAAwB,CAAC,EAAE,OAAO,8BAA8B,CAAC;IACjE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAgCD,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,wBAAwB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAkFnG;AAED,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,wBAAwB,GAAG,MAAM,CAMlF;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAU9C;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAyC1D;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,6BAA6B,GAAG,IAAI,CA4CpH"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { getMemoryUseCasePortForContext } from "../adapters/openclaw/tool-runtime.js";
|
|
2
|
+
const DEFAULT_AGENT_ID = "main";
|
|
3
|
+
const TELEGRAM_PROJECT_COMMAND = "/project";
|
|
4
|
+
function parseBooleanLike(raw) {
|
|
5
|
+
const text = String(raw || "").trim().toLowerCase();
|
|
6
|
+
if (!text)
|
|
7
|
+
return undefined;
|
|
8
|
+
if (["1", "true", "yes", "y", "on"].includes(text))
|
|
9
|
+
return true;
|
|
10
|
+
if (["0", "false", "no", "n", "off"].includes(text))
|
|
11
|
+
return false;
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
function normalizeTokenValue(value) {
|
|
15
|
+
return String(value || "").trim();
|
|
16
|
+
}
|
|
17
|
+
function extractKeyValue(token) {
|
|
18
|
+
const idx = token.indexOf("=");
|
|
19
|
+
if (idx <= 0)
|
|
20
|
+
return null;
|
|
21
|
+
return {
|
|
22
|
+
key: token.slice(0, idx).trim().toLowerCase(),
|
|
23
|
+
value: token.slice(idx + 1).trim(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function looksLikeRepoUrl(value) {
|
|
27
|
+
const txt = String(value || "").trim();
|
|
28
|
+
if (!txt)
|
|
29
|
+
return false;
|
|
30
|
+
return txt.startsWith("http://") || txt.startsWith("https://") || txt.startsWith("git@") || txt.includes("github.com") || txt.includes("gitlab.com");
|
|
31
|
+
}
|
|
32
|
+
export function parseAddProjectCommandArgs(args) {
|
|
33
|
+
const raw = String(args || "").trim();
|
|
34
|
+
if (!raw)
|
|
35
|
+
return { help: true };
|
|
36
|
+
const tokens = raw.split(/\s+/).filter(Boolean);
|
|
37
|
+
const payload = {
|
|
38
|
+
mode: "preview",
|
|
39
|
+
};
|
|
40
|
+
for (const token of tokens) {
|
|
41
|
+
const lowered = token.toLowerCase();
|
|
42
|
+
if (lowered === "help" || lowered === "-h" || lowered === "--help") {
|
|
43
|
+
return { help: true };
|
|
44
|
+
}
|
|
45
|
+
if (lowered === "preview" || lowered === "confirm") {
|
|
46
|
+
payload.mode = lowered;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const kv = extractKeyValue(token);
|
|
50
|
+
if (kv) {
|
|
51
|
+
const value = normalizeTokenValue(kv.value);
|
|
52
|
+
switch (kv.key) {
|
|
53
|
+
case "repo":
|
|
54
|
+
case "repo_url":
|
|
55
|
+
case "url":
|
|
56
|
+
payload.repo_url = value || undefined;
|
|
57
|
+
break;
|
|
58
|
+
case "alias":
|
|
59
|
+
case "project_alias":
|
|
60
|
+
payload.project_alias = value || undefined;
|
|
61
|
+
break;
|
|
62
|
+
case "jira":
|
|
63
|
+
case "jira_space":
|
|
64
|
+
case "jira_space_key":
|
|
65
|
+
payload.jira_space_key = value ? value.toUpperCase() : undefined;
|
|
66
|
+
break;
|
|
67
|
+
case "epic":
|
|
68
|
+
case "default_epic":
|
|
69
|
+
case "default_epic_key":
|
|
70
|
+
payload.default_epic_key = value ? value.toUpperCase() : undefined;
|
|
71
|
+
break;
|
|
72
|
+
case "index":
|
|
73
|
+
case "index_now": {
|
|
74
|
+
const bool = parseBooleanLike(value);
|
|
75
|
+
if (typeof bool === "boolean")
|
|
76
|
+
payload.index_now = bool;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
case "name":
|
|
80
|
+
case "project_name":
|
|
81
|
+
payload.project_name = value || undefined;
|
|
82
|
+
break;
|
|
83
|
+
case "root":
|
|
84
|
+
case "repo_root":
|
|
85
|
+
payload.repo_root = value || undefined;
|
|
86
|
+
break;
|
|
87
|
+
case "version":
|
|
88
|
+
case "active_version":
|
|
89
|
+
payload.active_version = value || undefined;
|
|
90
|
+
break;
|
|
91
|
+
case "mode":
|
|
92
|
+
if (value === "preview" || value === "confirm")
|
|
93
|
+
payload.mode = value;
|
|
94
|
+
break;
|
|
95
|
+
default:
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (typeof payload.repo_url === "undefined" && looksLikeRepoUrl(token)) {
|
|
101
|
+
payload.repo_url = normalizeTokenValue(token);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (typeof payload.project_alias === "undefined") {
|
|
105
|
+
payload.project_alias = normalizeTokenValue(token);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return payload;
|
|
110
|
+
}
|
|
111
|
+
export function composeAddProjectScopeUserId(ctx) {
|
|
112
|
+
const channel = String(ctx.channel || "telegram").toLowerCase();
|
|
113
|
+
const account = String(ctx.accountId || "default").trim() || "default";
|
|
114
|
+
const sender = String(ctx.senderId || ctx.from || "unknown").trim() || "unknown";
|
|
115
|
+
const thread = typeof ctx.messageThreadId === "number" ? `:thread:${ctx.messageThreadId}` : "";
|
|
116
|
+
return `${channel}:account:${account}:sender:${sender}${thread}`;
|
|
117
|
+
}
|
|
118
|
+
export function formatAddProjectUsage() {
|
|
119
|
+
return [
|
|
120
|
+
"Usage:",
|
|
121
|
+
"/project <repo_url> [alias=<project_alias>] [jira=<SPACE>] [epic=<SPACE-123>] [index=true|false]",
|
|
122
|
+
"/project confirm <repo_url> alias=<project_alias> jira=<SPACE> [epic=<SPACE-123>] [index=true|false]",
|
|
123
|
+
"",
|
|
124
|
+
"Examples:",
|
|
125
|
+
"/project git@github.com:org/repo.git alias=my-repo jira=ASM epic=ASM-82",
|
|
126
|
+
"/project confirm git@github.com:org/repo.git alias=my-repo jira=ASM index=true",
|
|
127
|
+
].join("\n");
|
|
128
|
+
}
|
|
129
|
+
export function formatAddProjectResult(result) {
|
|
130
|
+
const status = String(result?.status || "unknown");
|
|
131
|
+
if (status === "committed") {
|
|
132
|
+
return [
|
|
133
|
+
"✅ /project committed",
|
|
134
|
+
`- project_id: ${result?.project_id || "n/a"}`,
|
|
135
|
+
`- project_alias: ${result?.project_alias || "n/a"}`,
|
|
136
|
+
`- tracker: ${result?.tracker_mapping?.tracker_type || "none"}`,
|
|
137
|
+
`- index_requested: ${result?.index_trigger?.requested === true ? "yes" : "no"}`,
|
|
138
|
+
].join("\n");
|
|
139
|
+
}
|
|
140
|
+
const errors = Array.isArray(result?.errors) ? result.errors : [];
|
|
141
|
+
const warnings = Array.isArray(result?.warnings) ? result.warnings : [];
|
|
142
|
+
const fields = result?.summary_card?.fields || {};
|
|
143
|
+
const lines = [
|
|
144
|
+
status === "preview_ready" ? "🧭 /project preview" : "⚠️ /project validation",
|
|
145
|
+
`- mode: ${status}`,
|
|
146
|
+
`- command: ${fields.command || TELEGRAM_PROJECT_COMMAND}`,
|
|
147
|
+
`- repo_url: ${fields.repo_url || "(missing)"}`,
|
|
148
|
+
`- project_alias: ${fields.project_alias || "(missing)"}`,
|
|
149
|
+
`- jira_space_key: ${fields.jira_space_key || "(none)"}`,
|
|
150
|
+
`- default_epic_key: ${fields.default_epic_key || "(none)"}`,
|
|
151
|
+
`- index_now: ${fields.index_now === true ? "true" : "false"}`,
|
|
152
|
+
];
|
|
153
|
+
if (errors.length > 0) {
|
|
154
|
+
lines.push("- errors:");
|
|
155
|
+
for (const item of errors)
|
|
156
|
+
lines.push(` - ${String(item)}`);
|
|
157
|
+
}
|
|
158
|
+
if (warnings.length > 0) {
|
|
159
|
+
lines.push("- warnings:");
|
|
160
|
+
for (const item of warnings)
|
|
161
|
+
lines.push(` - ${String(item)}`);
|
|
162
|
+
}
|
|
163
|
+
if (status !== "committed") {
|
|
164
|
+
lines.push("- next: run /project confirm ... after fields are valid");
|
|
165
|
+
}
|
|
166
|
+
return lines.join("\n");
|
|
167
|
+
}
|
|
168
|
+
export function registerTelegramAddProjectCommand(api, deps) {
|
|
169
|
+
const getPort = deps?.getUseCasePortForContext || getMemoryUseCasePortForContext;
|
|
170
|
+
const now = deps?.now || (() => Date.now());
|
|
171
|
+
api.registerCommand({
|
|
172
|
+
name: "project",
|
|
173
|
+
description: "Project onboarding (preview/confirm) routed to project.telegram_onboarding",
|
|
174
|
+
acceptsArgs: true,
|
|
175
|
+
requireAuth: true,
|
|
176
|
+
handler: async (ctx) => {
|
|
177
|
+
if (String(ctx.channel || "").toLowerCase() !== "telegram") {
|
|
178
|
+
return { text: "This command is intended for Telegram channel usage." };
|
|
179
|
+
}
|
|
180
|
+
const parsed = parseAddProjectCommandArgs(ctx.args);
|
|
181
|
+
if (parsed.help) {
|
|
182
|
+
return { text: formatAddProjectUsage() };
|
|
183
|
+
}
|
|
184
|
+
const payload = parsed;
|
|
185
|
+
const userId = composeAddProjectScopeUserId(ctx);
|
|
186
|
+
const sessionKey = `agent:${DEFAULT_AGENT_ID}:${userId}`;
|
|
187
|
+
const useCasePort = getPort({
|
|
188
|
+
sessionKey,
|
|
189
|
+
pluginConfig: api.pluginConfig,
|
|
190
|
+
config: api.config,
|
|
191
|
+
});
|
|
192
|
+
const response = await useCasePort.run("project.telegram_onboarding", {
|
|
193
|
+
context: { userId, agentId: DEFAULT_AGENT_ID },
|
|
194
|
+
payload: {
|
|
195
|
+
command: TELEGRAM_PROJECT_COMMAND,
|
|
196
|
+
...payload,
|
|
197
|
+
},
|
|
198
|
+
meta: {
|
|
199
|
+
source: "openclaw",
|
|
200
|
+
toolName: "command.project",
|
|
201
|
+
requestId: `project:${now()}`,
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
return { text: formatAddProjectResult(response) };
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=telegram-addproject-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-addproject-command.js","sourceRoot":"","sources":["../../src/commands/telegram-addproject-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { MemoryNamespace } from "../../shared/memory-config.js";
|
|
2
|
+
export interface MemoryContext {
|
|
3
|
+
userId: string;
|
|
4
|
+
agentId: string;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
traceId?: string;
|
|
7
|
+
metadata?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface CoreRequestEnvelope<TPayload> {
|
|
10
|
+
context: MemoryContext;
|
|
11
|
+
namespace?: MemoryNamespace;
|
|
12
|
+
payload: TPayload;
|
|
13
|
+
meta?: {
|
|
14
|
+
source: "openclaw" | "paperclip" | "cli" | "test";
|
|
15
|
+
traceId?: string;
|
|
16
|
+
toolName?: string;
|
|
17
|
+
requestId?: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export type MemoryUseCaseName = "slot.get" | "slot.set" | "slot.list" | "slot.delete" | "project.register" | "project.get" | "project.list" | "project.set_registration_state" | "project.set_tracker_mapping" | "project.register_command" | "project.link_tracker" | "project.trigger_index" | "project.reindex_diff" | "project.index_watch_get" | "project.task_registry_upsert" | "project.task_lineage_context" | "project.hybrid_search" | "project.legacy_backfill" | "project.telegram_onboarding" | "memory.capture" | "memory.search" | "graph.entity.get" | "graph.entity.set" | "graph.rel.add" | "graph.rel.remove" | "graph.search";
|
|
21
|
+
export interface MemoryUseCasePort {
|
|
22
|
+
run<TReq, TRes>(useCase: MemoryUseCaseName, req: CoreRequestEnvelope<TReq>): Promise<TRes>;
|
|
23
|
+
}
|
|
24
|
+
export interface RuntimeContextMapper<TRuntimeCtx> {
|
|
25
|
+
toMemoryContext(runtimeCtx: TRuntimeCtx): MemoryContext;
|
|
26
|
+
toNamespace(input: unknown): MemoryNamespace | undefined;
|
|
27
|
+
}
|
|
28
|
+
export interface RuntimeErrorPresenter<TRuntimeErr> {
|
|
29
|
+
fromMemoryError(error: unknown): TRuntimeErr;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=adapter-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-contracts.d.ts","sourceRoot":"","sources":["../../../src/core/contracts/adapter-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ;IAC3C,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;QAClD,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,UAAU,GACV,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,aAAa,GACb,cAAc,GACd,gCAAgC,GAChC,6BAA6B,GAC7B,0BAA0B,GAC1B,sBAAsB,GACtB,uBAAuB,GACvB,sBAAsB,GACtB,yBAAyB,GACzB,8BAA8B,GAC9B,8BAA8B,GAC9B,uBAAuB,GACvB,yBAAyB,GACzB,6BAA6B,GAC7B,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAClB,cAAc,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,IAAI,EAAE,IAAI,EACZ,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB,CAAC,WAAW;IAC/C,eAAe,CAAC,UAAU,EAAE,WAAW,GAAG,aAAa,CAAC;IACxD,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAAC;CAC1D;AAED,MAAM,WAAW,qBAAqB,CAAC,WAAW;IAChD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC;CAC9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-contracts.js","sourceRoot":"","sources":["../../../src/core/contracts/adapter-contracts.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface MemoryRuntimeConfig {
|
|
2
|
+
stateDir: string;
|
|
3
|
+
slotDbDir: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function createInitialRuntimeConfig(): MemoryRuntimeConfig;
|
|
6
|
+
export declare function resolveSlotDbDirForContext(ctx: any, runtimeConfig: MemoryRuntimeConfig): string;
|
|
7
|
+
export declare function parseSessionIdentity(sessionKey?: string): {
|
|
8
|
+
userId: string;
|
|
9
|
+
agentId: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function createToolTextResult(text: string, isError?: boolean): {
|
|
12
|
+
content: {
|
|
13
|
+
type: "text";
|
|
14
|
+
text: string;
|
|
15
|
+
}[];
|
|
16
|
+
details: {
|
|
17
|
+
toolResult: {
|
|
18
|
+
text: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
isError: boolean;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=runtime-boundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-boundary.d.ts","sourceRoot":"","sources":["../../src/core/runtime-boundary.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,0BAA0B,IAAI,mBAAmB,CAUhE;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,mBAAmB,GACjC,MAAM,CASR;AAED,wBAAgB,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CASA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ;;;;;;;;;;;EAMjE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { resolveSlotDbDir } from "../shared/slotdb-path.js";
|
|
2
|
+
export function createInitialRuntimeConfig() {
|
|
3
|
+
const stateDir = process.env.OPENCLAW_STATE_DIR || `${process.env.HOME}/.openclaw`;
|
|
4
|
+
return {
|
|
5
|
+
stateDir,
|
|
6
|
+
slotDbDir: resolveSlotDbDir({
|
|
7
|
+
stateDir,
|
|
8
|
+
env: process.env,
|
|
9
|
+
homeDir: process.env.HOME,
|
|
10
|
+
}),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function resolveSlotDbDirForContext(ctx, runtimeConfig) {
|
|
14
|
+
const stateDir = ctx?.stateDir || runtimeConfig.stateDir;
|
|
15
|
+
const configSlotDbDir = ctx?.pluginConfig?.slotDbDir || ctx?.config?.slotDbDir;
|
|
16
|
+
return resolveSlotDbDir({
|
|
17
|
+
stateDir,
|
|
18
|
+
slotDbDir: configSlotDbDir,
|
|
19
|
+
env: process.env,
|
|
20
|
+
homeDir: process.env.HOME,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function parseSessionIdentity(sessionKey) {
|
|
24
|
+
const normalized = typeof sessionKey === "string" && sessionKey.trim().length > 0
|
|
25
|
+
? sessionKey.trim()
|
|
26
|
+
: "agent:main:default";
|
|
27
|
+
const parts = normalized.split(":");
|
|
28
|
+
const agentId = parts.length >= 2 ? parts[1] : "main";
|
|
29
|
+
const userId = parts.length >= 3 ? parts.slice(2).join(":") : "default";
|
|
30
|
+
return { userId, agentId };
|
|
31
|
+
}
|
|
32
|
+
export function createToolTextResult(text, isError = false) {
|
|
33
|
+
return {
|
|
34
|
+
content: [{ type: "text", text }],
|
|
35
|
+
details: { toolResult: { text } },
|
|
36
|
+
isError,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=runtime-boundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-boundary.js","sourceRoot":"","sources":["../../src/core/runtime-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAO5D,MAAM,UAAU,0BAA0B;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;IACnF,OAAO;QACL,QAAQ;QACR,SAAS,EAAE,gBAAgB,CAAC;YAC1B,QAAQ;YACR,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;SAC1B,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAAQ,EACR,aAAkC;IAElC,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC;IACzD,MAAM,eAAe,GAAG,GAAG,EAAE,YAAY,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC;IAC/E,OAAO,gBAAgB,CAAC;QACtB,QAAQ;QACR,SAAS,EAAE,eAAe;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IAItD,MAAM,UAAU,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC/E,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;QACnB,CAAC,CAAC,oBAAoB,CAAC;IAEzB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK;IAChE,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE;QACjC,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { CoreRequestEnvelope, MemoryUseCaseName, MemoryUseCasePort } from "../contracts/adapter-contracts.js";
|
|
2
|
+
import { SlotDB } from "../../db/slot-db.js";
|
|
3
|
+
import type { SemanticMemoryUseCase } from "./semantic-memory-usecase.js";
|
|
4
|
+
export declare class DefaultMemoryUseCasePort implements MemoryUseCasePort {
|
|
5
|
+
private readonly slotDb;
|
|
6
|
+
private readonly semanticUseCase?;
|
|
7
|
+
constructor(slotDb: SlotDB, semanticUseCase?: SemanticMemoryUseCase | undefined);
|
|
8
|
+
run<TReq, TRes>(useCase: MemoryUseCaseName, req: CoreRequestEnvelope<TReq>): Promise<TRes>;
|
|
9
|
+
private handleSlotGet;
|
|
10
|
+
private handleSlotSet;
|
|
11
|
+
private handleSlotList;
|
|
12
|
+
private handleSlotDelete;
|
|
13
|
+
private handleProjectRegister;
|
|
14
|
+
private handleProjectGet;
|
|
15
|
+
private handleProjectList;
|
|
16
|
+
private handleProjectSetRegistrationState;
|
|
17
|
+
private handleProjectSetTrackerMapping;
|
|
18
|
+
private handleProjectRegisterCommand;
|
|
19
|
+
private handleProjectLinkTracker;
|
|
20
|
+
private handleProjectTriggerIndex;
|
|
21
|
+
private scheduleProjectReindexJob;
|
|
22
|
+
private resolveProjectRef;
|
|
23
|
+
private validateJiraTrackerFields;
|
|
24
|
+
private tryResolveRepoRootFromCwd;
|
|
25
|
+
private resolveWorkspaceRoot;
|
|
26
|
+
private resolveRepoForRegistration;
|
|
27
|
+
private normalizeRepoRootInput;
|
|
28
|
+
private normalizeRepoUrl;
|
|
29
|
+
private canonicalizeRemote;
|
|
30
|
+
private findRegisteredProjectByRemote;
|
|
31
|
+
private deriveRepoFolderName;
|
|
32
|
+
private tryResolveLocalPathImport;
|
|
33
|
+
private cloneOrReuseRepo;
|
|
34
|
+
private computeConflictCloneTarget;
|
|
35
|
+
private isMatchingExistingClone;
|
|
36
|
+
private gitClone;
|
|
37
|
+
private tryReadGitRemote;
|
|
38
|
+
private collectGitTrackedPaths;
|
|
39
|
+
private handleProjectReindexDiff;
|
|
40
|
+
private handleProjectIndexWatchGet;
|
|
41
|
+
private handleProjectTaskRegistryUpsert;
|
|
42
|
+
private handleProjectTaskLineageContext;
|
|
43
|
+
private handleProjectHybridSearch;
|
|
44
|
+
private handleProjectLegacyBackfill;
|
|
45
|
+
private handleProjectTelegramOnboarding;
|
|
46
|
+
private handleGraphEntityGet;
|
|
47
|
+
private handleGraphEntitySet;
|
|
48
|
+
private handleGraphRelAdd;
|
|
49
|
+
private handleGraphRelRemove;
|
|
50
|
+
private handleMemoryCapture;
|
|
51
|
+
private handleMemorySearch;
|
|
52
|
+
private handleGraphSearch;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=default-memory-usecase-port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-memory-usecase-port.d.ts","sourceRoot":"","sources":["../../../src/core/usecases/default-memory-usecase-port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA4T1E,qBAAa,wBAAyB,YAAW,iBAAiB;IAE9D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBADhB,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,qBAAqB,YAAA;IAGpD,GAAG,CAAC,IAAI,EAAE,IAAI,EAClB,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC;IA6DhB,OAAO,CAAC,aAAa;IAqDrB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,iCAAiC;IAkBzC,OAAO,CAAC,8BAA8B;IAuBtC,OAAO,CAAC,4BAA4B;IA8GpC,OAAO,CAAC,wBAAwB;IAyChC,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,yBAAyB;IAwCjC,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,0BAA0B;IAgGlC,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,6BAA6B;IAuBrC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,gBAAgB;IAmDxB,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,sBAAsB;IAgE9B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,+BAA+B;IAwBvC,OAAO,CAAC,+BAA+B;IAqBvC,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,+BAA+B;IAmIvC,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,oBAAoB;YAuBd,mBAAmB;YAOnB,kBAAkB;IAOhC,OAAO,CAAC,iBAAiB;CAmB1B"}
|