@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,68 @@
1
+ /**
2
+ * Topology - hierarchical coordinator pattern
3
+ */
4
+ import type { SpawnedAgent, Task } from '../types.js';
5
+ export interface CoordinatorOptions {
6
+ maxWorkers?: number;
7
+ sessionId?: string;
8
+ }
9
+ /**
10
+ * Hierarchical coordinator - one coordinator managing multiple workers
11
+ */
12
+ export declare class HierarchicalCoordinator {
13
+ private coordinator;
14
+ private workers;
15
+ private taskQueue;
16
+ private maxWorkers;
17
+ private sessionId?;
18
+ private unsubscribe?;
19
+ constructor(options?: CoordinatorOptions);
20
+ /**
21
+ * Initialize the coordinator
22
+ */
23
+ initialize(): Promise<void>;
24
+ /**
25
+ * Handle incoming messages
26
+ */
27
+ private handleMessage;
28
+ /**
29
+ * Submit a task for coordination
30
+ */
31
+ submitTask(task: Task, priority?: number): Promise<void>;
32
+ /**
33
+ * Try to assign pending tasks to available workers
34
+ */
35
+ private assignPendingTasks;
36
+ /**
37
+ * Get an available worker or spawn a new one
38
+ */
39
+ private getAvailableWorker;
40
+ /**
41
+ * Handle task completion
42
+ */
43
+ private handleTaskCompleted;
44
+ /**
45
+ * Handle task failure
46
+ */
47
+ private handleTaskFailed;
48
+ /**
49
+ * Handle worker ready notification
50
+ */
51
+ private handleWorkerReady;
52
+ /**
53
+ * Get status of the coordination
54
+ */
55
+ getStatus(): {
56
+ coordinator: SpawnedAgent | null;
57
+ workers: SpawnedAgent[];
58
+ queue: {
59
+ queued: number;
60
+ processing: number;
61
+ };
62
+ };
63
+ /**
64
+ * Shutdown the coordinator
65
+ */
66
+ shutdown(): Promise<void>;
67
+ }
68
+ //# sourceMappingURL=topology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../src/coordination/topology.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAQtD,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAC,CAAa;gBAErB,OAAO,GAAE,kBAAuB;IAM5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;YACW,kBAAkB;IAgChC;;OAEG;YACW,kBAAkB;IA2BhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,SAAS,IAAI;QACX,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;QACjC,OAAO,EAAE,YAAY,EAAE,CAAC;QACxB,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C;IAQD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Topology - hierarchical coordinator pattern
3
+ */
4
+ import { spawnAgent, updateAgentStatus, stopAgent } from '../agents/spawner.js';
5
+ import { TaskQueue } from './task-queue.js';
6
+ import { getMessageBus } from './message-bus.js';
7
+ import { logger } from '../utils/logger.js';
8
+ const log = logger.child('topology');
9
+ /**
10
+ * Hierarchical coordinator - one coordinator managing multiple workers
11
+ */
12
+ export class HierarchicalCoordinator {
13
+ coordinator = null;
14
+ workers = new Map();
15
+ taskQueue;
16
+ maxWorkers;
17
+ sessionId;
18
+ unsubscribe;
19
+ constructor(options = {}) {
20
+ this.maxWorkers = options.maxWorkers ?? 5;
21
+ this.sessionId = options.sessionId;
22
+ this.taskQueue = new TaskQueue();
23
+ }
24
+ /**
25
+ * Initialize the coordinator
26
+ */
27
+ async initialize() {
28
+ // Spawn coordinator agent
29
+ this.coordinator = spawnAgent('coordinator', {
30
+ name: 'main-coordinator',
31
+ sessionId: this.sessionId,
32
+ });
33
+ updateAgentStatus(this.coordinator.id, 'running');
34
+ // Subscribe to messages
35
+ const bus = getMessageBus();
36
+ this.unsubscribe = bus.subscribe(this.coordinator.id, this.handleMessage.bind(this));
37
+ // Set up task queue events
38
+ this.taskQueue.on('task:added', () => this.assignPendingTasks());
39
+ log.info('Coordinator initialized', { id: this.coordinator.id });
40
+ }
41
+ /**
42
+ * Handle incoming messages
43
+ */
44
+ handleMessage(message) {
45
+ log.debug('Coordinator received message', {
46
+ type: message.type,
47
+ from: message.from,
48
+ });
49
+ switch (message.type) {
50
+ case 'task:completed':
51
+ this.handleTaskCompleted(message);
52
+ break;
53
+ case 'task:failed':
54
+ this.handleTaskFailed(message);
55
+ break;
56
+ case 'worker:ready':
57
+ this.handleWorkerReady(message);
58
+ break;
59
+ }
60
+ }
61
+ /**
62
+ * Submit a task for coordination
63
+ */
64
+ async submitTask(task, priority = 5) {
65
+ this.taskQueue.enqueue(task, priority);
66
+ log.debug('Task submitted', { taskId: task.id, priority });
67
+ }
68
+ /**
69
+ * Try to assign pending tasks to available workers
70
+ */
71
+ async assignPendingTasks() {
72
+ while (!this.taskQueue.isEmpty) {
73
+ // Find available worker or spawn new one
74
+ const worker = await this.getAvailableWorker();
75
+ if (!worker) {
76
+ log.debug('No available workers, waiting');
77
+ break;
78
+ }
79
+ // Get next task
80
+ const queuedTask = this.taskQueue.dequeue(worker.type);
81
+ if (!queuedTask) {
82
+ break;
83
+ }
84
+ // Assign task to worker
85
+ this.taskQueue.assign(queuedTask.task.id, worker.id);
86
+ updateAgentStatus(worker.id, 'running');
87
+ // Send task to worker via message bus
88
+ const bus = getMessageBus();
89
+ bus.send(this.coordinator.id, worker.id, 'task:assign', {
90
+ task: queuedTask.task,
91
+ });
92
+ log.debug('Task assigned to worker', {
93
+ taskId: queuedTask.task.id,
94
+ workerId: worker.id,
95
+ });
96
+ }
97
+ }
98
+ /**
99
+ * Get an available worker or spawn a new one
100
+ */
101
+ async getAvailableWorker() {
102
+ // Find idle worker
103
+ for (const worker of this.workers.values()) {
104
+ if (worker.status === 'idle') {
105
+ return worker;
106
+ }
107
+ }
108
+ // Spawn new worker if under limit
109
+ if (this.workers.size < this.maxWorkers) {
110
+ // Get next task type from queue to spawn appropriate worker
111
+ const nextTask = this.taskQueue.peek(1)[0];
112
+ if (!nextTask)
113
+ return null;
114
+ const worker = spawnAgent(nextTask.task.agentType, {
115
+ sessionId: this.sessionId,
116
+ });
117
+ this.workers.set(worker.id, worker);
118
+ log.info('Spawned new worker', { id: worker.id, type: worker.type });
119
+ return worker;
120
+ }
121
+ return null;
122
+ }
123
+ /**
124
+ * Handle task completion
125
+ */
126
+ handleTaskCompleted(message) {
127
+ const { taskId } = message.payload;
128
+ this.taskQueue.complete(taskId);
129
+ // Mark worker as idle
130
+ const worker = this.workers.get(message.from);
131
+ if (worker) {
132
+ updateAgentStatus(worker.id, 'idle');
133
+ }
134
+ // Try to assign more tasks
135
+ void this.assignPendingTasks();
136
+ }
137
+ /**
138
+ * Handle task failure
139
+ */
140
+ handleTaskFailed(message) {
141
+ const { taskId } = message.payload;
142
+ // Requeue the task
143
+ this.taskQueue.requeue(taskId);
144
+ // Mark worker as idle (or failed if repeated failures)
145
+ const worker = this.workers.get(message.from);
146
+ if (worker) {
147
+ updateAgentStatus(worker.id, 'idle');
148
+ }
149
+ // Try to assign more tasks
150
+ void this.assignPendingTasks();
151
+ }
152
+ /**
153
+ * Handle worker ready notification
154
+ */
155
+ handleWorkerReady(message) {
156
+ const worker = this.workers.get(message.from);
157
+ if (worker) {
158
+ updateAgentStatus(worker.id, 'idle');
159
+ void this.assignPendingTasks();
160
+ }
161
+ }
162
+ /**
163
+ * Get status of the coordination
164
+ */
165
+ getStatus() {
166
+ return {
167
+ coordinator: this.coordinator,
168
+ workers: Array.from(this.workers.values()),
169
+ queue: this.taskQueue.getStatus(),
170
+ };
171
+ }
172
+ /**
173
+ * Shutdown the coordinator
174
+ */
175
+ async shutdown() {
176
+ // Unsubscribe from messages
177
+ if (this.unsubscribe) {
178
+ this.unsubscribe();
179
+ }
180
+ // Stop all workers
181
+ for (const worker of this.workers.values()) {
182
+ stopAgent(worker.id);
183
+ }
184
+ this.workers.clear();
185
+ // Stop coordinator
186
+ if (this.coordinator) {
187
+ stopAgent(this.coordinator.id);
188
+ this.coordinator = null;
189
+ }
190
+ // Clear queue
191
+ this.taskQueue.clear();
192
+ log.info('Coordinator shutdown');
193
+ }
194
+ }
195
+ //# sourceMappingURL=topology.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/coordination/topology.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * GitHub client - wraps gh CLI for GitHub operations
3
+ */
4
+ import type { AgentStackConfig } from '../types.js';
5
+ export interface GitHubClientOptions {
6
+ token?: string;
7
+ useGhCli?: boolean;
8
+ }
9
+ export declare class GitHubClient {
10
+ private token?;
11
+ private useGhCli;
12
+ constructor(options?: GitHubClientOptions);
13
+ /**
14
+ * Execute a gh CLI command
15
+ */
16
+ private executeGh;
17
+ /**
18
+ * Execute a gh CLI command synchronously
19
+ */
20
+ private executeGhSync;
21
+ /**
22
+ * Check if gh CLI is available
23
+ */
24
+ isAvailable(): boolean;
25
+ /**
26
+ * Check if authenticated
27
+ */
28
+ isAuthenticated(): Promise<boolean>;
29
+ createIssue(owner: string, repo: string, title: string, body?: string, options?: {
30
+ labels?: string[];
31
+ assignees?: string[];
32
+ }): Promise<{
33
+ number: number;
34
+ url: string;
35
+ }>;
36
+ listIssues(owner: string, repo: string, options?: {
37
+ state?: 'open' | 'closed' | 'all';
38
+ limit?: number;
39
+ }): Promise<unknown[]>;
40
+ getIssue(owner: string, repo: string, number: number): Promise<unknown>;
41
+ createPR(owner: string, repo: string, title: string, head: string, base: string, body?: string, draft?: boolean): Promise<{
42
+ number: number;
43
+ url: string;
44
+ }>;
45
+ listPRs(owner: string, repo: string, options?: {
46
+ state?: 'open' | 'closed' | 'merged' | 'all';
47
+ limit?: number;
48
+ }): Promise<unknown[]>;
49
+ getPR(owner: string, repo: string, number: number): Promise<unknown>;
50
+ getRepo(owner: string, repo: string): Promise<unknown>;
51
+ }
52
+ /**
53
+ * Create GitHub client from config
54
+ */
55
+ export declare function createGitHubClient(config: AgentStackConfig): GitHubClient | null;
56
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/github/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAU;gBAEd,OAAO,GAAE,mBAAwB;IAK7C;;OAEG;YACW,SAAS;IA2BvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,WAAW,IAAI,OAAO;IAStB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAWnC,WAAW,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACpD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAerC,UAAU,CACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9D,OAAO,CAAC,OAAO,EAAE,CAAC;IAaf,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAavE,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBrC,OAAO,CACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,OAAO,EAAE,CAAC;IAaf,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAapE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAS7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAUhF"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * GitHub client - wraps gh CLI for GitHub operations
3
+ */
4
+ import { execSync, exec } from 'node:child_process';
5
+ import { logger } from '../utils/logger.js';
6
+ const log = logger.child('github');
7
+ export class GitHubClient {
8
+ token;
9
+ useGhCli;
10
+ constructor(options = {}) {
11
+ this.token = options.token;
12
+ this.useGhCli = options.useGhCli ?? true;
13
+ }
14
+ /**
15
+ * Execute a gh CLI command
16
+ */
17
+ async executeGh(args) {
18
+ return new Promise((resolve, reject) => {
19
+ const env = { ...process.env };
20
+ if (this.token && !this.useGhCli) {
21
+ env['GH_TOKEN'] = this.token;
22
+ }
23
+ const command = `gh ${args.join(' ')}`;
24
+ log.debug('Executing gh command', { args });
25
+ exec(command, { env, timeout: 30000 }, (error, stdout, stderr) => {
26
+ if (error) {
27
+ log.error('gh command failed', { error: error.message, stderr });
28
+ reject(new Error(`GitHub command failed: ${error.message}`));
29
+ return;
30
+ }
31
+ try {
32
+ resolve(JSON.parse(stdout));
33
+ }
34
+ catch {
35
+ resolve(stdout.trim());
36
+ }
37
+ });
38
+ });
39
+ }
40
+ /**
41
+ * Execute a gh CLI command synchronously
42
+ */
43
+ executeGhSync(args) {
44
+ const env = { ...process.env };
45
+ if (this.token && !this.useGhCli) {
46
+ env['GH_TOKEN'] = this.token;
47
+ }
48
+ try {
49
+ const result = execSync(`gh ${args.join(' ')}`, {
50
+ encoding: 'utf-8',
51
+ env,
52
+ timeout: 30000,
53
+ });
54
+ return JSON.parse(result);
55
+ }
56
+ catch (error) {
57
+ throw new Error(`GitHub command failed: ${error instanceof Error ? error.message : String(error)}`);
58
+ }
59
+ }
60
+ /**
61
+ * Check if gh CLI is available
62
+ */
63
+ isAvailable() {
64
+ try {
65
+ execSync('gh --version', { encoding: 'utf-8', timeout: 5000 });
66
+ return true;
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ /**
73
+ * Check if authenticated
74
+ */
75
+ async isAuthenticated() {
76
+ try {
77
+ await this.executeGh(['auth', 'status']);
78
+ return true;
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ }
84
+ // Issue operations
85
+ async createIssue(owner, repo, title, body, options) {
86
+ const args = [
87
+ 'issue', 'create',
88
+ '-R', `${owner}/${repo}`,
89
+ '--title', JSON.stringify(title),
90
+ '--json', 'number,url',
91
+ ];
92
+ if (body)
93
+ args.push('--body', JSON.stringify(body));
94
+ if (options?.labels?.length)
95
+ args.push('--label', options.labels.join(','));
96
+ if (options?.assignees?.length)
97
+ args.push('--assignee', options.assignees.join(','));
98
+ return await this.executeGh(args);
99
+ }
100
+ async listIssues(owner, repo, options) {
101
+ const args = [
102
+ 'issue', 'list',
103
+ '-R', `${owner}/${repo}`,
104
+ '--json', 'number,title,state,author,labels,createdAt',
105
+ '--limit', String(options?.limit ?? 30),
106
+ ];
107
+ if (options?.state)
108
+ args.push('--state', options.state);
109
+ return await this.executeGh(args);
110
+ }
111
+ async getIssue(owner, repo, number) {
112
+ const args = [
113
+ 'issue', 'view',
114
+ '-R', `${owner}/${repo}`,
115
+ String(number),
116
+ '--json', 'number,title,body,state,author,labels,assignees,createdAt,closedAt',
117
+ ];
118
+ return await this.executeGh(args);
119
+ }
120
+ // PR operations
121
+ async createPR(owner, repo, title, head, base, body, draft) {
122
+ const args = [
123
+ 'pr', 'create',
124
+ '-R', `${owner}/${repo}`,
125
+ '--title', JSON.stringify(title),
126
+ '--head', head,
127
+ '--base', base,
128
+ '--json', 'number,url',
129
+ ];
130
+ if (body)
131
+ args.push('--body', JSON.stringify(body));
132
+ if (draft)
133
+ args.push('--draft');
134
+ return await this.executeGh(args);
135
+ }
136
+ async listPRs(owner, repo, options) {
137
+ const args = [
138
+ 'pr', 'list',
139
+ '-R', `${owner}/${repo}`,
140
+ '--json', 'number,title,state,author,headRefName,baseRefName,createdAt',
141
+ '--limit', String(options?.limit ?? 30),
142
+ ];
143
+ if (options?.state)
144
+ args.push('--state', options.state);
145
+ return await this.executeGh(args);
146
+ }
147
+ async getPR(owner, repo, number) {
148
+ const args = [
149
+ 'pr', 'view',
150
+ '-R', `${owner}/${repo}`,
151
+ String(number),
152
+ '--json', 'number,title,body,state,author,headRefName,baseRefName,isDraft,mergeable,createdAt,closedAt,mergedAt',
153
+ ];
154
+ return await this.executeGh(args);
155
+ }
156
+ // Repo operations
157
+ async getRepo(owner, repo) {
158
+ const args = [
159
+ 'repo', 'view',
160
+ `${owner}/${repo}`,
161
+ '--json', 'name,description,owner,url,defaultBranchRef,stargazerCount,forkCount,isPrivate,createdAt,pushedAt',
162
+ ];
163
+ return await this.executeGh(args);
164
+ }
165
+ }
166
+ /**
167
+ * Create GitHub client from config
168
+ */
169
+ export function createGitHubClient(config) {
170
+ if (!config.github.enabled) {
171
+ log.debug('GitHub integration disabled');
172
+ return null;
173
+ }
174
+ return new GitHubClient({
175
+ token: config.github.token,
176
+ useGhCli: config.github.useGhCli,
177
+ });
178
+ }
179
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/github/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * GitHub module exports
3
+ */
4
+ export { GitHubClient, createGitHubClient, type GitHubClientOptions } from './client.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/github/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * GitHub module exports
3
+ */
4
+ export { GitHubClient, createGitHubClient } from './client.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/github/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAA4B,MAAM,aAAa,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Hooks module - event-driven extensibility
3
+ */
4
+ import type { HookEvent, HookContext, AgentStackConfig } from '../types.js';
5
+ import { MemoryManager } from '../memory/index.js';
6
+ type HookHandler = (context: HookContext, memory: MemoryManager, config: AgentStackConfig) => Promise<void>;
7
+ /**
8
+ * Execute hooks for an event
9
+ */
10
+ export declare function executeHooks(event: HookEvent, context: HookContext, memory: MemoryManager, config: AgentStackConfig): Promise<void>;
11
+ /**
12
+ * Register a custom hook handler
13
+ */
14
+ export declare function registerHook(event: HookEvent, handler: HookHandler): void;
15
+ /**
16
+ * Unregister all custom hooks for an event
17
+ */
18
+ export declare function unregisterHooks(event: HookEvent): void;
19
+ /**
20
+ * Clear all custom hooks
21
+ */
22
+ export declare function clearCustomHooks(): void;
23
+ /**
24
+ * Get registered hook count
25
+ */
26
+ export declare function getHookCount(event?: HookEvent): number;
27
+ export { sessionStartHook, sessionEndHook } from './session.js';
28
+ export { preTaskHook, postTaskHook } from './task.js';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQnD,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAG5G;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAoBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAKzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAUtD;AAGD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}