kiokuko 1.0.0 → 1.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.
Files changed (54) hide show
  1. package/README.ja.md +28 -7
  2. package/README.ko.md +28 -7
  3. package/README.md +28 -7
  4. package/README.zh-CN.md +28 -7
  5. package/dist/cli.d.ts +3 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +6 -43
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/embeddings.d.ts.map +1 -1
  10. package/dist/commands/embeddings.js +60 -22
  11. package/dist/commands/embeddings.js.map +1 -1
  12. package/dist/commands/setup.d.ts +2 -1
  13. package/dist/commands/setup.d.ts.map +1 -1
  14. package/dist/commands/setup.js +23 -2
  15. package/dist/commands/setup.js.map +1 -1
  16. package/dist/commands/uninstall.d.ts +29 -0
  17. package/dist/commands/uninstall.d.ts.map +1 -0
  18. package/dist/commands/uninstall.js +330 -0
  19. package/dist/commands/uninstall.js.map +1 -0
  20. package/dist/config/paths.d.ts +1 -0
  21. package/dist/config/paths.d.ts.map +1 -1
  22. package/dist/config/paths.js +1 -1
  23. package/dist/config/paths.js.map +1 -1
  24. package/dist/embedding/setup-service.d.ts +2 -0
  25. package/dist/embedding/setup-service.d.ts.map +1 -1
  26. package/dist/embedding/setup-service.js +32 -9
  27. package/dist/embedding/setup-service.js.map +1 -1
  28. package/dist/setup/managed-text.d.ts +2 -0
  29. package/dist/setup/managed-text.d.ts.map +1 -1
  30. package/dist/setup/managed-text.js +11 -0
  31. package/dist/setup/managed-text.js.map +1 -1
  32. package/dist/setup/render.d.ts +2 -0
  33. package/dist/setup/render.d.ts.map +1 -1
  34. package/dist/setup/render.js +17 -1
  35. package/dist/setup/render.js.map +1 -1
  36. package/dist/terminal/checkbox.d.ts +17 -0
  37. package/dist/terminal/checkbox.d.ts.map +1 -0
  38. package/dist/terminal/checkbox.js +117 -0
  39. package/dist/terminal/checkbox.js.map +1 -0
  40. package/dist/uninstall/files.d.ts +34 -0
  41. package/dist/uninstall/files.d.ts.map +1 -0
  42. package/dist/uninstall/files.js +123 -0
  43. package/dist/uninstall/files.js.map +1 -0
  44. package/dist/uninstall/render.d.ts +9 -0
  45. package/dist/uninstall/render.d.ts.map +1 -0
  46. package/dist/uninstall/render.js +132 -0
  47. package/dist/uninstall/render.js.map +1 -0
  48. package/docs/breaking-changes-1.0.md +13 -0
  49. package/docs/cli-contract.md +95 -13
  50. package/docs/getting-started.ja.md +18 -5
  51. package/docs/getting-started.md +20 -6
  52. package/docs/semantic-retrieval.ja.md +5 -3
  53. package/docs/semantic-retrieval.md +5 -4
  54. package/package.json +1 -1
@@ -49,4 +49,15 @@ export function upsertDelimitedBlock(existing, block, beginMarker, endMarker, la
49
49
  action: 'updated',
50
50
  };
51
51
  }
52
+ /** Remove a validated managed region while preserving text outside its markers. */
53
+ export function removeDelimitedBlock(existing, beginMarker, endMarker, label) {
54
+ // Share setup's marker validation, including duplicate and reversed markers.
55
+ upsertDelimitedBlock(existing, '', beginMarker, endMarker, label);
56
+ const begin = existing.indexOf(beginMarker);
57
+ if (begin < 0)
58
+ return existing;
59
+ const end = existing.indexOf(endMarker) + endMarker.length;
60
+ const content = existing.slice(0, begin) + existing.slice(end);
61
+ return content.trim().length === 0 ? undefined : content;
62
+ }
52
63
  //# sourceMappingURL=managed-text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"managed-text.js","sourceRoot":"","sources":["../../src/setup/managed-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-text.js","sourceRoot":"","sources":["../../src/setup/managed-text.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export declare const GLOBAL_INSTRUCTIONS_END = "<!-- END KIOKUKO GLOBAL MEMORY -
5
5
  export declare const CODEX_MCP_BEGIN = "# BEGIN KIOKUKO MCP";
6
6
  export declare const CODEX_MCP_END = "# END KIOKUKO MCP";
7
7
  export declare function renderGlobalInstructions(existing?: string): DelimitedBlockResult;
8
+ /** Remove only the marked MCP table, including blocks from older setup versions. */
9
+ export declare function removeCodexMcpConfig(existing: string): string | undefined;
8
10
  export declare function renderCodexMcpConfig(existing?: string, command?: string, skillDiscoveryMode?: SkillDiscoveryMode, options?: {
9
11
  replaceConflictingIdentity?: boolean;
10
12
  }): DelimitedBlockResult;
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/setup/render.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIpF,eAAO,MAAM,yBAAyB,yCAAyC,CAAC;AAChF,eAAO,MAAM,uBAAuB,uCAAuC,CAAC;AAC5E,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,eAAO,MAAM,aAAa,sBAAsB,CAAC;AAEjD,wBAAgB,wBAAwB,CAAC,QAAQ,SAAK,GAAG,oBAAoB,CAgC5E;AAyPD,wBAAgB,oBAAoB,CAClC,QAAQ,SAAK,EACb,OAAO,SAAY,EACnB,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,OAAO,GAAE;IAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;CAAO,GACrD,oBAAoB,CAmCtB"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/setup/render.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAA8C,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI1G,eAAO,MAAM,yBAAyB,yCAAyC,CAAC;AAChF,eAAO,MAAM,uBAAuB,uCAAuC,CAAC;AAC5E,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,eAAO,MAAM,aAAa,sBAAsB,CAAC;AAEjD,wBAAgB,wBAAwB,CAAC,QAAQ,SAAK,GAAG,oBAAoB,CAgC5E;AAyPD,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAazE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,SAAK,EACb,OAAO,SAAY,EACnB,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,OAAO,GAAE;IAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;CAAO,GACrD,oBAAoB,CAmCtB"}
@@ -2,7 +2,7 @@ import { SOUL_ROUTING_ENTRY_CONTRACT } from '../akinator/instructions.js';
2
2
  import { KiokukoError } from '../errors.js';
3
3
  import { CHECKPOINT_CONTRACT_FRAGMENT, TASK_ANSWER_CONTRACT_FRAGMENT } from '../ledger/checkpoint-contract.js';
4
4
  import { isSkillDiscoveryMode, SKILL_DISCOVERY_ENV } from '../skills/config.js';
5
- import { upsertDelimitedBlock } from './managed-text.js';
5
+ import { removeDelimitedBlock, upsertDelimitedBlock } from './managed-text.js';
6
6
  import { setupMcpIdentityConflict, setupMcpIdentityConflictClient } from './mcp-conflict.js';
7
7
  import { parseStrictTomlDefinitions, parseStrictTomlDocument } from './strict-toml.js';
8
8
  export const GLOBAL_INSTRUCTIONS_BEGIN = '<!-- BEGIN KIOKUKO GLOBAL MEMORY -->';
@@ -282,6 +282,22 @@ function parseCanonicalCodexBlock(existing) {
282
282
  }
283
283
  return modeMatch[1];
284
284
  }
285
+ /** Remove only the marked MCP table, including blocks from older setup versions. */
286
+ export function removeCodexMcpConfig(existing) {
287
+ const remaining = removeDelimitedBlock(existing, CODEX_MCP_BEGIN, CODEX_MCP_END, 'Codex config.toml');
288
+ const target = ['mcp_servers', 'kiokuko'];
289
+ const begin = existing.indexOf(CODEX_MCP_BEGIN);
290
+ const end = existing.indexOf(CODEX_MCP_END);
291
+ const definitions = parseStrictTomlDefinitions(existing);
292
+ if (definitions.some((definition) => {
293
+ const inside = begin >= 0 && definition.offset >= begin && definition.offset < end;
294
+ return inside ? !startsWithPath(definition.path, target) : startsWithPath(definition.path, target);
295
+ }))
296
+ codexConflict();
297
+ // Removing a table must not change the interpretation of the remaining TOML.
298
+ parseStrictTomlDocument(remaining ?? '');
299
+ return remaining;
300
+ }
285
301
  export function renderCodexMcpConfig(existing = '', command = 'kiokuko', skillDiscoveryMode, options = {}) {
286
302
  if (typeof command !== 'string' || command.trim().length === 0 || command.includes('\0')) {
287
303
  throw new KiokukoError('VALIDATION_ERROR', 'Codex MCP command must be a non-empty executable path or name');
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/setup/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/setup/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type TerminalInput = NodeJS.ReadableStream & {
2
+ isRaw?: boolean;
3
+ readableFlowing?: boolean | null;
4
+ setRawMode(mode: boolean): unknown;
5
+ };
6
+ export declare function supportsKeyboardSelection(input: NodeJS.ReadableStream, output: NodeJS.WritableStream): input is TerminalInput;
7
+ export interface CheckboxChoice<T extends string> {
8
+ value: T;
9
+ label: string;
10
+ }
11
+ /** Resolve a keyboard selection before the caller starts any destructive work. */
12
+ export declare function promptCheckboxes<T extends string>(input: TerminalInput, output: NodeJS.WritableStream, choices: readonly CheckboxChoice<T>[], options: {
13
+ selected: readonly T[];
14
+ heading: string;
15
+ cancelMessage: string;
16
+ }): Promise<T[]>;
17
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/terminal/checkbox.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,GAAG;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACpC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,KAAK,IAAI,aAAa,CAI7H;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM;IAAI,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE7E,kFAAkF;AAClF,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EACrD,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,OAAO,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,EACrC,OAAO,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC1E,OAAO,CAAC,CAAC,EAAE,CAAC,CA4Fd"}
@@ -0,0 +1,117 @@
1
+ import { clearScreenDown, cursorTo, emitKeypressEvents, moveCursor } from 'node:readline';
2
+ import { KiokukoError } from '../errors.js';
3
+ export function supportsKeyboardSelection(input, output) {
4
+ return input.isTTY === true
5
+ && output.isTTY === true
6
+ && typeof input.setRawMode === 'function';
7
+ }
8
+ /** Resolve a keyboard selection before the caller starts any destructive work. */
9
+ export async function promptCheckboxes(input, output, choices, options) {
10
+ if (choices.length === 0)
11
+ return [];
12
+ const checked = new Set(options.selected);
13
+ const wasRaw = input.isRaw === true;
14
+ const wasFlowing = input.readableFlowing === true;
15
+ const terminal = output;
16
+ let focused = 0;
17
+ let renderedRows = 0;
18
+ let settled = false;
19
+ let onKeypress;
20
+ let onFailure;
21
+ let onCancel;
22
+ let onResize;
23
+ const render = () => {
24
+ if (renderedRows > 0)
25
+ moveCursor(output, 0, -renderedRows);
26
+ cursorTo(output, 0);
27
+ clearScreenDown(output);
28
+ const count = Math.min(choices.length, Math.max(1, (terminal.rows || 24) - 1));
29
+ const start = Math.max(0, focused - count + 1);
30
+ const rows = choices.slice(start, start + count).map((choice, offset) => {
31
+ const index = start + offset;
32
+ const row = `${index === focused ? '>' : ' '} ${index + 1}. [${checked.has(choice.value) ? 'x' : ' '}] ${choice.label}`;
33
+ return row.slice(0, Math.max(1, (terminal.columns || 80) - 1));
34
+ });
35
+ output.write(`${rows.join('\n')}\n`);
36
+ renderedRows = rows.length;
37
+ };
38
+ try {
39
+ return await new Promise((resolve, reject) => {
40
+ onFailure = (error) => {
41
+ if (settled)
42
+ return;
43
+ settled = true;
44
+ reject(error);
45
+ };
46
+ onCancel = () => onFailure(new KiokukoError('USAGE_ERROR', options.cancelMessage));
47
+ onResize = () => {
48
+ if (settled)
49
+ return;
50
+ try {
51
+ render();
52
+ }
53
+ catch (error) {
54
+ onFailure(error);
55
+ }
56
+ };
57
+ onKeypress = (_value, key) => {
58
+ if (settled)
59
+ return;
60
+ if (key.name === 'escape' || (key.ctrl && (key.name === 'c' || key.name === 'd'))) {
61
+ onCancel();
62
+ return;
63
+ }
64
+ if (key.name === 'return' || key.name === 'enter') {
65
+ settled = true;
66
+ resolve(choices.filter((choice) => checked.has(choice.value)).map((choice) => choice.value));
67
+ return;
68
+ }
69
+ if (key.ctrl || key.meta)
70
+ return;
71
+ if (key.name === 'up' || key.name === 'down') {
72
+ focused = (focused + (key.name === 'up' ? -1 : 1) + choices.length) % choices.length;
73
+ }
74
+ else {
75
+ const number = Number(key.sequence);
76
+ if (Number.isInteger(number) && number >= 1 && number <= choices.length) {
77
+ focused = number - 1;
78
+ }
79
+ else if (key.name !== 'space') {
80
+ return;
81
+ }
82
+ const client = choices[focused].value;
83
+ if (checked.has(client))
84
+ checked.delete(client);
85
+ else
86
+ checked.add(client);
87
+ }
88
+ onResize();
89
+ };
90
+ input.on('keypress', onKeypress);
91
+ input.once('end', onCancel);
92
+ input.once('close', onCancel);
93
+ input.once('error', onFailure);
94
+ output.once('error', onFailure);
95
+ output.on('resize', onResize);
96
+ emitKeypressEvents(input);
97
+ input.setRawMode(true);
98
+ output.write(`${options.heading}\n`);
99
+ output.write(`Up/Down: move | Space: toggle | 1-${choices.length}: toggle\n`);
100
+ output.write('Enter: confirm | Esc/Ctrl+C: cancel\n');
101
+ render();
102
+ input.resume();
103
+ });
104
+ }
105
+ finally {
106
+ input.removeListener('keypress', onKeypress);
107
+ input.removeListener('end', onCancel);
108
+ input.removeListener('close', onCancel);
109
+ input.removeListener('error', onFailure);
110
+ output.removeListener('error', onFailure);
111
+ output.removeListener('resize', onResize);
112
+ input.setRawMode(wasRaw);
113
+ if (!wasFlowing)
114
+ input.pause();
115
+ }
116
+ }
117
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/terminal/checkbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { BigIntStats } from 'node:fs';
2
+ import { type FileExpectation, type FileIdentity } from '../agent-file/atomic-write.js';
3
+ export interface UninstallFileResult {
4
+ path: string;
5
+ action: 'deleted' | 'updated' | 'preserved';
6
+ reason?: string;
7
+ }
8
+ export interface TextRemoval {
9
+ path: string;
10
+ content: string | undefined;
11
+ expectation: FileExpectation;
12
+ }
13
+ export declare function isMissing(error: unknown): boolean;
14
+ /** Reject linked ancestors as well as linked targets before traversing any directory. */
15
+ export declare function safeStat(target: string): Promise<BigIntStats | undefined>;
16
+ export declare function planTextRemoval(target: string, render: (source: string) => string | undefined): Promise<TextRemoval | undefined>;
17
+ export declare function applyTextRemoval(file: TextRemoval): Promise<void>;
18
+ export declare function assertTextRemovals(files: readonly TextRemoval[]): Promise<void>;
19
+ export interface DataFileRemoval {
20
+ path: string;
21
+ original: BigIntStats;
22
+ }
23
+ export interface EmptyDirectoryRemoval {
24
+ path: string;
25
+ identity: FileIdentity;
26
+ }
27
+ /** Inventory only an explicitly owned subtree; never walk home or a shared data root. */
28
+ export declare function inventoryOwnedTree(target: string, files: DataFileRemoval[], directories: EmptyDirectoryRemoval[], depth?: number): Promise<void>;
29
+ export declare function assertDataFiles(files: readonly DataFileRemoval[]): Promise<void>;
30
+ /** Validate a quarantined binary file before unlinking; never decode models or SQLite as text. */
31
+ export declare function removeDataFile(file: DataFileRemoval): Promise<void>;
32
+ /** Remove empty owned directories only. New or user-owned contents are left intact. */
33
+ export declare function removeEmptyDirectories(directories: readonly EmptyDirectoryRemoval[]): Promise<UninstallFileResult[]>;
34
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/uninstall/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,OAAO,EAGL,KAAK,eAAe,EAAE,KAAK,YAAY,EACxC,MAAM,+BAA+B,CAAC;AAGvC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,eAAe,CAAC;CAC9B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,yFAAyF;AACzF,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAY/E;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAC7C,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAgBlC;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;AAED,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE;AACxE,MAAM,WAAW,qBAAqB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE;AAE/E,yFAAyF;AACzF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EAAE,EACxB,WAAW,EAAE,qBAAqB,EAAE,EACpC,KAAK,SAAI,GACR,OAAO,CAAC,IAAI,CAAC,CAQf;AAQD,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAItF;AAED,kGAAkG;AAClG,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE;AAED,uFAAuF;AACvF,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmB1H"}
@@ -0,0 +1,123 @@
1
+ import { lstat, readdir, rename, rmdir, unlink } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { assertAtomicCleanupComplete, assertFileExpectation, atomicWriteTextIfUnchanged, readDirectoryIdentity, readRegularFile, unlinkRegularFileIfUnchanged, } from '../agent-file/atomic-write.js';
5
+ import { KiokukoError } from '../errors.js';
6
+ export function isMissing(error) {
7
+ return error instanceof Error && 'code' in error && error.code === 'ENOENT';
8
+ }
9
+ /** Reject linked ancestors as well as linked targets before traversing any directory. */
10
+ export async function safeStat(target) {
11
+ const absolute = path.resolve(target);
12
+ const root = path.parse(absolute).root;
13
+ let cursor = root;
14
+ let info;
15
+ for (const segment of absolute.slice(root.length).split(path.sep).filter(Boolean)) {
16
+ cursor = path.join(cursor, segment);
17
+ try {
18
+ info = await lstat(cursor, { bigint: true });
19
+ }
20
+ catch (error) {
21
+ if (isMissing(error))
22
+ return undefined;
23
+ throw error;
24
+ }
25
+ if (info.isSymbolicLink())
26
+ throw new KiokukoError('SECURITY_REJECTION', `Uninstall refuses a symbolic link: ${cursor}`);
27
+ }
28
+ return info;
29
+ }
30
+ export async function planTextRemoval(target, render) {
31
+ const absolute = path.resolve(target);
32
+ const filesystemRoot = path.parse(absolute).root;
33
+ const containmentRoot = path.join(filesystemRoot, absolute.slice(filesystemRoot.length).split(path.sep)[0]);
34
+ await safeStat(target);
35
+ const original = await readRegularFile(target, { containmentRoot });
36
+ if (original === undefined)
37
+ return undefined;
38
+ const content = render(original.content);
39
+ if (content === original.content)
40
+ return undefined;
41
+ const parent = await readDirectoryIdentity(path.dirname(target));
42
+ if (parent === undefined)
43
+ throw new KiokukoError('CONFLICT', `Uninstall directory disappeared: ${target}`);
44
+ return {
45
+ path: target,
46
+ content,
47
+ expectation: { expected: original, expectedParentDirectory: parent, containmentRoot },
48
+ };
49
+ }
50
+ export async function applyTextRemoval(file) {
51
+ const result = file.content === undefined
52
+ ? await unlinkRegularFileIfUnchanged(file.path, file.expectation)
53
+ : await atomicWriteTextIfUnchanged(file.path, file.content, file.expectation, file.expectation.expected.mode);
54
+ assertAtomicCleanupComplete(result);
55
+ }
56
+ export async function assertTextRemovals(files) {
57
+ for (const file of files)
58
+ await assertFileExpectation(file.path, file.expectation);
59
+ }
60
+ /** Inventory only an explicitly owned subtree; never walk home or a shared data root. */
61
+ export async function inventoryOwnedTree(target, files, directories, depth = 0) {
62
+ if (files.length + directories.length > 20_000 || depth > 32)
63
+ throw new KiokukoError('VALIDATION_ERROR', 'Uninstall file inventory limit exceeded');
64
+ const info = await safeStat(target);
65
+ if (info === undefined)
66
+ return;
67
+ if (info.isFile()) {
68
+ files.push({ path: target, original: info });
69
+ return;
70
+ }
71
+ if (!info.isDirectory())
72
+ throw new KiokukoError('SECURITY_REJECTION', `Unsupported uninstall target: ${target}`);
73
+ directories.push({ path: target, identity: { device: info.dev, inode: info.ino } });
74
+ for (const name of (await readdir(target)).sort())
75
+ await inventoryOwnedTree(path.join(target, name), files, directories, depth + 1);
76
+ }
77
+ function sameDataFile(actual, original, renamed = false) {
78
+ return actual !== undefined && actual.isFile() && actual.dev === original.dev && actual.ino === original.ino
79
+ && actual.size === original.size && actual.mtimeNs === original.mtimeNs
80
+ && (renamed || actual.ctimeNs === original.ctimeNs);
81
+ }
82
+ export async function assertDataFiles(files) {
83
+ for (const file of files) {
84
+ if (!sameDataFile(await safeStat(file.path), file.original))
85
+ throw new KiokukoError('CONFLICT', `Uninstall data changed after planning: ${file.path}`);
86
+ }
87
+ }
88
+ /** Validate a quarantined binary file before unlinking; never decode models or SQLite as text. */
89
+ export async function removeDataFile(file) {
90
+ await assertDataFiles([file]);
91
+ const quarantine = `${file.path}.kiokuko-uninstall-${randomUUID()}`;
92
+ await rename(file.path, quarantine);
93
+ if (!sameDataFile(await safeStat(quarantine), file.original, true)) {
94
+ throw new KiokukoError('CONFLICT', `Uninstall target changed; preserved for recovery at ${quarantine}`);
95
+ }
96
+ await unlink(quarantine);
97
+ }
98
+ /** Remove empty owned directories only. New or user-owned contents are left intact. */
99
+ export async function removeEmptyDirectories(directories) {
100
+ const results = [];
101
+ const unique = new Map(directories.map(directory => [directory.path, directory]));
102
+ for (const directory of [...unique.values()].sort((a, b) => b.path.length - a.path.length)) {
103
+ const actual = await safeStat(directory.path);
104
+ if (actual === undefined)
105
+ continue;
106
+ if (!actual.isDirectory() || actual.dev !== directory.identity.device || actual.ino !== directory.identity.inode) {
107
+ throw new KiokukoError('CONFLICT', `Uninstall directory changed: ${directory.path}`);
108
+ }
109
+ try {
110
+ await rmdir(directory.path);
111
+ results.push({ path: directory.path, action: 'deleted' });
112
+ }
113
+ catch (error) {
114
+ if (error instanceof Error && 'code' in error && (error.code === 'ENOTEMPTY' || error.code === 'EEXIST')) {
115
+ results.push({ path: directory.path, action: 'preserved', reason: 'contains other files' });
116
+ }
117
+ else
118
+ throw error;
119
+ }
120
+ }
121
+ return results;
122
+ }
123
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/uninstall/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Validate setup ownership before editing the one MCP entry in a shared JSON file. */
2
+ export declare function removeJsonMcpConfig(source: string, client: 'claude' | 'opencode'): string | undefined;
3
+ /** Remove the marked Hermes entry and preserve other YAML nodes and comments. */
4
+ export declare function removeHermesMcpConfig(source: string): string | undefined;
5
+ /** Remove the obsolete binding ignore entry; retain every other line verbatim. */
6
+ export declare function removeBindingIgnore(source: string): string | undefined;
7
+ /** Remove retired setup hook handlers without removing neighbouring handlers. */
8
+ export declare function removeLegacyHooks(source: string, client: 'codex' | 'claude'): string | undefined;
9
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/uninstall/render.ts"],"names":[],"mappings":"AA4BA,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CA2BrG;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBxE;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGtE;AAQD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CA0BhG"}
@@ -0,0 +1,132 @@
1
+ import { applyEdits, modify, parse } from 'jsonc-parser';
2
+ import { isMap, isNode, parseDocument } from 'yaml';
3
+ import { KiokukoError } from '../errors.js';
4
+ import { renderClaudeConfig } from '../setup/claude-config.js';
5
+ import { HERMES_MANAGED_MARKER } from '../setup/hermes-config.js';
6
+ import { setupMcpIdentityConflict } from '../setup/mcp-conflict.js';
7
+ import { renderOpenCodeConfig } from '../setup/opencode-config.js';
8
+ import { isSkillDiscoveryMode } from '../skills/config.js';
9
+ import { assertStrictJsonSyntax } from '../setup/strict-json.js';
10
+ function object(value) {
11
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
12
+ }
13
+ function jsonObject(source, comments) {
14
+ const options = { allowTrailingComma: comments, disallowComments: !comments };
15
+ assertStrictJsonSyntax(source, options, 'Invalid client configuration');
16
+ const value = parse(source, [], options);
17
+ if (!object(value))
18
+ throw new KiokukoError('VALIDATION_ERROR', 'Client configuration must be an object');
19
+ return value;
20
+ }
21
+ function removeJsonPath(source, location) {
22
+ return applyEdits(source, modify(source, location, undefined, {
23
+ formattingOptions: { insertSpaces: true, tabSize: 2, eol: source.includes('\r\n') ? '\r\n' : '\n' },
24
+ }));
25
+ }
26
+ /** Validate setup ownership before editing the one MCP entry in a shared JSON file. */
27
+ export function removeJsonMcpConfig(source, client) {
28
+ const root = jsonObject(source, client === 'opencode');
29
+ const key = client === 'claude' ? 'mcpServers' : 'mcp';
30
+ const servers = root[key];
31
+ if (servers === undefined)
32
+ return source;
33
+ if (!object(servers))
34
+ throw new KiokukoError('VALIDATION_ERROR', 'Invalid MCP server map');
35
+ if (!Object.hasOwn(servers, 'kiokuko'))
36
+ return source;
37
+ const server = servers.kiokuko;
38
+ const command = object(server)
39
+ ? client === 'claude' ? server.command : Array.isArray(server.command) ? server.command[0] : undefined
40
+ : undefined;
41
+ const invokesMcp = object(server) && (client === 'claude'
42
+ ? server.type === 'stdio' && Array.isArray(server.args) && server.args.length === 1 && server.args[0] === 'mcp'
43
+ : server.type === 'local' && Array.isArray(server.command) && server.command.length === 2 && server.command[1] === 'mcp');
44
+ if (!invokesMcp || typeof command !== 'string' || command.trim().length === 0 || command.includes('\0')) {
45
+ setupMcpIdentityConflict(client, `${client} Kiokuko MCP entry cannot be identified as a setup-installed command`);
46
+ }
47
+ // Keep recognizing setup's entry after users disable it or add environment overrides.
48
+ const content = removeJsonPath(source, Object.keys(servers).length === 1 ? [key] : [key, 'kiokuko']);
49
+ // Delete a file only if it is byte-identical to setup's standalone output.
50
+ const environment = client === 'claude' ? server.env : server.environment;
51
+ const candidateMode = object(environment) ? environment.KIOKUKO_SKILL_DISCOVERY : undefined;
52
+ const mode = isSkillDiscoveryMode(candidateMode) ? candidateMode : undefined;
53
+ const fresh = client === 'claude'
54
+ ? renderClaudeConfig(undefined, command, mode).content
55
+ : renderOpenCodeConfig(undefined, command, mode).content;
56
+ return source === fresh ? undefined : content;
57
+ }
58
+ /** Remove the marked Hermes entry and preserve other YAML nodes and comments. */
59
+ export function removeHermesMcpConfig(source) {
60
+ const document = parseDocument(source);
61
+ if (document.errors.length > 0 || !isMap(document.contents)) {
62
+ if (source.trim().length === 0)
63
+ return source;
64
+ throw new KiokukoError('VALIDATION_ERROR', 'Hermes config is not a valid YAML mapping');
65
+ }
66
+ const servers = document.contents.get('mcp_servers', true);
67
+ if (servers === undefined)
68
+ return source;
69
+ if (!isMap(servers))
70
+ throw new KiokukoError('VALIDATION_ERROR', 'Invalid Hermes MCP server map');
71
+ const server = servers.get('kiokuko', true);
72
+ if (server === undefined)
73
+ return source;
74
+ if (!isNode(server) || server.commentBefore?.trim() !== HERMES_MANAGED_MARKER) {
75
+ setupMcpIdentityConflict('hermes', 'Hermes Kiokuko entry is not marked as managed');
76
+ }
77
+ servers.delete('kiokuko');
78
+ if (servers.items.length === 0)
79
+ document.contents.delete('mcp_servers');
80
+ const content = document.toString({ lineWidth: 0 }).replaceAll('\n', source.includes('\r\n') ? '\r\n' : '\n');
81
+ return document.contents.items.length === 0 && !document.commentBefore && !document.comment ? undefined : content;
82
+ }
83
+ /** Remove the obsolete binding ignore entry; retain every other line verbatim. */
84
+ export function removeBindingIgnore(source) {
85
+ const content = source.replace(/^\/?\.kiokuko\.json(?:\r?\n|$)/gmu, '');
86
+ return content.length === 0 ? undefined : content;
87
+ }
88
+ function isKiokukoHook(value, client) {
89
+ if (value.type === 'mcp_tool' && value.server === 'kiokuko' && value.tool === 'claude_prompt_context')
90
+ return true;
91
+ return value.type === 'command' && typeof value.command === 'string'
92
+ && new RegExp(`^.+ enno hook --client ${client} --input-json -$`, 'u').test(value.command);
93
+ }
94
+ /** Remove retired setup hook handlers without removing neighbouring handlers. */
95
+ export function removeLegacyHooks(source, client) {
96
+ const root = jsonObject(source, false);
97
+ if (root.hooks === undefined)
98
+ return source;
99
+ if (!object(root.hooks))
100
+ throw new KiokukoError('VALIDATION_ERROR', 'Invalid client hook map');
101
+ let content = source;
102
+ for (const event of ['Stop', 'UserPromptSubmit']) {
103
+ const groups = root.hooks[event];
104
+ if (groups === undefined)
105
+ continue;
106
+ if (!Array.isArray(groups))
107
+ throw new KiokukoError('VALIDATION_ERROR', 'Invalid client hook groups');
108
+ for (let groupIndex = groups.length - 1; groupIndex >= 0; groupIndex--) {
109
+ const group = groups[groupIndex];
110
+ if (!object(group) || !Array.isArray(group.hooks))
111
+ throw new KiokukoError('VALIDATION_ERROR', 'Invalid client hook group');
112
+ const matching = group.hooks.map((handler, index) => object(handler) && isKiokukoHook(handler, client) ? index : -1).filter((index) => index >= 0);
113
+ if (matching.length === 0)
114
+ continue;
115
+ if (matching.length === group.hooks.length && Object.keys(group).every(key => key === 'hooks' || key === 'matcher')) {
116
+ content = removeJsonPath(content, ['hooks', event, groupIndex]);
117
+ }
118
+ else {
119
+ for (const index of matching.reverse())
120
+ content = removeJsonPath(content, ['hooks', event, groupIndex, 'hooks', index]);
121
+ }
122
+ }
123
+ const currentHooks = jsonObject(content, false).hooks;
124
+ if (Array.isArray(currentHooks[event]) && currentHooks[event].length === 0)
125
+ content = removeJsonPath(content, ['hooks', event]);
126
+ }
127
+ const remaining = jsonObject(content, false);
128
+ if (object(remaining.hooks) && Object.keys(remaining.hooks).length === 0)
129
+ content = removeJsonPath(content, ['hooks']);
130
+ return Object.keys(jsonObject(content, false)).length === 0 && content !== source ? undefined : content;
131
+ }
132
+ //# sourceMappingURL=render.js.map