aemeathcli 1.0.10 → 1.0.11

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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +609 -608
  3. package/dist/App-YAHJUWCX.js +4274 -0
  4. package/dist/App-YAHJUWCX.js.map +1 -0
  5. package/dist/agent-store/architect.md +32 -0
  6. package/dist/agent-store/debugger.md +32 -0
  7. package/dist/agent-store/developer.md +29 -0
  8. package/dist/agent-store/documenter.md +30 -0
  9. package/dist/agent-store/researcher.md +31 -0
  10. package/dist/agent-store/reviewer.md +28 -0
  11. package/dist/agent-store/supervisor.md +37 -0
  12. package/dist/agent-store/tester.md +30 -0
  13. package/dist/api-key-fallback-UN3TJEOO.js +11 -0
  14. package/dist/{api-key-fallback-YQQBOQIL.js.map → api-key-fallback-UN3TJEOO.js.map} +1 -1
  15. package/dist/auth-status-EIM5A5KL.js +13 -0
  16. package/dist/auth-status-EIM5A5KL.js.map +1 -0
  17. package/dist/{chunk-UY2SYSEZ.js → chunk-25UNNEHN.js} +32 -103
  18. package/dist/chunk-25UNNEHN.js.map +1 -0
  19. package/dist/{chunk-CYQNBB25.js → chunk-2GKOK6T7.js} +28 -5
  20. package/dist/chunk-2GKOK6T7.js.map +1 -0
  21. package/dist/{chunk-MFBHNWGV.js → chunk-2LF7ALGR.js} +12 -20
  22. package/dist/chunk-2LF7ALGR.js.map +1 -0
  23. package/dist/{chunk-H66O5Z2V.js → chunk-2NWNIKBK.js} +42 -7
  24. package/dist/chunk-2NWNIKBK.js.map +1 -0
  25. package/dist/chunk-3TSPZRGM.js +26 -0
  26. package/dist/chunk-3TSPZRGM.js.map +1 -0
  27. package/dist/{chunk-ZGOHARPV.js → chunk-473JN6M5.js} +2 -2
  28. package/dist/chunk-473JN6M5.js.map +1 -0
  29. package/dist/{chunk-IYW62KKR.js → chunk-5XFSV6PF.js} +66 -23
  30. package/dist/chunk-5XFSV6PF.js.map +1 -0
  31. package/dist/{chunk-HCIHOHLX.js → chunk-62HSGYQD.js} +2 -2
  32. package/dist/chunk-62HSGYQD.js.map +1 -0
  33. package/dist/{chunk-I5PZ4JTS.js → chunk-6GUD7QIM.js} +4 -4
  34. package/dist/chunk-6GUD7QIM.js.map +1 -0
  35. package/dist/{chunk-4IJD72YB.js → chunk-AQ23TYSQ.js} +7 -7
  36. package/dist/chunk-AQ23TYSQ.js.map +1 -0
  37. package/dist/{chunk-NBR3GHMT.js → chunk-BY4DAKUU.js} +39 -7
  38. package/dist/chunk-BY4DAKUU.js.map +1 -0
  39. package/dist/chunk-CC7MGWYY.js +12 -0
  40. package/dist/chunk-CC7MGWYY.js.map +1 -0
  41. package/dist/chunk-CTFZTARK.js +155 -0
  42. package/dist/chunk-CTFZTARK.js.map +1 -0
  43. package/dist/chunk-FIC7AK4Q.js +232 -0
  44. package/dist/chunk-FIC7AK4Q.js.map +1 -0
  45. package/dist/chunk-GU33WKPG.js +140 -0
  46. package/dist/chunk-GU33WKPG.js.map +1 -0
  47. package/dist/{chunk-DMBPX3RG.js → chunk-H2SYKIMI.js} +10 -10
  48. package/dist/chunk-H2SYKIMI.js.map +1 -0
  49. package/dist/{chunk-JAXXTYID.js → chunk-HEKFAKVH.js} +2 -2
  50. package/dist/chunk-HEKFAKVH.js.map +1 -0
  51. package/dist/chunk-IARA5XYP.js +186 -0
  52. package/dist/chunk-IARA5XYP.js.map +1 -0
  53. package/dist/{chunk-HMJRPNPZ.js → chunk-LCYH4T6N.js} +95 -23
  54. package/dist/chunk-LCYH4T6N.js.map +1 -0
  55. package/dist/{chunk-CARHU3DO.js → chunk-LDVY5ELP.js} +66 -18
  56. package/dist/chunk-LDVY5ELP.js.map +1 -0
  57. package/dist/chunk-OCJPQFOR.js +88 -0
  58. package/dist/chunk-OCJPQFOR.js.map +1 -0
  59. package/dist/chunk-ODBY7S4X.js +141 -0
  60. package/dist/chunk-ODBY7S4X.js.map +1 -0
  61. package/dist/{chunk-DAHGLHNR.js → chunk-ONQ4WCUI.js} +7 -142
  62. package/dist/chunk-ONQ4WCUI.js.map +1 -0
  63. package/dist/{chunk-WPP3PEDE.js → chunk-P5TKZM3T.js} +32 -107
  64. package/dist/chunk-P5TKZM3T.js.map +1 -0
  65. package/dist/{chunk-RWCNNAL7.js → chunk-P66WDACW.js} +23 -22
  66. package/dist/chunk-P66WDACW.js.map +1 -0
  67. package/dist/{chunk-LSOYPSAT.js → chunk-QCRK4QEL.js} +4 -4
  68. package/dist/chunk-QCRK4QEL.js.map +1 -0
  69. package/dist/{chunk-YL5XFHR3.js → chunk-ROJPFPJ7.js} +2 -2
  70. package/dist/chunk-ROJPFPJ7.js.map +1 -0
  71. package/dist/chunk-RP2TAL3J.js +71 -0
  72. package/dist/chunk-RP2TAL3J.js.map +1 -0
  73. package/dist/{chunk-6PDJ45T4.js → chunk-RYOB3TLZ.js} +51 -26
  74. package/dist/chunk-RYOB3TLZ.js.map +1 -0
  75. package/dist/{chunk-Y5XVD2CD.js → chunk-SOQFMNQC.js} +110 -83
  76. package/dist/chunk-SOQFMNQC.js.map +1 -0
  77. package/dist/{chunk-TEVZS4FA.js → chunk-TDFTX32B.js} +16 -9
  78. package/dist/chunk-TDFTX32B.js.map +1 -0
  79. package/dist/chunk-VBLLDY4R.js +38 -0
  80. package/dist/chunk-VBLLDY4R.js.map +1 -0
  81. package/dist/{chunk-CGEV3ARR.js → chunk-VJNQJALF.js} +4 -4
  82. package/dist/chunk-VJNQJALF.js.map +1 -0
  83. package/dist/chunk-WAYSJMPS.js +26 -0
  84. package/dist/chunk-WAYSJMPS.js.map +1 -0
  85. package/dist/chunk-WC72BRHR.js +241 -0
  86. package/dist/chunk-WC72BRHR.js.map +1 -0
  87. package/dist/{chunk-MXZSI3AY.js → chunk-YPFOE2QJ.js} +43 -11
  88. package/dist/chunk-YPFOE2QJ.js.map +1 -0
  89. package/dist/claude-adapter-6P4SJH7P.js +7 -0
  90. package/dist/{claude-adapter-QMLFMSP3.js.map → claude-adapter-6P4SJH7P.js.map} +1 -1
  91. package/dist/{claude-login-5WELXPKT.js → claude-login-IS5WTBMP.js} +10 -10
  92. package/dist/claude-login-IS5WTBMP.js.map +1 -0
  93. package/dist/cli.js +371 -172
  94. package/dist/cli.js.map +1 -1
  95. package/dist/{codex-login-GZIFXUWD.js → codex-login-GMPF64MR.js} +11 -11
  96. package/dist/codex-login-GMPF64MR.js.map +1 -0
  97. package/dist/config-store-POB6I37G.js +7 -0
  98. package/dist/{config-store-W6FBCQAQ.js.map → config-store-POB6I37G.js.map} +1 -1
  99. package/dist/conversation-store-PRBHWQMJ.js +4 -0
  100. package/dist/conversation-store-PRBHWQMJ.js.map +1 -0
  101. package/dist/detect-providers-C4SVQHFF.js +4 -0
  102. package/dist/detect-providers-C4SVQHFF.js.map +1 -0
  103. package/dist/executor-RUX7VK3T.js +4 -0
  104. package/dist/{executor-6RIKIGXK.js.map → executor-RUX7VK3T.js.map} +1 -1
  105. package/dist/first-run-GDEVRFPO.js +230 -0
  106. package/dist/first-run-GDEVRFPO.js.map +1 -0
  107. package/dist/gemini-adapter-MV3U4QFH.js +7 -0
  108. package/dist/{gemini-adapter-6JIHZ7WI.js.map → gemini-adapter-MV3U4QFH.js.map} +1 -1
  109. package/dist/{gemini-login-AZGL3CE7.js → gemini-login-KE224MSW.js} +10 -10
  110. package/dist/gemini-login-KE224MSW.js.map +1 -0
  111. package/dist/index.d.ts +47 -17
  112. package/dist/index.js +86 -471
  113. package/dist/index.js.map +1 -1
  114. package/dist/input-history-MIOO3FIW.js +57 -0
  115. package/dist/input-history-MIOO3FIW.js.map +1 -0
  116. package/dist/kimi-adapter-UODMNX6K.js +6 -0
  117. package/dist/{kimi-adapter-JN4HFFHU.js.map → kimi-adapter-UODMNX6K.js.map} +1 -1
  118. package/dist/{kimi-login-6LUWB7P6.js → kimi-login-DNT5YBKX.js} +10 -10
  119. package/dist/kimi-login-DNT5YBKX.js.map +1 -0
  120. package/dist/logger-PLPDWACQ.js +3 -0
  121. package/dist/logger-PLPDWACQ.js.map +1 -0
  122. package/dist/model-discovery-O64ZWPX5.js +6 -0
  123. package/dist/model-discovery-O64ZWPX5.js.map +1 -0
  124. package/dist/native-cli-adapters-JMZX2C2C.js +8 -0
  125. package/dist/{native-cli-adapters-OLW3XX57.js.map → native-cli-adapters-JMZX2C2C.js.map} +1 -1
  126. package/dist/ollama-adapter-GE67BNSS.js +5 -0
  127. package/dist/{ollama-adapter-OJQ3FKWK.js.map → ollama-adapter-GE67BNSS.js.map} +1 -1
  128. package/dist/openai-adapter-SHPLK77L.js +7 -0
  129. package/dist/{openai-adapter-XU46EN7B.js.map → openai-adapter-SHPLK77L.js.map} +1 -1
  130. package/dist/pathResolver-A6IXQQFE.js +3 -0
  131. package/dist/pathResolver-A6IXQQFE.js.map +1 -0
  132. package/dist/profile-loader-TNAXBLDX.js +162 -0
  133. package/dist/profile-loader-TNAXBLDX.js.map +1 -0
  134. package/dist/registry-3NHVCXCZ.js +6 -0
  135. package/dist/{registry-AZ2LOHHJ.js.map → registry-3NHVCXCZ.js.map} +1 -1
  136. package/dist/registry-7CQ3NCAD.js +5 -0
  137. package/dist/{registry-H7B3AHPQ.js.map → registry-7CQ3NCAD.js.map} +1 -1
  138. package/dist/server-manager-DES23IBQ.js +5 -0
  139. package/dist/{server-manager-PTGBHCLS.js.map → server-manager-DES23IBQ.js.map} +1 -1
  140. package/dist/session-manager-EHD7GWM2.js +12 -0
  141. package/dist/{session-manager-XOMDMC77.js.map → session-manager-EHD7GWM2.js.map} +1 -1
  142. package/dist/skills/built-in/code-review/SKILL.md +85 -0
  143. package/dist/skills/built-in/commit/SKILL.md +83 -0
  144. package/dist/skills/built-in/debug/SKILL.md +119 -0
  145. package/dist/skills/built-in/plan/SKILL.md +123 -0
  146. package/dist/skills/built-in/refactor/SKILL.md +132 -0
  147. package/dist/skills/built-in/test/SKILL.md +128 -0
  148. package/dist/sqlite-store-7ZIVOUNI.js +5 -0
  149. package/dist/sqlite-store-7ZIVOUNI.js.map +1 -0
  150. package/dist/team-manager-6DCNLGTC.js +11 -0
  151. package/dist/{team-manager-HC4XGCFY.js.map → team-manager-6DCNLGTC.js.map} +1 -1
  152. package/dist/team-state-R2D7DT5M.js +3 -0
  153. package/dist/team-state-R2D7DT5M.js.map +1 -0
  154. package/dist/tmux-manager-WBKHUHDT.js +6 -0
  155. package/dist/{tmux-manager-GPYZ3WQH.js.map → tmux-manager-WBKHUHDT.js.map} +1 -1
  156. package/dist/tools-I6XCTEZY.js +6 -0
  157. package/dist/{tools-TSMXMHIF.js.map → tools-I6XCTEZY.js.map} +1 -1
  158. package/package.json +93 -89
  159. package/dist/App-FKRSMFMB.js +0 -2789
  160. package/dist/App-FKRSMFMB.js.map +0 -1
  161. package/dist/api-key-fallback-YQQBOQIL.js +0 -11
  162. package/dist/chunk-4IJD72YB.js.map +0 -1
  163. package/dist/chunk-6PDJ45T4.js.map +0 -1
  164. package/dist/chunk-CARHU3DO.js.map +0 -1
  165. package/dist/chunk-CGEV3ARR.js.map +0 -1
  166. package/dist/chunk-CS5X3BWX.js +0 -27
  167. package/dist/chunk-CS5X3BWX.js.map +0 -1
  168. package/dist/chunk-CYQNBB25.js.map +0 -1
  169. package/dist/chunk-DAHGLHNR.js.map +0 -1
  170. package/dist/chunk-DMBPX3RG.js.map +0 -1
  171. package/dist/chunk-H66O5Z2V.js.map +0 -1
  172. package/dist/chunk-HCIHOHLX.js.map +0 -1
  173. package/dist/chunk-HMJRPNPZ.js.map +0 -1
  174. package/dist/chunk-I5PZ4JTS.js.map +0 -1
  175. package/dist/chunk-IYW62KKR.js.map +0 -1
  176. package/dist/chunk-JAXXTYID.js.map +0 -1
  177. package/dist/chunk-LSOYPSAT.js.map +0 -1
  178. package/dist/chunk-MFBHNWGV.js.map +0 -1
  179. package/dist/chunk-MXZSI3AY.js.map +0 -1
  180. package/dist/chunk-NBR3GHMT.js.map +0 -1
  181. package/dist/chunk-RWCNNAL7.js.map +0 -1
  182. package/dist/chunk-TEVZS4FA.js.map +0 -1
  183. package/dist/chunk-UY2SYSEZ.js.map +0 -1
  184. package/dist/chunk-WAHVZH7V.js +0 -260
  185. package/dist/chunk-WAHVZH7V.js.map +0 -1
  186. package/dist/chunk-WPP3PEDE.js.map +0 -1
  187. package/dist/chunk-Y5XVD2CD.js.map +0 -1
  188. package/dist/chunk-YL5XFHR3.js.map +0 -1
  189. package/dist/chunk-ZGOHARPV.js.map +0 -1
  190. package/dist/claude-adapter-QMLFMSP3.js +0 -6
  191. package/dist/claude-login-5WELXPKT.js.map +0 -1
  192. package/dist/codex-login-GZIFXUWD.js.map +0 -1
  193. package/dist/config-store-W6FBCQAQ.js +0 -6
  194. package/dist/executor-6RIKIGXK.js +0 -4
  195. package/dist/gemini-adapter-6JIHZ7WI.js +0 -6
  196. package/dist/gemini-login-AZGL3CE7.js.map +0 -1
  197. package/dist/kimi-adapter-JN4HFFHU.js +0 -6
  198. package/dist/kimi-login-6LUWB7P6.js.map +0 -1
  199. package/dist/native-cli-adapters-OLW3XX57.js +0 -6
  200. package/dist/ollama-adapter-OJQ3FKWK.js +0 -6
  201. package/dist/openai-adapter-XU46EN7B.js +0 -6
  202. package/dist/registry-AZ2LOHHJ.js +0 -6
  203. package/dist/registry-H7B3AHPQ.js +0 -5
  204. package/dist/server-manager-PTGBHCLS.js +0 -5
  205. package/dist/session-manager-XOMDMC77.js +0 -12
  206. package/dist/team-manager-HC4XGCFY.js +0 -11
  207. package/dist/tmux-manager-GPYZ3WQH.js +0 -6
  208. package/dist/tools-TSMXMHIF.js +0 -6
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: plan
3
+ description: "Create structured implementation plans with architecture analysis and task breakdown"
4
+ version: "1.0.0"
5
+ allowed-tools:
6
+ - read
7
+ - grep
8
+ - glob
9
+ triggers:
10
+ - "plan"
11
+ - "$plan"
12
+ model-requirements:
13
+ preferred-role: planning
14
+ min-context: 64000
15
+ ---
16
+
17
+ # Planning Skill
18
+
19
+ You are a senior software architect. Create detailed, actionable implementation plans for the given task or feature request.
20
+
21
+ ## Process
22
+
23
+ ### Step 1 — Understand the Request
24
+
25
+ 1. Parse the user's request to identify the core goal and constraints.
26
+ 2. Ask clarifying questions if the request is ambiguous or under-specified.
27
+ 3. Identify implicit requirements (error handling, tests, security).
28
+
29
+ ### Step 2 — Codebase Analysis
30
+
31
+ 1. Use `glob` to understand the project structure and file organization.
32
+ 2. Use `grep` to find relevant existing code, patterns, and conventions.
33
+ 3. Use `read` to examine key files that will be affected:
34
+ - Entry points and routing
35
+ - Related modules and their interfaces
36
+ - Configuration files and type definitions
37
+ - Existing tests for reference patterns
38
+ 4. Check for AGENTS.md or project coding standards.
39
+
40
+ ### Step 3 — Architecture Design
41
+
42
+ 1. Identify which modules, files, and functions will be created or modified.
43
+ 2. Define the data flow and interactions between components.
44
+ 3. Choose patterns consistent with the existing codebase:
45
+ - If the project uses classes, use classes. If it uses functions, use functions.
46
+ - Match error handling patterns (Result types, exceptions, error codes).
47
+ - Follow existing naming and file organization conventions.
48
+ 4. Consider trade-offs and document alternatives considered.
49
+
50
+ ### Step 4 — Task Breakdown
51
+
52
+ Break the implementation into ordered, atomic steps:
53
+
54
+ ```
55
+ ## Implementation Plan
56
+
57
+ ### Phase 1: Foundation
58
+ 1. [ ] Create types/interfaces for the new feature
59
+ - File: src/types/feature.ts
60
+ - Details: Define IFeatureConfig, FeatureState union type
61
+
62
+ 2. [ ] Add configuration schema
63
+ - File: src/config/feature-config.ts
64
+ - Details: Zod schema for runtime validation
65
+
66
+ ### Phase 2: Core Logic
67
+ 3. [ ] Implement the main service
68
+ - File: src/services/feature-service.ts
69
+ - Details: FeatureService class with methods X, Y, Z
70
+ - Depends on: Step 1
71
+
72
+ ### Phase 3: Integration
73
+ 4. [ ] Wire into existing system
74
+ - File: src/index.ts (modify)
75
+ - Details: Register service, add routes
76
+
77
+ ### Phase 4: Testing
78
+ 5. [ ] Unit tests
79
+ - File: tests/feature-service.test.ts
80
+ - Coverage: Happy path, edge cases, error conditions
81
+ ```
82
+
83
+ ### Step 5 — Risk Assessment
84
+
85
+ Identify potential issues:
86
+ - Breaking changes to existing APIs or behavior.
87
+ - Performance concerns with the chosen approach.
88
+ - Security implications (new attack surfaces, data exposure).
89
+ - Dependencies that may need to be added.
90
+
91
+ ## Output Format
92
+
93
+ ```markdown
94
+ # Implementation Plan: [Feature Name]
95
+
96
+ ## Overview
97
+ [1-2 sentence summary of what will be built]
98
+
99
+ ## Architecture Decision
100
+ [Chosen approach and why, alternatives considered]
101
+
102
+ ## Files Affected
103
+ - New: [list of files to create]
104
+ - Modified: [list of files to change]
105
+
106
+ ## Step-by-Step Plan
107
+ [Numbered, ordered steps with file paths and details]
108
+
109
+ ## Risks & Mitigations
110
+ [Identified risks and how to handle them]
111
+
112
+ ## Estimated Scope
113
+ - Files: N new, M modified
114
+ - Complexity: Low / Medium / High
115
+ ```
116
+
117
+ ## Rules
118
+
119
+ - Plans must be concrete and actionable, not abstract.
120
+ - Every step must specify exact file paths.
121
+ - Dependencies between steps must be explicit.
122
+ - Never suggest over-engineered solutions — match project complexity.
123
+ - If the task is too large for a single plan, suggest phased delivery.
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: refactor
3
+ description: "Safe code refactoring with behavior preservation, test verification, and incremental steps"
4
+ version: "1.0.0"
5
+ allowed-tools:
6
+ - read
7
+ - grep
8
+ - glob
9
+ - bash
10
+ triggers:
11
+ - "refactor"
12
+ - "$refactor"
13
+ model-requirements:
14
+ preferred-role: coding
15
+ min-context: 48000
16
+ ---
17
+
18
+ # Refactoring Skill
19
+
20
+ You are a refactoring specialist. Restructure code to improve quality while preserving exact external behavior. Every change must be safe and verifiable.
21
+
22
+ ## Process
23
+
24
+ ### Step 1 — Assess Current State
25
+
26
+ 1. Use `read` to examine the code targeted for refactoring.
27
+ 2. Use `grep` to find all callers and dependents of the code being changed.
28
+ 3. Use `glob` to locate existing tests covering this code.
29
+ 4. Run existing tests with `bash` to establish a passing baseline.
30
+ 5. Document the current behavior contract:
31
+ - Public API (function signatures, return types).
32
+ - Side effects (file writes, database mutations, API calls).
33
+ - Error behavior (what exceptions are thrown, when).
34
+
35
+ ### Step 2 — Identify Refactoring Opportunities
36
+
37
+ Analyze the code for these patterns:
38
+
39
+ | Smell | Refactoring |
40
+ |-------|-------------|
41
+ | Long function (>40 lines) | Extract Method |
42
+ | Duplicated code | Extract shared utility |
43
+ | Deep nesting (>3 levels) | Early returns, guard clauses |
44
+ | God class (>300 lines) | Extract class / module |
45
+ | Feature envy | Move method to data owner |
46
+ | Primitive obsession | Introduce value objects |
47
+ | Long parameter list (>4) | Introduce parameter object |
48
+ | Shotgun surgery | Consolidate into single module |
49
+ | Boolean parameters | Split into named methods |
50
+ | Magic numbers/strings | Extract named constants |
51
+
52
+ ### Step 3 — Plan the Refactoring
53
+
54
+ Create an ordered sequence of atomic, individually-testable steps:
55
+
56
+ ```
57
+ ## Refactoring Plan
58
+
59
+ ### Step 1: Extract validation logic
60
+ - From: src/services/user-service.ts (lines 45-78)
61
+ - To: src/services/user-validation.ts (new file)
62
+ - Verify: Run existing tests — all must pass
63
+
64
+ ### Step 2: Replace inline type with interface
65
+ - File: src/types/user.ts
66
+ - Change: Extract inline object type to IUserInput interface
67
+ - Verify: TypeScript compilation — zero errors
68
+
69
+ ### Step 3: Simplify conditional logic
70
+ - File: src/services/user-service.ts (lines 90-120)
71
+ - Change: Replace nested if/else with early returns
72
+ - Verify: Run tests — behavior unchanged
73
+ ```
74
+
75
+ ### Step 4 — Execute Incrementally
76
+
77
+ For each step in the plan:
78
+
79
+ 1. Make the single, focused change.
80
+ 2. Run `tsc --noEmit` to verify type safety.
81
+ 3. Run the relevant tests to verify behavior preservation.
82
+ 4. If tests fail, revert the change and investigate.
83
+ 5. Only proceed to the next step after the current one passes.
84
+
85
+ ### Step 5 — Verify Holistically
86
+
87
+ After all refactoring steps:
88
+
89
+ 1. Run the full test suite to catch any regressions.
90
+ 2. Verify no unused imports, variables, or dead code remain.
91
+ 3. Confirm file sizes are within project limits.
92
+ 4. Check that no new `any` types were introduced.
93
+
94
+ ## Output Format
95
+
96
+ For each refactoring step, present:
97
+
98
+ ```
99
+ ## Step N: [Refactoring Name]
100
+
101
+ ### Rationale
102
+ [Why this change improves the code]
103
+
104
+ ### Before
105
+ ```typescript
106
+ // original code
107
+ ```
108
+
109
+ ### After
110
+ ```typescript
111
+ // refactored code
112
+ ```
113
+
114
+ ### Files Changed
115
+ - Modified: src/path/file.ts
116
+ - Created: src/path/new-file.ts (if applicable)
117
+
118
+ ### Verification
119
+ ✓ TypeScript: No errors
120
+ ✓ Tests: 42/42 passing
121
+ ```
122
+
123
+ ## Rules
124
+
125
+ - Never change behavior and structure in the same step.
126
+ - Always have a passing test baseline before starting.
127
+ - If tests don't exist, write them first (invoke the `$test` skill).
128
+ - Each step must be independently revertible.
129
+ - Never rename a public API without updating all callers.
130
+ - Preserve all existing comments that document business logic.
131
+ - Do not refactor code that is scheduled for deletion or replacement.
132
+ - Keep the scope focused: only refactor what was requested.
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: test
3
+ description: "Generate comprehensive test suites with unit, integration, and edge case coverage"
4
+ version: "1.0.0"
5
+ allowed-tools:
6
+ - read
7
+ - grep
8
+ - glob
9
+ - bash
10
+ triggers:
11
+ - "test"
12
+ - "$test"
13
+ model-requirements:
14
+ preferred-role: testing
15
+ min-context: 32000
16
+ ---
17
+
18
+ # Test Generation Skill
19
+
20
+ You are a test engineering specialist. Generate thorough, maintainable test suites that catch real bugs.
21
+
22
+ ## Process
23
+
24
+ ### Step 1 — Analyze the Target
25
+
26
+ 1. Use `read` to examine the code under test completely.
27
+ 2. Identify:
28
+ - Public API surface (exported functions, class methods, types).
29
+ - Input parameters and their types/constraints.
30
+ - Return values and side effects.
31
+ - Dependencies and external interactions (database, API, filesystem).
32
+ - Error paths and exception conditions.
33
+ 3. Use `grep` to find existing tests for related modules to match patterns.
34
+ 4. Use `glob` to locate the test configuration (vitest.config, jest.config, etc.).
35
+
36
+ ### Step 2 — Determine Test Framework & Patterns
37
+
38
+ 1. Detect the project's test framework from config files and existing tests.
39
+ 2. Match the existing test style:
40
+ - `describe`/`it` vs `test` blocks
41
+ - Assertion style (`expect(...).toBe(...)` vs `assert.*`)
42
+ - Mock patterns (`vi.mock`, `jest.mock`, manual stubs)
43
+ - File naming convention (`.test.ts`, `.spec.ts`, `__tests__/`)
44
+ 3. Identify the test runner command (e.g., `vitest run`, `jest`, `npm test`).
45
+
46
+ ### Step 3 — Design Test Cases
47
+
48
+ Organize tests into categories:
49
+
50
+ ```
51
+ describe('FunctionName', () => {
52
+ // Happy path — normal expected usage
53
+ describe('when given valid input', () => {
54
+ it('should return expected output', ...);
55
+ it('should handle typical use case', ...);
56
+ });
57
+
58
+ // Edge cases — boundary conditions
59
+ describe('edge cases', () => {
60
+ it('should handle empty input', ...);
61
+ it('should handle maximum values', ...);
62
+ it('should handle null/undefined', ...);
63
+ });
64
+
65
+ // Error cases — expected failure modes
66
+ describe('error handling', () => {
67
+ it('should throw on invalid input', ...);
68
+ it('should handle network failure', ...);
69
+ });
70
+
71
+ // Integration — interactions with dependencies
72
+ describe('integration', () => {
73
+ it('should call dependency correctly', ...);
74
+ it('should handle dependency failure', ...);
75
+ });
76
+ });
77
+ ```
78
+
79
+ ### Step 4 — Write Tests
80
+
81
+ For each test case:
82
+
83
+ 1. Follow Arrange-Act-Assert (AAA) pattern.
84
+ 2. Use descriptive test names that read like sentences.
85
+ 3. Keep each test focused on a single behavior.
86
+ 4. Mock external dependencies, not internal implementation.
87
+ 5. Use realistic test data, not placeholder values.
88
+ 6. Type test data correctly (no `as any` casting).
89
+
90
+ ### Step 5 — Verify Tests
91
+
92
+ 1. Run the generated tests with `bash` to confirm they pass.
93
+ 2. If any test fails:
94
+ - Determine if it's a test bug or a code bug.
95
+ - Fix test bugs immediately.
96
+ - Report code bugs as findings.
97
+ 3. Run with coverage if available to identify untested paths.
98
+
99
+ ## Output Format
100
+
101
+ ```typescript
102
+ // file: tests/module-name.test.ts
103
+
104
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
105
+ import { TargetFunction } from '../src/module-name.js';
106
+
107
+ describe('TargetFunction', () => {
108
+ // ... organized test cases
109
+ });
110
+ ```
111
+
112
+ ## Coverage Guidelines
113
+
114
+ | Code Type | Target Coverage | Focus |
115
+ |-----------|----------------|-------|
116
+ | Pure functions | 95%+ | All input combinations |
117
+ | Class methods | 85%+ | Public API, state transitions |
118
+ | Error handlers | 80%+ | Every catch block, every error type |
119
+ | Integration | 70%+ | Happy path + primary failure modes |
120
+
121
+ ## Rules
122
+
123
+ - Never write tests that test implementation details (private methods, internal state).
124
+ - Never write tests that are coupled to the mock setup rather than the behavior.
125
+ - Use `beforeEach` for shared setup, not copy-pasted initialization.
126
+ - Prefer `toEqual` for object comparison, `toBe` for primitives.
127
+ - Each test file should be independently runnable.
128
+ - If the code is untestable, suggest refactoring to improve testability.
@@ -0,0 +1,5 @@
1
+ export { SqliteStore } from './chunk-IARA5XYP.js';
2
+ import './chunk-HEKFAKVH.js';
3
+ import './chunk-BY4DAKUU.js';
4
+ //# sourceMappingURL=sqlite-store-7ZIVOUNI.js.map
5
+ //# sourceMappingURL=sqlite-store-7ZIVOUNI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"sqlite-store-7ZIVOUNI.js"}
@@ -0,0 +1,11 @@
1
+ export { TeamManager } from './chunk-LCYH4T6N.js';
2
+ import './chunk-ROJPFPJ7.js';
3
+ import './chunk-VJNQJALF.js';
4
+ import './chunk-VBLLDY4R.js';
5
+ import './chunk-2GKOK6T7.js';
6
+ import './chunk-473JN6M5.js';
7
+ import './chunk-62HSGYQD.js';
8
+ import './chunk-HEKFAKVH.js';
9
+ import './chunk-BY4DAKUU.js';
10
+ //# sourceMappingURL=team-manager-6DCNLGTC.js.map
11
+ //# sourceMappingURL=team-manager-6DCNLGTC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"team-manager-HC4XGCFY.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"team-manager-6DCNLGTC.js"}
@@ -0,0 +1,3 @@
1
+ export { getActiveTeamManager, getActiveTeamName, getActiveTmuxCleanup, setActiveTeamManager, setActiveTeamName, setActiveTmuxCleanup } from './chunk-WAYSJMPS.js';
2
+ //# sourceMappingURL=team-state-R2D7DT5M.js.map
3
+ //# sourceMappingURL=team-state-R2D7DT5M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"team-state-R2D7DT5M.js"}
@@ -0,0 +1,6 @@
1
+ export { TmuxManager } from './chunk-LDVY5ELP.js';
2
+ import './chunk-ROJPFPJ7.js';
3
+ import './chunk-473JN6M5.js';
4
+ import './chunk-HEKFAKVH.js';
5
+ //# sourceMappingURL=tmux-manager-WBKHUHDT.js.map
6
+ //# sourceMappingURL=tmux-manager-WBKHUHDT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"tmux-manager-GPYZ3WQH.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tmux-manager-WBKHUHDT.js"}
@@ -0,0 +1,6 @@
1
+ export { ToolRegistry, createBashTool, createDefaultRegistry, createEditTool, createGitTool, createGlobTool, createGrepTool, createReadTool, createWebFetchTool, createWebSearchTool, createWriteTool, setWebSearchProvider } from './chunk-SOQFMNQC.js';
2
+ import './chunk-VBLLDY4R.js';
3
+ import './chunk-473JN6M5.js';
4
+ import './chunk-HEKFAKVH.js';
5
+ //# sourceMappingURL=tools-I6XCTEZY.js.map
6
+ //# sourceMappingURL=tools-I6XCTEZY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"tools-TSMXMHIF.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tools-I6XCTEZY.js"}
package/package.json CHANGED
@@ -1,89 +1,93 @@
1
- {
2
- "name": "aemeathcli",
3
- "version": "1.0.10",
4
- "description": "Next-generation multi-model CLI coding tool with agent teams and split-panel coordination",
5
- "type": "module",
6
- "bin": {
7
- "aemeathcli": "./dist/cli.js",
8
- "ac": "./dist/cli.js"
9
- },
10
- "main": "./dist/index.js",
11
- "types": "./dist/index.d.ts",
12
- "exports": {
13
- ".": {
14
- "import": "./dist/index.js",
15
- "types": "./dist/index.d.ts"
16
- }
17
- },
18
- "engines": {
19
- "node": ">=20.0.0"
20
- },
21
- "scripts": {
22
- "build": "tsup",
23
- "dev": "tsup --watch",
24
- "typecheck": "tsc --noEmit",
25
- "lint": "eslint src/",
26
- "lint:fix": "eslint src/ --fix",
27
- "format": "prettier --write \"src/**/*.{ts,tsx}\"",
28
- "format:check": "prettier --check \"src/**/*.{ts,tsx}\"",
29
- "test": "vitest run",
30
- "test:watch": "vitest",
31
- "test:coverage": "vitest run --coverage",
32
- "clean": "rm -rf dist",
33
- "prepublishOnly": "npm run clean && npm run build"
34
- },
35
- "keywords": [
36
- "cli",
37
- "ai",
38
- "multi-model",
39
- "claude",
40
- "openai",
41
- "gemini",
42
- "coding",
43
- "agent",
44
- "terminal"
45
- ],
46
- "author": "AemeathCLI Team",
47
- "license": "MIT",
48
- "dependencies": {
49
- "@ai-sdk/anthropic": "^1.0.0",
50
- "@ai-sdk/google": "^1.0.0",
51
- "@ai-sdk/openai": "^1.0.0",
52
- "@inquirer/prompts": "^7.0.0",
53
- "@modelcontextprotocol/sdk": "^1.0.0",
54
- "ai": "^4.3.19",
55
- "commander": "^13.0.0",
56
- "execa": "^9.0.0",
57
- "fast-glob": "^3.3.0",
58
- "ink": "^5.0.0",
59
- "ink-spinner": "^5.0.0",
60
- "open": "^10.0.0",
61
- "picocolors": "^1.1.0",
62
- "pino": "^9.0.0",
63
- "react": "^18.3.0",
64
- "update-notifier": "^7.0.0",
65
- "yaml": "^2.4.0",
66
- "zod": "^3.23.0"
67
- },
68
- "devDependencies": {
69
- "better-sqlite3": "^11.0.0",
70
- "keytar": "^7.9.0",
71
- "@testing-library/react": "^15.0.0",
72
- "@types/better-sqlite3": "^7.6.0",
73
- "@types/node": "^22.0.0",
74
- "@types/react": "^18.3.0",
75
- "@types/update-notifier": "^6.0.0",
76
- "eslint": "^9.0.0",
77
- "ink-testing-library": "^4.0.0",
78
- "prettier": "^3.4.0",
79
- "tsup": "^8.0.0",
80
- "typescript": "^5.7.0",
81
- "typescript-eslint": "^8.0.0",
82
- "vitest": "^3.0.0"
83
- },
84
- "files": [
85
- "dist",
86
- "README.md",
87
- "LICENSE"
88
- ]
89
- }
1
+ {
2
+ "name": "aemeathcli",
3
+ "version": "1.0.11",
4
+ "description": "Next-generation multi-model CLI coding tool with agent teams and split-panel coordination",
5
+ "type": "module",
6
+ "bin": {
7
+ "aemeathcli": "./dist/cli.js",
8
+ "ac": "./dist/cli.js"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.js",
15
+ "types": "./dist/index.d.ts"
16
+ }
17
+ },
18
+ "engines": {
19
+ "node": ">=20.0.0"
20
+ },
21
+ "scripts": {
22
+ "build": "tsup && node ./scripts/copy-agent-store.mjs",
23
+ "dev": "tsup --watch",
24
+ "typecheck": "tsc --noEmit",
25
+ "lint": "eslint src/",
26
+ "lint:fix": "eslint src/ --fix",
27
+ "format": "prettier --write \"src/**/*.{ts,tsx}\"",
28
+ "format:check": "prettier --check \"src/**/*.{ts,tsx}\"",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest",
31
+ "test:coverage": "vitest run --coverage",
32
+ "clean": "node ./scripts/clean.mjs",
33
+ "prepublishOnly": "npm run clean && npm run typecheck && npm run lint && npm run test && npm run build"
34
+ },
35
+ "keywords": [
36
+ "cli",
37
+ "ai",
38
+ "multi-model",
39
+ "claude",
40
+ "openai",
41
+ "gemini",
42
+ "coding",
43
+ "agent",
44
+ "terminal"
45
+ ],
46
+ "author": "AemeathCLI Team",
47
+ "license": "MIT",
48
+ "dependencies": {
49
+ "@ai-sdk/anthropic": "^2.0.70",
50
+ "@ai-sdk/google": "^2.0.62",
51
+ "@ai-sdk/openai": "^2.0.100",
52
+ "@inquirer/prompts": "^7.0.0",
53
+ "@modelcontextprotocol/sdk": "^1.0.0",
54
+ "ai": "^5.0.156",
55
+ "better-sqlite3": "^11.0.0",
56
+ "commander": "^13.0.0",
57
+ "execa": "^9.0.0",
58
+ "fast-glob": "^3.3.0",
59
+ "ink": "^5.0.0",
60
+ "ink-spinner": "^5.0.0",
61
+ "node-pty": "^1.1.0",
62
+ "open": "^10.0.0",
63
+ "picocolors": "^1.1.0",
64
+ "pino": "^9.0.0",
65
+ "react": "^18.3.0",
66
+ "update-notifier": "^7.0.0",
67
+ "yaml": "^2.4.0",
68
+ "zod": "^3.25.76"
69
+ },
70
+ "devDependencies": {
71
+ "@testing-library/react": "^15.0.0",
72
+ "@types/better-sqlite3": "^7.6.0",
73
+ "@types/node": "^22.0.0",
74
+ "@types/react": "^18.3.0",
75
+ "@types/update-notifier": "^6.0.0",
76
+ "@vitest/coverage-v8": "^3.0.0",
77
+ "eslint": "^9.0.0",
78
+ "ink-testing-library": "^4.0.0",
79
+ "prettier": "^3.4.0",
80
+ "tsup": "^8.0.0",
81
+ "typescript": "^5.7.0",
82
+ "typescript-eslint": "^8.0.0",
83
+ "vitest": "^3.0.0"
84
+ },
85
+ "optionalDependencies": {
86
+ "keytar": "^7.9.0"
87
+ },
88
+ "files": [
89
+ "dist",
90
+ "README.md",
91
+ "LICENSE"
92
+ ]
93
+ }