clikit-plugin 0.2.13 → 0.2.15
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/hooks/compaction.d.ts.map +1 -1
- package/dist/hooks/env-context.d.ts.map +1 -1
- package/dist/hooks/ritual-enforcer.d.ts.map +1 -1
- package/dist/hooks/todo-enforcer.d.ts +1 -1
- package/dist/hooks/todo-enforcer.d.ts.map +1 -1
- package/dist/index.js +157 -43
- package/dist/tools/context-summary.d.ts.map +1 -1
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/observation.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/hooks/compaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/hooks/compaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA8BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAoG1E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,GAAE,MAAW,GAAG,SAAS,EAAE,CAkEnF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,GAAE,MAAa,GAAG,MAAM,CA6ChG;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,OAAO,EACnB,MAAM,CAAC,EAAE,gBAAgB,GACxB,iBAAiB,CAgBnB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAMtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-context.d.ts","sourceRoot":"","sources":["../../src/hooks/env-context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"env-context.d.ts","sourceRoot":"","sources":["../../src/hooks/env-context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAc3D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CA6CnE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,EAAE,CA8BhF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAqB/E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAmCnD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAMtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ritual-enforcer.d.ts","sourceRoot":"","sources":["../../src/hooks/ritual-enforcer.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChE,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"ritual-enforcer.d.ts","sourceRoot":"","sources":["../../src/hooks/ritual-enforcer.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChE,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA8ED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAevD;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAIpD;AAED,wBAAgB,YAAY,IAAI,WAAW,GAAG,IAAI,CAiBjD;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,IAAI,CA2BhF;AAED,wBAAgB,mBAAmB,IAAI;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB,CAgCA;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAc3C"}
|
|
@@ -15,5 +15,5 @@ export interface TodoCheckResult {
|
|
|
15
15
|
inProgress: TodoItem[];
|
|
16
16
|
}
|
|
17
17
|
export declare function checkTodoCompletion(todos: unknown): TodoCheckResult;
|
|
18
|
-
export declare function formatIncompleteWarning(result: TodoCheckResult, sessionId?: string): string;
|
|
18
|
+
export declare function formatIncompleteWarning(result: TodoCheckResult | unknown, sessionId?: string): string;
|
|
19
19
|
//# sourceMappingURL=todo-enforcer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todo-enforcer.d.ts","sourceRoot":"","sources":["../../src/hooks/todo-enforcer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"todo-enforcer.d.ts","sourceRoot":"","sources":["../../src/hooks/todo-enforcer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;AA8CD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAgBnE;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,GAAG,OAAO,EACjC,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAwBR"}
|
package/dist/index.js
CHANGED
|
@@ -3765,12 +3765,46 @@ function filterCommands(commands, config) {
|
|
|
3765
3765
|
}
|
|
3766
3766
|
|
|
3767
3767
|
// src/hooks/todo-enforcer.ts
|
|
3768
|
+
var EMPTY_RESULT = {
|
|
3769
|
+
complete: true,
|
|
3770
|
+
incomplete: [],
|
|
3771
|
+
inProgress: []
|
|
3772
|
+
};
|
|
3773
|
+
function normalizeTodoItem(value) {
|
|
3774
|
+
if (!value || typeof value !== "object") {
|
|
3775
|
+
return null;
|
|
3776
|
+
}
|
|
3777
|
+
const raw = value;
|
|
3778
|
+
const status = raw.status;
|
|
3779
|
+
if (status !== "todo" && status !== "in-progress" && status !== "in_progress" && status !== "completed") {
|
|
3780
|
+
return null;
|
|
3781
|
+
}
|
|
3782
|
+
return {
|
|
3783
|
+
id: typeof raw.id === "string" ? raw.id : "unknown",
|
|
3784
|
+
content: typeof raw.content === "string" ? raw.content : "(no content)",
|
|
3785
|
+
status: status === "in_progress" ? "in-progress" : status
|
|
3786
|
+
};
|
|
3787
|
+
}
|
|
3788
|
+
function normalizeTodoResult(result) {
|
|
3789
|
+
if (!result || typeof result !== "object") {
|
|
3790
|
+
return EMPTY_RESULT;
|
|
3791
|
+
}
|
|
3792
|
+
const raw = result;
|
|
3793
|
+
const incomplete = Array.isArray(raw.incomplete) ? raw.incomplete.map(normalizeTodoItem).filter((item) => !!item) : [];
|
|
3794
|
+
const inProgress = Array.isArray(raw.inProgress) ? raw.inProgress.map(normalizeTodoItem).filter((item) => !!item) : [];
|
|
3795
|
+
return {
|
|
3796
|
+
complete: incomplete.length === 0 && inProgress.length === 0,
|
|
3797
|
+
incomplete,
|
|
3798
|
+
inProgress
|
|
3799
|
+
};
|
|
3800
|
+
}
|
|
3768
3801
|
function checkTodoCompletion(todos) {
|
|
3769
3802
|
if (!Array.isArray(todos)) {
|
|
3770
|
-
return
|
|
3803
|
+
return EMPTY_RESULT;
|
|
3771
3804
|
}
|
|
3772
|
-
const
|
|
3773
|
-
const
|
|
3805
|
+
const normalized = todos.map(normalizeTodoItem).filter((item) => !!item);
|
|
3806
|
+
const incomplete = normalized.filter((t) => t.status === "todo");
|
|
3807
|
+
const inProgress = normalized.filter((t) => t.status === "in-progress");
|
|
3774
3808
|
return {
|
|
3775
3809
|
complete: incomplete.length === 0 && inProgress.length === 0,
|
|
3776
3810
|
incomplete,
|
|
@@ -3778,19 +3812,20 @@ function checkTodoCompletion(todos) {
|
|
|
3778
3812
|
};
|
|
3779
3813
|
}
|
|
3780
3814
|
function formatIncompleteWarning(result, sessionId) {
|
|
3815
|
+
const safeResult = normalizeTodoResult(result);
|
|
3781
3816
|
const lines = [];
|
|
3782
3817
|
if (sessionId) {
|
|
3783
3818
|
lines.push(`[CliKit] Incomplete todos in session ${sessionId}:`);
|
|
3784
3819
|
} else {
|
|
3785
3820
|
lines.push("[CliKit] Incomplete todos detected:");
|
|
3786
3821
|
}
|
|
3787
|
-
if (
|
|
3822
|
+
if (safeResult.inProgress.length > 0) {
|
|
3788
3823
|
lines.push(" In Progress:");
|
|
3789
|
-
|
|
3824
|
+
safeResult.inProgress.forEach((t) => lines.push(` - [${t.id}] ${t.content}`));
|
|
3790
3825
|
}
|
|
3791
|
-
if (
|
|
3826
|
+
if (safeResult.incomplete.length > 0) {
|
|
3792
3827
|
lines.push(" Not Started:");
|
|
3793
|
-
|
|
3828
|
+
safeResult.incomplete.forEach((t) => lines.push(` - [${t.id}] ${t.content}`));
|
|
3794
3829
|
}
|
|
3795
3830
|
lines.push("");
|
|
3796
3831
|
lines.push(" Complete all todos before finishing.");
|
|
@@ -4065,6 +4100,9 @@ function formatCommentWarning(result) {
|
|
|
4065
4100
|
import * as fs4 from "fs";
|
|
4066
4101
|
import * as path4 from "path";
|
|
4067
4102
|
import { execSync } from "child_process";
|
|
4103
|
+
function isRecord(value) {
|
|
4104
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
4105
|
+
}
|
|
4068
4106
|
function runSilent(cmd, cwd) {
|
|
4069
4107
|
try {
|
|
4070
4108
|
return execSync(cmd, { cwd, encoding: "utf-8", timeout: 5000, stdio: ["pipe", "pipe", "pipe"] }).trim();
|
|
@@ -4091,8 +4129,10 @@ function getPackageInfo(cwd) {
|
|
|
4091
4129
|
if (!fs4.existsSync(pkgPath))
|
|
4092
4130
|
return;
|
|
4093
4131
|
try {
|
|
4094
|
-
const
|
|
4095
|
-
const
|
|
4132
|
+
const parsed = JSON.parse(fs4.readFileSync(pkgPath, "utf-8"));
|
|
4133
|
+
const pkg = isRecord(parsed) ? parsed : {};
|
|
4134
|
+
const scriptsObj = isRecord(pkg.scripts) ? pkg.scripts : {};
|
|
4135
|
+
const scripts = Object.keys(scriptsObj);
|
|
4096
4136
|
let packageManager;
|
|
4097
4137
|
if (fs4.existsSync(path4.join(cwd, "bun.lockb")) || fs4.existsSync(path4.join(cwd, "bun.lock"))) {
|
|
4098
4138
|
packageManager = "bun";
|
|
@@ -4104,7 +4144,9 @@ function getPackageInfo(cwd) {
|
|
|
4104
4144
|
packageManager = "npm";
|
|
4105
4145
|
}
|
|
4106
4146
|
let framework;
|
|
4107
|
-
const
|
|
4147
|
+
const deps = isRecord(pkg.dependencies) ? pkg.dependencies : {};
|
|
4148
|
+
const devDeps = isRecord(pkg.devDependencies) ? pkg.devDependencies : {};
|
|
4149
|
+
const allDeps = { ...deps, ...devDeps };
|
|
4108
4150
|
if (allDeps["next"])
|
|
4109
4151
|
framework = "Next.js";
|
|
4110
4152
|
else if (allDeps["nuxt"])
|
|
@@ -4124,8 +4166,8 @@ function getPackageInfo(cwd) {
|
|
|
4124
4166
|
else if (allDeps["hono"])
|
|
4125
4167
|
framework = "Hono";
|
|
4126
4168
|
return {
|
|
4127
|
-
name: pkg.name,
|
|
4128
|
-
version: pkg.version,
|
|
4169
|
+
name: typeof pkg.name === "string" ? pkg.name : undefined,
|
|
4170
|
+
version: typeof pkg.version === "string" ? pkg.version : undefined,
|
|
4129
4171
|
packageManager,
|
|
4130
4172
|
scripts,
|
|
4131
4173
|
framework
|
|
@@ -4589,6 +4631,29 @@ function formatTruncationLog(result) {
|
|
|
4589
4631
|
import * as fs7 from "fs";
|
|
4590
4632
|
import * as path7 from "path";
|
|
4591
4633
|
import { execSync as execSync5 } from "child_process";
|
|
4634
|
+
function isRecord2(value) {
|
|
4635
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
4636
|
+
}
|
|
4637
|
+
function isTodoStatus(value) {
|
|
4638
|
+
return value === "todo" || value === "in-progress" || value === "in_progress" || value === "completed";
|
|
4639
|
+
}
|
|
4640
|
+
function normalizeTodoEntries(todos) {
|
|
4641
|
+
if (!Array.isArray(todos)) {
|
|
4642
|
+
return [];
|
|
4643
|
+
}
|
|
4644
|
+
const normalized = [];
|
|
4645
|
+
for (const entry of todos) {
|
|
4646
|
+
if (!isRecord2(entry) || !isTodoStatus(entry.status)) {
|
|
4647
|
+
continue;
|
|
4648
|
+
}
|
|
4649
|
+
normalized.push({
|
|
4650
|
+
id: typeof entry.id === "string" ? entry.id : "unknown",
|
|
4651
|
+
content: typeof entry.content === "string" ? entry.content : "(no content)",
|
|
4652
|
+
status: entry.status === "in_progress" ? "in-progress" : entry.status
|
|
4653
|
+
});
|
|
4654
|
+
}
|
|
4655
|
+
return normalized;
|
|
4656
|
+
}
|
|
4592
4657
|
function readBeadsState(projectDir) {
|
|
4593
4658
|
if (typeof projectDir !== "string" || !projectDir) {
|
|
4594
4659
|
return;
|
|
@@ -4616,10 +4681,12 @@ function readBeadsState(projectDir) {
|
|
|
4616
4681
|
try {
|
|
4617
4682
|
const raw = fs7.readFileSync(path7.join(reservationsDir, lockFile), "utf-8");
|
|
4618
4683
|
const lock = JSON.parse(raw);
|
|
4619
|
-
if (lock.path)
|
|
4684
|
+
if (isRecord2(lock) && typeof lock.path === "string") {
|
|
4620
4685
|
reservedFiles.push(lock.path);
|
|
4621
|
-
|
|
4686
|
+
}
|
|
4687
|
+
if (isRecord2(lock) && typeof lock.agent === "string") {
|
|
4622
4688
|
state.agentId = lock.agent;
|
|
4689
|
+
}
|
|
4623
4690
|
} catch {}
|
|
4624
4691
|
}
|
|
4625
4692
|
if (reservedFiles.length > 0) {
|
|
@@ -4637,8 +4704,16 @@ function readBeadsState(projectDir) {
|
|
|
4637
4704
|
if (output.trim()) {
|
|
4638
4705
|
const tasks = JSON.parse(output);
|
|
4639
4706
|
if (Array.isArray(tasks) && tasks.length > 0) {
|
|
4640
|
-
|
|
4641
|
-
|
|
4707
|
+
const first = tasks[0];
|
|
4708
|
+
if (isRecord2(first)) {
|
|
4709
|
+
const title = typeof first.title === "string" ? first.title : undefined;
|
|
4710
|
+
const shortTitle = typeof first.t === "string" ? first.t : undefined;
|
|
4711
|
+
const id = typeof first.id === "string" ? first.id : undefined;
|
|
4712
|
+
if (title || shortTitle)
|
|
4713
|
+
state.currentTask = title || shortTitle;
|
|
4714
|
+
if (id)
|
|
4715
|
+
state.taskId = id;
|
|
4716
|
+
}
|
|
4642
4717
|
state.inProgressCount = tasks.length;
|
|
4643
4718
|
}
|
|
4644
4719
|
}
|
|
@@ -4693,8 +4768,12 @@ function readMemoryRefs(projectDir, limit = 10) {
|
|
|
4693
4768
|
summary = headingMatch ? headingMatch[1] : raw.substring(0, 100).trim();
|
|
4694
4769
|
} else if (ext === ".json") {
|
|
4695
4770
|
const parsed = JSON.parse(raw);
|
|
4696
|
-
const
|
|
4697
|
-
|
|
4771
|
+
const safe = isRecord2(parsed) ? parsed : {};
|
|
4772
|
+
const content = safe.content;
|
|
4773
|
+
const summaryText = typeof safe.summary === "string" ? safe.summary : undefined;
|
|
4774
|
+
const titleText = typeof safe.title === "string" ? safe.title : undefined;
|
|
4775
|
+
const contentText = typeof content === "string" ? content.substring(0, 100) : "";
|
|
4776
|
+
summary = summaryText || titleText || contentText || "";
|
|
4698
4777
|
} else {
|
|
4699
4778
|
summary = raw.substring(0, 100).trim();
|
|
4700
4779
|
}
|
|
@@ -4737,11 +4816,12 @@ Beads State:`);
|
|
|
4737
4816
|
lines.push(` Reserved files: ${payload.beads.reservedFiles.join(", ")}`);
|
|
4738
4817
|
}
|
|
4739
4818
|
}
|
|
4740
|
-
|
|
4819
|
+
const normalizedTodos = normalizeTodoEntries(payload.todos);
|
|
4820
|
+
if (normalizedTodos.length) {
|
|
4741
4821
|
lines.push(`
|
|
4742
4822
|
Todo State:`);
|
|
4743
|
-
for (const todo of
|
|
4744
|
-
const icon = todo.status === "completed" ? "[x]" : todo.status === "
|
|
4823
|
+
for (const todo of normalizedTodos) {
|
|
4824
|
+
const icon = todo.status === "completed" ? "[x]" : todo.status === "in-progress" ? "[~]" : "[ ]";
|
|
4745
4825
|
lines.push(` ${icon} ${todo.id}: ${todo.content}`);
|
|
4746
4826
|
}
|
|
4747
4827
|
}
|
|
@@ -4859,6 +4939,17 @@ import * as fs9 from "fs";
|
|
|
4859
4939
|
import { Database } from "bun:sqlite";
|
|
4860
4940
|
var MEMORY_DIR = path10.join(process.cwd(), ".opencode", "memory");
|
|
4861
4941
|
var MEMORY_DB = path10.join(MEMORY_DIR, "memory.db");
|
|
4942
|
+
function parseStringArray(value) {
|
|
4943
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
4944
|
+
return [];
|
|
4945
|
+
}
|
|
4946
|
+
try {
|
|
4947
|
+
const parsed = JSON.parse(value);
|
|
4948
|
+
return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
|
|
4949
|
+
} catch {
|
|
4950
|
+
return [];
|
|
4951
|
+
}
|
|
4952
|
+
}
|
|
4862
4953
|
function getDb() {
|
|
4863
4954
|
if (!fs9.existsSync(MEMORY_DIR)) {
|
|
4864
4955
|
fs9.mkdirSync(MEMORY_DIR, { recursive: true });
|
|
@@ -4964,15 +5055,18 @@ function memoryGet(ids) {
|
|
|
4964
5055
|
return [];
|
|
4965
5056
|
}
|
|
4966
5057
|
const db = getDb();
|
|
4967
|
-
const idList = ids.split(",").map((id) => parseInt(id.trim(), 10));
|
|
5058
|
+
const idList = ids.split(",").map((id) => parseInt(id.trim(), 10)).filter((id) => Number.isFinite(id));
|
|
5059
|
+
if (idList.length === 0) {
|
|
5060
|
+
return [];
|
|
5061
|
+
}
|
|
4968
5062
|
const placeholders = idList.map(() => "?").join(",");
|
|
4969
5063
|
const sql = `SELECT * FROM observations WHERE id IN (${placeholders})`;
|
|
4970
5064
|
const rows = db.prepare(sql).all(...idList);
|
|
4971
5065
|
return rows.map((row) => ({
|
|
4972
5066
|
...row,
|
|
4973
|
-
facts:
|
|
4974
|
-
files_read:
|
|
4975
|
-
files_modified:
|
|
5067
|
+
facts: parseStringArray(row.facts),
|
|
5068
|
+
files_read: parseStringArray(row.files_read),
|
|
5069
|
+
files_modified: parseStringArray(row.files_modified)
|
|
4976
5070
|
}));
|
|
4977
5071
|
}
|
|
4978
5072
|
function memoryTimeline(params) {
|
|
@@ -4998,9 +5092,9 @@ function memoryTimeline(params) {
|
|
|
4998
5092
|
const rows = db.prepare(sql).all(p.id, before, p.id, p.id, after);
|
|
4999
5093
|
return rows.map((row) => ({
|
|
5000
5094
|
...row,
|
|
5001
|
-
facts:
|
|
5002
|
-
files_read:
|
|
5003
|
-
files_modified:
|
|
5095
|
+
facts: parseStringArray(row.facts),
|
|
5096
|
+
files_read: parseStringArray(row.files_read),
|
|
5097
|
+
files_modified: parseStringArray(row.files_modified)
|
|
5004
5098
|
}));
|
|
5005
5099
|
}
|
|
5006
5100
|
function memoryUpdate(params) {
|
|
@@ -5095,6 +5189,17 @@ import * as fs10 from "fs";
|
|
|
5095
5189
|
import { Database as Database2 } from "bun:sqlite";
|
|
5096
5190
|
var MEMORY_DIR2 = path11.join(process.cwd(), ".opencode", "memory");
|
|
5097
5191
|
var MEMORY_DB2 = path11.join(MEMORY_DIR2, "memory.db");
|
|
5192
|
+
function parseStringArray2(value) {
|
|
5193
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
5194
|
+
return [];
|
|
5195
|
+
}
|
|
5196
|
+
try {
|
|
5197
|
+
const parsed = JSON.parse(value);
|
|
5198
|
+
return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
|
|
5199
|
+
} catch {
|
|
5200
|
+
return [];
|
|
5201
|
+
}
|
|
5202
|
+
}
|
|
5098
5203
|
function getDb2() {
|
|
5099
5204
|
if (!fs10.existsSync(MEMORY_DIR2)) {
|
|
5100
5205
|
fs10.mkdirSync(MEMORY_DIR2, { recursive: true });
|
|
@@ -5163,10 +5268,10 @@ function getObservationsByType(type, limit = 10) {
|
|
|
5163
5268
|
const rows = db.prepare(sql).all(type, limit);
|
|
5164
5269
|
return rows.map((row) => ({
|
|
5165
5270
|
...row,
|
|
5166
|
-
facts:
|
|
5167
|
-
files_read:
|
|
5168
|
-
files_modified:
|
|
5169
|
-
concepts:
|
|
5271
|
+
facts: parseStringArray2(row.facts),
|
|
5272
|
+
files_read: parseStringArray2(row.files_read),
|
|
5273
|
+
files_modified: parseStringArray2(row.files_modified),
|
|
5274
|
+
concepts: parseStringArray2(row.concepts)
|
|
5170
5275
|
}));
|
|
5171
5276
|
}
|
|
5172
5277
|
function getObservationsByBead(beadId) {
|
|
@@ -5175,17 +5280,17 @@ function getObservationsByBead(beadId) {
|
|
|
5175
5280
|
const rows = db.prepare(sql).all(beadId);
|
|
5176
5281
|
return rows.map((row) => ({
|
|
5177
5282
|
...row,
|
|
5178
|
-
facts:
|
|
5179
|
-
files_read:
|
|
5180
|
-
files_modified:
|
|
5181
|
-
concepts:
|
|
5283
|
+
facts: parseStringArray2(row.facts),
|
|
5284
|
+
files_read: parseStringArray2(row.files_read),
|
|
5285
|
+
files_modified: parseStringArray2(row.files_modified),
|
|
5286
|
+
concepts: parseStringArray2(row.concepts)
|
|
5182
5287
|
}));
|
|
5183
5288
|
}
|
|
5184
5289
|
function linkObservations(observationId, concept) {
|
|
5185
5290
|
const db = getDb2();
|
|
5186
5291
|
const row = db.prepare("SELECT concepts FROM observations WHERE id = ?").get(observationId);
|
|
5187
5292
|
if (row) {
|
|
5188
|
-
const concepts =
|
|
5293
|
+
const concepts = parseStringArray2(row.concepts);
|
|
5189
5294
|
if (!concepts.includes(concept)) {
|
|
5190
5295
|
concepts.push(concept);
|
|
5191
5296
|
db.prepare("UPDATE observations SET concepts = ? WHERE id = ?").run(JSON.stringify(concepts), observationId);
|
|
@@ -5522,6 +5627,17 @@ import * as fs12 from "fs";
|
|
|
5522
5627
|
import { Database as Database4 } from "bun:sqlite";
|
|
5523
5628
|
var MEMORY_DIR4 = path13.join(process.cwd(), ".opencode", "memory");
|
|
5524
5629
|
var MEMORY_DB4 = path13.join(MEMORY_DIR4, "memory.db");
|
|
5630
|
+
function parseStringArray3(value) {
|
|
5631
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
5632
|
+
return [];
|
|
5633
|
+
}
|
|
5634
|
+
try {
|
|
5635
|
+
const parsed = JSON.parse(value);
|
|
5636
|
+
return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
|
|
5637
|
+
} catch {
|
|
5638
|
+
return [];
|
|
5639
|
+
}
|
|
5640
|
+
}
|
|
5525
5641
|
function getMemoryDb2() {
|
|
5526
5642
|
if (!fs12.existsSync(MEMORY_DIR4)) {
|
|
5527
5643
|
fs12.mkdirSync(MEMORY_DIR4, { recursive: true });
|
|
@@ -5580,12 +5696,10 @@ function contextSummary(params = {}) {
|
|
|
5580
5696
|
const allFilesRead = new Set;
|
|
5581
5697
|
const allFilesModified = new Set;
|
|
5582
5698
|
for (const obs of observations) {
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
modified.forEach((f) => allFilesModified.add(f));
|
|
5588
|
-
} catch {}
|
|
5699
|
+
const read = parseStringArray3(obs.files_read);
|
|
5700
|
+
const modified = parseStringArray3(obs.files_modified);
|
|
5701
|
+
read.forEach((f) => allFilesRead.add(f));
|
|
5702
|
+
modified.forEach((f) => allFilesModified.add(f));
|
|
5589
5703
|
}
|
|
5590
5704
|
const summary = buildSummary(sections, p.maxTokens || 2000);
|
|
5591
5705
|
const tokenEstimate = Math.ceil(summary.length / 4);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-summary.d.ts","sourceRoot":"","sources":["../../src/tools/context-summary.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"context-summary.d.ts","sourceRoot":"","sources":["../../src/tools/context-summary.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;CACvB;AA4CD,wBAAgB,cAAc,CAAC,MAAM,GAAE,OAAY,GAAG,oBAAoB,CAwEzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuED,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ9D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAuClE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAwB3D;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAmCnE;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA2BnE;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CA8E9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAkDD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CA2C3E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,iBAAiB,EAAE,CAanF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAazE;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAY7E"}
|