gencode-ai 0.1.2 → 0.2.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 (180) hide show
  1. package/README.md +15 -17
  2. package/dist/agent/agent.d.ts +43 -0
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.js +107 -4
  5. package/dist/agent/agent.js.map +1 -1
  6. package/dist/agent/index.d.ts +1 -0
  7. package/dist/agent/index.d.ts.map +1 -1
  8. package/dist/agent/types.d.ts +20 -1
  9. package/dist/agent/types.d.ts.map +1 -1
  10. package/dist/checkpointing/checkpoint-manager.d.ts +87 -0
  11. package/dist/checkpointing/checkpoint-manager.d.ts.map +1 -0
  12. package/dist/checkpointing/checkpoint-manager.js +281 -0
  13. package/dist/checkpointing/checkpoint-manager.js.map +1 -0
  14. package/dist/checkpointing/index.d.ts +29 -0
  15. package/dist/checkpointing/index.d.ts.map +1 -0
  16. package/dist/checkpointing/index.js +29 -0
  17. package/dist/checkpointing/index.js.map +1 -0
  18. package/dist/checkpointing/types.d.ts +98 -0
  19. package/dist/checkpointing/types.d.ts.map +1 -0
  20. package/dist/checkpointing/types.js +7 -0
  21. package/dist/checkpointing/types.js.map +1 -0
  22. package/dist/cli/components/App.d.ts.map +1 -1
  23. package/dist/cli/components/App.js +193 -7
  24. package/dist/cli/components/App.js.map +1 -1
  25. package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
  26. package/dist/cli/components/CommandSuggestions.js +5 -0
  27. package/dist/cli/components/CommandSuggestions.js.map +1 -1
  28. package/dist/cli/components/Messages.d.ts +7 -1
  29. package/dist/cli/components/Messages.d.ts.map +1 -1
  30. package/dist/cli/components/Messages.js +28 -2
  31. package/dist/cli/components/Messages.js.map +1 -1
  32. package/dist/cli/components/ModeIndicator.d.ts +42 -0
  33. package/dist/cli/components/ModeIndicator.d.ts.map +1 -0
  34. package/dist/cli/components/ModeIndicator.js +52 -0
  35. package/dist/cli/components/ModeIndicator.js.map +1 -0
  36. package/dist/cli/components/PlanApproval.d.ts +36 -0
  37. package/dist/cli/components/PlanApproval.d.ts.map +1 -0
  38. package/dist/cli/components/PlanApproval.js +154 -0
  39. package/dist/cli/components/PlanApproval.js.map +1 -0
  40. package/dist/cli/components/QuestionPrompt.d.ts +23 -0
  41. package/dist/cli/components/QuestionPrompt.d.ts.map +1 -0
  42. package/dist/cli/components/QuestionPrompt.js +231 -0
  43. package/dist/cli/components/QuestionPrompt.js.map +1 -0
  44. package/dist/cli/components/index.d.ts +1 -0
  45. package/dist/cli/components/index.d.ts.map +1 -1
  46. package/dist/cli/components/index.js +1 -0
  47. package/dist/cli/components/index.js.map +1 -1
  48. package/dist/cli/components/theme.d.ts +9 -0
  49. package/dist/cli/components/theme.d.ts.map +1 -1
  50. package/dist/cli/components/theme.js +14 -1
  51. package/dist/cli/components/theme.js.map +1 -1
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +2 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/permissions/types.d.ts.map +1 -1
  57. package/dist/permissions/types.js +2 -0
  58. package/dist/permissions/types.js.map +1 -1
  59. package/dist/planning/index.d.ts +13 -0
  60. package/dist/planning/index.d.ts.map +1 -0
  61. package/dist/planning/index.js +15 -0
  62. package/dist/planning/index.js.map +1 -0
  63. package/dist/planning/plan-file.d.ts +59 -0
  64. package/dist/planning/plan-file.d.ts.map +1 -0
  65. package/dist/planning/plan-file.js +278 -0
  66. package/dist/planning/plan-file.js.map +1 -0
  67. package/dist/planning/state.d.ts +127 -0
  68. package/dist/planning/state.d.ts.map +1 -0
  69. package/dist/planning/state.js +261 -0
  70. package/dist/planning/state.js.map +1 -0
  71. package/dist/planning/tools/enter-plan-mode.d.ts +25 -0
  72. package/dist/planning/tools/enter-plan-mode.d.ts.map +1 -0
  73. package/dist/planning/tools/enter-plan-mode.js +98 -0
  74. package/dist/planning/tools/enter-plan-mode.js.map +1 -0
  75. package/dist/planning/tools/exit-plan-mode.d.ts +24 -0
  76. package/dist/planning/tools/exit-plan-mode.d.ts.map +1 -0
  77. package/dist/planning/tools/exit-plan-mode.js +149 -0
  78. package/dist/planning/tools/exit-plan-mode.js.map +1 -0
  79. package/dist/planning/types.d.ts +100 -0
  80. package/dist/planning/types.d.ts.map +1 -0
  81. package/dist/planning/types.js +28 -0
  82. package/dist/planning/types.js.map +1 -0
  83. package/dist/pricing/calculator.d.ts +21 -0
  84. package/dist/pricing/calculator.d.ts.map +1 -0
  85. package/dist/pricing/calculator.js +59 -0
  86. package/dist/pricing/calculator.js.map +1 -0
  87. package/dist/pricing/index.d.ts +7 -0
  88. package/dist/pricing/index.d.ts.map +1 -0
  89. package/dist/pricing/index.js +7 -0
  90. package/dist/pricing/index.js.map +1 -0
  91. package/dist/pricing/models.d.ts +20 -0
  92. package/dist/pricing/models.d.ts.map +1 -0
  93. package/dist/pricing/models.js +322 -0
  94. package/dist/pricing/models.js.map +1 -0
  95. package/dist/pricing/types.d.ts +30 -0
  96. package/dist/pricing/types.d.ts.map +1 -0
  97. package/dist/pricing/types.js +5 -0
  98. package/dist/pricing/types.js.map +1 -0
  99. package/dist/providers/anthropic.d.ts.map +1 -1
  100. package/dist/providers/anthropic.js +17 -10
  101. package/dist/providers/anthropic.js.map +1 -1
  102. package/dist/providers/gemini.d.ts.map +1 -1
  103. package/dist/providers/gemini.js +21 -14
  104. package/dist/providers/gemini.js.map +1 -1
  105. package/dist/providers/openai.d.ts.map +1 -1
  106. package/dist/providers/openai.js +12 -8
  107. package/dist/providers/openai.js.map +1 -1
  108. package/dist/providers/types.d.ts +2 -0
  109. package/dist/providers/types.d.ts.map +1 -1
  110. package/dist/providers/vertex-ai.d.ts.map +1 -1
  111. package/dist/providers/vertex-ai.js +17 -10
  112. package/dist/providers/vertex-ai.js.map +1 -1
  113. package/dist/session/manager.d.ts +4 -0
  114. package/dist/session/manager.d.ts.map +1 -1
  115. package/dist/session/manager.js +8 -0
  116. package/dist/session/manager.js.map +1 -1
  117. package/dist/tools/builtin/ask-user.d.ts +64 -0
  118. package/dist/tools/builtin/ask-user.d.ts.map +1 -0
  119. package/dist/tools/builtin/ask-user.js +148 -0
  120. package/dist/tools/builtin/ask-user.js.map +1 -0
  121. package/dist/tools/index.d.ts +19 -1
  122. package/dist/tools/index.d.ts.map +1 -1
  123. package/dist/tools/index.js +11 -0
  124. package/dist/tools/index.js.map +1 -1
  125. package/dist/tools/registry.d.ts +13 -0
  126. package/dist/tools/registry.d.ts.map +1 -1
  127. package/dist/tools/registry.js +79 -2
  128. package/dist/tools/registry.js.map +1 -1
  129. package/dist/tools/types.d.ts +17 -0
  130. package/dist/tools/types.d.ts.map +1 -1
  131. package/dist/tools/types.js.map +1 -1
  132. package/docs/cost-tracking-comparison.md +904 -0
  133. package/docs/operating-modes.md +96 -0
  134. package/docs/proposals/0012-ask-user-question.md +66 -1
  135. package/docs/proposals/0025-cost-tracking.md +60 -2
  136. package/docs/proposals/README.md +2 -2
  137. package/examples/test-ask-user.ts +167 -0
  138. package/examples/test-checkpointing.ts +121 -0
  139. package/examples/test-cost-tracking.ts +77 -0
  140. package/examples/test-interrupt-cleanup.ts +94 -0
  141. package/package.json +1 -1
  142. package/src/agent/agent.ts +130 -4
  143. package/src/agent/index.ts +1 -0
  144. package/src/agent/types.ts +19 -1
  145. package/src/checkpointing/checkpoint-manager.ts +327 -0
  146. package/src/checkpointing/index.ts +45 -0
  147. package/src/checkpointing/types.ts +104 -0
  148. package/src/cli/components/App.tsx +259 -8
  149. package/src/cli/components/CommandSuggestions.tsx +5 -0
  150. package/src/cli/components/Messages.tsx +66 -4
  151. package/src/cli/components/ModeIndicator.tsx +174 -0
  152. package/src/cli/components/PlanApproval.tsx +327 -0
  153. package/src/cli/components/QuestionPrompt.tsx +462 -0
  154. package/src/cli/components/index.ts +1 -0
  155. package/src/cli/components/theme.ts +14 -1
  156. package/src/index.ts +15 -0
  157. package/src/permissions/types.ts +2 -0
  158. package/src/planning/index.ts +53 -0
  159. package/src/planning/plan-file.ts +326 -0
  160. package/src/planning/state.ts +305 -0
  161. package/src/planning/tools/enter-plan-mode.ts +111 -0
  162. package/src/planning/tools/exit-plan-mode.ts +170 -0
  163. package/src/planning/types.ts +150 -0
  164. package/src/pricing/calculator.ts +71 -0
  165. package/src/pricing/index.ts +7 -0
  166. package/src/pricing/models.ts +334 -0
  167. package/src/pricing/types.ts +32 -0
  168. package/src/prompts/system/base.txt +42 -0
  169. package/src/prompts/tools/ask-user.txt +110 -0
  170. package/src/providers/anthropic.ts +21 -10
  171. package/src/providers/gemini.ts +25 -14
  172. package/src/providers/openai.ts +17 -8
  173. package/src/providers/types.ts +3 -0
  174. package/src/providers/vertex-ai.ts +21 -10
  175. package/src/session/manager.ts +9 -0
  176. package/src/tools/builtin/ask-user.ts +185 -0
  177. package/src/tools/index.ts +23 -0
  178. package/src/tools/registry.ts +95 -2
  179. package/src/tools/types.ts +18 -0
  180. package/.gencode/settings.local.json +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -31,6 +31,15 @@ export declare const icons: {
31
31
  cursor: string;
32
32
  radio: string;
33
33
  radioEmpty: string;
34
+ checkbox: string;
35
+ checkboxEmpty: string;
36
+ chipLeft: string;
37
+ chipRight: string;
38
+ boxTop: string;
39
+ boxBottom: string;
40
+ boxVertical: string;
34
41
  treeEnd: string;
42
+ modePlan: string;
43
+ modeAccept: string;
35
44
  };
36
45
  //# sourceMappingURL=theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAclB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;CAuBjB,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAclB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjB,CAAC"}
@@ -34,10 +34,23 @@ export const icons = {
34
34
  // UI
35
35
  thinking: '✱', // Star for thinking state
36
36
  cursor: '▋',
37
- // Selection
37
+ // Selection (single-select)
38
38
  radio: '●', // Filled radio for selected
39
39
  radioEmpty: '○', // Empty radio for unselected
40
+ // Selection (multi-select)
41
+ checkbox: '☑', // Checked checkbox
42
+ checkboxEmpty: '☐', // Empty checkbox
43
+ // Chip/tag borders (Claude Code style headers)
44
+ chipLeft: '╭─',
45
+ chipRight: '─╮',
46
+ // Box drawing
47
+ boxTop: '╭',
48
+ boxBottom: '╰',
49
+ boxVertical: '│',
40
50
  // Tree connectors
41
51
  treeEnd: '└', // Tree end connector for tool results
52
+ // Mode indicators
53
+ modePlan: '⏸', // Pause for plan mode
54
+ modeAccept: '⏵⏵', // Double play for accept mode
42
55
  };
43
56
  //# sourceMappingURL=theme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS,EAAE,aAAa;IAC/B,UAAU,EAAE,SAAS,EAAE,aAAa;IACpC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,OAAO,EAAE,SAAS,EAAE,YAAY;IAChC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,IAAI,EAAE,SAAS,EAAE,WAAW;IAC5B,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,aAAa,EAAE,SAAS,EAAE,YAAY;IACtC,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,IAAI,EAAE,SAAS,EAAE,aAAa;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,OAAO,EAAE,SAAS,EAAE,8CAA8C;CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,GAAG,EAAE,yBAAyB;IAC1C,SAAS,EAAE,GAAG,EAAE,8BAA8B;IAC9C,SAAS;IACT,MAAM,EAAE,GAAG;IACX,SAAS;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,QAAQ;IACR,IAAI,EAAE,GAAG,EAAE,sBAAsB;IACjC,KAAK,EAAE,GAAG,EAAE,8CAA8C;IAC1D,KAAK,EAAE,GAAG;IACV,KAAK;IACL,QAAQ,EAAE,GAAG,EAAE,0BAA0B;IACzC,MAAM,EAAE,GAAG;IACX,YAAY;IACZ,KAAK,EAAE,GAAG,EAAE,4BAA4B;IACxC,UAAU,EAAE,GAAG,EAAE,6BAA6B;IAC9C,kBAAkB;IAClB,OAAO,EAAE,GAAG,EAAE,sCAAsC;CACrD,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/cli/components/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS,EAAE,aAAa;IAC/B,UAAU,EAAE,SAAS,EAAE,aAAa;IACpC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,OAAO,EAAE,SAAS,EAAE,YAAY;IAChC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,IAAI,EAAE,SAAS,EAAE,WAAW;IAC5B,IAAI,EAAE,SAAS,EAAE,YAAY;IAC7B,aAAa,EAAE,SAAS,EAAE,YAAY;IACtC,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,IAAI,EAAE,SAAS,EAAE,aAAa;IAC9B,SAAS,EAAE,SAAS,EAAE,YAAY;IAClC,OAAO,EAAE,SAAS,EAAE,8CAA8C;CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,uCAAuC;IACvC,UAAU,EAAE,GAAG,EAAE,yBAAyB;IAC1C,SAAS,EAAE,GAAG,EAAE,8BAA8B;IAC9C,SAAS;IACT,MAAM,EAAE,GAAG;IACX,SAAS;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,QAAQ;IACR,IAAI,EAAE,GAAG,EAAE,sBAAsB;IACjC,KAAK,EAAE,GAAG,EAAE,8CAA8C;IAC1D,KAAK,EAAE,GAAG;IACV,KAAK;IACL,QAAQ,EAAE,GAAG,EAAE,0BAA0B;IACzC,MAAM,EAAE,GAAG;IACX,4BAA4B;IAC5B,KAAK,EAAE,GAAG,EAAE,4BAA4B;IACxC,UAAU,EAAE,GAAG,EAAE,6BAA6B;IAC9C,2BAA2B;IAC3B,QAAQ,EAAE,GAAG,EAAE,mBAAmB;IAClC,aAAa,EAAE,GAAG,EAAE,iBAAiB;IACrC,+CAA+C;IAC/C,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,cAAc;IACd,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,GAAG;IAChB,kBAAkB;IAClB,OAAO,EAAE,GAAG,EAAE,sCAAsC;IACpD,kBAAkB;IAClB,QAAQ,EAAE,GAAG,EAAE,sBAAsB;IACrC,UAAU,EAAE,IAAI,EAAE,8BAA8B;CACjD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -9,4 +9,5 @@ export { type Tool, type ToolContext, type ToolResult as ToolExecutionResult, To
9
9
  export { type PermissionMode, type PermissionRule, type PermissionConfig, type ConfirmCallback, PermissionManager, DEFAULT_PERMISSION_CONFIG, } from './permissions/index.js';
10
10
  export { type AgentConfig, type AgentEvent, type AgentEventText, type AgentEventToolStart, type AgentEventToolResult, type AgentEventError, type AgentEventDone, Agent, } from './agent/index.js';
11
11
  export { type Session, type SessionMetadata, type SessionListItem, type SessionConfig, SessionManager, DEFAULT_SESSION_CONFIG, } from './session/index.js';
12
+ export { type ChangeType, type FileCheckpoint, type CheckpointSession, type RewindOptions, type RewindResult, type CheckpointSummary, type RecordChangeInput, CheckpointManager, getCheckpointManager, initCheckpointManager, resetCheckpointManager, } from './checkpointing/index.js';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEd,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,UAAU,IAAI,mBAAmB,EACtC,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,GACN,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEd,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,UAAU,IAAI,mBAAmB,EACtC,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,GACN,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -18,4 +18,6 @@ export { PermissionManager, DEFAULT_PERMISSION_CONFIG, } from './permissions/ind
18
18
  export { Agent, } from './agent/index.js';
19
19
  // Session
20
20
  export { SessionManager, DEFAULT_SESSION_CONFIG, } from './session/index.js';
21
+ // Checkpointing
22
+ export { CheckpointManager, getCheckpointManager, initCheckpointManager, resetCheckpointManager, } from './checkpointing/index.js';
21
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY;AACZ,OAAO;AAqBL,YAAY;AACZ,cAAc,EACd,iBAAiB,EACjB,cAAc;AACd,UAAU;AACV,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,QAAQ;AACR,OAAO,EAIL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EAKL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,QAAQ;AACR,OAAO,EAQL,KAAK,GACN,MAAM,kBAAkB,CAAC;AAE1B,UAAU;AACV,OAAO,EAKL,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY;AACZ,OAAO;AAqBL,YAAY;AACZ,cAAc,EACd,iBAAiB,EACjB,cAAc;AACd,UAAU;AACV,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,QAAQ;AACR,OAAO,EAIL,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EAKL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,QAAQ;AACR,OAAO,EAQL,KAAK,GACN,MAAM,kBAAkB,CAAC;AAE1B,UAAU;AACV,OAAO,EAKL,cAAc,EACd,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,gBAAgB;AAChB,OAAO,EAQL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,8 @@ export const DEFAULT_PERMISSION_CONFIG = {
22
22
  { tool: 'LSP', mode: 'auto', description: 'Language server' },
23
23
  // Internal state management - auto-approve (no side effects)
24
24
  { tool: 'TodoWrite', mode: 'auto', description: 'Task tracking' },
25
+ // User interaction - auto-approve (asking user questions, not dangerous)
26
+ { tool: 'AskUserQuestion', mode: 'auto', description: 'User questioning' },
25
27
  ],
26
28
  allowedPrompts: [],
27
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6MH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE;QACL,wDAAwD;QACxD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;QAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;QAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;QAC7D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE;QAC7D,6DAA6D;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;KAClE;IACD,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAyB;IACvD;QACE,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,GAAG;KACd;IACD;QACE,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,GAAG;KACd;IACD;QACE,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,GAAG;KACd;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6MH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE;QACL,wDAAwD;QACxD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;QAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;QAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;QAC7D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE;QAC7D,6DAA6D;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE;QACjE,yEAAyE;QACzE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;KAC3E;IACD,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAyB;IACvD;QACE,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,GAAG;KACd;IACD;QACE,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,GAAG;KACd;IACD;QACE,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,GAAG;KACd;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Planning Module
3
+ *
4
+ * Plan Mode for GenCode - allows the LLM to design implementation
5
+ * approaches before writing code, with read-only exploration tools.
6
+ */
7
+ export type { PlanPhase, PlanApprovalOption, AllowedPrompt, PlanModeState, PlanFile, PlanModeAllowedTool, PlanModeBlockedTool, ModeType, PlanApprovalState, PlanModeEvent, } from './types.js';
8
+ export { PLAN_MODE_ALLOWED_TOOLS, PLAN_MODE_BLOCKED_TOOLS } from './types.js';
9
+ export { PlanModeManager, getPlanModeManager, resetPlanModeManager, isPlanModeActive, getCurrentMode, enterPlanMode, exitPlanMode, togglePlanMode, } from './state.js';
10
+ export { generatePlanFileName, getPlansDir, ensurePlansDir, createPlanFile, readPlanFile, writePlanFile, listPlanFiles, deletePlanFile, parseFilesToChange, parsePreApprovedPermissions, getDisplayPath, } from './plan-file.js';
11
+ export { enterPlanModeTool } from './tools/enter-plan-mode.js';
12
+ export { exitPlanModeTool } from './tools/exit-plan-mode.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,EACR,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Planning Module
3
+ *
4
+ * Plan Mode for GenCode - allows the LLM to design implementation
5
+ * approaches before writing code, with read-only exploration tools.
6
+ */
7
+ export { PLAN_MODE_ALLOWED_TOOLS, PLAN_MODE_BLOCKED_TOOLS } from './types.js';
8
+ // State Management
9
+ export { PlanModeManager, getPlanModeManager, resetPlanModeManager, isPlanModeActive, getCurrentMode, enterPlanMode, exitPlanMode, togglePlanMode, } from './state.js';
10
+ // Plan File Utilities
11
+ export { generatePlanFileName, getPlansDir, ensurePlansDir, createPlanFile, readPlanFile, writePlanFile, listPlanFiles, deletePlanFile, parseFilesToChange, parsePreApprovedPermissions, getDisplayPath, } from './plan-file.js';
12
+ // Tools
13
+ export { enterPlanModeTool } from './tools/enter-plan-mode.js';
14
+ export { exitPlanModeTool } from './tools/exit-plan-mode.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE9E,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,sBAAsB;AACtB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,QAAQ;AACR,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Plan File Utilities
3
+ *
4
+ * Manages plan files stored in .gencode/plans/ directory.
5
+ * Generates unique filenames with timestamps and slugs.
6
+ */
7
+ import type { PlanFile } from './types.js';
8
+ /**
9
+ * Generate plan file name
10
+ * Format: <memorable-name>.md (like Claude Code)
11
+ */
12
+ export declare function generatePlanFileName(taskDescription?: string): string;
13
+ /**
14
+ * Get the plans directory path for a project
15
+ */
16
+ export declare function getPlansDir(cwd: string): string;
17
+ /**
18
+ * Ensure the plans directory exists
19
+ */
20
+ export declare function ensurePlansDir(cwd: string): Promise<string>;
21
+ /**
22
+ * Create a new plan file
23
+ */
24
+ export declare function createPlanFile(cwd: string, taskDescription?: string): Promise<PlanFile>;
25
+ /**
26
+ * Read a plan file
27
+ */
28
+ export declare function readPlanFile(filePath: string): Promise<PlanFile | null>;
29
+ /**
30
+ * Write to a plan file
31
+ */
32
+ export declare function writePlanFile(filePath: string, content: string): Promise<void>;
33
+ /**
34
+ * List all plan files in the project
35
+ */
36
+ export declare function listPlanFiles(cwd: string): Promise<PlanFile[]>;
37
+ /**
38
+ * Delete a plan file
39
+ */
40
+ export declare function deletePlanFile(filePath: string): Promise<boolean>;
41
+ /**
42
+ * Extract files to change from plan content
43
+ */
44
+ export declare function parseFilesToChange(content: string): Array<{
45
+ path: string;
46
+ action: 'create' | 'modify' | 'delete';
47
+ }>;
48
+ /**
49
+ * Extract pre-approved permissions from plan content
50
+ */
51
+ export declare function parsePreApprovedPermissions(content: string): Array<{
52
+ tool: 'Bash';
53
+ prompt: string;
54
+ }>;
55
+ /**
56
+ * Get relative path for display
57
+ */
58
+ export declare function getDisplayPath(fullPath: string, cwd: string): string;
59
+ //# sourceMappingURL=plan-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-file.d.ts","sourceRoot":"","sources":["../../src/planning/plan-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmD3C;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAIrE;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjE;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,CAAC,CA0CnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAc7E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA4BpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,CAAC,CAuCjE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BpG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAapE"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Plan File Utilities
3
+ *
4
+ * Manages plan files stored in .gencode/plans/ directory.
5
+ * Generates unique filenames with timestamps and slugs.
6
+ */
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import { existsSync } from 'fs';
10
+ // ============================================================================
11
+ // Constants
12
+ // ============================================================================
13
+ const PLANS_DIR = '.gencode/plans';
14
+ const PLAN_FILE_EXTENSION = '.md';
15
+ // Word lists for generating memorable names (like Claude Code)
16
+ const ADJECTIVES = [
17
+ 'agile', 'bold', 'calm', 'deft', 'eager', 'fair', 'glad', 'humble',
18
+ 'ideal', 'jolly', 'keen', 'lively', 'merry', 'noble', 'polite', 'quiet',
19
+ 'rapid', 'smart', 'tidy', 'unique', 'vivid', 'warm', 'zealous', 'bright',
20
+ 'clear', 'crisp', 'fresh', 'golden', 'happy', 'lovely', 'neat', 'proud',
21
+ ];
22
+ const NOUNS = [
23
+ 'alpine', 'beacon', 'cipher', 'delta', 'ember', 'falcon', 'glacier', 'harbor',
24
+ 'island', 'jasper', 'kayak', 'lantern', 'marble', 'nebula', 'oracle', 'prism',
25
+ 'quartz', 'rapids', 'summit', 'timber', 'unity', 'vertex', 'willow', 'zenith',
26
+ 'arrow', 'bridge', 'canyon', 'dawn', 'echo', 'forest', 'grove', 'hollow',
27
+ ];
28
+ // ============================================================================
29
+ // Name Generation
30
+ // ============================================================================
31
+ /**
32
+ * Generate a memorable plan name (adjective-noun)
33
+ * Example: "agile-beacon", "bold-cipher"
34
+ */
35
+ function generateMemorableName() {
36
+ const adjective = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
37
+ const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
38
+ return `${adjective}-${noun}`;
39
+ }
40
+ /**
41
+ * Generate a slug from text (for task-specific naming)
42
+ */
43
+ function generateSlug(text) {
44
+ return text
45
+ .toLowerCase()
46
+ .replace(/[^a-z0-9\s-]/g, '') // Remove special chars
47
+ .replace(/\s+/g, '-') // Replace spaces with dashes
48
+ .replace(/-+/g, '-') // Collapse multiple dashes
49
+ .slice(0, 30) // Limit length
50
+ .replace(/^-|-$/g, ''); // Trim dashes from ends
51
+ }
52
+ /**
53
+ * Generate plan file name
54
+ * Format: <memorable-name>.md (like Claude Code)
55
+ */
56
+ export function generatePlanFileName(taskDescription) {
57
+ // Use memorable name like Claude Code (melodic-humming-lampson)
58
+ const name = generateMemorableName();
59
+ return `${name}${PLAN_FILE_EXTENSION}`;
60
+ }
61
+ // ============================================================================
62
+ // Directory Management
63
+ // ============================================================================
64
+ /**
65
+ * Get the plans directory path for a project
66
+ */
67
+ export function getPlansDir(cwd) {
68
+ return path.join(cwd, PLANS_DIR);
69
+ }
70
+ /**
71
+ * Ensure the plans directory exists
72
+ */
73
+ export async function ensurePlansDir(cwd) {
74
+ const plansDir = getPlansDir(cwd);
75
+ if (!existsSync(plansDir)) {
76
+ await fs.mkdir(plansDir, { recursive: true });
77
+ }
78
+ return plansDir;
79
+ }
80
+ // ============================================================================
81
+ // Plan File Operations
82
+ // ============================================================================
83
+ /**
84
+ * Create a new plan file
85
+ */
86
+ export async function createPlanFile(cwd, taskDescription) {
87
+ const plansDir = await ensurePlansDir(cwd);
88
+ const fileName = generatePlanFileName(taskDescription);
89
+ const filePath = path.join(plansDir, fileName);
90
+ // Initial plan template
91
+ const initialContent = `# Implementation Plan
92
+
93
+ ## Task
94
+ ${taskDescription || 'Describe the task here...'}
95
+
96
+ ## Analysis
97
+ _Understanding the codebase and requirements..._
98
+
99
+ ## Approach
100
+ _Design decisions and implementation strategy..._
101
+
102
+ ## Files to Change
103
+ - [ ] File 1 (action)
104
+ - [ ] File 2 (action)
105
+
106
+ ## Steps
107
+ 1. Step 1
108
+ 2. Step 2
109
+ 3. Step 3
110
+
111
+ ## Pre-approved Permissions
112
+ _Commands that will be allowed during execution..._
113
+
114
+ ---
115
+ _Generated by GenCode Plan Mode_
116
+ `;
117
+ const now = new Date();
118
+ await fs.writeFile(filePath, initialContent, 'utf-8');
119
+ return {
120
+ path: filePath,
121
+ content: initialContent,
122
+ createdAt: now,
123
+ updatedAt: now,
124
+ };
125
+ }
126
+ /**
127
+ * Read a plan file
128
+ */
129
+ export async function readPlanFile(filePath) {
130
+ try {
131
+ const content = await fs.readFile(filePath, 'utf-8');
132
+ const stats = await fs.stat(filePath);
133
+ return {
134
+ path: filePath,
135
+ content,
136
+ createdAt: stats.birthtime,
137
+ updatedAt: stats.mtime,
138
+ };
139
+ }
140
+ catch {
141
+ return null;
142
+ }
143
+ }
144
+ /**
145
+ * Write to a plan file
146
+ */
147
+ export async function writePlanFile(filePath, content) {
148
+ // Ensure directory exists
149
+ const dir = path.dirname(filePath);
150
+ if (!existsSync(dir)) {
151
+ await fs.mkdir(dir, { recursive: true });
152
+ }
153
+ await fs.writeFile(filePath, content, 'utf-8');
154
+ }
155
+ /**
156
+ * List all plan files in the project
157
+ */
158
+ export async function listPlanFiles(cwd) {
159
+ const plansDir = getPlansDir(cwd);
160
+ if (!existsSync(plansDir)) {
161
+ return [];
162
+ }
163
+ try {
164
+ const files = await fs.readdir(plansDir);
165
+ const planFiles = [];
166
+ for (const file of files) {
167
+ if (file.endsWith(PLAN_FILE_EXTENSION)) {
168
+ const filePath = path.join(plansDir, file);
169
+ const planFile = await readPlanFile(filePath);
170
+ if (planFile) {
171
+ planFiles.push(planFile);
172
+ }
173
+ }
174
+ }
175
+ // Sort by updated time, newest first
176
+ planFiles.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());
177
+ return planFiles;
178
+ }
179
+ catch {
180
+ return [];
181
+ }
182
+ }
183
+ /**
184
+ * Delete a plan file
185
+ */
186
+ export async function deletePlanFile(filePath) {
187
+ try {
188
+ await fs.unlink(filePath);
189
+ return true;
190
+ }
191
+ catch {
192
+ return false;
193
+ }
194
+ }
195
+ // ============================================================================
196
+ // Plan Content Parsing
197
+ // ============================================================================
198
+ /**
199
+ * Extract files to change from plan content
200
+ */
201
+ export function parseFilesToChange(content) {
202
+ const files = [];
203
+ // Look for patterns like:
204
+ // - [ ] src/file.ts (create)
205
+ // - [x] src/file.ts (modify)
206
+ // + src/file.ts (create)
207
+ // ~ src/file.ts (modify)
208
+ // - src/file.ts (delete)
209
+ const lines = content.split('\n');
210
+ for (const line of lines) {
211
+ // Checkbox format
212
+ let match = line.match(/^[-*]\s*\[[ x]\]\s+([^\s(]+)\s*\((\w+)\)/);
213
+ if (match) {
214
+ const [, filePath, action] = match;
215
+ if (action === 'create' || action === 'modify' || action === 'delete') {
216
+ files.push({ path: filePath, action });
217
+ }
218
+ continue;
219
+ }
220
+ // Symbol format (+, ~, -)
221
+ match = line.match(/^\s*([+~-])\s+([^\s(]+)(?:\s*\((\w+)\))?/);
222
+ if (match) {
223
+ const [, symbol, filePath, explicitAction] = match;
224
+ let action;
225
+ if (explicitAction === 'create' || explicitAction === 'modify' || explicitAction === 'delete') {
226
+ action = explicitAction;
227
+ }
228
+ else {
229
+ action = symbol === '+' ? 'create' : symbol === '~' ? 'modify' : 'delete';
230
+ }
231
+ files.push({ path: filePath, action });
232
+ }
233
+ }
234
+ return files;
235
+ }
236
+ /**
237
+ * Extract pre-approved permissions from plan content
238
+ */
239
+ export function parsePreApprovedPermissions(content) {
240
+ const permissions = [];
241
+ // Look for patterns like:
242
+ // - Bash: run tests
243
+ // - npm test
244
+ // - npm install
245
+ const permissionSection = content.match(/## Pre-approved Permissions[\s\S]*?(?=##|$)/i);
246
+ if (!permissionSection) {
247
+ return permissions;
248
+ }
249
+ const lines = permissionSection[0].split('\n');
250
+ for (const line of lines) {
251
+ // Skip header and empty lines
252
+ if (line.startsWith('##') || line.startsWith('_') || !line.trim()) {
253
+ continue;
254
+ }
255
+ // Match "- Bash: description" or "- description"
256
+ const match = line.match(/^[-*]\s+(?:Bash:\s+)?(.+)/);
257
+ if (match) {
258
+ permissions.push({ tool: 'Bash', prompt: match[1].trim() });
259
+ }
260
+ }
261
+ return permissions;
262
+ }
263
+ /**
264
+ * Get relative path for display
265
+ */
266
+ export function getDisplayPath(fullPath, cwd) {
267
+ const relativePath = path.relative(cwd, fullPath);
268
+ const home = process.env.HOME || '';
269
+ if (relativePath.startsWith('..')) {
270
+ // Path is outside cwd, try home-relative
271
+ if (fullPath.startsWith(home)) {
272
+ return '~' + fullPath.slice(home.length);
273
+ }
274
+ return fullPath;
275
+ }
276
+ return relativePath;
277
+ }
278
+ //# sourceMappingURL=plan-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-file.js","sourceRoot":"","sources":["../../src/planning/plan-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Plan Mode State Management
3
+ *
4
+ * Singleton state manager for plan mode. Tracks whether plan mode
5
+ * is active, current phase, and manages tool filtering.
6
+ */
7
+ import type { PlanModeState, PlanPhase, AllowedPrompt, ModeType, PlanModeEvent } from './types.js';
8
+ /**
9
+ * Plan Mode State Manager
10
+ *
11
+ * Manages the plan mode state and provides methods for:
12
+ * - Entering/exiting plan mode
13
+ * - Phase transitions
14
+ * - Tool filtering
15
+ * - Event notifications
16
+ */
17
+ export declare class PlanModeManager {
18
+ private state;
19
+ private eventListeners;
20
+ constructor();
21
+ /**
22
+ * Get initial state
23
+ */
24
+ private getInitialState;
25
+ /**
26
+ * Get current state (readonly)
27
+ */
28
+ getState(): Readonly<PlanModeState>;
29
+ /**
30
+ * Check if plan mode is active
31
+ */
32
+ isActive(): boolean;
33
+ /**
34
+ * Get current mode type for UI
35
+ * Note: Returns 'plan' or 'normal'. 'accept' mode is managed at the App level.
36
+ */
37
+ getCurrentMode(): ModeType;
38
+ /**
39
+ * Enter plan mode
40
+ */
41
+ enter(planFilePath: string, originalRequest?: string): void;
42
+ /**
43
+ * Exit plan mode
44
+ */
45
+ exit(approved?: boolean): void;
46
+ /**
47
+ * Toggle plan mode (for Shift+Tab)
48
+ */
49
+ toggle(planFilePath?: string): void;
50
+ /**
51
+ * Update phase
52
+ */
53
+ setPhase(phase: PlanPhase): void;
54
+ /**
55
+ * Get current phase
56
+ */
57
+ getPhase(): PlanPhase;
58
+ /**
59
+ * Set requested permissions (from ExitPlanMode)
60
+ */
61
+ setRequestedPermissions(permissions: AllowedPrompt[]): void;
62
+ /**
63
+ * Get requested permissions
64
+ */
65
+ getRequestedPermissions(): AllowedPrompt[];
66
+ /**
67
+ * Get plan file path
68
+ */
69
+ getPlanFilePath(): string | null;
70
+ /**
71
+ * Check if a tool is allowed in the current mode
72
+ */
73
+ isToolAllowed(toolName: string): boolean;
74
+ /**
75
+ * Check if a tool is blocked in the current mode
76
+ */
77
+ isToolBlocked(toolName: string): boolean;
78
+ /**
79
+ * Get list of allowed tools for current mode
80
+ */
81
+ getAllowedTools(): string[];
82
+ /**
83
+ * Get list of blocked tools for current mode
84
+ */
85
+ getBlockedTools(): string[];
86
+ /**
87
+ * Filter tool list based on current mode
88
+ */
89
+ filterTools(toolNames: string[]): string[];
90
+ /**
91
+ * Subscribe to plan mode events
92
+ */
93
+ subscribe(listener: (event: PlanModeEvent) => void): () => void;
94
+ /**
95
+ * Emit an event to all listeners
96
+ */
97
+ private emit;
98
+ }
99
+ /**
100
+ * Get the global plan mode manager
101
+ */
102
+ export declare function getPlanModeManager(): PlanModeManager;
103
+ /**
104
+ * Reset the global plan mode manager (for testing)
105
+ */
106
+ export declare function resetPlanModeManager(): void;
107
+ /**
108
+ * Check if plan mode is currently active
109
+ */
110
+ export declare function isPlanModeActive(): boolean;
111
+ /**
112
+ * Get the current mode type
113
+ */
114
+ export declare function getCurrentMode(): ModeType;
115
+ /**
116
+ * Enter plan mode
117
+ */
118
+ export declare function enterPlanMode(planFilePath: string, originalRequest?: string): void;
119
+ /**
120
+ * Exit plan mode
121
+ */
122
+ export declare function exitPlanMode(approved?: boolean): void;
123
+ /**
124
+ * Toggle plan mode
125
+ */
126
+ export declare function togglePlanMode(planFilePath?: string): void;
127
+ //# sourceMappingURL=state.d.ts.map