memhook 0.2.2 → 0.4.0

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 (59) hide show
  1. package/CHANGELOG.md +30 -72
  2. package/README.md +158 -69
  3. package/dist/bin/memhook.d.ts +11 -6
  4. package/dist/bin/memhook.d.ts.map +1 -1
  5. package/dist/bin/memhook.js +208 -21
  6. package/dist/bin/memhook.js.map +1 -1
  7. package/dist/src/ansi.d.ts +71 -0
  8. package/dist/src/ansi.d.ts.map +1 -0
  9. package/dist/src/ansi.js +100 -0
  10. package/dist/src/ansi.js.map +1 -0
  11. package/dist/src/backup.d.ts +10 -0
  12. package/dist/src/backup.d.ts.map +1 -0
  13. package/dist/src/backup.js +17 -0
  14. package/dist/src/backup.js.map +1 -0
  15. package/dist/src/cache.d.ts.map +1 -1
  16. package/dist/src/cache.js +14 -7
  17. package/dist/src/cache.js.map +1 -1
  18. package/dist/src/config.d.ts +11 -0
  19. package/dist/src/config.d.ts.map +1 -1
  20. package/dist/src/config.js +6 -0
  21. package/dist/src/config.js.map +1 -1
  22. package/dist/src/configFile.d.ts +6 -0
  23. package/dist/src/configFile.d.ts.map +1 -1
  24. package/dist/src/configFile.js.map +1 -1
  25. package/dist/src/index.d.ts +6 -0
  26. package/dist/src/index.d.ts.map +1 -1
  27. package/dist/src/index.js +6 -0
  28. package/dist/src/index.js.map +1 -1
  29. package/dist/src/init.d.ts +48 -0
  30. package/dist/src/init.d.ts.map +1 -0
  31. package/dist/src/init.js +327 -0
  32. package/dist/src/init.js.map +1 -0
  33. package/dist/src/install.d.ts +87 -0
  34. package/dist/src/install.d.ts.map +1 -0
  35. package/dist/src/install.js +124 -0
  36. package/dist/src/install.js.map +1 -0
  37. package/dist/src/router.d.ts +22 -0
  38. package/dist/src/router.d.ts.map +1 -1
  39. package/dist/src/router.js +113 -8
  40. package/dist/src/router.js.map +1 -1
  41. package/dist/src/skills.d.ts +68 -0
  42. package/dist/src/skills.d.ts.map +1 -0
  43. package/dist/src/skills.js +73 -0
  44. package/dist/src/skills.js.map +1 -0
  45. package/dist/src/skillsCmd.d.ts +51 -0
  46. package/dist/src/skillsCmd.d.ts.map +1 -0
  47. package/dist/src/skillsCmd.js +273 -0
  48. package/dist/src/skillsCmd.js.map +1 -0
  49. package/dist/src/tail.d.ts +76 -0
  50. package/dist/src/tail.d.ts.map +1 -0
  51. package/dist/src/tail.js +280 -0
  52. package/dist/src/tail.js.map +1 -0
  53. package/dist/src/version.d.ts +1 -1
  54. package/dist/src/version.js +1 -1
  55. package/package.json +9 -2
  56. package/skills/curate/SKILL.md +181 -0
  57. package/skills/curate/reference.md +105 -0
  58. package/skills/relay/SKILL.md +162 -0
  59. package/skills/wrap/SKILL.md +173 -0
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,12 @@ export interface RawConfigFile {
48
48
  logging?: {
49
49
  jsonlPath?: string;
50
50
  };
51
+ curateNudge?: {
52
+ enabled?: boolean;
53
+ thresholdTokens?: number;
54
+ thresholdFiles?: number;
55
+ cooldownDays?: number;
56
+ };
51
57
  }
52
58
  export declare function resolveConfigPath(env: NodeJS.ProcessEnv): string;
53
59
  export declare function loadYamlConfig(env: NodeJS.ProcessEnv): RawConfigFile | null;
@@ -1 +1 @@
1
- {"version":3,"file":"configFile.d.ts","sourceRoot":"","sources":["../../src/configFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAEhE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,GAAG,IAAI,CA2B3E"}
1
+ {"version":3,"file":"configFile.d.ts","sourceRoot":"","sources":["../../src/configFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAEhE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,GAAG,IAAI,CA2B3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../src/configFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAwC7B,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,OAAO,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAsB;IACnD,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,IAAI,IAAI,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,qBAAqB;IACrB,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,OAAO,MAAuB,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../src/configFile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AA8C7B,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,OAAO,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAsB;IACnD,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,IAAI,IAAI,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,qBAAqB;IACrB,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,OAAO,MAAuB,CAAC;AACjC,CAAC"}
@@ -13,6 +13,12 @@ export { LocalCache, type CacheKeyInput } from "./cache.js";
13
13
  export { PreFilter } from "./preFilter.js";
14
14
  export { MEMHOOK_VERSION } from "./version.js";
15
15
  export { createProvider } from "./providers/factory.js";
16
+ export { addHooks, removeHooks, memhookSubcommand, MEMHOOK_HOOKS, type Settings, type HookEvent, type AddResult, type RemoveResult, } from "./install.js";
17
+ export { runInit, runUninstall, buildConfigObject, backupPath, type InitOptions, type UninstallOptions, } from "./init.js";
18
+ export { COMPANION_SKILLS, SKILL_FILES, isCompanionSkill, diffSkill, planInstall, planUninstall, type CompanionSkill, type SkillSources, type InstalledFiles, type SkillStatus, type InstallAction, type SkillInstallPlan, type SkillUninstallPlan, } from "./skills.js";
19
+ export { runSkills, installCompanionSkills, bundledSkillsDir, type RunSkillsOptions, type SkillsSubcommand, type InstallSkillsOptions, type SkillInstallResult, } from "./skillsCmd.js";
20
+ export { runTail, parseLogLine, formatRow, formatHeader, formatFooter, summarize, emptyStats, accumulate, tailLines, type LogRow, type Stats, type TailOptions, } from "./tail.js";
21
+ export { makeAnsi, colorEnabled, visibleWidth, type Ansi, type AnsiOptions } from "./ansi.js";
16
22
  export { AnthropicProvider, type AnthropicProviderOptions } from "./providers/anthropic.js";
17
23
  export { OpenAIProvider } from "./providers/openai.js";
18
24
  export { OllamaProvider } from "./providers/ollama.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,sBAAsB,CAAC"}
package/dist/src/index.js CHANGED
@@ -13,6 +13,12 @@ export { LocalCache } from "./cache.js";
13
13
  export { PreFilter } from "./preFilter.js";
14
14
  export { MEMHOOK_VERSION } from "./version.js";
15
15
  export { createProvider } from "./providers/factory.js";
16
+ export { addHooks, removeHooks, memhookSubcommand, MEMHOOK_HOOKS, } from "./install.js";
17
+ export { runInit, runUninstall, buildConfigObject, backupPath, } from "./init.js";
18
+ export { COMPANION_SKILLS, SKILL_FILES, isCompanionSkill, diffSkill, planInstall, planUninstall, } from "./skills.js";
19
+ export { runSkills, installCompanionSkills, bundledSkillsDir, } from "./skillsCmd.js";
20
+ export { runTail, parseLogLine, formatRow, formatHeader, formatFooter, summarize, emptyStats, accumulate, tailLines, } from "./tail.js";
21
+ export { makeAnsi, colorEnabled, visibleWidth } from "./ansi.js";
16
22
  export { AnthropicProvider } from "./providers/anthropic.js";
17
23
  export { OpenAIProvider } from "./providers/openai.js";
18
24
  export { OllamaProvider } from "./providers/ollama.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,KAAK,EAAmC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,YAAY,EAA4B,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAiC,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,KAAK,EAAmC,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,YAAY,EAA4B,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,aAAa,GAKd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,UAAU,GAGX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,aAAa,GAQd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,gBAAgB,GAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,GAIV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAA+B,MAAM,WAAW,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAiC,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * `memhook init` / `memhook uninstall` orchestration.
3
+ *
4
+ * These are INTERACTIVE, user-invoked commands — NOT the hook entrypoint. They
5
+ * are allowed to prompt, own the TTY, print to stdout, and exit non-zero on
6
+ * user error (docs/SPECIFICATION.md §9: "memhook run is the only command that
7
+ * must obey the fail-soft contract"). The one hard rule: they must never
8
+ * corrupt `~/.claude/settings.json`. So:
9
+ * - the merge itself is pure + unit-tested (src/install.ts),
10
+ * - an unparseable settings file aborts rather than being overwritten,
11
+ * - every write is preceded by a timestamped backup,
12
+ * - `--dry-run` prints the plan and writes nothing.
13
+ *
14
+ * All file I/O lives here; `install.ts` stays pure.
15
+ */
16
+ import { type ProviderType } from "./config.js";
17
+ export interface InitOptions {
18
+ yes: boolean;
19
+ dryRun: boolean;
20
+ provider?: ProviderType | undefined;
21
+ apiKeyEnv?: string | undefined;
22
+ model?: string | undefined;
23
+ bin: string;
24
+ settingsPath?: string | undefined;
25
+ noCatalog?: boolean | undefined;
26
+ /** Tri-state: undefined = ask (interactive) or default-install; true/false force it. */
27
+ skills?: boolean | undefined;
28
+ }
29
+ export interface UninstallOptions {
30
+ yes: boolean;
31
+ dryRun: boolean;
32
+ settingsPath?: string | undefined;
33
+ purge?: boolean | undefined;
34
+ }
35
+ export { backupPath } from "./backup.js";
36
+ /**
37
+ * Build the minimal YAML config object for the chosen provider — only keys that
38
+ * differ from the built-in defaults are emitted, so the file stays small and
39
+ * the anthropic-default install writes no config at all.
40
+ */
41
+ export declare function buildConfigObject(opts: {
42
+ provider: ProviderType;
43
+ model?: string | undefined;
44
+ apiKeyEnv?: string | undefined;
45
+ }): Record<string, unknown> | null;
46
+ export declare function runInit(opts: InitOptions, env?: NodeJS.ProcessEnv): Promise<number>;
47
+ export declare function runUninstall(opts: UninstallOptions, env?: NodeJS.ProcessEnv): Promise<number>;
48
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAY5D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,wFAAwF;IACxF,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAID,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQjC;AAmDD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,MAAM,CAAC,CAyLjB;AAID,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
@@ -0,0 +1,327 @@
1
+ /**
2
+ * `memhook init` / `memhook uninstall` orchestration.
3
+ *
4
+ * These are INTERACTIVE, user-invoked commands — NOT the hook entrypoint. They
5
+ * are allowed to prompt, own the TTY, print to stdout, and exit non-zero on
6
+ * user error (docs/SPECIFICATION.md §9: "memhook run is the only command that
7
+ * must obey the fail-soft contract"). The one hard rule: they must never
8
+ * corrupt `~/.claude/settings.json`. So:
9
+ * - the merge itself is pure + unit-tested (src/install.ts),
10
+ * - an unparseable settings file aborts rather than being overwritten,
11
+ * - every write is preceded by a timestamped backup,
12
+ * - `--dry-run` prints the plan and writes nothing.
13
+ *
14
+ * All file I/O lives here; `install.ts` stays pure.
15
+ */
16
+ import { copyFileSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
17
+ import { homedir } from "node:os";
18
+ import { dirname, join } from "node:path";
19
+ import { createInterface } from "node:readline/promises";
20
+ import { stringify as yamlStringify } from "yaml";
21
+ import { addHooks, removeHooks } from "./install.js";
22
+ import { buildCatalog } from "./catalog.js";
23
+ import { loadConfig } from "./config.js";
24
+ import { makeAnsi } from "./ansi.js";
25
+ import { backupPath, stampNow } from "./backup.js";
26
+ import { installCompanionSkills } from "./skillsCmd.js";
27
+ const PROVIDERS = ["anthropic", "openai", "ollama"];
28
+ const DEFAULT_KEY_ENV = {
29
+ anthropic: "ANTHROPIC_API_KEY",
30
+ openai: "OPENAI_API_KEY",
31
+ ollama: undefined,
32
+ };
33
+ // `backupPath` / `stampNow` live in ./backup.js (shared with skillsCmd.ts);
34
+ // re-exported here so existing importers (index.ts, tests) keep working.
35
+ export { backupPath } from "./backup.js";
36
+ function defaultSettingsPath() {
37
+ return join(homedir(), ".claude", "settings.json");
38
+ }
39
+ function configYamlPath() {
40
+ return join(homedir(), ".config", "memhook", "config.yaml");
41
+ }
42
+ /**
43
+ * Build the minimal YAML config object for the chosen provider — only keys that
44
+ * differ from the built-in defaults are emitted, so the file stays small and
45
+ * the anthropic-default install writes no config at all.
46
+ */
47
+ export function buildConfigObject(opts) {
48
+ const provider = {};
49
+ if (opts.provider !== "anthropic")
50
+ provider["type"] = opts.provider;
51
+ if (opts.model)
52
+ provider["model"] = opts.model;
53
+ if (opts.apiKeyEnv && opts.apiKeyEnv !== DEFAULT_KEY_ENV[opts.provider]) {
54
+ provider["apiKeyEnv"] = opts.apiKeyEnv;
55
+ }
56
+ return Object.keys(provider).length > 0 ? { provider } : null;
57
+ }
58
+ function makeIo(env) {
59
+ const ansi = makeAnsi({ isTTY: Boolean(process.stdout.isTTY), env });
60
+ return { out: (s) => process.stdout.write(s + "\n"), ansi };
61
+ }
62
+ /**
63
+ * Read + JSON-parse settings; returns `{}` for a missing/empty file, throws for
64
+ * invalid JSON. Reads-then-handles-ENOENT rather than checking existence first,
65
+ * which avoids a check-then-use race (CodeQL js/file-system-race).
66
+ */
67
+ function readSettings(path) {
68
+ let text;
69
+ try {
70
+ text = readFileSync(path, "utf8");
71
+ }
72
+ catch (err) {
73
+ if (err.code === "ENOENT")
74
+ return {};
75
+ throw err;
76
+ }
77
+ if (text.trim() === "")
78
+ return {};
79
+ return JSON.parse(text);
80
+ }
81
+ function writeJson(path, value) {
82
+ mkdirSync(dirname(path), { recursive: true });
83
+ writeFileSync(path, JSON.stringify(value, null, 2) + "\n", "utf8");
84
+ }
85
+ /**
86
+ * Copy `path` to its timestamped backup; returns false when there was nothing
87
+ * to back up (file absent). Copy-then-handle-ENOENT — not an `existsSync`
88
+ * pre-check — avoids a check-then-use race and is robust if the file vanishes.
89
+ */
90
+ function backupFile(path, stamp) {
91
+ try {
92
+ copyFileSync(path, backupPath(path, stamp));
93
+ return true;
94
+ }
95
+ catch (err) {
96
+ if (err.code === "ENOENT")
97
+ return false;
98
+ throw err;
99
+ }
100
+ }
101
+ // ── memhook init ──────────────────────────────────────────────────────────
102
+ export async function runInit(opts, env = process.env) {
103
+ const io = makeIo(env);
104
+ const { ansi } = io;
105
+ const settingsPath = opts.settingsPath ?? defaultSettingsPath();
106
+ const interactive = !opts.yes && Boolean(process.stdin.isTTY) && !opts.dryRun;
107
+ io.out(ansi.bold("memhook init") + ansi.dim(" — wire memhook into Claude Code\n"));
108
+ // 1. Provider / key / model — flags win, then prompts, then defaults.
109
+ let provider = opts.provider ?? "anthropic";
110
+ const model = opts.model;
111
+ let apiKeyEnv = opts.apiKeyEnv;
112
+ if (interactive) {
113
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
114
+ try {
115
+ const p = (await rl.question(`Provider ${ansi.dim("[anthropic]")} / openai / ollama: `))
116
+ .trim()
117
+ .toLowerCase();
118
+ if (p && PROVIDERS.includes(p))
119
+ provider = p;
120
+ if (provider !== "ollama") {
121
+ const defKey = DEFAULT_KEY_ENV[provider];
122
+ const k = (await rl.question(`API key env var ${ansi.dim(`[${defKey}]`)}: `)).trim();
123
+ apiKeyEnv = k || apiKeyEnv || defKey;
124
+ }
125
+ }
126
+ finally {
127
+ rl.close();
128
+ }
129
+ }
130
+ else {
131
+ apiKeyEnv = apiKeyEnv ?? DEFAULT_KEY_ENV[provider];
132
+ }
133
+ // 2. Compute the settings.json merge (pure).
134
+ let existing;
135
+ try {
136
+ existing = readSettings(settingsPath);
137
+ }
138
+ catch {
139
+ io.out(ansi.red("✗ ") +
140
+ `${settingsPath} is not valid JSON. Refusing to overwrite it.\n` +
141
+ ansi.dim(" Fix or move the file, then re-run `memhook init`."));
142
+ return 1;
143
+ }
144
+ const merge = addHooks(existing, opts.bin);
145
+ const configObj = buildConfigObject({ provider, model, apiKeyEnv });
146
+ // 3. Plan summary.
147
+ io.out(ansi.bold("\nPlan"));
148
+ if (merge.added.length > 0) {
149
+ io.out(` ${ansi.green("+")} hook ${merge.added.join(" + ")} → ${settingsPath}`);
150
+ io.out(` ${ansi.dim(`backup → ${backupPath(settingsPath, "<timestamp>")}`)}`);
151
+ }
152
+ for (const ev of merge.alreadyPresent) {
153
+ io.out(` ${ansi.dim("·")} hook ${ev} already wired ${ansi.dim("(skip)")}`);
154
+ }
155
+ if (configObj) {
156
+ io.out(` ${ansi.green("+")} config → ${configYamlPath()} ${ansi.dim(`(provider: ${provider})`)}`);
157
+ }
158
+ else {
159
+ io.out(` ${ansi.dim("·")} provider anthropic (default) ${ansi.dim("— no config file needed")}`);
160
+ }
161
+ if (!opts.noCatalog)
162
+ io.out(` ${ansi.green("+")} build catalog`);
163
+ if (opts.skills !== false) {
164
+ io.out(` ${ansi.green("+")} companion skills ${ansi.dim("(/wrap /curate /relay)")}`);
165
+ }
166
+ // 4. API-key heads-up (never blocks; just warns).
167
+ if (provider !== "ollama" && apiKeyEnv && !env[apiKeyEnv]) {
168
+ io.out(`\n ${ansi.yellow("!")} ${apiKeyEnv} is not set in this shell — ` +
169
+ ansi.dim(`export it before memhook can route (the hook fails soft until then).`));
170
+ }
171
+ if (opts.dryRun) {
172
+ io.out(ansi.dim("\n(dry run — nothing written)"));
173
+ return 0;
174
+ }
175
+ if (interactive) {
176
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
177
+ try {
178
+ const go = (await rl.question(`\n${ansi.bold("Proceed?")} ${ansi.dim("[Y/n]")} `))
179
+ .trim()
180
+ .toLowerCase();
181
+ if (go === "n" || go === "no") {
182
+ io.out(ansi.dim("Aborted. Nothing written."));
183
+ return 0;
184
+ }
185
+ }
186
+ finally {
187
+ rl.close();
188
+ }
189
+ }
190
+ // 5. Write (settings first, with backup).
191
+ const stamp = stampNow();
192
+ if (merge.added.length > 0) {
193
+ backupFile(settingsPath, stamp);
194
+ writeJson(settingsPath, merge.settings);
195
+ io.out(`${ansi.green("✓")} wired ${merge.added.join(" + ")} into ${settingsPath}`);
196
+ }
197
+ if (configObj) {
198
+ const cfgPath = configYamlPath();
199
+ backupFile(cfgPath, stamp);
200
+ mkdirSync(dirname(cfgPath), { recursive: true });
201
+ writeFileSync(cfgPath, yamlStringify(configObj), "utf8");
202
+ io.out(`${ansi.green("✓")} wrote ${cfgPath}`);
203
+ }
204
+ // 6. Bootstrap memory dirs so build-catalog + the router have somewhere to look.
205
+ for (const d of [join(homedir(), ".claude", "rules"), join(homedir(), ".claude", "projects")]) {
206
+ mkdirSync(d, { recursive: true });
207
+ }
208
+ // 7. Seed the catalog.
209
+ if (!opts.noCatalog) {
210
+ try {
211
+ const config = loadConfig(env);
212
+ const res = buildCatalog({ cwd: process.cwd(), outputPath: config.catalog.path });
213
+ io.out(`${ansi.green("✓")} catalog ${config.catalog.path} ${ansi.dim(`(${res.lines}L)`)}`);
214
+ }
215
+ catch {
216
+ io.out(ansi.yellow("! ") + "catalog build skipped (run `memhook build-catalog` later)");
217
+ }
218
+ }
219
+ // 8. Companion skills (/wrap, /curate, /relay) — opt-in, non-clobbering. The
220
+ // install only writes absent skills (never overwrites a user edit without
221
+ // --force), so default-on in --yes mode is safe; interactive mode asks.
222
+ let wantSkills = opts.skills;
223
+ if (wantSkills === undefined) {
224
+ if (interactive) {
225
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
226
+ try {
227
+ const a = (await rl.question(`\nInstall companion skills ${ansi.dim("(/wrap /curate /relay)")} ${ansi.dim("[Y/n]")} `))
228
+ .trim()
229
+ .toLowerCase();
230
+ wantSkills = !(a === "n" || a === "no");
231
+ }
232
+ finally {
233
+ rl.close();
234
+ }
235
+ }
236
+ else {
237
+ wantSkills = true;
238
+ }
239
+ }
240
+ if (wantSkills) {
241
+ try {
242
+ const results = installCompanionSkills({});
243
+ const applied = results.filter((r) => r.applied).map((r) => `/${r.plan.name}`);
244
+ const blocked = results
245
+ .filter((r) => r.plan.action === "blocked")
246
+ .map((r) => `/${r.plan.name}`);
247
+ if (applied.length > 0) {
248
+ io.out(`${ansi.green("✓")} skills ${applied.join(" ")} → ${join(homedir(), ".claude", "skills")}`);
249
+ }
250
+ else if (blocked.length === 0) {
251
+ io.out(`${ansi.dim("·")} companion skills already installed ${ansi.dim("(skip)")}`);
252
+ }
253
+ if (blocked.length > 0) {
254
+ io.out(`${ansi.yellow("!")} ${blocked.join(" ")} differ from shipped — left as-is ` +
255
+ ansi.dim("(memhook skills install --force to update)"));
256
+ }
257
+ }
258
+ catch (err) {
259
+ io.out(ansi.yellow("! ") + "skill install skipped (run `memhook skills install` later)");
260
+ if (env["MEMHOOK_DEBUG"] === "true")
261
+ process.stderr.write(`${String(err)}\n`);
262
+ }
263
+ }
264
+ io.out(`\n${ansi.green("Done.")} Restart Claude Code, then watch it live with ` +
265
+ ansi.bold("memhook tail") +
266
+ ".");
267
+ return 0;
268
+ }
269
+ // ── memhook uninstall ───────────────────────────────────────────────────────
270
+ export async function runUninstall(opts, env = process.env) {
271
+ const io = makeIo(env);
272
+ const { ansi } = io;
273
+ const settingsPath = opts.settingsPath ?? defaultSettingsPath();
274
+ const interactive = !opts.yes && Boolean(process.stdin.isTTY) && !opts.dryRun;
275
+ io.out(ansi.bold("memhook uninstall") + ansi.dim(" — remove memhook hooks\n"));
276
+ let existing;
277
+ try {
278
+ existing = readSettings(settingsPath);
279
+ }
280
+ catch {
281
+ io.out(ansi.red("✗ ") + `${settingsPath} is not valid JSON. Refusing to touch it.`);
282
+ return 1;
283
+ }
284
+ const result = removeHooks(existing);
285
+ if (result.removed === 0) {
286
+ io.out(ansi.dim("No memhook hooks found. Nothing to do."));
287
+ return 0;
288
+ }
289
+ io.out(ansi.bold("Plan"));
290
+ io.out(` ${ansi.red("-")} ${result.removed} memhook hook(s) from ${result.removedEvents.join(" + ")}`);
291
+ io.out(` ${ansi.dim(`backup → ${backupPath(settingsPath, "<timestamp>")}`)}`);
292
+ if (opts.purge)
293
+ io.out(` ${ansi.red("-")} purge cache + log`);
294
+ if (opts.dryRun) {
295
+ io.out(ansi.dim("\n(dry run — nothing written)"));
296
+ return 0;
297
+ }
298
+ if (interactive) {
299
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
300
+ try {
301
+ const go = (await rl.question(`\n${ansi.bold("Proceed?")} ${ansi.dim("[y/N]")} `))
302
+ .trim()
303
+ .toLowerCase();
304
+ if (go !== "y" && go !== "yes") {
305
+ io.out(ansi.dim("Aborted. Nothing written."));
306
+ return 0;
307
+ }
308
+ }
309
+ finally {
310
+ rl.close();
311
+ }
312
+ }
313
+ const stamp = stampNow();
314
+ backupFile(settingsPath, stamp);
315
+ writeJson(settingsPath, result.settings);
316
+ io.out(`${ansi.green("✓")} removed ${result.removed} hook(s) from ${settingsPath}`);
317
+ if (opts.purge) {
318
+ const config = loadConfig(env);
319
+ for (const target of [config.cache.dir, config.logging.jsonlPath]) {
320
+ io.out(ansi.dim(` (left in place: ${target} — remove manually if desired)`));
321
+ }
322
+ io.out(ansi.dim(" (companion skills, if installed: remove with `memhook skills uninstall`)"));
323
+ }
324
+ io.out(`\n${ansi.green("Done.")} Restart Claude Code to drop the hooks.`);
325
+ return 0;
326
+ }
327
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Pure settings.json hook wiring — the dangerous-but-testable core of
3
+ * `memhook init` / `memhook uninstall`.
4
+ *
5
+ * Everything here is a pure data transform: it takes the parsed contents of
6
+ * `~/.claude/settings.json` and returns a NEW object with memhook's hooks
7
+ * added or removed. There is NO file I/O in this module — the orchestration
8
+ * layer (`src/init.ts`) handles reading, backing up, and writing. Keeping the
9
+ * merge pure means the idempotency / non-clobbering guarantees are unit-tested
10
+ * without touching anyone's real config (the one file we must never corrupt).
11
+ *
12
+ * The Claude Code hook shape (sourced from the README + docs/SPECIFICATION.md
13
+ * §10) is:
14
+ *
15
+ * {
16
+ * "hooks": {
17
+ * "UserPromptSubmit": [ { "hooks": [ { "type": "command", "command": "memhook run" } ] } ],
18
+ * "SessionStart": [ { "hooks": [ { "type": "command", "command": "memhook build-catalog" } ] } ]
19
+ * }
20
+ * }
21
+ *
22
+ * Each event maps to an array of matcher-groups; each group has a `hooks` array
23
+ * of `{ type, command }`. memhook contributes one group per event and leaves
24
+ * every other key — and every other user hook — untouched.
25
+ */
26
+ /** The two events memhook wires, paired with the subcommand each runs. */
27
+ export declare const MEMHOOK_HOOKS: readonly [{
28
+ readonly event: "UserPromptSubmit";
29
+ readonly subcommand: "run";
30
+ }, {
31
+ readonly event: "SessionStart";
32
+ readonly subcommand: "build-catalog";
33
+ }];
34
+ export type HookEvent = (typeof MEMHOOK_HOOKS)[number]["event"];
35
+ export interface HookCommand {
36
+ type: "command";
37
+ command: string;
38
+ [key: string]: unknown;
39
+ }
40
+ export interface HookGroup {
41
+ hooks?: HookCommand[];
42
+ [key: string]: unknown;
43
+ }
44
+ export interface Settings {
45
+ hooks?: Record<string, HookGroup[]>;
46
+ [key: string]: unknown;
47
+ }
48
+ export interface AddResult {
49
+ settings: Settings;
50
+ /** Events where a memhook hook was newly added. */
51
+ added: HookEvent[];
52
+ /** Events where a memhook hook was already present (idempotent no-op). */
53
+ alreadyPresent: HookEvent[];
54
+ }
55
+ export interface RemoveResult {
56
+ settings: Settings;
57
+ /** Number of individual memhook hook commands removed. */
58
+ removed: number;
59
+ /** Event names a memhook hook was removed from. */
60
+ removedEvents: string[];
61
+ }
62
+ /**
63
+ * If `command` invokes the memhook binary, return its subcommand
64
+ * (e.g. "run", "build-catalog"), else null. Matches the README form
65
+ * (`memhook run`), an absolute-path form (`/usr/local/bin/memhook run`), and a
66
+ * node form (`node dist/bin/memhook.js run`). Detection is binary-name based
67
+ * (not the configured invocation), so `uninstall` cleans up a hook regardless
68
+ * of how it was originally written.
69
+ */
70
+ export declare function memhookSubcommand(command: unknown): string | null;
71
+ /**
72
+ * Return a deep clone with memhook's hooks added. Idempotent: an event that
73
+ * already has a memhook hook for its subcommand is left untouched. Every other
74
+ * key and every other user hook is preserved exactly.
75
+ *
76
+ * @param input parsed settings.json (non-object input is treated as `{}`)
77
+ * @param bin the command used to invoke memhook (default `"memhook"`)
78
+ */
79
+ export declare function addHooks(input: unknown, bin?: string): AddResult;
80
+ /**
81
+ * Return a deep clone with every memhook hook removed. Scans ALL hook events
82
+ * (not just the two memhook registers) so a hook moved by hand is still cleaned
83
+ * up. Empties that result — a group whose `hooks` becomes empty, an event whose
84
+ * group list becomes empty — are pruned so no dangling shells are left behind.
85
+ */
86
+ export declare function removeHooks(input: unknown): RemoveResult;
87
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,aAAa;;;;;;EAGhB,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,mDAAmD;IACnD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,0EAA0E;IAC1E,cAAc,EAAE,SAAS,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIjE;AAQD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAY,GAAG,SAAS,CAmBnE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAqCxD"}