aemeathcli 1.0.11 → 1.0.12

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 (218) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +620 -609
  3. package/dist/{App-YAHJUWCX.js → App-JQ622M66.js} +209 -52
  4. package/dist/App-JQ622M66.js.map +1 -0
  5. package/dist/agent-store/architect.md +32 -32
  6. package/dist/agent-store/debugger.md +32 -32
  7. package/dist/agent-store/developer.md +29 -29
  8. package/dist/agent-store/documenter.md +30 -30
  9. package/dist/agent-store/researcher.md +31 -31
  10. package/dist/agent-store/reviewer.md +28 -28
  11. package/dist/agent-store/supervisor.md +37 -37
  12. package/dist/agent-store/tester.md +30 -30
  13. package/dist/api-key-fallback-RJLPM3KH.js +11 -0
  14. package/dist/{api-key-fallback-UN3TJEOO.js.map → api-key-fallback-RJLPM3KH.js.map} +1 -1
  15. package/dist/auth-status-JQJOKUPF.js +13 -0
  16. package/dist/{auth-status-EIM5A5KL.js.map → auth-status-JQJOKUPF.js.map} +1 -1
  17. package/dist/{chunk-P66WDACW.js → chunk-2KMA5RBC.js} +18 -42
  18. package/dist/chunk-2KMA5RBC.js.map +1 -0
  19. package/dist/{chunk-2GKOK6T7.js → chunk-2Y7TR6BS.js} +2 -2
  20. package/dist/chunk-2Y7TR6BS.js.map +1 -0
  21. package/dist/{chunk-ONQ4WCUI.js → chunk-2ZYK5IJG.js} +6 -6
  22. package/dist/chunk-2ZYK5IJG.js.map +1 -0
  23. package/dist/{chunk-OCJPQFOR.js → chunk-36RXCZOV.js} +4 -4
  24. package/dist/chunk-36RXCZOV.js.map +1 -0
  25. package/dist/{chunk-H2SYKIMI.js → chunk-7EBLXPL4.js} +10 -10
  26. package/dist/chunk-7EBLXPL4.js.map +1 -0
  27. package/dist/{chunk-IARA5XYP.js → chunk-BIMQL4AG.js} +4 -4
  28. package/dist/chunk-BIMQL4AG.js.map +1 -0
  29. package/dist/{chunk-BY4DAKUU.js → chunk-D275MCIH.js} +2 -2
  30. package/dist/chunk-D275MCIH.js.map +1 -0
  31. package/dist/{chunk-SOQFMNQC.js → chunk-FFS4T7BZ.js} +5 -5
  32. package/dist/chunk-FFS4T7BZ.js.map +1 -0
  33. package/dist/{chunk-LDVY5ELP.js → chunk-GXAJGP2T.js} +5 -5
  34. package/dist/chunk-GXAJGP2T.js.map +1 -0
  35. package/dist/{chunk-62HSGYQD.js → chunk-HCIHOHLX.js} +2 -2
  36. package/dist/chunk-HCIHOHLX.js.map +1 -0
  37. package/dist/{chunk-6GUD7QIM.js → chunk-HESQLCLU.js} +4 -4
  38. package/dist/chunk-HESQLCLU.js.map +1 -0
  39. package/dist/{chunk-HEKFAKVH.js → chunk-IR5HLBMH.js} +2 -2
  40. package/dist/chunk-IR5HLBMH.js.map +1 -0
  41. package/dist/{chunk-2LF7ALGR.js → chunk-K2FCMRXH.js} +4 -4
  42. package/dist/chunk-K2FCMRXH.js.map +1 -0
  43. package/dist/{chunk-2NWNIKBK.js → chunk-KIC7UI5U.js} +4 -4
  44. package/dist/chunk-KIC7UI5U.js.map +1 -0
  45. package/dist/{chunk-YPFOE2QJ.js → chunk-KMOAJRDE.js} +5 -5
  46. package/dist/chunk-KMOAJRDE.js.map +1 -0
  47. package/dist/{chunk-RP2TAL3J.js → chunk-LQBALETG.js} +2 -2
  48. package/dist/chunk-LQBALETG.js.map +1 -0
  49. package/dist/{chunk-CC7MGWYY.js → chunk-M3FPQSRU.js} +2 -2
  50. package/dist/chunk-M3FPQSRU.js.map +1 -0
  51. package/dist/{chunk-3TSPZRGM.js → chunk-NQEUK763.js} +3 -3
  52. package/dist/chunk-NQEUK763.js.map +1 -0
  53. package/dist/{chunk-VBLLDY4R.js → chunk-OPWAFS6Y.js} +2 -2
  54. package/dist/chunk-OPWAFS6Y.js.map +1 -0
  55. package/dist/{chunk-RYOB3TLZ.js → chunk-PS4WEFW6.js} +6 -6
  56. package/dist/chunk-PS4WEFW6.js.map +1 -0
  57. package/dist/{chunk-LCYH4T6N.js → chunk-QK7TKNHV.js} +6 -6
  58. package/dist/chunk-QK7TKNHV.js.map +1 -0
  59. package/dist/{chunk-QCRK4QEL.js → chunk-RADJSEG5.js} +3 -3
  60. package/dist/chunk-RADJSEG5.js.map +1 -0
  61. package/dist/{chunk-AQ23TYSQ.js → chunk-SNWPI6XJ.js} +4 -4
  62. package/dist/chunk-SNWPI6XJ.js.map +1 -0
  63. package/dist/{chunk-TDFTX32B.js → chunk-UM7MSLOV.js} +4 -4
  64. package/dist/chunk-UM7MSLOV.js.map +1 -0
  65. package/dist/{chunk-FIC7AK4Q.js → chunk-VNZ3YTQD.js} +5 -5
  66. package/dist/chunk-VNZ3YTQD.js.map +1 -0
  67. package/dist/{chunk-5XFSV6PF.js → chunk-WXIN65UG.js} +6 -6
  68. package/dist/chunk-WXIN65UG.js.map +1 -0
  69. package/dist/{chunk-WC72BRHR.js → chunk-XEXWX7C7.js} +3 -3
  70. package/dist/chunk-XEXWX7C7.js.map +1 -0
  71. package/dist/{chunk-VJNQJALF.js → chunk-YCCYXDW7.js} +4 -4
  72. package/dist/chunk-YCCYXDW7.js.map +1 -0
  73. package/dist/{chunk-ROJPFPJ7.js → chunk-YL5XFHR3.js} +2 -2
  74. package/dist/chunk-YL5XFHR3.js.map +1 -0
  75. package/dist/{chunk-GU33WKPG.js → chunk-YPQ2MLAV.js} +5 -5
  76. package/dist/chunk-YPQ2MLAV.js.map +1 -0
  77. package/dist/{chunk-WAYSJMPS.js → chunk-ZCOVMVK4.js} +2 -2
  78. package/dist/chunk-ZCOVMVK4.js.map +1 -0
  79. package/dist/{chunk-473JN6M5.js → chunk-ZGOHARPV.js} +2 -2
  80. package/dist/chunk-ZGOHARPV.js.map +1 -0
  81. package/dist/{claude-login-IS5WTBMP.js → claude-login-AIFIWTYF.js} +10 -10
  82. package/dist/claude-login-AIFIWTYF.js.map +1 -0
  83. package/dist/cli.js +30 -30
  84. package/dist/cli.js.map +1 -1
  85. package/dist/{codex-login-GMPF64MR.js → codex-login-LW5X7GAM.js} +10 -10
  86. package/dist/codex-login-LW5X7GAM.js.map +1 -0
  87. package/dist/config-store-NF56VHFU.js +7 -0
  88. package/dist/{config-store-POB6I37G.js.map → config-store-NF56VHFU.js.map} +1 -1
  89. package/dist/conversation-store-7GRDQZD2.js +4 -0
  90. package/dist/{conversation-store-PRBHWQMJ.js.map → conversation-store-7GRDQZD2.js.map} +1 -1
  91. package/dist/detect-providers-QICJ5U3R.js +4 -0
  92. package/dist/{detect-providers-C4SVQHFF.js.map → detect-providers-QICJ5U3R.js.map} +1 -1
  93. package/dist/executor-FTABX2AW.js +4 -0
  94. package/dist/{executor-RUX7VK3T.js.map → executor-FTABX2AW.js.map} +1 -1
  95. package/dist/{first-run-GDEVRFPO.js → first-run-ADROZVYF.js} +13 -13
  96. package/dist/first-run-ADROZVYF.js.map +1 -0
  97. package/dist/{gemini-login-KE224MSW.js → gemini-login-TST454MX.js} +10 -10
  98. package/dist/gemini-login-TST454MX.js.map +1 -0
  99. package/dist/index.d.ts +2 -56
  100. package/dist/index.js +30 -34
  101. package/dist/index.js.map +1 -1
  102. package/dist/{input-history-MIOO3FIW.js → input-history-BEICE7PT.js} +3 -3
  103. package/dist/input-history-BEICE7PT.js.map +1 -0
  104. package/dist/kimi-adapter-7FYOAKOI.js +6 -0
  105. package/dist/{kimi-adapter-UODMNX6K.js.map → kimi-adapter-7FYOAKOI.js.map} +1 -1
  106. package/dist/{kimi-login-DNT5YBKX.js → kimi-login-3IGVOBJI.js} +10 -10
  107. package/dist/kimi-login-3IGVOBJI.js.map +1 -0
  108. package/dist/logger-KGHUQ4VE.js +3 -0
  109. package/dist/{logger-PLPDWACQ.js.map → logger-KGHUQ4VE.js.map} +1 -1
  110. package/dist/model-discovery-AAJDHRFO.js +6 -0
  111. package/dist/{model-discovery-O64ZWPX5.js.map → model-discovery-AAJDHRFO.js.map} +1 -1
  112. package/dist/native-cli-adapters-CLONTZOA.js +8 -0
  113. package/dist/{native-cli-adapters-JMZX2C2C.js.map → native-cli-adapters-CLONTZOA.js.map} +1 -1
  114. package/dist/ollama-adapter-2N5OQIEV.js +5 -0
  115. package/dist/{ollama-adapter-GE67BNSS.js.map → ollama-adapter-2N5OQIEV.js.map} +1 -1
  116. package/dist/{pathResolver-A6IXQQFE.js → pathResolver-UVAB2FCW.js} +3 -3
  117. package/dist/{pathResolver-A6IXQQFE.js.map → pathResolver-UVAB2FCW.js.map} +1 -1
  118. package/dist/{profile-loader-TNAXBLDX.js → profile-loader-EMLV4J7S.js} +4 -4
  119. package/dist/profile-loader-EMLV4J7S.js.map +1 -0
  120. package/dist/registry-LRURZVUL.js +5 -0
  121. package/dist/{registry-3NHVCXCZ.js.map → registry-LRURZVUL.js.map} +1 -1
  122. package/dist/registry-MVNSXCEF.js +6 -0
  123. package/dist/{registry-7CQ3NCAD.js.map → registry-MVNSXCEF.js.map} +1 -1
  124. package/dist/server-manager-THGZBBZB.js +5 -0
  125. package/dist/{server-manager-DES23IBQ.js.map → server-manager-THGZBBZB.js.map} +1 -1
  126. package/dist/session-manager-X3DXT53M.js +12 -0
  127. package/dist/{session-manager-EHD7GWM2.js.map → session-manager-X3DXT53M.js.map} +1 -1
  128. package/dist/skills/built-in/code-review/SKILL.md +85 -85
  129. package/dist/skills/built-in/commit/SKILL.md +83 -83
  130. package/dist/skills/built-in/debug/SKILL.md +119 -119
  131. package/dist/skills/built-in/plan/SKILL.md +123 -123
  132. package/dist/skills/built-in/refactor/SKILL.md +132 -132
  133. package/dist/skills/built-in/test/SKILL.md +128 -128
  134. package/dist/sqlite-store-7OECRTXM.js +5 -0
  135. package/dist/{sqlite-store-7ZIVOUNI.js.map → sqlite-store-7OECRTXM.js.map} +1 -1
  136. package/dist/team-manager-2VSMALAA.js +11 -0
  137. package/dist/{team-manager-6DCNLGTC.js.map → team-manager-2VSMALAA.js.map} +1 -1
  138. package/dist/team-state-HZNVMQHT.js +3 -0
  139. package/dist/{team-state-R2D7DT5M.js.map → team-state-HZNVMQHT.js.map} +1 -1
  140. package/dist/tmux-manager-57QCUVHU.js +6 -0
  141. package/dist/{tmux-manager-WBKHUHDT.js.map → tmux-manager-57QCUVHU.js.map} +1 -1
  142. package/dist/tools-KWFSYT56.js +6 -0
  143. package/dist/{tools-I6XCTEZY.js.map → tools-KWFSYT56.js.map} +1 -1
  144. package/package.json +89 -93
  145. package/dist/App-YAHJUWCX.js.map +0 -1
  146. package/dist/api-key-fallback-UN3TJEOO.js +0 -11
  147. package/dist/auth-status-EIM5A5KL.js +0 -13
  148. package/dist/chunk-25UNNEHN.js +0 -140
  149. package/dist/chunk-25UNNEHN.js.map +0 -1
  150. package/dist/chunk-2GKOK6T7.js.map +0 -1
  151. package/dist/chunk-2LF7ALGR.js.map +0 -1
  152. package/dist/chunk-2NWNIKBK.js.map +0 -1
  153. package/dist/chunk-3TSPZRGM.js.map +0 -1
  154. package/dist/chunk-473JN6M5.js.map +0 -1
  155. package/dist/chunk-5XFSV6PF.js.map +0 -1
  156. package/dist/chunk-62HSGYQD.js.map +0 -1
  157. package/dist/chunk-6GUD7QIM.js.map +0 -1
  158. package/dist/chunk-AQ23TYSQ.js.map +0 -1
  159. package/dist/chunk-BY4DAKUU.js.map +0 -1
  160. package/dist/chunk-CC7MGWYY.js.map +0 -1
  161. package/dist/chunk-CTFZTARK.js +0 -155
  162. package/dist/chunk-CTFZTARK.js.map +0 -1
  163. package/dist/chunk-FIC7AK4Q.js.map +0 -1
  164. package/dist/chunk-GU33WKPG.js.map +0 -1
  165. package/dist/chunk-H2SYKIMI.js.map +0 -1
  166. package/dist/chunk-HEKFAKVH.js.map +0 -1
  167. package/dist/chunk-IARA5XYP.js.map +0 -1
  168. package/dist/chunk-LCYH4T6N.js.map +0 -1
  169. package/dist/chunk-LDVY5ELP.js.map +0 -1
  170. package/dist/chunk-OCJPQFOR.js.map +0 -1
  171. package/dist/chunk-ODBY7S4X.js +0 -141
  172. package/dist/chunk-ODBY7S4X.js.map +0 -1
  173. package/dist/chunk-ONQ4WCUI.js.map +0 -1
  174. package/dist/chunk-P5TKZM3T.js +0 -159
  175. package/dist/chunk-P5TKZM3T.js.map +0 -1
  176. package/dist/chunk-P66WDACW.js.map +0 -1
  177. package/dist/chunk-QCRK4QEL.js.map +0 -1
  178. package/dist/chunk-ROJPFPJ7.js.map +0 -1
  179. package/dist/chunk-RP2TAL3J.js.map +0 -1
  180. package/dist/chunk-RYOB3TLZ.js.map +0 -1
  181. package/dist/chunk-SOQFMNQC.js.map +0 -1
  182. package/dist/chunk-TDFTX32B.js.map +0 -1
  183. package/dist/chunk-VBLLDY4R.js.map +0 -1
  184. package/dist/chunk-VJNQJALF.js.map +0 -1
  185. package/dist/chunk-WAYSJMPS.js.map +0 -1
  186. package/dist/chunk-WC72BRHR.js.map +0 -1
  187. package/dist/chunk-YPFOE2QJ.js.map +0 -1
  188. package/dist/claude-adapter-6P4SJH7P.js +0 -7
  189. package/dist/claude-adapter-6P4SJH7P.js.map +0 -1
  190. package/dist/claude-login-IS5WTBMP.js.map +0 -1
  191. package/dist/codex-login-GMPF64MR.js.map +0 -1
  192. package/dist/config-store-POB6I37G.js +0 -7
  193. package/dist/conversation-store-PRBHWQMJ.js +0 -4
  194. package/dist/detect-providers-C4SVQHFF.js +0 -4
  195. package/dist/executor-RUX7VK3T.js +0 -4
  196. package/dist/first-run-GDEVRFPO.js.map +0 -1
  197. package/dist/gemini-adapter-MV3U4QFH.js +0 -7
  198. package/dist/gemini-adapter-MV3U4QFH.js.map +0 -1
  199. package/dist/gemini-login-KE224MSW.js.map +0 -1
  200. package/dist/input-history-MIOO3FIW.js.map +0 -1
  201. package/dist/kimi-adapter-UODMNX6K.js +0 -6
  202. package/dist/kimi-login-DNT5YBKX.js.map +0 -1
  203. package/dist/logger-PLPDWACQ.js +0 -3
  204. package/dist/model-discovery-O64ZWPX5.js +0 -6
  205. package/dist/native-cli-adapters-JMZX2C2C.js +0 -8
  206. package/dist/ollama-adapter-GE67BNSS.js +0 -5
  207. package/dist/openai-adapter-SHPLK77L.js +0 -7
  208. package/dist/openai-adapter-SHPLK77L.js.map +0 -1
  209. package/dist/profile-loader-TNAXBLDX.js.map +0 -1
  210. package/dist/registry-3NHVCXCZ.js +0 -6
  211. package/dist/registry-7CQ3NCAD.js +0 -5
  212. package/dist/server-manager-DES23IBQ.js +0 -5
  213. package/dist/session-manager-EHD7GWM2.js +0 -12
  214. package/dist/sqlite-store-7ZIVOUNI.js +0 -5
  215. package/dist/team-manager-6DCNLGTC.js +0 -11
  216. package/dist/team-state-R2D7DT5M.js +0 -3
  217. package/dist/tmux-manager-WBKHUHDT.js +0 -6
  218. package/dist/tools-I6XCTEZY.js +0 -6
@@ -1,128 +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.
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-BIMQL4AG.js';
2
+ import './chunk-IR5HLBMH.js';
3
+ import './chunk-D275MCIH.js';
4
+ //# sourceMappingURL=sqlite-store-7OECRTXM.js.map
5
+ //# sourceMappingURL=sqlite-store-7OECRTXM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"sqlite-store-7ZIVOUNI.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"sqlite-store-7OECRTXM.js"}
@@ -0,0 +1,11 @@
1
+ export { TeamManager } from './chunk-QK7TKNHV.js';
2
+ import './chunk-YL5XFHR3.js';
3
+ import './chunk-YCCYXDW7.js';
4
+ import './chunk-OPWAFS6Y.js';
5
+ import './chunk-ZGOHARPV.js';
6
+ import './chunk-HCIHOHLX.js';
7
+ import './chunk-2Y7TR6BS.js';
8
+ import './chunk-IR5HLBMH.js';
9
+ import './chunk-D275MCIH.js';
10
+ //# sourceMappingURL=team-manager-2VSMALAA.js.map
11
+ //# sourceMappingURL=team-manager-2VSMALAA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"team-manager-6DCNLGTC.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"team-manager-2VSMALAA.js"}
@@ -0,0 +1,3 @@
1
+ export { getActiveTeamManager, getActiveTeamName, getActiveTmuxCleanup, setActiveTeamManager, setActiveTeamName, setActiveTmuxCleanup } from './chunk-ZCOVMVK4.js';
2
+ //# sourceMappingURL=team-state-HZNVMQHT.js.map
3
+ //# sourceMappingURL=team-state-HZNVMQHT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"team-state-R2D7DT5M.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"team-state-HZNVMQHT.js"}
@@ -0,0 +1,6 @@
1
+ export { TmuxManager } from './chunk-GXAJGP2T.js';
2
+ import './chunk-YL5XFHR3.js';
3
+ import './chunk-ZGOHARPV.js';
4
+ import './chunk-IR5HLBMH.js';
5
+ //# sourceMappingURL=tmux-manager-57QCUVHU.js.map
6
+ //# sourceMappingURL=tmux-manager-57QCUVHU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"tmux-manager-WBKHUHDT.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tmux-manager-57QCUVHU.js"}
@@ -0,0 +1,6 @@
1
+ export { ToolRegistry, createBashTool, createDefaultRegistry, createEditTool, createGitTool, createGlobTool, createGrepTool, createReadTool, createWebFetchTool, createWebSearchTool, createWriteTool, setWebSearchProvider } from './chunk-FFS4T7BZ.js';
2
+ import './chunk-OPWAFS6Y.js';
3
+ import './chunk-ZGOHARPV.js';
4
+ import './chunk-IR5HLBMH.js';
5
+ //# sourceMappingURL=tools-KWFSYT56.js.map
6
+ //# sourceMappingURL=tools-KWFSYT56.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"tools-I6XCTEZY.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tools-KWFSYT56.js"}
package/package.json CHANGED
@@ -1,93 +1,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
- }
1
+ {
2
+ "name": "aemeathcli",
3
+ "version": "1.0.12",
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
+ "@inquirer/prompts": "^7.0.0",
50
+ "@modelcontextprotocol/sdk": "^1.0.0",
51
+ "better-sqlite3": "^11.0.0",
52
+ "commander": "^13.0.0",
53
+ "execa": "^9.0.0",
54
+ "fast-glob": "^3.3.0",
55
+ "ink": "^5.0.0",
56
+ "ink-spinner": "^5.0.0",
57
+ "node-pty": "^1.1.0",
58
+ "open": "^10.0.0",
59
+ "picocolors": "^1.1.0",
60
+ "pino": "^9.0.0",
61
+ "react": "^18.3.0",
62
+ "update-notifier": "^7.0.0",
63
+ "yaml": "^2.4.0",
64
+ "zod": "^3.25.76"
65
+ },
66
+ "devDependencies": {
67
+ "@testing-library/react": "^15.0.0",
68
+ "@types/better-sqlite3": "^7.6.0",
69
+ "@types/node": "^22.0.0",
70
+ "@types/react": "^18.3.0",
71
+ "@types/update-notifier": "^6.0.0",
72
+ "@vitest/coverage-v8": "^3.0.0",
73
+ "eslint": "^9.0.0",
74
+ "ink-testing-library": "^4.0.0",
75
+ "prettier": "^3.4.0",
76
+ "tsup": "^8.0.0",
77
+ "typescript": "^5.7.0",
78
+ "typescript-eslint": "^8.0.0",
79
+ "vitest": "^3.0.0"
80
+ },
81
+ "optionalDependencies": {
82
+ "keytar": "^7.9.0"
83
+ },
84
+ "files": [
85
+ "dist",
86
+ "README.md",
87
+ "LICENSE"
88
+ ]
89
+ }