clikit-plugin 0.2.14 → 0.2.16

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.
@@ -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;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CA0F1E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,GAAE,MAAW,GAAG,SAAS,EAAE,CA8DnF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,GAAE,MAAa,GAAG,MAAM,CA4ChG;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
+ {"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;AAUD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAc3D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAyCnE;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
+ {"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;AAsBD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAkBvD;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"}
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"}
@@ -16,5 +16,5 @@ export interface SecurityCheckResult {
16
16
  }
17
17
  export declare function scanContentForSecrets(content: string, filename?: string): SecurityCheckResult;
18
18
  export declare function isSensitiveFile(filepath: string): boolean;
19
- export declare function formatSecurityWarning(result: SecurityCheckResult): string;
19
+ export declare function formatSecurityWarning(result: SecurityCheckResult | unknown): string;
20
20
  //# sourceMappingURL=security-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"security-check.d.ts","sourceRoot":"","sources":["../../src/hooks/security-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAmB7F;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAUzE"}
1
+ {"version":3,"file":"security-check.d.ts","sourceRoot":"","sources":["../../src/hooks/security-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AA2BD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAmB7F;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,GAAG,MAAM,CAWnF"}
package/dist/index.js CHANGED
@@ -3962,6 +3962,24 @@ var SENSITIVE_FILES = [
3962
3962
  /id_rsa$/,
3963
3963
  /id_ed25519$/
3964
3964
  ];
3965
+ function normalizeSecurityResult(result) {
3966
+ if (!result || typeof result !== "object") {
3967
+ return { safe: true, findings: [] };
3968
+ }
3969
+ const raw = result;
3970
+ const findings = Array.isArray(raw.findings) ? raw.findings.filter((item) => !!item && typeof item === "object").map((record) => {
3971
+ return {
3972
+ type: typeof record.type === "string" ? record.type : "Unknown",
3973
+ file: typeof record.file === "string" ? record.file : undefined,
3974
+ line: typeof record.line === "number" ? record.line : undefined,
3975
+ snippet: typeof record.snippet === "string" ? record.snippet : undefined
3976
+ };
3977
+ }) : [];
3978
+ return {
3979
+ safe: typeof raw.safe === "boolean" ? raw.safe : findings.length === 0,
3980
+ findings
3981
+ };
3982
+ }
3965
3983
  function scanContentForSecrets(content, filename) {
3966
3984
  if (typeof content !== "string")
3967
3985
  return { safe: true, findings: [] };
@@ -3986,8 +4004,9 @@ function isSensitiveFile(filepath) {
3986
4004
  return SENSITIVE_FILES.some((pattern) => pattern.test(filepath));
3987
4005
  }
3988
4006
  function formatSecurityWarning(result) {
4007
+ const safeResult = normalizeSecurityResult(result);
3989
4008
  const lines = ["[CliKit:security] Potential secrets detected:"];
3990
- for (const f of result.findings) {
4009
+ for (const f of safeResult.findings) {
3991
4010
  lines.push(` - ${f.type}${f.file ? ` in ${f.file}` : ""}${f.line ? `:${f.line}` : ""}`);
3992
4011
  if (f.snippet) {
3993
4012
  lines.push(` ${f.snippet.substring(0, 60)}...`);
@@ -4100,6 +4119,9 @@ function formatCommentWarning(result) {
4100
4119
  import * as fs4 from "fs";
4101
4120
  import * as path4 from "path";
4102
4121
  import { execSync } from "child_process";
4122
+ function isRecord(value) {
4123
+ return !!value && typeof value === "object" && !Array.isArray(value);
4124
+ }
4103
4125
  function runSilent(cmd, cwd) {
4104
4126
  try {
4105
4127
  return execSync(cmd, { cwd, encoding: "utf-8", timeout: 5000, stdio: ["pipe", "pipe", "pipe"] }).trim();
@@ -4126,8 +4148,10 @@ function getPackageInfo(cwd) {
4126
4148
  if (!fs4.existsSync(pkgPath))
4127
4149
  return;
4128
4150
  try {
4129
- const pkg = JSON.parse(fs4.readFileSync(pkgPath, "utf-8"));
4130
- const scripts = pkg.scripts ? Object.keys(pkg.scripts) : [];
4151
+ const parsed = JSON.parse(fs4.readFileSync(pkgPath, "utf-8"));
4152
+ const pkg = isRecord(parsed) ? parsed : {};
4153
+ const scriptsObj = isRecord(pkg.scripts) ? pkg.scripts : {};
4154
+ const scripts = Object.keys(scriptsObj);
4131
4155
  let packageManager;
4132
4156
  if (fs4.existsSync(path4.join(cwd, "bun.lockb")) || fs4.existsSync(path4.join(cwd, "bun.lock"))) {
4133
4157
  packageManager = "bun";
@@ -4139,7 +4163,9 @@ function getPackageInfo(cwd) {
4139
4163
  packageManager = "npm";
4140
4164
  }
4141
4165
  let framework;
4142
- const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
4166
+ const deps = isRecord(pkg.dependencies) ? pkg.dependencies : {};
4167
+ const devDeps = isRecord(pkg.devDependencies) ? pkg.devDependencies : {};
4168
+ const allDeps = { ...deps, ...devDeps };
4143
4169
  if (allDeps["next"])
4144
4170
  framework = "Next.js";
4145
4171
  else if (allDeps["nuxt"])
@@ -4159,8 +4185,8 @@ function getPackageInfo(cwd) {
4159
4185
  else if (allDeps["hono"])
4160
4186
  framework = "Hono";
4161
4187
  return {
4162
- name: pkg.name,
4163
- version: pkg.version,
4188
+ name: typeof pkg.name === "string" ? pkg.name : undefined,
4189
+ version: typeof pkg.version === "string" ? pkg.version : undefined,
4164
4190
  packageManager,
4165
4191
  scripts,
4166
4192
  framework
@@ -4624,6 +4650,29 @@ function formatTruncationLog(result) {
4624
4650
  import * as fs7 from "fs";
4625
4651
  import * as path7 from "path";
4626
4652
  import { execSync as execSync5 } from "child_process";
4653
+ function isRecord2(value) {
4654
+ return !!value && typeof value === "object" && !Array.isArray(value);
4655
+ }
4656
+ function isTodoStatus(value) {
4657
+ return value === "todo" || value === "in-progress" || value === "in_progress" || value === "completed";
4658
+ }
4659
+ function normalizeTodoEntries(todos) {
4660
+ if (!Array.isArray(todos)) {
4661
+ return [];
4662
+ }
4663
+ const normalized = [];
4664
+ for (const entry of todos) {
4665
+ if (!isRecord2(entry) || !isTodoStatus(entry.status)) {
4666
+ continue;
4667
+ }
4668
+ normalized.push({
4669
+ id: typeof entry.id === "string" ? entry.id : "unknown",
4670
+ content: typeof entry.content === "string" ? entry.content : "(no content)",
4671
+ status: entry.status === "in_progress" ? "in-progress" : entry.status
4672
+ });
4673
+ }
4674
+ return normalized;
4675
+ }
4627
4676
  function readBeadsState(projectDir) {
4628
4677
  if (typeof projectDir !== "string" || !projectDir) {
4629
4678
  return;
@@ -4651,10 +4700,12 @@ function readBeadsState(projectDir) {
4651
4700
  try {
4652
4701
  const raw = fs7.readFileSync(path7.join(reservationsDir, lockFile), "utf-8");
4653
4702
  const lock = JSON.parse(raw);
4654
- if (lock.path)
4703
+ if (isRecord2(lock) && typeof lock.path === "string") {
4655
4704
  reservedFiles.push(lock.path);
4656
- if (lock.agent)
4705
+ }
4706
+ if (isRecord2(lock) && typeof lock.agent === "string") {
4657
4707
  state.agentId = lock.agent;
4708
+ }
4658
4709
  } catch {}
4659
4710
  }
4660
4711
  if (reservedFiles.length > 0) {
@@ -4672,8 +4723,16 @@ function readBeadsState(projectDir) {
4672
4723
  if (output.trim()) {
4673
4724
  const tasks = JSON.parse(output);
4674
4725
  if (Array.isArray(tasks) && tasks.length > 0) {
4675
- state.currentTask = tasks[0].title || tasks[0].t;
4676
- state.taskId = tasks[0].id;
4726
+ const first = tasks[0];
4727
+ if (isRecord2(first)) {
4728
+ const title = typeof first.title === "string" ? first.title : undefined;
4729
+ const shortTitle = typeof first.t === "string" ? first.t : undefined;
4730
+ const id = typeof first.id === "string" ? first.id : undefined;
4731
+ if (title || shortTitle)
4732
+ state.currentTask = title || shortTitle;
4733
+ if (id)
4734
+ state.taskId = id;
4735
+ }
4677
4736
  state.inProgressCount = tasks.length;
4678
4737
  }
4679
4738
  }
@@ -4728,8 +4787,12 @@ function readMemoryRefs(projectDir, limit = 10) {
4728
4787
  summary = headingMatch ? headingMatch[1] : raw.substring(0, 100).trim();
4729
4788
  } else if (ext === ".json") {
4730
4789
  const parsed = JSON.parse(raw);
4731
- const content = parsed.content;
4732
- summary = parsed.summary || parsed.title || (typeof content === "string" ? content.substring(0, 100) : "") || "";
4790
+ const safe = isRecord2(parsed) ? parsed : {};
4791
+ const content = safe.content;
4792
+ const summaryText = typeof safe.summary === "string" ? safe.summary : undefined;
4793
+ const titleText = typeof safe.title === "string" ? safe.title : undefined;
4794
+ const contentText = typeof content === "string" ? content.substring(0, 100) : "";
4795
+ summary = summaryText || titleText || contentText || "";
4733
4796
  } else {
4734
4797
  summary = raw.substring(0, 100).trim();
4735
4798
  }
@@ -4772,11 +4835,12 @@ Beads State:`);
4772
4835
  lines.push(` Reserved files: ${payload.beads.reservedFiles.join(", ")}`);
4773
4836
  }
4774
4837
  }
4775
- if (payload.todos?.length) {
4838
+ const normalizedTodos = normalizeTodoEntries(payload.todos);
4839
+ if (normalizedTodos.length) {
4776
4840
  lines.push(`
4777
4841
  Todo State:`);
4778
- for (const todo of payload.todos) {
4779
- const icon = todo.status === "completed" ? "[x]" : todo.status === "in_progress" ? "[~]" : "[ ]";
4842
+ for (const todo of normalizedTodos) {
4843
+ const icon = todo.status === "completed" ? "[x]" : todo.status === "in-progress" ? "[~]" : "[ ]";
4780
4844
  lines.push(` ${icon} ${todo.id}: ${todo.content}`);
4781
4845
  }
4782
4846
  }
@@ -4894,6 +4958,17 @@ import * as fs9 from "fs";
4894
4958
  import { Database } from "bun:sqlite";
4895
4959
  var MEMORY_DIR = path10.join(process.cwd(), ".opencode", "memory");
4896
4960
  var MEMORY_DB = path10.join(MEMORY_DIR, "memory.db");
4961
+ function parseStringArray(value) {
4962
+ if (typeof value !== "string" || !value.trim()) {
4963
+ return [];
4964
+ }
4965
+ try {
4966
+ const parsed = JSON.parse(value);
4967
+ return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
4968
+ } catch {
4969
+ return [];
4970
+ }
4971
+ }
4897
4972
  function getDb() {
4898
4973
  if (!fs9.existsSync(MEMORY_DIR)) {
4899
4974
  fs9.mkdirSync(MEMORY_DIR, { recursive: true });
@@ -4999,15 +5074,18 @@ function memoryGet(ids) {
4999
5074
  return [];
5000
5075
  }
5001
5076
  const db = getDb();
5002
- const idList = ids.split(",").map((id) => parseInt(id.trim(), 10));
5077
+ const idList = ids.split(",").map((id) => parseInt(id.trim(), 10)).filter((id) => Number.isFinite(id));
5078
+ if (idList.length === 0) {
5079
+ return [];
5080
+ }
5003
5081
  const placeholders = idList.map(() => "?").join(",");
5004
5082
  const sql = `SELECT * FROM observations WHERE id IN (${placeholders})`;
5005
5083
  const rows = db.prepare(sql).all(...idList);
5006
5084
  return rows.map((row) => ({
5007
5085
  ...row,
5008
- facts: JSON.parse(row.facts || "[]"),
5009
- files_read: JSON.parse(row.files_read || "[]"),
5010
- files_modified: JSON.parse(row.files_modified || "[]")
5086
+ facts: parseStringArray(row.facts),
5087
+ files_read: parseStringArray(row.files_read),
5088
+ files_modified: parseStringArray(row.files_modified)
5011
5089
  }));
5012
5090
  }
5013
5091
  function memoryTimeline(params) {
@@ -5033,9 +5111,9 @@ function memoryTimeline(params) {
5033
5111
  const rows = db.prepare(sql).all(p.id, before, p.id, p.id, after);
5034
5112
  return rows.map((row) => ({
5035
5113
  ...row,
5036
- facts: JSON.parse(row.facts || "[]"),
5037
- files_read: JSON.parse(row.files_read || "[]"),
5038
- files_modified: JSON.parse(row.files_modified || "[]")
5114
+ facts: parseStringArray(row.facts),
5115
+ files_read: parseStringArray(row.files_read),
5116
+ files_modified: parseStringArray(row.files_modified)
5039
5117
  }));
5040
5118
  }
5041
5119
  function memoryUpdate(params) {
@@ -5130,6 +5208,17 @@ import * as fs10 from "fs";
5130
5208
  import { Database as Database2 } from "bun:sqlite";
5131
5209
  var MEMORY_DIR2 = path11.join(process.cwd(), ".opencode", "memory");
5132
5210
  var MEMORY_DB2 = path11.join(MEMORY_DIR2, "memory.db");
5211
+ function parseStringArray2(value) {
5212
+ if (typeof value !== "string" || !value.trim()) {
5213
+ return [];
5214
+ }
5215
+ try {
5216
+ const parsed = JSON.parse(value);
5217
+ return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
5218
+ } catch {
5219
+ return [];
5220
+ }
5221
+ }
5133
5222
  function getDb2() {
5134
5223
  if (!fs10.existsSync(MEMORY_DIR2)) {
5135
5224
  fs10.mkdirSync(MEMORY_DIR2, { recursive: true });
@@ -5198,10 +5287,10 @@ function getObservationsByType(type, limit = 10) {
5198
5287
  const rows = db.prepare(sql).all(type, limit);
5199
5288
  return rows.map((row) => ({
5200
5289
  ...row,
5201
- facts: JSON.parse(row.facts || "[]"),
5202
- files_read: JSON.parse(row.files_read || "[]"),
5203
- files_modified: JSON.parse(row.files_modified || "[]"),
5204
- concepts: JSON.parse(row.concepts || "[]")
5290
+ facts: parseStringArray2(row.facts),
5291
+ files_read: parseStringArray2(row.files_read),
5292
+ files_modified: parseStringArray2(row.files_modified),
5293
+ concepts: parseStringArray2(row.concepts)
5205
5294
  }));
5206
5295
  }
5207
5296
  function getObservationsByBead(beadId) {
@@ -5210,17 +5299,17 @@ function getObservationsByBead(beadId) {
5210
5299
  const rows = db.prepare(sql).all(beadId);
5211
5300
  return rows.map((row) => ({
5212
5301
  ...row,
5213
- facts: JSON.parse(row.facts || "[]"),
5214
- files_read: JSON.parse(row.files_read || "[]"),
5215
- files_modified: JSON.parse(row.files_modified || "[]"),
5216
- concepts: JSON.parse(row.concepts || "[]")
5302
+ facts: parseStringArray2(row.facts),
5303
+ files_read: parseStringArray2(row.files_read),
5304
+ files_modified: parseStringArray2(row.files_modified),
5305
+ concepts: parseStringArray2(row.concepts)
5217
5306
  }));
5218
5307
  }
5219
5308
  function linkObservations(observationId, concept) {
5220
5309
  const db = getDb2();
5221
5310
  const row = db.prepare("SELECT concepts FROM observations WHERE id = ?").get(observationId);
5222
5311
  if (row) {
5223
- const concepts = JSON.parse(row.concepts || "[]");
5312
+ const concepts = parseStringArray2(row.concepts);
5224
5313
  if (!concepts.includes(concept)) {
5225
5314
  concepts.push(concept);
5226
5315
  db.prepare("UPDATE observations SET concepts = ? WHERE id = ?").run(JSON.stringify(concepts), observationId);
@@ -5557,6 +5646,17 @@ import * as fs12 from "fs";
5557
5646
  import { Database as Database4 } from "bun:sqlite";
5558
5647
  var MEMORY_DIR4 = path13.join(process.cwd(), ".opencode", "memory");
5559
5648
  var MEMORY_DB4 = path13.join(MEMORY_DIR4, "memory.db");
5649
+ function parseStringArray3(value) {
5650
+ if (typeof value !== "string" || !value.trim()) {
5651
+ return [];
5652
+ }
5653
+ try {
5654
+ const parsed = JSON.parse(value);
5655
+ return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
5656
+ } catch {
5657
+ return [];
5658
+ }
5659
+ }
5560
5660
  function getMemoryDb2() {
5561
5661
  if (!fs12.existsSync(MEMORY_DIR4)) {
5562
5662
  fs12.mkdirSync(MEMORY_DIR4, { recursive: true });
@@ -5615,12 +5715,10 @@ function contextSummary(params = {}) {
5615
5715
  const allFilesRead = new Set;
5616
5716
  const allFilesModified = new Set;
5617
5717
  for (const obs of observations) {
5618
- try {
5619
- const read = JSON.parse(obs.files_read || "[]");
5620
- const modified = JSON.parse(obs.files_modified || "[]");
5621
- read.forEach((f) => allFilesRead.add(f));
5622
- modified.forEach((f) => allFilesModified.add(f));
5623
- } catch {}
5718
+ const read = parseStringArray3(obs.files_read);
5719
+ const modified = parseStringArray3(obs.files_modified);
5720
+ read.forEach((f) => allFilesRead.add(f));
5721
+ modified.forEach((f) => allFilesModified.add(f));
5624
5722
  }
5625
5723
  const summary = buildSummary(sections, p.maxTokens || 2000);
5626
5724
  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;AAgCD,wBAAgB,cAAc,CAAC,MAAM,GAAE,OAAY,GAAG,oBAAoB,CA0EzE"}
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;AA2DD,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,CAkB3D;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
+ {"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;AAsCD,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"}
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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clikit-plugin",
3
- "version": "0.2.14",
3
+ "version": "0.2.16",
4
4
  "description": "OpenCode plugin with 10 agents, 19 commands, 48 skills, 14 hooks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,11 +52,12 @@
52
52
  },
53
53
  "homepage": "https://github.com/KiraKas-Tr/CliKit#readme",
54
54
  "dependencies": {
55
- "@opencode-ai/plugin": "1.2.1",
55
+ "@opencode-ai/plugin": "1.2.4",
56
56
  "gray-matter": "^4.0.3"
57
57
  },
58
58
  "devDependencies": {
59
59
  "bun-types": "latest",
60
+ "clikit-plugin": "^0.2.15",
60
61
  "typescript": "^5.7.3"
61
62
  },
62
63
  "peerDependencies": {