@blackms/aistack 1.0.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 (214) hide show
  1. package/README.md +244 -0
  2. package/dist/agents/definitions/analyst.d.ts +6 -0
  3. package/dist/agents/definitions/analyst.d.ts.map +1 -0
  4. package/dist/agents/definitions/analyst.js +53 -0
  5. package/dist/agents/definitions/analyst.js.map +1 -0
  6. package/dist/agents/definitions/architect.d.ts +6 -0
  7. package/dist/agents/definitions/architect.d.ts.map +1 -0
  8. package/dist/agents/definitions/architect.js +46 -0
  9. package/dist/agents/definitions/architect.js.map +1 -0
  10. package/dist/agents/definitions/coder.d.ts +6 -0
  11. package/dist/agents/definitions/coder.d.ts.map +1 -0
  12. package/dist/agents/definitions/coder.js +39 -0
  13. package/dist/agents/definitions/coder.js.map +1 -0
  14. package/dist/agents/definitions/coordinator.d.ts +6 -0
  15. package/dist/agents/definitions/coordinator.d.ts.map +1 -0
  16. package/dist/agents/definitions/coordinator.js +54 -0
  17. package/dist/agents/definitions/coordinator.js.map +1 -0
  18. package/dist/agents/definitions/index.d.ts +11 -0
  19. package/dist/agents/definitions/index.d.ts.map +1 -0
  20. package/dist/agents/definitions/index.js +11 -0
  21. package/dist/agents/definitions/index.js.map +1 -0
  22. package/dist/agents/definitions/researcher.d.ts +6 -0
  23. package/dist/agents/definitions/researcher.d.ts.map +1 -0
  24. package/dist/agents/definitions/researcher.js +39 -0
  25. package/dist/agents/definitions/researcher.js.map +1 -0
  26. package/dist/agents/definitions/reviewer.d.ts +6 -0
  27. package/dist/agents/definitions/reviewer.d.ts.map +1 -0
  28. package/dist/agents/definitions/reviewer.js +46 -0
  29. package/dist/agents/definitions/reviewer.js.map +1 -0
  30. package/dist/agents/definitions/tester.d.ts +6 -0
  31. package/dist/agents/definitions/tester.d.ts.map +1 -0
  32. package/dist/agents/definitions/tester.js +44 -0
  33. package/dist/agents/definitions/tester.js.map +1 -0
  34. package/dist/agents/index.d.ts +7 -0
  35. package/dist/agents/index.d.ts.map +1 -0
  36. package/dist/agents/index.js +7 -0
  37. package/dist/agents/index.js.map +1 -0
  38. package/dist/agents/registry.d.ts +41 -0
  39. package/dist/agents/registry.d.ts.map +1 -0
  40. package/dist/agents/registry.js +107 -0
  41. package/dist/agents/registry.js.map +1 -0
  42. package/dist/agents/spawner.d.ts +62 -0
  43. package/dist/agents/spawner.d.ts.map +1 -0
  44. package/dist/agents/spawner.js +169 -0
  45. package/dist/agents/spawner.js.map +1 -0
  46. package/dist/cli/commands/agent.d.ts +6 -0
  47. package/dist/cli/commands/agent.d.ts.map +1 -0
  48. package/dist/cli/commands/agent.js +144 -0
  49. package/dist/cli/commands/agent.js.map +1 -0
  50. package/dist/cli/commands/index.d.ts +10 -0
  51. package/dist/cli/commands/index.d.ts.map +1 -0
  52. package/dist/cli/commands/index.js +10 -0
  53. package/dist/cli/commands/index.js.map +1 -0
  54. package/dist/cli/commands/init.d.ts +6 -0
  55. package/dist/cli/commands/init.d.ts.map +1 -0
  56. package/dist/cli/commands/init.js +50 -0
  57. package/dist/cli/commands/init.js.map +1 -0
  58. package/dist/cli/commands/mcp.d.ts +6 -0
  59. package/dist/cli/commands/mcp.d.ts.map +1 -0
  60. package/dist/cli/commands/mcp.js +82 -0
  61. package/dist/cli/commands/mcp.js.map +1 -0
  62. package/dist/cli/commands/memory.d.ts +6 -0
  63. package/dist/cli/commands/memory.d.ts.map +1 -0
  64. package/dist/cli/commands/memory.js +157 -0
  65. package/dist/cli/commands/memory.js.map +1 -0
  66. package/dist/cli/commands/plugin.d.ts +6 -0
  67. package/dist/cli/commands/plugin.d.ts.map +1 -0
  68. package/dist/cli/commands/plugin.js +146 -0
  69. package/dist/cli/commands/plugin.js.map +1 -0
  70. package/dist/cli/commands/status.d.ts +6 -0
  71. package/dist/cli/commands/status.d.ts.map +1 -0
  72. package/dist/cli/commands/status.js +115 -0
  73. package/dist/cli/commands/status.js.map +1 -0
  74. package/dist/cli/index.d.ts +6 -0
  75. package/dist/cli/index.d.ts.map +1 -0
  76. package/dist/cli/index.js +41 -0
  77. package/dist/cli/index.js.map +1 -0
  78. package/dist/coordination/index.d.ts +7 -0
  79. package/dist/coordination/index.d.ts.map +1 -0
  80. package/dist/coordination/index.js +7 -0
  81. package/dist/coordination/index.js.map +1 -0
  82. package/dist/coordination/message-bus.d.ts +64 -0
  83. package/dist/coordination/message-bus.d.ts.map +1 -0
  84. package/dist/coordination/message-bus.js +148 -0
  85. package/dist/coordination/message-bus.js.map +1 -0
  86. package/dist/coordination/task-queue.d.ts +71 -0
  87. package/dist/coordination/task-queue.d.ts.map +1 -0
  88. package/dist/coordination/task-queue.js +140 -0
  89. package/dist/coordination/task-queue.js.map +1 -0
  90. package/dist/coordination/topology.d.ts +68 -0
  91. package/dist/coordination/topology.d.ts.map +1 -0
  92. package/dist/coordination/topology.js +195 -0
  93. package/dist/coordination/topology.js.map +1 -0
  94. package/dist/github/client.d.ts +56 -0
  95. package/dist/github/client.d.ts.map +1 -0
  96. package/dist/github/client.js +179 -0
  97. package/dist/github/client.js.map +1 -0
  98. package/dist/github/index.d.ts +5 -0
  99. package/dist/github/index.d.ts.map +1 -0
  100. package/dist/github/index.js +5 -0
  101. package/dist/github/index.js.map +1 -0
  102. package/dist/hooks/index.d.ts +29 -0
  103. package/dist/hooks/index.d.ts.map +1 -0
  104. package/dist/hooks/index.js +112 -0
  105. package/dist/hooks/index.js.map +1 -0
  106. package/dist/hooks/session.d.ts +16 -0
  107. package/dist/hooks/session.d.ts.map +1 -0
  108. package/dist/hooks/session.js +60 -0
  109. package/dist/hooks/session.js.map +1 -0
  110. package/dist/hooks/task.d.ts +16 -0
  111. package/dist/hooks/task.d.ts.map +1 -0
  112. package/dist/hooks/task.js +82 -0
  113. package/dist/hooks/task.js.map +1 -0
  114. package/dist/index.d.ts +16 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +32 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/mcp/index.d.ts +6 -0
  119. package/dist/mcp/index.d.ts.map +1 -0
  120. package/dist/mcp/index.js +6 -0
  121. package/dist/mcp/index.js.map +1 -0
  122. package/dist/mcp/server.d.ts +22 -0
  123. package/dist/mcp/server.d.ts.map +1 -0
  124. package/dist/mcp/server.js +128 -0
  125. package/dist/mcp/server.js.map +1 -0
  126. package/dist/mcp/tools/agent-tools.d.ts +174 -0
  127. package/dist/mcp/tools/agent-tools.d.ts.map +1 -0
  128. package/dist/mcp/tools/agent-tools.js +214 -0
  129. package/dist/mcp/tools/agent-tools.js.map +1 -0
  130. package/dist/mcp/tools/github-tools.d.ts +229 -0
  131. package/dist/mcp/tools/github-tools.d.ts.map +1 -0
  132. package/dist/mcp/tools/github-tools.js +286 -0
  133. package/dist/mcp/tools/github-tools.js.map +1 -0
  134. package/dist/mcp/tools/index.d.ts +10 -0
  135. package/dist/mcp/tools/index.d.ts.map +1 -0
  136. package/dist/mcp/tools/index.js +10 -0
  137. package/dist/mcp/tools/index.js.map +1 -0
  138. package/dist/mcp/tools/memory-tools.d.ts +190 -0
  139. package/dist/mcp/tools/memory-tools.d.ts.map +1 -0
  140. package/dist/mcp/tools/memory-tools.js +207 -0
  141. package/dist/mcp/tools/memory-tools.js.map +1 -0
  142. package/dist/mcp/tools/session-tools.d.ts +116 -0
  143. package/dist/mcp/tools/session-tools.d.ts.map +1 -0
  144. package/dist/mcp/tools/session-tools.js +151 -0
  145. package/dist/mcp/tools/session-tools.js.map +1 -0
  146. package/dist/mcp/tools/system-tools.d.ts +98 -0
  147. package/dist/mcp/tools/system-tools.d.ts.map +1 -0
  148. package/dist/mcp/tools/system-tools.js +165 -0
  149. package/dist/mcp/tools/system-tools.js.map +1 -0
  150. package/dist/mcp/tools/task-tools.d.ts +170 -0
  151. package/dist/mcp/tools/task-tools.d.ts.map +1 -0
  152. package/dist/mcp/tools/task-tools.js +188 -0
  153. package/dist/mcp/tools/task-tools.js.map +1 -0
  154. package/dist/memory/fts-search.d.ts +46 -0
  155. package/dist/memory/fts-search.d.ts.map +1 -0
  156. package/dist/memory/fts-search.js +136 -0
  157. package/dist/memory/fts-search.js.map +1 -0
  158. package/dist/memory/index.d.ts +77 -0
  159. package/dist/memory/index.d.ts.map +1 -0
  160. package/dist/memory/index.js +203 -0
  161. package/dist/memory/index.js.map +1 -0
  162. package/dist/memory/sqlite-store.d.ts +36 -0
  163. package/dist/memory/sqlite-store.d.ts.map +1 -0
  164. package/dist/memory/sqlite-store.js +371 -0
  165. package/dist/memory/sqlite-store.js.map +1 -0
  166. package/dist/memory/vector-search.d.ts +43 -0
  167. package/dist/memory/vector-search.d.ts.map +1 -0
  168. package/dist/memory/vector-search.js +179 -0
  169. package/dist/memory/vector-search.js.map +1 -0
  170. package/dist/plugins/index.d.ts +7 -0
  171. package/dist/plugins/index.d.ts.map +1 -0
  172. package/dist/plugins/index.js +7 -0
  173. package/dist/plugins/index.js.map +1 -0
  174. package/dist/plugins/loader.d.ts +33 -0
  175. package/dist/plugins/loader.d.ts.map +1 -0
  176. package/dist/plugins/loader.js +147 -0
  177. package/dist/plugins/loader.js.map +1 -0
  178. package/dist/plugins/registry.d.ts +48 -0
  179. package/dist/plugins/registry.d.ts.map +1 -0
  180. package/dist/plugins/registry.js +72 -0
  181. package/dist/plugins/registry.js.map +1 -0
  182. package/dist/plugins/types.d.ts +5 -0
  183. package/dist/plugins/types.d.ts.map +1 -0
  184. package/dist/plugins/types.js +5 -0
  185. package/dist/plugins/types.js.map +1 -0
  186. package/dist/providers/index.d.ts +49 -0
  187. package/dist/providers/index.d.ts.map +1 -0
  188. package/dist/providers/index.js +254 -0
  189. package/dist/providers/index.js.map +1 -0
  190. package/dist/types.d.ts +189 -0
  191. package/dist/types.d.ts.map +1 -0
  192. package/dist/types.js +10 -0
  193. package/dist/types.js.map +1 -0
  194. package/dist/utils/config.d.ts +32 -0
  195. package/dist/utils/config.d.ts.map +1 -0
  196. package/dist/utils/config.js +194 -0
  197. package/dist/utils/config.js.map +1 -0
  198. package/dist/utils/embeddings.d.ts +23 -0
  199. package/dist/utils/embeddings.d.ts.map +1 -0
  200. package/dist/utils/embeddings.js +151 -0
  201. package/dist/utils/embeddings.js.map +1 -0
  202. package/dist/utils/index.d.ts +8 -0
  203. package/dist/utils/index.d.ts.map +1 -0
  204. package/dist/utils/index.js +8 -0
  205. package/dist/utils/index.js.map +1 -0
  206. package/dist/utils/logger.d.ts +24 -0
  207. package/dist/utils/logger.d.ts.map +1 -0
  208. package/dist/utils/logger.js +96 -0
  209. package/dist/utils/logger.js.map +1 -0
  210. package/dist/utils/validation.d.ts +264 -0
  211. package/dist/utils/validation.d.ts.map +1 -0
  212. package/dist/utils/validation.js +144 -0
  213. package/dist/utils/validation.js.map +1 -0
  214. package/package.json +84 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Tester agent definition
3
+ */
4
+ export const testerAgent = {
5
+ type: 'tester',
6
+ name: 'Tester',
7
+ description: 'Write and run tests to ensure code quality',
8
+ systemPrompt: `You are an expert in software testing focused on ensuring code quality.
9
+
10
+ ## Core Principles
11
+ - Test behavior, not implementation details
12
+ - Write tests that are easy to understand and maintain
13
+ - Focus on edge cases and error conditions
14
+ - Tests should be fast and reliable
15
+
16
+ ## Approach
17
+ 1. Understand what functionality needs testing
18
+ 2. Identify the testing framework in use
19
+ 3. Write clear, focused test cases
20
+ 4. Cover happy path and error scenarios
21
+ 5. Run tests and verify they pass
22
+
23
+ ## Guidelines
24
+ - Follow the existing test patterns in the codebase
25
+ - Use descriptive test names that explain the scenario
26
+ - Keep tests independent - no shared state
27
+ - Mock external dependencies appropriately
28
+ - Aim for meaningful coverage, not 100% coverage
29
+
30
+ ## Test Structure
31
+ - Arrange: Set up test data and preconditions
32
+ - Act: Execute the code being tested
33
+ - Assert: Verify the expected outcome
34
+
35
+ When writing tests, focus on what matters most: does the code work correctly under normal and edge conditions?`,
36
+ capabilities: [
37
+ 'write-tests',
38
+ 'run-tests',
39
+ 'identify-edge-cases',
40
+ 'coverage-analysis',
41
+ 'test-debugging',
42
+ ],
43
+ };
44
+ //# sourceMappingURL=tester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tester.js","sourceRoot":"","sources":["../../../src/agents/definitions/tester.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;+GA2B+F;IAC7G,YAAY,EAAE;QACZ,aAAa;QACb,WAAW;QACX,qBAAqB;QACrB,mBAAmB;QACnB,gBAAgB;KACjB;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Agents module exports
3
+ */
4
+ export { getAgentDefinition, listAgentTypes, listAgentDefinitions, registerAgent, unregisterAgent, hasAgentType, getAgentCount as getRegisteredAgentCount, clearCustomAgents, } from './registry.js';
5
+ export { spawnAgent, getAgent, getAgentByName, listAgents, updateAgentStatus, stopAgent, stopAgentByName, stopAllAgents, getAgentCount as getActiveAgentCount, getAgentsByStatus, clearAgents, getAgentPrompt, getAgentCapabilities, type SpawnOptions, } from './spawner.js';
6
+ export * from './definitions/index.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,IAAI,uBAAuB,EACxC,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,aAAa,IAAI,mBAAmB,EACpC,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AAEtB,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Agents module exports
3
+ */
4
+ export { getAgentDefinition, listAgentTypes, listAgentDefinitions, registerAgent, unregisterAgent, hasAgentType, getAgentCount as getRegisteredAgentCount, clearCustomAgents, } from './registry.js';
5
+ export { spawnAgent, getAgent, getAgentByName, listAgents, updateAgentStatus, stopAgent, stopAgentByName, stopAllAgents, getAgentCount as getActiveAgentCount, getAgentsByStatus, clearAgents, getAgentPrompt, getAgentCapabilities, } from './spawner.js';
6
+ export * from './definitions/index.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,aAAa,IAAI,uBAAuB,EACxC,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,aAAa,IAAI,mBAAmB,EACpC,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,oBAAoB,GAErB,MAAM,cAAc,CAAC;AAEtB,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Agent type registry - manages core and custom agent definitions
3
+ */
4
+ import type { AgentDefinition } from '../types.js';
5
+ /**
6
+ * Get an agent definition by type
7
+ */
8
+ export declare function getAgentDefinition(type: string): AgentDefinition | null;
9
+ /**
10
+ * List all available agent types
11
+ */
12
+ export declare function listAgentTypes(): string[];
13
+ /**
14
+ * List all agent definitions
15
+ */
16
+ export declare function listAgentDefinitions(): AgentDefinition[];
17
+ /**
18
+ * Register a custom agent type from a plugin
19
+ */
20
+ export declare function registerAgent(definition: AgentDefinition): void;
21
+ /**
22
+ * Unregister a custom agent type
23
+ */
24
+ export declare function unregisterAgent(type: string): boolean;
25
+ /**
26
+ * Check if an agent type exists
27
+ */
28
+ export declare function hasAgentType(type: string): boolean;
29
+ /**
30
+ * Get the count of registered agents
31
+ */
32
+ export declare function getAgentCount(): {
33
+ core: number;
34
+ custom: number;
35
+ total: number;
36
+ };
37
+ /**
38
+ * Clear all custom agents (used for testing)
39
+ */
40
+ export declare function clearCustomAgents(): void;
41
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,aAAa,CAAC;AA4B9D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CASvE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAYzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAYxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAY/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWrD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAM/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Agent type registry - manages core and custom agent definitions
3
+ */
4
+ import { coderAgent, researcherAgent, testerAgent, reviewerAgent, architectAgent, coordinatorAgent, analystAgent, } from './definitions/index.js';
5
+ import { logger } from '../utils/logger.js';
6
+ const log = logger.child('registry');
7
+ // Core agent types
8
+ const CORE_AGENTS = new Map([
9
+ ['coder', coderAgent],
10
+ ['researcher', researcherAgent],
11
+ ['tester', testerAgent],
12
+ ['reviewer', reviewerAgent],
13
+ ['architect', architectAgent],
14
+ ['coordinator', coordinatorAgent],
15
+ ['analyst', analystAgent],
16
+ ]);
17
+ // Custom agents from plugins
18
+ const customAgents = new Map();
19
+ /**
20
+ * Get an agent definition by type
21
+ */
22
+ export function getAgentDefinition(type) {
23
+ // Check core agents first
24
+ const coreAgent = CORE_AGENTS.get(type);
25
+ if (coreAgent) {
26
+ return coreAgent;
27
+ }
28
+ // Check custom agents
29
+ return customAgents.get(type) ?? null;
30
+ }
31
+ /**
32
+ * List all available agent types
33
+ */
34
+ export function listAgentTypes() {
35
+ const types = [];
36
+ for (const type of CORE_AGENTS.keys()) {
37
+ types.push(type);
38
+ }
39
+ for (const type of customAgents.keys()) {
40
+ types.push(type);
41
+ }
42
+ return types;
43
+ }
44
+ /**
45
+ * List all agent definitions
46
+ */
47
+ export function listAgentDefinitions() {
48
+ const definitions = [];
49
+ for (const def of CORE_AGENTS.values()) {
50
+ definitions.push(def);
51
+ }
52
+ for (const def of customAgents.values()) {
53
+ definitions.push(def);
54
+ }
55
+ return definitions;
56
+ }
57
+ /**
58
+ * Register a custom agent type from a plugin
59
+ */
60
+ export function registerAgent(definition) {
61
+ if (CORE_AGENTS.has(definition.type)) {
62
+ log.warn('Cannot override core agent type', { type: definition.type });
63
+ return;
64
+ }
65
+ if (customAgents.has(definition.type)) {
66
+ log.warn('Overwriting existing custom agent', { type: definition.type });
67
+ }
68
+ customAgents.set(definition.type, definition);
69
+ log.info('Registered custom agent', { type: definition.type });
70
+ }
71
+ /**
72
+ * Unregister a custom agent type
73
+ */
74
+ export function unregisterAgent(type) {
75
+ if (CORE_AGENTS.has(type)) {
76
+ log.warn('Cannot unregister core agent type', { type });
77
+ return false;
78
+ }
79
+ const deleted = customAgents.delete(type);
80
+ if (deleted) {
81
+ log.info('Unregistered custom agent', { type });
82
+ }
83
+ return deleted;
84
+ }
85
+ /**
86
+ * Check if an agent type exists
87
+ */
88
+ export function hasAgentType(type) {
89
+ return CORE_AGENTS.has(type) || customAgents.has(type);
90
+ }
91
+ /**
92
+ * Get the count of registered agents
93
+ */
94
+ export function getAgentCount() {
95
+ return {
96
+ core: CORE_AGENTS.size,
97
+ custom: customAgents.size,
98
+ total: CORE_AGENTS.size + customAgents.size,
99
+ };
100
+ }
101
+ /**
102
+ * Clear all custom agents (used for testing)
103
+ */
104
+ export function clearCustomAgents() {
105
+ customAgents.clear();
106
+ }
107
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Agent spawner - manages running agents
3
+ */
4
+ import type { SpawnedAgent, AgentStatus, AgentStackConfig } from '../types.js';
5
+ export interface SpawnOptions {
6
+ name?: string;
7
+ sessionId?: string;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ /**
11
+ * Spawn a new agent
12
+ */
13
+ export declare function spawnAgent(type: string, options?: SpawnOptions, _config?: AgentStackConfig): SpawnedAgent;
14
+ /**
15
+ * Get an agent by ID
16
+ */
17
+ export declare function getAgent(id: string): SpawnedAgent | null;
18
+ /**
19
+ * Get an agent by name
20
+ */
21
+ export declare function getAgentByName(name: string): SpawnedAgent | null;
22
+ /**
23
+ * List all active agents
24
+ */
25
+ export declare function listAgents(sessionId?: string): SpawnedAgent[];
26
+ /**
27
+ * Update agent status
28
+ */
29
+ export declare function updateAgentStatus(id: string, status: AgentStatus): boolean;
30
+ /**
31
+ * Stop an agent
32
+ */
33
+ export declare function stopAgent(id: string): boolean;
34
+ /**
35
+ * Stop an agent by name
36
+ */
37
+ export declare function stopAgentByName(name: string): boolean;
38
+ /**
39
+ * Stop all agents
40
+ */
41
+ export declare function stopAllAgents(sessionId?: string): number;
42
+ /**
43
+ * Get agent count
44
+ */
45
+ export declare function getAgentCount(sessionId?: string): number;
46
+ /**
47
+ * Get agents by status
48
+ */
49
+ export declare function getAgentsByStatus(status: AgentStatus): SpawnedAgent[];
50
+ /**
51
+ * Clear all agents (used for testing)
52
+ */
53
+ export declare function clearAgents(): void;
54
+ /**
55
+ * Get the prompt for an agent, ready to use with Claude Code Task tool
56
+ */
57
+ export declare function getAgentPrompt(type: string): string | null;
58
+ /**
59
+ * Get agent capabilities
60
+ */
61
+ export declare function getAgentCapabilities(type: string): string[] | null;
62
+ //# sourceMappingURL=spawner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawner.d.ts","sourceRoot":"","sources":["../../src/agents/spawner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAY/E,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAiB,EAC1B,OAAO,CAAC,EAAE,gBAAgB,GACzB,YAAY,CAkCd;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAU7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAO1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAU7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,CAUrE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAIlE"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Agent spawner - manages running agents
3
+ */
4
+ import { randomUUID } from 'node:crypto';
5
+ import { getAgentDefinition, hasAgentType } from './registry.js';
6
+ import { logger } from '../utils/logger.js';
7
+ const log = logger.child('spawner');
8
+ // Active agents
9
+ const activeAgents = new Map();
10
+ // Agent by name index for quick lookup
11
+ const agentsByName = new Map();
12
+ /**
13
+ * Spawn a new agent
14
+ */
15
+ export function spawnAgent(type, options = {}, _config) {
16
+ if (!hasAgentType(type)) {
17
+ throw new Error(`Unknown agent type: ${type}`);
18
+ }
19
+ const definition = getAgentDefinition(type);
20
+ if (!definition) {
21
+ throw new Error(`Agent definition not found: ${type}`);
22
+ }
23
+ const id = randomUUID();
24
+ const name = options.name ?? `${type}-${id.slice(0, 8)}`;
25
+ // Check for duplicate name
26
+ if (agentsByName.has(name)) {
27
+ throw new Error(`Agent with name '${name}' already exists`);
28
+ }
29
+ const agent = {
30
+ id,
31
+ type,
32
+ name,
33
+ status: 'idle',
34
+ createdAt: new Date(),
35
+ sessionId: options.sessionId,
36
+ metadata: options.metadata,
37
+ };
38
+ activeAgents.set(id, agent);
39
+ agentsByName.set(name, id);
40
+ log.info('Spawned agent', { id, type, name });
41
+ return agent;
42
+ }
43
+ /**
44
+ * Get an agent by ID
45
+ */
46
+ export function getAgent(id) {
47
+ return activeAgents.get(id) ?? null;
48
+ }
49
+ /**
50
+ * Get an agent by name
51
+ */
52
+ export function getAgentByName(name) {
53
+ const id = agentsByName.get(name);
54
+ if (!id)
55
+ return null;
56
+ return activeAgents.get(id) ?? null;
57
+ }
58
+ /**
59
+ * List all active agents
60
+ */
61
+ export function listAgents(sessionId) {
62
+ const agents = [];
63
+ for (const agent of activeAgents.values()) {
64
+ if (!sessionId || agent.sessionId === sessionId) {
65
+ agents.push(agent);
66
+ }
67
+ }
68
+ return agents;
69
+ }
70
+ /**
71
+ * Update agent status
72
+ */
73
+ export function updateAgentStatus(id, status) {
74
+ const agent = activeAgents.get(id);
75
+ if (!agent)
76
+ return false;
77
+ agent.status = status;
78
+ log.debug('Updated agent status', { id, status });
79
+ return true;
80
+ }
81
+ /**
82
+ * Stop an agent
83
+ */
84
+ export function stopAgent(id) {
85
+ const agent = activeAgents.get(id);
86
+ if (!agent)
87
+ return false;
88
+ agent.status = 'stopped';
89
+ activeAgents.delete(id);
90
+ agentsByName.delete(agent.name);
91
+ log.info('Stopped agent', { id, name: agent.name });
92
+ return true;
93
+ }
94
+ /**
95
+ * Stop an agent by name
96
+ */
97
+ export function stopAgentByName(name) {
98
+ const id = agentsByName.get(name);
99
+ if (!id)
100
+ return false;
101
+ return stopAgent(id);
102
+ }
103
+ /**
104
+ * Stop all agents
105
+ */
106
+ export function stopAllAgents(sessionId) {
107
+ let stopped = 0;
108
+ for (const [id, agent] of activeAgents) {
109
+ if (!sessionId || agent.sessionId === sessionId) {
110
+ stopAgent(id);
111
+ stopped++;
112
+ }
113
+ }
114
+ log.info('Stopped all agents', { count: stopped, sessionId });
115
+ return stopped;
116
+ }
117
+ /**
118
+ * Get agent count
119
+ */
120
+ export function getAgentCount(sessionId) {
121
+ if (!sessionId) {
122
+ return activeAgents.size;
123
+ }
124
+ let count = 0;
125
+ for (const agent of activeAgents.values()) {
126
+ if (agent.sessionId === sessionId) {
127
+ count++;
128
+ }
129
+ }
130
+ return count;
131
+ }
132
+ /**
133
+ * Get agents by status
134
+ */
135
+ export function getAgentsByStatus(status) {
136
+ const agents = [];
137
+ for (const agent of activeAgents.values()) {
138
+ if (agent.status === status) {
139
+ agents.push(agent);
140
+ }
141
+ }
142
+ return agents;
143
+ }
144
+ /**
145
+ * Clear all agents (used for testing)
146
+ */
147
+ export function clearAgents() {
148
+ activeAgents.clear();
149
+ agentsByName.clear();
150
+ }
151
+ /**
152
+ * Get the prompt for an agent, ready to use with Claude Code Task tool
153
+ */
154
+ export function getAgentPrompt(type) {
155
+ const definition = getAgentDefinition(type);
156
+ if (!definition)
157
+ return null;
158
+ return definition.systemPrompt;
159
+ }
160
+ /**
161
+ * Get agent capabilities
162
+ */
163
+ export function getAgentCapabilities(type) {
164
+ const definition = getAgentDefinition(type);
165
+ if (!definition)
166
+ return null;
167
+ return definition.capabilities;
168
+ }
169
+ //# sourceMappingURL=spawner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../src/agents/spawner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * agent command - Manage agents
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function createAgentCommand(): Command;
6
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,kBAAkB,IAAI,OAAO,CAiK5C"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * agent command - Manage agents
3
+ */
4
+ import { Command } from 'commander';
5
+ import { spawnAgent, getAgent, getAgentByName, listAgents, stopAgent, stopAgentByName, getAgentPrompt, } from '../../agents/spawner.js';
6
+ import { listAgentTypes, getAgentDefinition } from '../../agents/registry.js';
7
+ import { getConfig } from '../../utils/config.js';
8
+ export function createAgentCommand() {
9
+ const command = new Command('agent')
10
+ .description('Manage agents');
11
+ // spawn subcommand
12
+ command
13
+ .command('spawn')
14
+ .description('Spawn a new agent')
15
+ .requiredOption('-t, --type <type>', 'Agent type (coder, researcher, tester, reviewer, architect, coordinator, analyst)')
16
+ .option('-n, --name <name>', 'Agent name')
17
+ .option('-s, --session <id>', 'Session ID')
18
+ .option('--show-prompt', 'Show the agent system prompt')
19
+ .action((options) => {
20
+ const { type, name, session, showPrompt } = options;
21
+ try {
22
+ const config = getConfig();
23
+ const agent = spawnAgent(type, { name, sessionId: session }, config);
24
+ console.log('Agent spawned:\n');
25
+ console.log(` ID: ${agent.id}`);
26
+ console.log(` Type: ${agent.type}`);
27
+ console.log(` Name: ${agent.name}`);
28
+ console.log(` Status: ${agent.status}`);
29
+ if (showPrompt) {
30
+ const prompt = getAgentPrompt(type);
31
+ if (prompt) {
32
+ console.log('\nSystem Prompt:');
33
+ console.log('─'.repeat(50));
34
+ console.log(prompt);
35
+ console.log('─'.repeat(50));
36
+ }
37
+ }
38
+ }
39
+ catch (error) {
40
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
41
+ process.exit(1);
42
+ }
43
+ });
44
+ // list subcommand
45
+ command
46
+ .command('list')
47
+ .description('List active agents')
48
+ .option('-s, --session <id>', 'Filter by session ID')
49
+ .action((options) => {
50
+ const { session } = options;
51
+ const agents = listAgents(session);
52
+ if (agents.length === 0) {
53
+ console.log('No active agents.');
54
+ return;
55
+ }
56
+ console.log('Active agents:\n');
57
+ console.log('ID Type Name Status');
58
+ console.log('─'.repeat(90));
59
+ for (const agent of agents) {
60
+ console.log(`${agent.id} ${agent.type.padEnd(12)} ${agent.name.padEnd(20)} ${agent.status}`);
61
+ }
62
+ console.log(`\nTotal: ${agents.length} agent(s)`);
63
+ });
64
+ // stop subcommand
65
+ command
66
+ .command('stop')
67
+ .description('Stop an agent')
68
+ .option('-i, --id <id>', 'Agent ID')
69
+ .option('-n, --name <name>', 'Agent name')
70
+ .action((options) => {
71
+ const { id, name } = options;
72
+ if (!id && !name) {
73
+ console.error('Error: Either --id or --name is required');
74
+ process.exit(1);
75
+ }
76
+ let stopped = false;
77
+ if (id) {
78
+ stopped = stopAgent(id);
79
+ }
80
+ else if (name) {
81
+ stopped = stopAgentByName(name);
82
+ }
83
+ if (stopped) {
84
+ console.log('Agent stopped successfully.');
85
+ }
86
+ else {
87
+ console.error('Agent not found.');
88
+ process.exit(1);
89
+ }
90
+ });
91
+ // status subcommand
92
+ command
93
+ .command('status')
94
+ .description('Get agent status')
95
+ .option('-i, --id <id>', 'Agent ID')
96
+ .option('-n, --name <name>', 'Agent name')
97
+ .action((options) => {
98
+ const { id, name } = options;
99
+ if (!id && !name) {
100
+ console.error('Error: Either --id or --name is required');
101
+ process.exit(1);
102
+ }
103
+ let agent = null;
104
+ if (id) {
105
+ agent = getAgent(id);
106
+ }
107
+ else if (name) {
108
+ agent = getAgentByName(name);
109
+ }
110
+ if (!agent) {
111
+ console.error('Agent not found.');
112
+ process.exit(1);
113
+ }
114
+ const definition = getAgentDefinition(agent.type);
115
+ console.log('Agent status:\n');
116
+ console.log(` ID: ${agent.id}`);
117
+ console.log(` Type: ${agent.type}`);
118
+ console.log(` Name: ${agent.name}`);
119
+ console.log(` Status: ${agent.status}`);
120
+ console.log(` Created: ${agent.createdAt.toISOString()}`);
121
+ if (agent.sessionId) {
122
+ console.log(` Session: ${agent.sessionId}`);
123
+ }
124
+ if (definition?.capabilities) {
125
+ console.log(` Capabilities: ${definition.capabilities.join(', ')}`);
126
+ }
127
+ });
128
+ // types subcommand
129
+ command
130
+ .command('types')
131
+ .description('List available agent types')
132
+ .action(() => {
133
+ const types = listAgentTypes();
134
+ console.log('Available agent types:\n');
135
+ console.log('Type Description');
136
+ console.log('─'.repeat(60));
137
+ for (const type of types) {
138
+ const def = getAgentDefinition(type);
139
+ console.log(`${type.padEnd(14)}${def?.description ?? ''}`);
140
+ }
141
+ });
142
+ return command;
143
+ }
144
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI commands index
3
+ */
4
+ export { createInitCommand } from './init.js';
5
+ export { createAgentCommand } from './agent.js';
6
+ export { createMemoryCommand } from './memory.js';
7
+ export { createMcpCommand } from './mcp.js';
8
+ export { createPluginCommand } from './plugin.js';
9
+ export { createStatusCommand } from './status.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}