@kodus/cli 0.4.4 → 0.4.7

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 (194) hide show
  1. package/README.md +110 -7
  2. package/dist/agents/agent.interface.d.ts.map +1 -1
  3. package/dist/agents/claude-code.agent.d.ts.map +1 -1
  4. package/dist/agents/claude-code.agent.js +16 -5
  5. package/dist/agents/claude-code.agent.js.map +1 -1
  6. package/dist/agents/codex.agent.d.ts +14 -0
  7. package/dist/agents/codex.agent.d.ts.map +1 -0
  8. package/dist/agents/codex.agent.js +77 -0
  9. package/dist/agents/codex.agent.js.map +1 -0
  10. package/dist/agents/cursor.agent.d.ts +29 -0
  11. package/dist/agents/cursor.agent.d.ts.map +1 -0
  12. package/dist/agents/cursor.agent.js +85 -0
  13. package/dist/agents/cursor.agent.js.map +1 -0
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +8 -1
  16. package/dist/cli.js.map +1 -1
  17. package/dist/commands/config.d.ts +8 -0
  18. package/dist/commands/config.d.ts.map +1 -0
  19. package/dist/commands/config.js +84 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/hook/index.js +4 -2
  22. package/dist/commands/hook/index.js.map +1 -1
  23. package/dist/commands/hook/install.d.ts +3 -1
  24. package/dist/commands/hook/install.d.ts.map +1 -1
  25. package/dist/commands/hook/install.js +76 -37
  26. package/dist/commands/hook/install.js.map +1 -1
  27. package/dist/commands/hook/uninstall.d.ts +4 -1
  28. package/dist/commands/hook/uninstall.d.ts.map +1 -1
  29. package/dist/commands/hook/uninstall.js +54 -19
  30. package/dist/commands/hook/uninstall.js.map +1 -1
  31. package/dist/commands/memory/capture.d.ts.map +1 -1
  32. package/dist/commands/memory/capture.js +3 -36
  33. package/dist/commands/memory/capture.js.map +1 -1
  34. package/dist/commands/memory/disable.d.ts +4 -1
  35. package/dist/commands/memory/disable.d.ts.map +1 -1
  36. package/dist/commands/memory/disable.js +58 -15
  37. package/dist/commands/memory/disable.js.map +1 -1
  38. package/dist/commands/memory/enable.d.ts.map +1 -1
  39. package/dist/commands/memory/enable.js +24 -7
  40. package/dist/commands/memory/enable.js.map +1 -1
  41. package/dist/commands/memory/hooks.d.ts +2 -1
  42. package/dist/commands/memory/hooks.d.ts.map +1 -1
  43. package/dist/commands/memory/hooks.js +13 -5
  44. package/dist/commands/memory/hooks.js.map +1 -1
  45. package/dist/commands/memory/index.d.ts.map +1 -1
  46. package/dist/commands/memory/index.js +13 -3
  47. package/dist/commands/memory/index.js.map +1 -1
  48. package/dist/commands/memory/session-hooks/claude-code.d.ts.map +1 -1
  49. package/dist/commands/memory/session-hooks/claude-code.js +4 -1
  50. package/dist/commands/memory/session-hooks/claude-code.js.map +1 -1
  51. package/dist/commands/memory/session-hooks/codex.d.ts +2 -0
  52. package/dist/commands/memory/session-hooks/codex.d.ts.map +1 -0
  53. package/dist/commands/memory/session-hooks/codex.js +16 -0
  54. package/dist/commands/memory/session-hooks/codex.js.map +1 -0
  55. package/dist/commands/memory/session-hooks/cursor.d.ts.map +1 -1
  56. package/dist/commands/memory/session-hooks/cursor.js +7 -12
  57. package/dist/commands/memory/session-hooks/cursor.js.map +1 -1
  58. package/dist/commands/memory/session-hooks/index.d.ts.map +1 -1
  59. package/dist/commands/memory/session-hooks/index.js +8 -3
  60. package/dist/commands/memory/session-hooks/index.js.map +1 -1
  61. package/dist/commands/memory/session-hooks/shared.d.ts.map +1 -1
  62. package/dist/commands/memory/session-hooks/shared.js +7 -31
  63. package/dist/commands/memory/session-hooks/shared.js.map +1 -1
  64. package/dist/commands/memory/session-hooks-install-codex.d.ts +19 -0
  65. package/dist/commands/memory/session-hooks-install-codex.d.ts.map +1 -0
  66. package/dist/commands/memory/session-hooks-install-codex.js +91 -0
  67. package/dist/commands/memory/session-hooks-install-codex.js.map +1 -0
  68. package/dist/commands/memory/session-hooks-install-cursor.d.ts +9 -0
  69. package/dist/commands/memory/session-hooks-install-cursor.d.ts.map +1 -0
  70. package/dist/commands/memory/session-hooks-install-cursor.js +119 -0
  71. package/dist/commands/memory/session-hooks-install-cursor.js.map +1 -0
  72. package/dist/commands/memory/session-hooks-install.d.ts.map +1 -1
  73. package/dist/commands/memory/session-hooks-install.js +61 -27
  74. package/dist/commands/memory/session-hooks-install.js.map +1 -1
  75. package/dist/commands/pr.d.ts.map +1 -1
  76. package/dist/commands/pr.js +71 -20
  77. package/dist/commands/pr.js.map +1 -1
  78. package/dist/commands/review.d.ts.map +1 -1
  79. package/dist/commands/review.js +76 -24
  80. package/dist/commands/review.js.map +1 -1
  81. package/dist/commands/schema.d.ts +3 -0
  82. package/dist/commands/schema.d.ts.map +1 -0
  83. package/dist/commands/schema.js +62 -0
  84. package/dist/commands/schema.js.map +1 -0
  85. package/dist/commands/skills.d.ts +3 -0
  86. package/dist/commands/skills.d.ts.map +1 -0
  87. package/dist/commands/skills.js +85 -0
  88. package/dist/commands/skills.js.map +1 -0
  89. package/dist/commands/status.d.ts.map +1 -1
  90. package/dist/commands/status.js +3 -1
  91. package/dist/commands/status.js.map +1 -1
  92. package/dist/commands/update.d.ts.map +1 -1
  93. package/dist/commands/update.js +17 -2
  94. package/dist/commands/update.js.map +1 -1
  95. package/dist/index.js +18 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/services/api/api.interface.d.ts +7 -4
  98. package/dist/services/api/api.interface.d.ts.map +1 -1
  99. package/dist/services/api/api.real.d.ts +2 -1
  100. package/dist/services/api/api.real.d.ts.map +1 -1
  101. package/dist/services/api/api.real.js +36 -10
  102. package/dist/services/api/api.real.js.map +1 -1
  103. package/dist/services/api/sessions.api.d.ts.map +1 -1
  104. package/dist/services/api/sessions.api.js +12 -6
  105. package/dist/services/api/sessions.api.js.map +1 -1
  106. package/dist/services/git-hooks.service.d.ts.map +1 -1
  107. package/dist/services/git-hooks.service.js +14 -6
  108. package/dist/services/git-hooks.service.js.map +1 -1
  109. package/dist/services/git.service.d.ts.map +1 -1
  110. package/dist/services/git.service.js +6 -2
  111. package/dist/services/git.service.js.map +1 -1
  112. package/dist/services/hook-logger.service.d.ts.map +1 -1
  113. package/dist/services/hook-logger.service.js +2 -1
  114. package/dist/services/hook-logger.service.js.map +1 -1
  115. package/dist/services/lifecycle.service.d.ts +1 -0
  116. package/dist/services/lifecycle.service.d.ts.map +1 -1
  117. package/dist/services/lifecycle.service.js +101 -16
  118. package/dist/services/lifecycle.service.js.map +1 -1
  119. package/dist/services/repo-config.service.d.ts +22 -0
  120. package/dist/services/repo-config.service.d.ts.map +1 -0
  121. package/dist/services/repo-config.service.js +87 -0
  122. package/dist/services/repo-config.service.js.map +1 -0
  123. package/dist/services/review.service.d.ts +0 -3
  124. package/dist/services/review.service.d.ts.map +1 -1
  125. package/dist/services/review.service.js.map +1 -1
  126. package/dist/services/session-local.service.d.ts +16 -0
  127. package/dist/services/session-local.service.d.ts.map +1 -1
  128. package/dist/services/session-local.service.js +49 -0
  129. package/dist/services/session-local.service.js.map +1 -1
  130. package/dist/services/transcript.service.d.ts.map +1 -1
  131. package/dist/services/transcript.service.js +44 -13
  132. package/dist/services/transcript.service.js.map +1 -1
  133. package/dist/types/command-output.d.ts +29 -0
  134. package/dist/types/command-output.d.ts.map +1 -0
  135. package/dist/types/command-output.js +2 -0
  136. package/dist/types/command-output.js.map +1 -0
  137. package/dist/types/index.d.ts +18 -4
  138. package/dist/types/index.d.ts.map +1 -1
  139. package/dist/types/index.js.map +1 -1
  140. package/dist/types/session-events.d.ts.map +1 -1
  141. package/dist/types/session.d.ts +3 -1
  142. package/dist/types/session.d.ts.map +1 -1
  143. package/dist/types/session.js +5 -1
  144. package/dist/types/session.js.map +1 -1
  145. package/dist/utils/banner.d.ts.map +1 -1
  146. package/dist/utils/banner.js +2 -0
  147. package/dist/utils/banner.js.map +1 -1
  148. package/dist/utils/command-context.d.ts +12 -0
  149. package/dist/utils/command-context.d.ts.map +1 -0
  150. package/dist/utils/command-context.js +15 -0
  151. package/dist/utils/command-context.js.map +1 -0
  152. package/dist/utils/command-errors.d.ts +12 -0
  153. package/dist/utils/command-errors.d.ts.map +1 -0
  154. package/dist/utils/command-errors.js +88 -0
  155. package/dist/utils/command-errors.js.map +1 -0
  156. package/dist/utils/command-output.d.ts +5 -0
  157. package/dist/utils/command-output.d.ts.map +1 -0
  158. package/dist/utils/command-output.js +46 -0
  159. package/dist/utils/command-output.js.map +1 -0
  160. package/dist/utils/command-schema.d.ts +29 -0
  161. package/dist/utils/command-schema.d.ts.map +1 -0
  162. package/dist/utils/command-schema.js +74 -0
  163. package/dist/utils/command-schema.js.map +1 -0
  164. package/dist/utils/field-mask.d.ts +2 -0
  165. package/dist/utils/field-mask.d.ts.map +1 -0
  166. package/dist/utils/field-mask.js +93 -0
  167. package/dist/utils/field-mask.js.map +1 -0
  168. package/dist/utils/input-validation.d.ts +11 -0
  169. package/dist/utils/input-validation.d.ts.map +1 -0
  170. package/dist/utils/input-validation.js +73 -0
  171. package/dist/utils/input-validation.js.map +1 -0
  172. package/dist/utils/install-instructions.d.ts +6 -0
  173. package/dist/utils/install-instructions.d.ts.map +1 -0
  174. package/dist/utils/install-instructions.js +18 -0
  175. package/dist/utils/install-instructions.js.map +1 -0
  176. package/dist/utils/skills-sync.d.ts +39 -0
  177. package/dist/utils/skills-sync.d.ts.map +1 -0
  178. package/dist/utils/skills-sync.js +396 -0
  179. package/dist/utils/skills-sync.js.map +1 -0
  180. package/dist/utils/skills.d.ts +7 -0
  181. package/dist/utils/skills.d.ts.map +1 -1
  182. package/dist/utils/skills.js +61 -22
  183. package/dist/utils/skills.js.map +1 -1
  184. package/dist/utils/stream-input.d.ts +13 -0
  185. package/dist/utils/stream-input.d.ts.map +1 -0
  186. package/dist/utils/stream-input.js +36 -0
  187. package/dist/utils/stream-input.js.map +1 -0
  188. package/package.json +10 -8
  189. package/skills/README.md +12 -5
  190. package/skills/kodus-business-rules-validation/SKILL.md +65 -0
  191. package/skills/kodus-pr-suggestions-resolver/SKILL.md +6 -6
  192. package/skills/kodus-review/SKILL.md +20 -7
  193. package/skills/kodus-review-dev/SKILL.md +22 -8
  194. package/skills/business-rules-validation/SKILL.md +0 -43
@@ -7,12 +7,13 @@ import path from 'path';
7
7
  export const SUPPORTED_AGENTS = new Set(['claude', 'cursor', 'codex']);
8
8
  const DECISIONS_CAPTURE_COMMAND_PREFIX = 'kodus decisions capture';
9
9
  export const CLAUDE_CAPTURE_COMMANDS = {
10
- userPromptSubmit: 'kodus decisions capture --agent claude-compatible --event user-prompt-submit',
11
- stop: 'kodus decisions capture --agent claude-compatible --event stop',
12
- postToolUseWrite: 'kodus decisions capture --agent claude-compatible --event post-tool-use-write',
13
- postToolUseEdit: 'kodus decisions capture --agent claude-compatible --event post-tool-use-edit',
10
+ userPromptSubmit: 'kodus decisions capture --capture-agent claude-compatible --event user-prompt-submit',
11
+ stop: 'kodus decisions capture --capture-agent claude-compatible --event stop',
12
+ postToolUseWrite: 'kodus decisions capture --capture-agent claude-compatible --event post-tool-use-write',
13
+ postToolUseEdit: 'kodus decisions capture --capture-agent claude-compatible --event post-tool-use-edit',
14
14
  };
15
- export const CODEX_NOTIFY_LINE = 'notify = ["kodus", "decisions", "capture", "--agent", "codex", "--event", "stop"]';
15
+ export const CODEX_NOTIFY_LINE = 'notify = ["kodus", "decisions", "capture", "--capture-agent", "codex", "--event", "stop"]';
16
+ export const CODEX_NOTIFY_LINE_STOP_LEGACY = 'notify = ["kodus", "decisions", "capture", "--agent", "codex", "--event", "stop"]';
16
17
  export const CODEX_NOTIFY_LINE_LEGACY = 'notify = ["kodus", "decisions", "capture", "--agent", "codex", "--event", "agent-turn-complete"]';
17
18
  export function parseAgents(rawAgents) {
18
19
  const aliases = {
@@ -169,6 +170,11 @@ export async function installCodexNotify(configPath) {
169
170
  await fs.writeFile(configPath, nextContent, 'utf-8');
170
171
  return { configPath, changed: true, skipped: false, reason: '' };
171
172
  }
173
+ if (content.includes(CODEX_NOTIFY_LINE_STOP_LEGACY)) {
174
+ const nextContent = content.replace(CODEX_NOTIFY_LINE_STOP_LEGACY, CODEX_NOTIFY_LINE);
175
+ await fs.writeFile(configPath, nextContent, 'utf-8');
176
+ return { configPath, changed: true, skipped: false, reason: '' };
177
+ }
172
178
  if (notifyLinePattern.test(content)) {
173
179
  return {
174
180
  configPath,
@@ -258,12 +264,14 @@ export async function removeCodexNotify(configPath) {
258
264
  return { configPath, removed: false };
259
265
  }
260
266
  if (!content.includes(CODEX_NOTIFY_LINE) &&
267
+ !content.includes(CODEX_NOTIFY_LINE_STOP_LEGACY) &&
261
268
  !content.includes(CODEX_NOTIFY_LINE_LEGACY)) {
262
269
  return { configPath, removed: false };
263
270
  }
264
271
  const nextContent = content
265
272
  .split('\n')
266
273
  .filter((line) => line.trim() !== CODEX_NOTIFY_LINE &&
274
+ line.trim() !== CODEX_NOTIFY_LINE_STOP_LEGACY &&
267
275
  line.trim() !== CODEX_NOTIFY_LINE_LEGACY)
268
276
  .join('\n')
269
277
  .replace(/\n{3,}/g, '\n\n')
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/commands/memory/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/commands/memory/hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,gBAAgB,SAE5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,gBAAgB,SAE5B,CAAC"}
@@ -14,13 +14,23 @@ decisionsCommand
14
14
  decisionsCommand
15
15
  .command('disable')
16
16
  .description('Remove all hooks')
17
- .action(disableAction);
17
+ .action((options, command) => disableAction(options, command.optsWithGlobals()));
18
18
  decisionsCommand
19
19
  .command('capture')
20
20
  .description('Internal hook command to submit decision capture to API')
21
21
  .argument('[payload]', 'Optional payload JSON (used by Codex notify)')
22
- .requiredOption('--agent <agent>', 'Agent name: claude-compatible, claude-code, cursor, codex')
22
+ .option('--agent <agent>', 'Legacy alias for --capture-agent')
23
+ .option('--capture-agent <agent>', 'Agent name: claude-compatible, claude-code, cursor, codex')
23
24
  .requiredOption('--event <event>', 'Hook event name')
24
25
  .option('--summary <text>', 'Optional summary text')
25
- .action(captureAction);
26
+ .action((payload, options, command) => {
27
+ const agent = options.captureAgent ?? options.agent;
28
+ if (!agent) {
29
+ command.error("required option '--capture-agent <agent>' not specified");
30
+ }
31
+ return captureAction(payload, {
32
+ ...options,
33
+ agent,
34
+ });
35
+ });
26
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAChE,4DAA4D,CAC/D,CAAC;AAEF,gBAAgB,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAEjD,gBAAgB;KACX,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CACH,mBAAmB,EACnB,2CAA2C,EAC3C,qBAAqB,CACxB;KACA,MAAM,CACH,uBAAuB,EACvB,2DAA2D,CAC9D;KACA,MAAM,CAAC,YAAY,CAAC,CAAC;AAE1B,gBAAgB;KACX,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,aAAa,CAAC,CAAC;AAE3B,gBAAgB;KACX,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yDAAyD,CAAC;KACtE,QAAQ,CAAC,WAAW,EAAE,8CAA8C,CAAC;KACrE,cAAc,CACX,iBAAiB,EACjB,2DAA2D,CAC9D;KACA,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;KACpD,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;KACnD,MAAM,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAChE,4DAA4D,CAC/D,CAAC;AAEF,gBAAgB,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAEjD,gBAAgB;KACX,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CACH,mBAAmB,EACnB,2CAA2C,EAC3C,qBAAqB,CACxB;KACA,MAAM,CACH,uBAAuB,EACvB,2DAA2D,CAC9D;KACA,MAAM,CAAC,YAAY,CAAC,CAAC;AAE1B,gBAAgB;KACX,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACzB,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAmB,CAAC,CACrE,CAAC;AAEN,gBAAgB;KACX,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yDAAyD,CAAC;KACtE,QAAQ,CAAC,WAAW,EAAE,8CAA8C,CAAC;KACrE,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,MAAM,CACH,yBAAyB,EACzB,2DAA2D,CAC9D;KACA,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;KACpD,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;KACnD,MAAM,CAAC,CAAC,OAA2B,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CACT,yDAAyD,CAC5D,CAAC;IACN,CAAC;IAED,OAAO,aAAa,CAAC,OAAO,EAAE;QAC1B,GAAG,OAAO;QACV,KAAK;KACR,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/claude-code.ts"],"names":[],"mappings":"AAcA,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1E"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/claude-code.ts"],"names":[],"mappings":"AAiBA,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1E"}
@@ -5,9 +5,12 @@ const VALID_HOOKS = new Set([
5
5
  'session-end',
6
6
  'stop',
7
7
  'user-prompt-submit',
8
+ 'subagent-start',
9
+ 'subagent-stop',
10
+ 'post-todo',
11
+ // Legacy aliases
8
12
  'pre-task',
9
13
  'post-task',
10
- 'post-todo',
11
14
  ]);
12
15
  export async function claudeCodeHookAction(hookName) {
13
16
  if (!VALID_HOOKS.has(hookName)) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,GAA6B,IAAI,GAAG,CAAC;IACpD,eAAe;IACf,aAAa;IACb,MAAM;IACN,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAA+B,CAAC,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,GAA6B,IAAI,GAAG,CAAC;IAClD,eAAe;IACf,aAAa;IACb,MAAM;IACN,oBAAoB;IACpB,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,iBAAiB;IACjB,UAAU;IACV,WAAW;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAA+B,CAAC,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO;IACX,CAAC;IAED,MAAM,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function codexHookAction(hookName: string): Promise<void>;
2
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/codex.ts"],"names":[],"mappings":"AASA,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASrE"}
@@ -0,0 +1,16 @@
1
+ import { codexAgent } from '../../../agents/codex.agent.js';
2
+ import { handleHook } from './shared.js';
3
+ const VALID_HOOKS = new Set([
4
+ 'AfterAgent',
5
+ 'AfterToolUse',
6
+ ]);
7
+ export async function codexHookAction(hookName) {
8
+ if (!VALID_HOOKS.has(hookName)) {
9
+ if (process.env.KODUS_VERBOSE === 'true') {
10
+ console.error(`[decisions] unknown Codex hook: ${hookName}`);
11
+ }
12
+ return;
13
+ }
14
+ await handleHook(codexAgent, hookName);
15
+ }
16
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC;IAC7C,YAAY;IACZ,cAAc;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IAClD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAA0B,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO;IACX,CAAC;IAED,MAAM,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/cursor.ts"],"names":[],"mappings":"AAmBA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAStE"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/cursor.ts"],"names":[],"mappings":"AAaA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAStE"}
@@ -1,17 +1,12 @@
1
- import { claudeCodeAgent } from '../../../agents/claude-code.agent.js';
1
+ import { cursorAgent } from '../../../agents/cursor.agent.js';
2
2
  import { handleHook } from './shared.js';
3
- /**
4
- * Cursor uses the same Claude Code hooks format (same settings.json schema),
5
- * so we reuse the Claude Code agent adapter.
6
- */
7
3
  const VALID_HOOKS = new Set([
8
- 'session-start',
9
- 'session-end',
4
+ 'sessionStart',
5
+ 'sessionEnd',
10
6
  'stop',
11
- 'user-prompt-submit',
12
- 'pre-task',
13
- 'post-task',
14
- 'post-todo',
7
+ 'beforeSubmitPrompt',
8
+ 'subagentStart',
9
+ 'subagentStop',
15
10
  ]);
16
11
  export async function cursorHookAction(hookName) {
17
12
  if (!VALID_HOOKS.has(hookName)) {
@@ -20,6 +15,6 @@ export async function cursorHookAction(hookName) {
20
15
  }
21
16
  return;
22
17
  }
23
- await handleHook(claudeCodeAgent, hookName);
18
+ await handleHook(cursorAgent, hookName);
24
19
  }
25
20
  //# sourceMappingURL=cursor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;GAGG;AAEH,MAAM,WAAW,GAA6B,IAAI,GAAG,CAAC;IACpD,eAAe;IACf,aAAa;IACb,MAAM;IACN,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAA+B,CAAC,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,GAAyB,IAAI,GAAG,CAAC;IAC9C,cAAc;IACd,YAAY;IACZ,MAAM;IACN,oBAAoB;IACpB,eAAe;IACf,cAAc;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAA2B,CAAC,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO;IACX,CAAC;IAED,MAAM,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,mBAAmB,SAC0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,mBAAmB,SAE/B,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { Command } from 'commander';
2
2
  import { claudeCodeHookAction } from './claude-code.js';
3
3
  import { cursorHookAction } from './cursor.js';
4
- export const sessionHooksCommand = new Command('hooks')
5
- .description('Internal session lifecycle hook handlers');
4
+ import { codexHookAction } from './codex.js';
5
+ export const sessionHooksCommand = new Command('hooks').description('Internal session lifecycle hook handlers');
6
6
  sessionHooksCommand
7
7
  .command('claude-code')
8
8
  .description('Handle Claude Code lifecycle hooks')
@@ -11,6 +11,11 @@ sessionHooksCommand
11
11
  sessionHooksCommand
12
12
  .command('cursor')
13
13
  .description('Handle Cursor lifecycle hooks')
14
- .argument('<hook-name>', 'Hook event name (same as claude-code)')
14
+ .argument('<hook-name>', 'Hook event name (sessionStart, sessionEnd, stop, beforeSubmitPrompt, subagentStart, subagentStop)')
15
15
  .action(cursorHookAction);
16
+ sessionHooksCommand
17
+ .command('codex')
18
+ .description('Handle Codex CLI lifecycle hooks')
19
+ .argument('<hook-name>', 'Hook event name (AfterAgent, AfterToolUse)')
20
+ .action(codexHookAction);
16
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACpD,WAAW,CAAC,0CAA0C,CAAC,CAAC;AAE3D,mBAAmB;KAChB,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,aAAa,EAAE,wGAAwG,CAAC;KACjI,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,mBAAmB;KAChB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,aAAa,EAAE,uCAAuC,CAAC;KAChE,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAC/D,0CAA0C,CAC7C,CAAC;AAEF,mBAAmB;KACd,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CACL,aAAa,EACb,wGAAwG,CAC3G;KACA,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAElC,mBAAmB;KACd,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CACL,aAAa,EACb,mGAAmG,CACtG;KACA,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE9B,mBAAmB;KACd,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CACL,aAAa,EACb,4CAA4C,CAC/C;KACA,MAAM,CAAC,eAAe,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/shared.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/shared.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE;;;GAGG;AACH,wBAAsB,UAAU,CAC5B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -1,6 +1,7 @@
1
1
  import { gitService } from '../../../services/git.service.js';
2
2
  import { lifecycleService } from '../../../services/lifecycle.service.js';
3
3
  import { hookLogger } from '../../../services/hook-logger.service.js';
4
+ import { readStreamPayload } from '../../../utils/stream-input.js';
4
5
  /**
5
6
  * Shared hook handler — reads payload from stdin, parses via agent adapter,
6
7
  * dispatches to the lifecycle service.
@@ -8,8 +9,9 @@ import { hookLogger } from '../../../services/hook-logger.service.js';
8
9
  export async function handleHook(agent, hookName) {
9
10
  try {
10
11
  const isRepo = await gitService.isGitRepository();
11
- if (!isRepo)
12
- return; // Fail open
12
+ if (!isRepo) {
13
+ return;
14
+ } // Fail open
13
15
  const repoRoot = (await gitService.getGitRoot()).trim();
14
16
  const rawPayload = await readStdinPayload();
15
17
  const payload = parsePayload(rawPayload);
@@ -33,39 +35,13 @@ export async function handleHook(agent, hookName) {
33
35
  }
34
36
  }
35
37
  async function readStdinPayload() {
36
- if (process.stdin.isTTY)
37
- return '';
38
- return new Promise((resolve) => {
39
- let data = '';
40
- let settled = false;
41
- const noDataTimer = setTimeout(() => finish(''), 750);
42
- const brokenStreamTimer = setTimeout(() => finish(data), 5000);
43
- const finish = (value) => {
44
- if (settled)
45
- return;
46
- settled = true;
47
- clearTimeout(noDataTimer);
48
- clearTimeout(brokenStreamTimer);
49
- process.stdin.removeAllListeners('data');
50
- process.stdin.removeAllListeners('end');
51
- process.stdin.removeAllListeners('error');
52
- process.stdin.pause();
53
- resolve(value);
54
- };
55
- process.stdin.setEncoding('utf-8');
56
- process.stdin.on('data', (chunk) => {
57
- data += chunk;
58
- clearTimeout(noDataTimer);
59
- });
60
- process.stdin.on('end', () => finish(data));
61
- process.stdin.on('error', () => finish(data));
62
- process.stdin.resume();
63
- });
38
+ return readStreamPayload(process.stdin);
64
39
  }
65
40
  function parsePayload(raw) {
66
41
  const trimmed = raw.trim();
67
- if (!trimmed)
42
+ if (!trimmed) {
68
43
  return {};
44
+ }
69
45
  try {
70
46
  return JSON.parse(trimmed);
71
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/commands/memory/session-hooks/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,KAAmB,EACnB,QAAgB;IAEhB,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO;QACX,CAAC,CAAC,YAAY;QAEd,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,MAAM,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE;gBAChD,KAAK,EAAE,KAAK,CAAC,SAAS;gBACtB,IAAI,EAAE,QAAQ;aACjB,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,MAAM,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,gDAAgD;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACvC,MAAM,OAAO,GACT,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC3B,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;AACL,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Installs Codex session tracking hooks into ~/.codex/config.toml.
3
+ *
4
+ * Codex uses TOML [[hooks]] arrays:
5
+ * [[hooks]]
6
+ * event = "AfterAgent"
7
+ * command = "kodus decisions hooks codex AfterAgent"
8
+ *
9
+ * Currently only AfterAgent is useful (maps to TurnEnd).
10
+ */
11
+ export declare function installCodexSessionHooks(configPath: string): Promise<{
12
+ configPath: string;
13
+ changed: boolean;
14
+ }>;
15
+ export declare function removeCodexSessionHooks(configPath: string): Promise<{
16
+ configPath: string;
17
+ removed: boolean;
18
+ }>;
19
+ //# sourceMappingURL=session-hooks-install-codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-hooks-install-codex.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/session-hooks-install-codex.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC1C,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAgCnD;AAED,wBAAsB,uBAAuB,CACzC,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAgDnD"}
@@ -0,0 +1,91 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ const SESSION_HOOK_MARKER = 'kodus decisions hooks codex';
4
+ /**
5
+ * Installs Codex session tracking hooks into ~/.codex/config.toml.
6
+ *
7
+ * Codex uses TOML [[hooks]] arrays:
8
+ * [[hooks]]
9
+ * event = "AfterAgent"
10
+ * command = "kodus decisions hooks codex AfterAgent"
11
+ *
12
+ * Currently only AfterAgent is useful (maps to TurnEnd).
13
+ */
14
+ export async function installCodexSessionHooks(configPath) {
15
+ let content = '';
16
+ try {
17
+ content = await fs.readFile(configPath, 'utf-8');
18
+ }
19
+ catch (error) {
20
+ if (error.code !== 'ENOENT') {
21
+ throw error;
22
+ }
23
+ }
24
+ // Check if already installed
25
+ if (content.includes(SESSION_HOOK_MARKER)) {
26
+ return { configPath, changed: false };
27
+ }
28
+ const hookBlock = [
29
+ '',
30
+ '[[hooks]]',
31
+ 'event = "AfterAgent"',
32
+ `command = "${SESSION_HOOK_MARKER} AfterAgent"`,
33
+ '',
34
+ ].join('\n');
35
+ const nextContent = content.trim().length === 0
36
+ ? hookBlock.trim() + '\n'
37
+ : content.replace(/\s*$/, '') + '\n' + hookBlock;
38
+ await fs.mkdir(path.dirname(configPath), { recursive: true });
39
+ await fs.writeFile(configPath, nextContent, 'utf-8');
40
+ return { configPath, changed: true };
41
+ }
42
+ export async function removeCodexSessionHooks(configPath) {
43
+ let content;
44
+ try {
45
+ content = await fs.readFile(configPath, 'utf-8');
46
+ }
47
+ catch {
48
+ return { configPath, removed: false };
49
+ }
50
+ if (!content.includes(SESSION_HOOK_MARKER)) {
51
+ return { configPath, removed: false };
52
+ }
53
+ // Remove [[hooks]] blocks that contain our marker command.
54
+ // A hook block starts with [[hooks]] and ends before the next
55
+ // [[something]] or end of file.
56
+ const lines = content.split('\n');
57
+ const resultLines = [];
58
+ let i = 0;
59
+ while (i < lines.length) {
60
+ const line = lines[i];
61
+ if (line.trim() === '[[hooks]]') {
62
+ // Peek ahead — if this block contains our marker, skip it
63
+ const blockLines = getTomlBlock(lines, i);
64
+ if (blockLines.some((l) => l.includes(SESSION_HOOK_MARKER))) {
65
+ i += blockLines.length;
66
+ continue;
67
+ }
68
+ }
69
+ resultLines.push(line);
70
+ i++;
71
+ }
72
+ const nextContent = resultLines
73
+ .join('\n')
74
+ .replace(/\n{3,}/g, '\n\n')
75
+ .replace(/^\n+/, '')
76
+ .replace(/\n*$/, '\n');
77
+ await fs.writeFile(configPath, nextContent === '\n' ? '' : nextContent, 'utf-8');
78
+ return { configPath, removed: true };
79
+ }
80
+ function getTomlBlock(lines, startIndex) {
81
+ const block = [lines[startIndex]];
82
+ for (let i = startIndex + 1; i < lines.length; i++) {
83
+ const trimmed = lines[i].trim();
84
+ if (trimmed.startsWith('[[') || trimmed.startsWith('[')) {
85
+ break;
86
+ }
87
+ block.push(lines[i]);
88
+ }
89
+ return block;
90
+ }
91
+ //# sourceMappingURL=session-hooks-install-codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-hooks-install-codex.js","sourceRoot":"","sources":["../../../src/commands/memory/session-hooks-install-codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function installCursorSessionHooks(repoRoot: string): Promise<{
2
+ settingsPath: string;
3
+ changed: boolean;
4
+ }>;
5
+ export declare function removeCursorSessionHooks(repoRoot: string): Promise<{
6
+ settingsPath: string;
7
+ removed: boolean;
8
+ }>;
9
+ //# sourceMappingURL=session-hooks-install-cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-hooks-install-cursor.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/session-hooks-install-cursor.ts"],"names":[],"mappings":"AAsFA,wBAAsB,yBAAyB,CAC3C,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAoCrD;AAED,wBAAsB,wBAAwB,CAC1C,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAiDrD"}
@@ -0,0 +1,119 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ const SESSIONS_HOOK_PREFIX = 'kodus decisions hooks cursor';
4
+ function isRecord(value) {
5
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
6
+ }
7
+ function isSessionsHookCommand(command) {
8
+ return command.includes('kodus decisions hooks');
9
+ }
10
+ async function readCursorHooksConfig(filePath) {
11
+ try {
12
+ const content = await fs.readFile(filePath, 'utf-8');
13
+ const parsed = JSON.parse(content);
14
+ if (!isRecord(parsed)) {
15
+ return { version: 1, hooks: {} };
16
+ }
17
+ const rawHooks = isRecord(parsed.hooks) ? parsed.hooks : {};
18
+ // Validate that each hook value is an array of objects with `command`
19
+ const hooks = {};
20
+ for (const [key, value] of Object.entries(rawHooks)) {
21
+ if (Array.isArray(value)) {
22
+ hooks[key] = value.filter((e) => isRecord(e) && typeof e.command === 'string');
23
+ }
24
+ }
25
+ return {
26
+ version: typeof parsed.version === 'number' ? parsed.version : 1,
27
+ hooks,
28
+ };
29
+ }
30
+ catch (error) {
31
+ if (error.code === 'ENOENT') {
32
+ return { version: 1, hooks: {} };
33
+ }
34
+ // Malformed JSON — start fresh rather than crashing
35
+ if (error instanceof SyntaxError) {
36
+ return { version: 1, hooks: {} };
37
+ }
38
+ throw error;
39
+ }
40
+ }
41
+ function upsertHook(hooks, eventName, command) {
42
+ const entries = hooks[eventName] ?? [];
43
+ hooks[eventName] = entries;
44
+ // Check if exact command already exists
45
+ if (entries.some((e) => e.command === command)) {
46
+ return false;
47
+ }
48
+ // Replace existing kodus sessions hook if present
49
+ for (const entry of entries) {
50
+ if (isSessionsHookCommand(entry.command)) {
51
+ entry.command = command;
52
+ return true;
53
+ }
54
+ }
55
+ entries.push({ command });
56
+ return true;
57
+ }
58
+ export async function installCursorSessionHooks(repoRoot) {
59
+ const settingsPath = path.join(repoRoot, '.cursor', 'hooks.json');
60
+ const config = await readCursorHooksConfig(settingsPath);
61
+ const cmd = (hookEvent) => `${SESSIONS_HOOK_PREFIX} ${hookEvent}`;
62
+ let changed = false;
63
+ changed =
64
+ upsertHook(config.hooks, 'sessionStart', cmd('sessionStart')) ||
65
+ changed;
66
+ changed =
67
+ upsertHook(config.hooks, 'sessionEnd', cmd('sessionEnd')) || changed;
68
+ changed = upsertHook(config.hooks, 'stop', cmd('stop')) || changed;
69
+ changed =
70
+ upsertHook(config.hooks, 'beforeSubmitPrompt', cmd('beforeSubmitPrompt')) || changed;
71
+ changed =
72
+ upsertHook(config.hooks, 'subagentStart', cmd('subagentStart')) ||
73
+ changed;
74
+ changed =
75
+ upsertHook(config.hooks, 'subagentStop', cmd('subagentStop')) ||
76
+ changed;
77
+ if (changed) {
78
+ await fs.mkdir(path.dirname(settingsPath), { recursive: true });
79
+ await fs.writeFile(settingsPath, `${JSON.stringify(config, null, 2)}\n`, 'utf-8');
80
+ }
81
+ return { settingsPath, changed };
82
+ }
83
+ export async function removeCursorSessionHooks(repoRoot) {
84
+ const settingsPath = path.join(repoRoot, '.cursor', 'hooks.json');
85
+ let config;
86
+ try {
87
+ config = await readCursorHooksConfig(settingsPath);
88
+ }
89
+ catch {
90
+ return { settingsPath, removed: false };
91
+ }
92
+ let removed = false;
93
+ for (const eventName of Object.keys(config.hooks)) {
94
+ const entries = config.hooks[eventName];
95
+ if (!Array.isArray(entries)) {
96
+ continue;
97
+ }
98
+ const filtered = entries.filter((e) => !isSessionsHookCommand(e.command));
99
+ if (filtered.length < entries.length) {
100
+ removed = true;
101
+ }
102
+ if (filtered.length === 0) {
103
+ delete config.hooks[eventName];
104
+ }
105
+ else {
106
+ config.hooks[eventName] = filtered;
107
+ }
108
+ }
109
+ if (removed) {
110
+ if (Object.keys(config.hooks).length === 0) {
111
+ await fs.writeFile(settingsPath, JSON.stringify({ version: 1, hooks: {} }, null, 2) + '\n', 'utf-8');
112
+ }
113
+ else {
114
+ await fs.writeFile(settingsPath, `${JSON.stringify(config, null, 2)}\n`, 'utf-8');
115
+ }
116
+ }
117
+ return { settingsPath, removed };
118
+ }
119
+ //# sourceMappingURL=session-hooks-install-cursor.js.map