clikit-plugin 0.2.3 → 0.2.5
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/cli.js +1 -18
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/hooks/auto-format.d.ts +1 -1
- package/dist/hooks/auto-format.d.ts.map +1 -1
- package/dist/hooks/compaction.d.ts +3 -3
- package/dist/hooks/compaction.d.ts.map +1 -1
- package/dist/hooks/env-context.d.ts +1 -1
- package/dist/hooks/env-context.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/hooks/typecheck-gate.d.ts +1 -1
- package/dist/hooks/typecheck-gate.d.ts.map +1 -1
- package/dist/index.js +26 -10
- package/memory/handoffs/2026-02-15-runtime-fixes.md +80 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -61,18 +61,6 @@ function parseConfig(configPath) {
|
|
|
61
61
|
return { config: {}, raw, parseError: String(err) };
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
function backupConfig(configPath) {
|
|
65
|
-
try {
|
|
66
|
-
if (!fs.existsSync(configPath)) {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
const backupPath = `${configPath}.backup-${Date.now()}`;
|
|
70
|
-
fs.copyFileSync(configPath, backupPath);
|
|
71
|
-
return backupPath;
|
|
72
|
-
} catch {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
64
|
function writeConfig(configPath, config) {
|
|
77
65
|
ensureConfigDir();
|
|
78
66
|
const tmpPath = `${configPath}.tmp`;
|
|
@@ -95,16 +83,11 @@ async function install() {
|
|
|
95
83
|
}
|
|
96
84
|
const configPath = getConfigPath();
|
|
97
85
|
try {
|
|
98
|
-
const backupPath = backupConfig(configPath);
|
|
99
|
-
if (backupPath) {
|
|
100
|
-
console.log(` Backup created: ${backupPath}`);
|
|
101
|
-
}
|
|
102
86
|
const result = parseConfig(configPath);
|
|
103
87
|
if (result.parseError && result.raw.trim()) {
|
|
104
88
|
console.error(`\u2717 Config file has syntax errors and cannot be safely modified.`);
|
|
105
89
|
console.error(` Error: ${result.parseError}`);
|
|
106
|
-
console.error(` Please fix the config file manually
|
|
107
|
-
console.error(` Backup: ${backupPath}`);
|
|
90
|
+
console.error(` Please fix the config file manually.`);
|
|
108
91
|
return 1;
|
|
109
92
|
}
|
|
110
93
|
const config = result.config;
|
package/dist/config.d.ts
CHANGED
|
@@ -111,7 +111,7 @@ export interface CliKitConfig {
|
|
|
111
111
|
hooks?: HooksConfig;
|
|
112
112
|
}
|
|
113
113
|
declare function getUserConfigDir(): string;
|
|
114
|
-
export declare function loadCliKitConfig(projectDirectory:
|
|
114
|
+
export declare function loadCliKitConfig(projectDirectory: unknown): CliKitConfig;
|
|
115
115
|
export declare function filterAgents(agents: Record<string, AgentConfig>, config: CliKitConfig): Record<string, AgentConfig>;
|
|
116
116
|
export declare function filterCommands(commands: Record<string, CommandConfig>, config: CliKitConfig): Record<string, CommandConfig>;
|
|
117
117
|
export { getUserConfigDir };
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ type FormatterEntry = {
|
|
|
24
24
|
};
|
|
25
25
|
export declare function detectFormatter(projectDir: string): FormatterEntry | undefined;
|
|
26
26
|
export declare function shouldFormat(filePath: string, extensions?: string[]): boolean;
|
|
27
|
-
export declare function runFormatter(filePath: string, projectDir:
|
|
27
|
+
export declare function runFormatter(filePath: string, projectDir: unknown, formatterOverride?: string): FormatResult;
|
|
28
28
|
export declare function formatAutoFormatLog(result: FormatResult): string;
|
|
29
29
|
export {};
|
|
30
30
|
//# sourceMappingURL=auto-format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-format.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC,CAAC;AAsBF,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CA2B9E;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAI7E;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"auto-format.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC,CAAC;AAsBF,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CA2B9E;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAI7E;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACzB,YAAY,CAoCd;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAKhE"}
|
|
@@ -47,14 +47,14 @@ export interface CompactionPayload {
|
|
|
47
47
|
* - .reservations/ for active file locks
|
|
48
48
|
* - `bd ls` command for current task status (if bd CLI available)
|
|
49
49
|
*/
|
|
50
|
-
export declare function readBeadsState(projectDir:
|
|
50
|
+
export declare function readBeadsState(projectDir: unknown): BeadsState | undefined;
|
|
51
51
|
/**
|
|
52
52
|
* Read memory references from .opencode/memory/ subdirectories.
|
|
53
53
|
* Scans for .md files in subdirs: specs/, plans/, research/, reviews/, handoffs/, beads/
|
|
54
54
|
* Extracts title from first heading or filename.
|
|
55
55
|
*/
|
|
56
|
-
export declare function readMemoryRefs(projectDir:
|
|
56
|
+
export declare function readMemoryRefs(projectDir: unknown, limit?: number): MemoryRef[];
|
|
57
57
|
export declare function buildCompactionBlock(payload: CompactionPayload, maxChars?: number): string;
|
|
58
|
-
export declare function collectCompactionPayload(projectDir:
|
|
58
|
+
export declare function collectCompactionPayload(projectDir: unknown, config?: CompactionConfig): CompactionPayload;
|
|
59
59
|
export declare function formatCompactionLog(payload: CompactionPayload): string;
|
|
60
60
|
//# sourceMappingURL=compaction.d.ts.map
|
|
@@ -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,
|
|
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"}
|
|
@@ -37,7 +37,7 @@ export interface PackageInfo {
|
|
|
37
37
|
export declare function getGitInfo(cwd: string): GitInfo | undefined;
|
|
38
38
|
export declare function getPackageInfo(cwd: string): PackageInfo | undefined;
|
|
39
39
|
export declare function getTopLevelStructure(cwd: string, maxDepth?: number): string[];
|
|
40
|
-
export declare function collectEnvInfo(cwd:
|
|
40
|
+
export declare function collectEnvInfo(cwd: unknown, config?: EnvContextConfig): EnvInfo;
|
|
41
41
|
export declare function buildEnvBlock(info: EnvInfo): string;
|
|
42
42
|
export declare function formatEnvSummary(info: EnvInfo): string;
|
|
43
43
|
//# sourceMappingURL=env-context.d.ts.map
|
|
@@ -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,
|
|
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"}
|
|
@@ -14,6 +14,6 @@ export interface TodoCheckResult {
|
|
|
14
14
|
incomplete: TodoItem[];
|
|
15
15
|
inProgress: TodoItem[];
|
|
16
16
|
}
|
|
17
|
-
export declare function checkTodoCompletion(todos:
|
|
17
|
+
export declare function checkTodoCompletion(todos: unknown): TodoCheckResult;
|
|
18
18
|
export declare function formatIncompleteWarning(result: TodoCheckResult, 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;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,
|
|
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;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAYnE;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAuBR"}
|
|
@@ -26,6 +26,6 @@ export interface TypeCheckResult {
|
|
|
26
26
|
export declare function isTypeScriptFile(filePath: string): boolean;
|
|
27
27
|
export declare function findTsConfig(projectDir: string, override?: string): string | undefined;
|
|
28
28
|
export declare function hasTscInstalled(projectDir: string): boolean;
|
|
29
|
-
export declare function runTypeCheck(filePath: string, projectDir:
|
|
29
|
+
export declare function runTypeCheck(filePath: string, projectDir: unknown, config?: TypeCheckConfig): TypeCheckResult;
|
|
30
30
|
export declare function formatTypeCheckWarning(result: TypeCheckResult): string;
|
|
31
31
|
//# sourceMappingURL=typecheck-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typecheck-gate.d.ts","sourceRoot":"","sources":["../../src/hooks/typecheck-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAetF;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAW3D;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"typecheck-gate.d.ts","sourceRoot":"","sources":["../../src/hooks/typecheck-gate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAetF;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAW3D;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,OAAO,EACnB,MAAM,CAAC,EAAE,eAAe,GACvB,eAAe,CAgCjB;AAqCD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAetE"}
|
package/dist/index.js
CHANGED
|
@@ -3708,8 +3708,9 @@ function deepMerge(base, override) {
|
|
|
3708
3708
|
return result;
|
|
3709
3709
|
}
|
|
3710
3710
|
function loadCliKitConfig(projectDirectory) {
|
|
3711
|
+
const safeDir = typeof projectDirectory === "string" && projectDirectory ? projectDirectory : process.cwd();
|
|
3711
3712
|
const userConfigPath = path3.join(getUserConfigDir(), "opencode", "clikit.config.json");
|
|
3712
|
-
const projectConfigPath = path3.join(
|
|
3713
|
+
const projectConfigPath = path3.join(safeDir, ".opencode", "clikit.config.json");
|
|
3713
3714
|
let config = { ...DEFAULT_CONFIG };
|
|
3714
3715
|
const userConfig = loadJsonFile(userConfigPath);
|
|
3715
3716
|
if (userConfig) {
|
|
@@ -3761,6 +3762,9 @@ function filterCommands(commands, config) {
|
|
|
3761
3762
|
|
|
3762
3763
|
// src/hooks/todo-enforcer.ts
|
|
3763
3764
|
function checkTodoCompletion(todos) {
|
|
3765
|
+
if (!Array.isArray(todos)) {
|
|
3766
|
+
return { complete: true, incomplete: [], inProgress: [] };
|
|
3767
|
+
}
|
|
3764
3768
|
const incomplete = todos.filter((t) => t.status === "todo");
|
|
3765
3769
|
const inProgress = todos.filter((t) => t.status === "in-progress");
|
|
3766
3770
|
return {
|
|
@@ -4147,19 +4151,20 @@ function getTopLevelStructure(cwd, maxDepth = 2) {
|
|
|
4147
4151
|
return entries;
|
|
4148
4152
|
}
|
|
4149
4153
|
function collectEnvInfo(cwd, config) {
|
|
4154
|
+
const safeCwd = typeof cwd === "string" && cwd ? cwd : process.cwd();
|
|
4150
4155
|
const info = {
|
|
4151
4156
|
platform: process.platform,
|
|
4152
4157
|
nodeVersion: process.version,
|
|
4153
|
-
cwd
|
|
4158
|
+
cwd: safeCwd
|
|
4154
4159
|
};
|
|
4155
4160
|
if (config?.include_git !== false) {
|
|
4156
|
-
info.git = getGitInfo(
|
|
4161
|
+
info.git = getGitInfo(safeCwd);
|
|
4157
4162
|
}
|
|
4158
4163
|
if (config?.include_package !== false) {
|
|
4159
|
-
info.package = getPackageInfo(
|
|
4164
|
+
info.package = getPackageInfo(safeCwd);
|
|
4160
4165
|
}
|
|
4161
4166
|
if (config?.include_structure !== false) {
|
|
4162
|
-
info.structure = getTopLevelStructure(
|
|
4167
|
+
info.structure = getTopLevelStructure(safeCwd, config?.max_depth ?? 2);
|
|
4163
4168
|
}
|
|
4164
4169
|
return info;
|
|
4165
4170
|
}
|
|
@@ -4263,7 +4268,8 @@ function shouldFormat(filePath, extensions) {
|
|
|
4263
4268
|
return allowedExts.includes(ext);
|
|
4264
4269
|
}
|
|
4265
4270
|
function runFormatter(filePath, projectDir, formatterOverride) {
|
|
4266
|
-
const
|
|
4271
|
+
const safeDir = typeof projectDir === "string" && projectDir ? projectDir : process.cwd();
|
|
4272
|
+
const formatter = formatterOverride ? FORMATTERS.find((f) => f.name === formatterOverride) : detectFormatter(safeDir);
|
|
4267
4273
|
if (!formatter) {
|
|
4268
4274
|
return {
|
|
4269
4275
|
formatted: false,
|
|
@@ -4275,7 +4281,7 @@ function runFormatter(filePath, projectDir, formatterOverride) {
|
|
|
4275
4281
|
try {
|
|
4276
4282
|
const cmd = formatter.command(filePath);
|
|
4277
4283
|
execSync2(cmd, {
|
|
4278
|
-
cwd:
|
|
4284
|
+
cwd: safeDir,
|
|
4279
4285
|
timeout: 1e4,
|
|
4280
4286
|
stdio: ["pipe", "pipe", "pipe"]
|
|
4281
4287
|
});
|
|
@@ -4322,14 +4328,15 @@ function findTsConfig(projectDir, override) {
|
|
|
4322
4328
|
return;
|
|
4323
4329
|
}
|
|
4324
4330
|
function runTypeCheck(filePath, projectDir, config) {
|
|
4325
|
-
const
|
|
4331
|
+
const safeDir = typeof projectDir === "string" && projectDir ? projectDir : process.cwd();
|
|
4332
|
+
const tsConfig = findTsConfig(safeDir, config?.tsconfig);
|
|
4326
4333
|
if (!tsConfig) {
|
|
4327
4334
|
return { clean: true, errors: [], checkedFile: filePath };
|
|
4328
4335
|
}
|
|
4329
4336
|
try {
|
|
4330
4337
|
const tscCmd = `npx tsc --noEmit --pretty false -p "${tsConfig}"`;
|
|
4331
4338
|
execSync3(tscCmd, {
|
|
4332
|
-
cwd:
|
|
4339
|
+
cwd: safeDir,
|
|
4333
4340
|
timeout: 30000,
|
|
4334
4341
|
stdio: ["pipe", "pipe", "pipe"],
|
|
4335
4342
|
encoding: "utf-8"
|
|
@@ -4564,6 +4571,9 @@ import * as fs7 from "fs";
|
|
|
4564
4571
|
import * as path7 from "path";
|
|
4565
4572
|
import { execSync as execSync5 } from "child_process";
|
|
4566
4573
|
function readBeadsState(projectDir) {
|
|
4574
|
+
if (typeof projectDir !== "string" || !projectDir) {
|
|
4575
|
+
return;
|
|
4576
|
+
}
|
|
4567
4577
|
const beadsDir = path7.join(projectDir, ".beads");
|
|
4568
4578
|
if (!fs7.existsSync(beadsDir))
|
|
4569
4579
|
return;
|
|
@@ -4634,6 +4644,9 @@ function readBeadsState(projectDir) {
|
|
|
4634
4644
|
return;
|
|
4635
4645
|
}
|
|
4636
4646
|
function readMemoryRefs(projectDir, limit = 10) {
|
|
4647
|
+
if (typeof projectDir !== "string" || !projectDir) {
|
|
4648
|
+
return [];
|
|
4649
|
+
}
|
|
4637
4650
|
const memoryDir = path7.join(projectDir, ".opencode", "memory");
|
|
4638
4651
|
if (!fs7.existsSync(memoryDir))
|
|
4639
4652
|
return [];
|
|
@@ -4735,6 +4748,9 @@ Recent Memory References:`);
|
|
|
4735
4748
|
}
|
|
4736
4749
|
function collectCompactionPayload(projectDir, config) {
|
|
4737
4750
|
const payload = {};
|
|
4751
|
+
if (typeof projectDir !== "string" || !projectDir) {
|
|
4752
|
+
return payload;
|
|
4753
|
+
}
|
|
4738
4754
|
if (config?.include_beads_state !== false) {
|
|
4739
4755
|
payload.beads = readBeadsState(projectDir);
|
|
4740
4756
|
}
|
|
@@ -5588,7 +5604,7 @@ var CliKitPlugin = async (ctx) => {
|
|
|
5588
5604
|
const todoConfig = pluginConfig.hooks?.todo_enforcer;
|
|
5589
5605
|
if (todoConfig?.enabled !== false) {
|
|
5590
5606
|
const todos = props?.todos;
|
|
5591
|
-
if (todos && todos.length > 0) {
|
|
5607
|
+
if (Array.isArray(todos) && todos.length > 0) {
|
|
5592
5608
|
const result = checkTodoCompletion(todos);
|
|
5593
5609
|
if (!result.complete && todoConfig?.warn_on_incomplete !== false) {
|
|
5594
5610
|
console.warn(formatIncompleteWarning(result, sessionID));
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
date: 2026-02-15
|
|
3
|
+
phase: implementing
|
|
4
|
+
branch: main
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Handoff: CliKit Runtime Bug Fixes
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Status Summary
|
|
12
|
+
|
|
13
|
+
CliKit plugin v0.2.3 published with installer merge fix and type guards in hooks. **NEW ISSUES IDENTIFIED**:
|
|
14
|
+
1. Backup creation is now unnecessary since merge works correctly - should be removed
|
|
15
|
+
2. Runtime error `todos.filter is not a function` when OpenCode starts
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Task Status
|
|
20
|
+
|
|
21
|
+
### ✅ Completed
|
|
22
|
+
- [x] Fix installer to MERGE with existing opencode.json (v0.2.3)
|
|
23
|
+
- [x] Add defensive type checks to hooks (truncator, security-check, compaction)
|
|
24
|
+
- [x] Publish v0.2.1, v0.2.2, v0.2.3 to npm
|
|
25
|
+
|
|
26
|
+
### 🔄 In Progress
|
|
27
|
+
- [ ] Remove backup creation from cli.ts
|
|
28
|
+
- [ ] Fix `todos.filter is not a function` runtime error
|
|
29
|
+
|
|
30
|
+
### 📋 Not Started
|
|
31
|
+
- [ ] Publish v0.2.4
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Files Modified
|
|
36
|
+
|
|
37
|
+
| File | Status | Notes |
|
|
38
|
+
|------|--------|-------|
|
|
39
|
+
| `.opencode/src/cli.ts` | Needs Fix | Remove backup logic |
|
|
40
|
+
| `.opencode/src/index.ts` | Needs Fix | Add Array.isArray check |
|
|
41
|
+
| `.opencode/src/hooks/todo-enforcer.ts` | Needs Fix | Add array guard |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Git State
|
|
46
|
+
|
|
47
|
+
- **Branch:** `main`
|
|
48
|
+
- **Last commit:** `31b200c` - Update README with simplified installation
|
|
49
|
+
- **Uncommitted changes:** Yes (8 modified files)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Next Steps
|
|
54
|
+
|
|
55
|
+
1. [ ] Remove backup logic from cli.ts (delete `backupConfig`, `cleanupOldBackups` functions)
|
|
56
|
+
2. [ ] Fix `todos.filter` error in `index.ts:172` and `todo-enforcer.ts:20`
|
|
57
|
+
3. [ ] Run typecheck
|
|
58
|
+
4. [ ] Publish v0.2.4
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Root Cause: `todos.filter` Bug
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
// Current (broken) - index.ts:166-172
|
|
66
|
+
const todos = props?.todos as Array<{...}> | undefined;
|
|
67
|
+
if (todos && todos.length > 0) { // Objects with .length pass this!
|
|
68
|
+
checkTodoCompletion(todos); // But .filter fails
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Fix
|
|
72
|
+
if (Array.isArray(todos) && todos.length > 0) {
|
|
73
|
+
checkTodoCompletion(todos);
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Key files:**
|
|
78
|
+
- `.opencode/src/cli.ts:78-107` — Backup functions to delete
|
|
79
|
+
- `.opencode/src/index.ts:165-180` — Todo handling to fix
|
|
80
|
+
- `.opencode/src/hooks/todo-enforcer.ts:20` — Add array guard
|