@agentarea/cli 0.1.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 (110) hide show
  1. package/dist/app.d.ts +7 -0
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +32 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/cli-commands.d.ts +9 -0
  6. package/dist/cli-commands.d.ts.map +1 -0
  7. package/dist/cli-commands.js +62 -0
  8. package/dist/cli-commands.js.map +1 -0
  9. package/dist/cli.d.ts +3 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +66 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/commands/agentsList.d.ts +2 -0
  14. package/dist/commands/agentsList.d.ts.map +1 -0
  15. package/dist/commands/agentsList.js +67 -0
  16. package/dist/commands/agentsList.js.map +1 -0
  17. package/dist/commands/authToken.d.ts +6 -0
  18. package/dist/commands/authToken.d.ts.map +1 -0
  19. package/dist/commands/authToken.js +67 -0
  20. package/dist/commands/authToken.js.map +1 -0
  21. package/dist/commands/connect.d.ts +10 -0
  22. package/dist/commands/connect.d.ts.map +1 -0
  23. package/dist/commands/connect.js +204 -0
  24. package/dist/commands/connect.js.map +1 -0
  25. package/dist/commands/interactiveTUI.d.ts +7 -0
  26. package/dist/commands/interactiveTUI.d.ts.map +1 -0
  27. package/dist/commands/interactiveTUI.js +186 -0
  28. package/dist/commands/interactiveTUI.js.map +1 -0
  29. package/dist/components/ErrorBoundary.d.ts +18 -0
  30. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  31. package/dist/components/ErrorBoundary.js +32 -0
  32. package/dist/components/ErrorBoundary.js.map +1 -0
  33. package/dist/components/InteractiveCLI.d.ts +7 -0
  34. package/dist/components/InteractiveCLI.d.ts.map +1 -0
  35. package/dist/components/InteractiveCLI.js +129 -0
  36. package/dist/components/InteractiveCLI.js.map +1 -0
  37. package/dist/components/REPL.d.ts +7 -0
  38. package/dist/components/REPL.d.ts.map +1 -0
  39. package/dist/components/REPL.js +153 -0
  40. package/dist/components/REPL.js.map +1 -0
  41. package/dist/context/AuthContext.d.ts +28 -0
  42. package/dist/context/AuthContext.d.ts.map +1 -0
  43. package/dist/context/AuthContext.js +14 -0
  44. package/dist/context/AuthContext.js.map +1 -0
  45. package/dist/hooks/useAgent.d.ts +39 -0
  46. package/dist/hooks/useAgent.d.ts.map +1 -0
  47. package/dist/hooks/useAgent.js +125 -0
  48. package/dist/hooks/useAgent.js.map +1 -0
  49. package/dist/hooks/useAuth.d.ts +45 -0
  50. package/dist/hooks/useAuth.d.ts.map +1 -0
  51. package/dist/hooks/useAuth.js +177 -0
  52. package/dist/hooks/useAuth.js.map +1 -0
  53. package/dist/hooks/useSSE.d.ts +32 -0
  54. package/dist/hooks/useSSE.d.ts.map +1 -0
  55. package/dist/hooks/useSSE.js +113 -0
  56. package/dist/hooks/useSSE.js.map +1 -0
  57. package/dist/services/agent.d.ts +13 -0
  58. package/dist/services/agent.d.ts.map +1 -0
  59. package/dist/services/agent.js +114 -0
  60. package/dist/services/agent.js.map +1 -0
  61. package/dist/services/apiClient.d.ts +25 -0
  62. package/dist/services/apiClient.d.ts.map +1 -0
  63. package/dist/services/apiClient.js +258 -0
  64. package/dist/services/apiClient.js.map +1 -0
  65. package/dist/services/auth.d.ts +20 -0
  66. package/dist/services/auth.d.ts.map +1 -0
  67. package/dist/services/auth.js +147 -0
  68. package/dist/services/auth.js.map +1 -0
  69. package/dist/services/sse.d.ts +18 -0
  70. package/dist/services/sse.d.ts.map +1 -0
  71. package/dist/services/sse.js +153 -0
  72. package/dist/services/sse.js.map +1 -0
  73. package/dist/services/task.d.ts +15 -0
  74. package/dist/services/task.d.ts.map +1 -0
  75. package/dist/services/task.js +110 -0
  76. package/dist/services/task.js.map +1 -0
  77. package/dist/tui.d.ts +6 -0
  78. package/dist/tui.d.ts.map +1 -0
  79. package/dist/tui.js +94 -0
  80. package/dist/tui.js.map +1 -0
  81. package/dist/types/index.d.ts +119 -0
  82. package/dist/types/index.d.ts.map +1 -0
  83. package/dist/types/index.js +2 -0
  84. package/dist/types/index.js.map +1 -0
  85. package/dist/utils/config.d.ts +14 -0
  86. package/dist/utils/config.d.ts.map +1 -0
  87. package/dist/utils/config.js +146 -0
  88. package/dist/utils/config.js.map +1 -0
  89. package/dist/utils/error.d.ts +33 -0
  90. package/dist/utils/error.d.ts.map +1 -0
  91. package/dist/utils/error.js +83 -0
  92. package/dist/utils/error.js.map +1 -0
  93. package/dist/utils/formatting.d.ts +18 -0
  94. package/dist/utils/formatting.d.ts.map +1 -0
  95. package/dist/utils/formatting.js +62 -0
  96. package/dist/utils/formatting.js.map +1 -0
  97. package/dist/utils/logger.d.ts +14 -0
  98. package/dist/utils/logger.d.ts.map +1 -0
  99. package/dist/utils/logger.js +49 -0
  100. package/dist/utils/logger.js.map +1 -0
  101. package/dist/utils/signals.d.ts +10 -0
  102. package/dist/utils/signals.d.ts.map +1 -0
  103. package/dist/utils/signals.js +71 -0
  104. package/dist/utils/signals.js.map +1 -0
  105. package/dist/utils/storage.d.ts +11 -0
  106. package/dist/utils/storage.d.ts.map +1 -0
  107. package/dist/utils/storage.js +73 -0
  108. package/dist/utils/storage.js.map +1 -0
  109. package/package.json +103 -0
  110. package/readme.md +229 -0
@@ -0,0 +1,153 @@
1
+ import EventSource from 'eventsource';
2
+ import { apiClient } from './apiClient.js';
3
+ import { logger } from '../utils/logger.js';
4
+ import { SSEError } from '../utils/error.js';
5
+ export class SSEService {
6
+ constructor() {
7
+ Object.defineProperty(this, "eventSources", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: new Map()
12
+ });
13
+ Object.defineProperty(this, "handlers", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: new Map()
18
+ });
19
+ Object.defineProperty(this, "reconnectAttempts", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: new Map()
24
+ });
25
+ Object.defineProperty(this, "maxReconnectAttempts", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: 5
30
+ });
31
+ Object.defineProperty(this, "reconnectDelay", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: 1000
36
+ }); // milliseconds
37
+ }
38
+ async connect(taskId, onMessage, onError, token) {
39
+ try {
40
+ // Close existing connection if any
41
+ this.disconnect(taskId);
42
+ const token_ = token || apiClient.getToken()?.accessToken;
43
+ if (!token_) {
44
+ throw new SSEError('No authentication token available for SSE connection');
45
+ }
46
+ // AgentArea uses /v1/tasks/{taskId}/stream or similar endpoint for streaming
47
+ // Adjust based on actual AgentArea streaming endpoint structure
48
+ const baseUrl = apiClient.getClient().defaults.baseURL || '';
49
+ const url = `${baseUrl}/v1/tasks/${taskId}/stream`;
50
+ const eventSource = new EventSource(url, {
51
+ headers: {
52
+ Authorization: `Bearer ${token_}`,
53
+ },
54
+ });
55
+ // Register event handlers
56
+ eventSource.addEventListener('task-started', (event) => {
57
+ const messageEvent = event;
58
+ const data = JSON.parse(messageEvent.data);
59
+ onMessage(data);
60
+ });
61
+ eventSource.addEventListener('output', (event) => {
62
+ const messageEvent = event;
63
+ const data = JSON.parse(messageEvent.data);
64
+ onMessage(data);
65
+ });
66
+ eventSource.addEventListener('status-update', (event) => {
67
+ const messageEvent = event;
68
+ const data = JSON.parse(messageEvent.data);
69
+ onMessage(data);
70
+ });
71
+ eventSource.addEventListener('progress', (event) => {
72
+ const messageEvent = event;
73
+ const data = JSON.parse(messageEvent.data);
74
+ onMessage(data);
75
+ });
76
+ eventSource.addEventListener('task-completed', (event) => {
77
+ const messageEvent = event;
78
+ const data = JSON.parse(messageEvent.data);
79
+ onMessage(data);
80
+ this.disconnect(taskId);
81
+ });
82
+ eventSource.addEventListener('task-error', (event) => {
83
+ const messageEvent = event;
84
+ const data = JSON.parse(messageEvent.data);
85
+ onMessage(data);
86
+ this.disconnect(taskId);
87
+ });
88
+ eventSource.onerror = () => {
89
+ this.handleConnectionError(taskId, onError);
90
+ };
91
+ this.eventSources.set(taskId, eventSource);
92
+ this.handlers.set(taskId, { onMessage, onError });
93
+ this.reconnectAttempts.set(taskId, 0);
94
+ logger.info(`SSE connection established for task ${taskId}`);
95
+ }
96
+ catch (error) {
97
+ logger.error(`Failed to establish SSE connection for task ${taskId}:`, error);
98
+ throw error instanceof SSEError
99
+ ? error
100
+ : new SSEError(`Failed to connect to task stream: ${error}`);
101
+ }
102
+ }
103
+ handleConnectionError(taskId, onError) {
104
+ const attempts = (this.reconnectAttempts.get(taskId) || 0) + 1;
105
+ this.reconnectAttempts.set(taskId, attempts);
106
+ if (attempts > this.maxReconnectAttempts) {
107
+ logger.error(`Max reconnection attempts reached for task ${taskId}`);
108
+ const error = new Error(`Connection lost after ${attempts} attempts`);
109
+ onError(error);
110
+ this.disconnect(taskId);
111
+ return;
112
+ }
113
+ const delay = this.reconnectDelay * Math.pow(2, attempts - 1);
114
+ logger.warn(`SSE connection error for task ${taskId}, retrying in ${delay}ms (attempt ${attempts}/${this.maxReconnectAttempts})`);
115
+ setTimeout(() => {
116
+ const handlers = this.handlers.get(taskId);
117
+ if (handlers) {
118
+ this.connect(taskId, handlers.onMessage, handlers.onError).catch(error => {
119
+ logger.error('Reconnection failed:', error);
120
+ });
121
+ }
122
+ }, delay);
123
+ }
124
+ disconnect(taskId) {
125
+ const eventSource = this.eventSources.get(taskId);
126
+ if (eventSource) {
127
+ eventSource.close();
128
+ this.eventSources.delete(taskId);
129
+ this.handlers.delete(taskId);
130
+ this.reconnectAttempts.delete(taskId);
131
+ logger.debug(`SSE connection closed for task ${taskId}`);
132
+ }
133
+ }
134
+ disconnectAll() {
135
+ this.eventSources.forEach(eventSource => {
136
+ eventSource.close();
137
+ });
138
+ this.eventSources.clear();
139
+ this.handlers.clear();
140
+ this.reconnectAttempts.clear();
141
+ logger.debug('All SSE connections closed');
142
+ }
143
+ isConnected(taskId) {
144
+ const eventSource = this.eventSources.get(taskId);
145
+ return (eventSource !== undefined && eventSource.readyState === EventSource.OPEN);
146
+ }
147
+ getActiveConnections() {
148
+ return Array.from(this.eventSources.keys());
149
+ }
150
+ }
151
+ // Export a singleton instance
152
+ export const sseService = new SSEService();
153
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../source/services/sse.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAM3C,MAAM,OAAO,UAAU;IAAvB;QACS;;;;mBAAyC,IAAI,GAAG,EAAE;WAAC;QACnD;;;;mBAGJ,IAAI,GAAG,EAAE;WAAC;QACN;;;;mBAAyC,IAAI,GAAG,EAAE;WAAC;QACnD;;;;mBAAuB,CAAC;WAAC;QACzB;;;;mBAAiB,IAAI;WAAC,CAAC,eAAe;IA6J/C,CAAC;IA3JA,KAAK,CAAC,OAAO,CACZ,MAAc,EACd,SAA0B,EAC1B,OAAwB,EACxB,KAAc;QAEd,IAAI,CAAC;YACJ,mCAAmC;YACnC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC;YAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,IAAI,QAAQ,CACjB,sDAAsD,CACtD,CAAC;YACH,CAAC;YAED,6EAA6E;YAC7E,gEAAgE;YAChE,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,GAAG,OAAO,aAAa,MAAM,SAAS,CAAC;YAEnD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE;gBACxC,OAAO,EAAE;oBACR,aAAa,EAAE,UAAU,MAAM,EAAE;iBACjC;aACD,CAAC,CAAC;YAEH,0BAA0B;YAC1B,WAAW,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,KAAY,EAAE,EAAE;gBAC7D,MAAM,YAAY,GAAG,KAAqB,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAoB,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE;gBACvD,MAAM,YAAY,GAAG,KAAqB,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAoB,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,KAAY,EAAE,EAAE;gBAC9D,MAAM,YAAY,GAAG,KAAqB,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAoB,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAY,EAAE,EAAE;gBACzD,MAAM,YAAY,GAAG,KAAqB,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAoB,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,KAAY,EAAE,EAAE;gBAC/D,MAAM,YAAY,GAAG,KAAqB,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAoB,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,KAAY,EAAE,EAAE;gBAC3D,MAAM,YAAY,GAAG,KAAqB,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAoB,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,OAAO,GAAG,GAAG,EAAE;gBAC1B,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC;YAChD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAEtC,MAAM,CAAC,IAAI,CAAC,uCAAuC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CACX,+CAA+C,MAAM,GAAG,EACxD,KAAK,CACL,CAAC;YACF,MAAM,KAAK,YAAY,QAAQ;gBAC9B,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,QAAQ,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;IACF,CAAC;IAEO,qBAAqB,CAC5B,MAAc,EACd,OAAwB;QAExB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,QAAQ,WAAW,CAAC,CAAC;YACtE,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO;QACR,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CACV,iCAAiC,MAAM,iBAAiB,KAAK,eAAe,QAAQ,IAAI,IAAI,CAAC,oBAAoB,GAAG,CACpH,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAC/D,KAAK,CAAC,EAAE;oBACP,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC,CACD,CAAC;YACH,CAAC;QACF,CAAC,EAAE,KAAK,CAAC,CAAC;IACX,CAAC;IAED,UAAU,CAAC,MAAc;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,WAAW,EAAE,CAAC;YACjB,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACvC,WAAW,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAE/B,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,MAAc;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CACN,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,CACxE,CAAC;IACH,CAAC;IAED,oBAAoB;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;CACD;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type Task, type TaskSubmissionRequest, type TaskResponse, type TaskStatus } from '../types/index.js';
2
+ export declare class TaskService {
3
+ submitTask(request: TaskSubmissionRequest): Promise<TaskResponse>;
4
+ listTasks(agentId?: string, status?: TaskStatus, skip?: number, limit?: number): Promise<{
5
+ tasks: Task[];
6
+ total: number;
7
+ }>;
8
+ getTask(taskId: string, agentId?: string): Promise<Task>;
9
+ cancelTask(taskId: string, agentId?: string): Promise<void>;
10
+ validateTaskParameters(parameters?: Record<string, unknown>): boolean;
11
+ formatTaskStatus(status: TaskStatus): string;
12
+ getSSEStreamUrl(taskId: string): string;
13
+ }
14
+ export declare const taskService: TaskService;
15
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../source/services/task.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,IAAI,EACT,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,WAAW;IACjB,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiCjE,SAAS,CACd,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,UAAU,EACnB,IAAI,SAAI,EACR,KAAK,SAAK,GACR,OAAO,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;IAyBpC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjE,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAerE,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAY5C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGvC;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { apiClient } from './apiClient.js';
2
+ import { logger } from '../utils/logger.js';
3
+ import { NetworkError, ValidationError } from '../utils/error.js';
4
+ export class TaskService {
5
+ async submitTask(request) {
6
+ try {
7
+ // Validate required fields
8
+ if (!request.agentId || !request.title) {
9
+ throw new ValidationError('agentId and title are required');
10
+ }
11
+ if (request.title.trim().length === 0) {
12
+ throw new ValidationError('Task title cannot be empty');
13
+ }
14
+ // AgentArea API uses /v1/agents/{agent_id}/tasks endpoint
15
+ const response = await apiClient
16
+ .getClient()
17
+ .post(`/v1/agents/${request.agentId}/tasks`, {
18
+ description: request.title, // AgentArea uses 'description' instead of 'title'
19
+ parameters: request.parameters || {},
20
+ });
21
+ logger.info(`Task submitted: ${response.data.taskId || response.data.id}`);
22
+ return response.data;
23
+ }
24
+ catch (error) {
25
+ logger.error('Failed to submit task:', error);
26
+ throw error instanceof ValidationError
27
+ ? error
28
+ : new NetworkError(`Failed to submit task: ${error}`);
29
+ }
30
+ }
31
+ async listTasks(agentId, status, skip = 0, limit = 50) {
32
+ try {
33
+ // AgentArea uses /v1/tasks endpoint for global task listing
34
+ const params = new URLSearchParams();
35
+ params.append('skip', String(skip));
36
+ params.append('limit', String(limit));
37
+ if (status) {
38
+ params.append('status', status);
39
+ }
40
+ const response = await apiClient
41
+ .getClient()
42
+ .get(`/v1/tasks?${params.toString()}`);
43
+ logger.debug(`Fetched ${response.data.tasks.length} tasks`);
44
+ return response.data;
45
+ }
46
+ catch (error) {
47
+ logger.error('Failed to list tasks:', error);
48
+ throw new NetworkError(`Failed to list tasks: ${error}`);
49
+ }
50
+ }
51
+ async getTask(taskId, agentId) {
52
+ try {
53
+ // AgentArea uses /v1/agents/{agent_id}/tasks/{task_id} or /v1/tasks/{task_id}
54
+ const endpoint = agentId
55
+ ? `/v1/agents/${agentId}/tasks/${taskId}`
56
+ : `/v1/tasks/${taskId}`;
57
+ const response = await apiClient.getClient().get(endpoint);
58
+ logger.debug(`Fetched task ${taskId}`);
59
+ return response.data;
60
+ }
61
+ catch (error) {
62
+ logger.error(`Failed to fetch task ${taskId}:`, error);
63
+ throw new NetworkError(`Failed to fetch task: ${error}`);
64
+ }
65
+ }
66
+ async cancelTask(taskId, agentId) {
67
+ try {
68
+ // AgentArea uses DELETE on task endpoint
69
+ const endpoint = agentId
70
+ ? `/v1/agents/${agentId}/tasks/${taskId}`
71
+ : `/v1/tasks/${taskId}`;
72
+ await apiClient.getClient().delete(endpoint);
73
+ logger.info(`Task cancelled: ${taskId}`);
74
+ }
75
+ catch (error) {
76
+ logger.error(`Failed to cancel task ${taskId}:`, error);
77
+ throw new NetworkError(`Failed to cancel task: ${error}`);
78
+ }
79
+ }
80
+ validateTaskParameters(parameters) {
81
+ if (!parameters) {
82
+ return true;
83
+ }
84
+ try {
85
+ // Verify that all parameters are serializable to JSON
86
+ JSON.stringify(parameters);
87
+ return true;
88
+ }
89
+ catch (error) {
90
+ logger.error('Invalid task parameters:', error);
91
+ return false;
92
+ }
93
+ }
94
+ formatTaskStatus(status) {
95
+ const statusMap = {
96
+ pending: '⏳ Pending',
97
+ running: '🔄 Running',
98
+ completed: '✓ Completed',
99
+ failed: '✗ Failed',
100
+ cancelled: '⊘ Cancelled',
101
+ };
102
+ return statusMap[status] || status;
103
+ }
104
+ getSSEStreamUrl(taskId) {
105
+ return `/sse/tasks/${taskId}`;
106
+ }
107
+ }
108
+ // Export a singleton instance
109
+ export const taskService = new TaskService();
110
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../source/services/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAQhE,MAAM,OAAO,WAAW;IACvB,KAAK,CAAC,UAAU,CAAC,OAA8B;QAC9C,IAAI,CAAC;YACJ,2BAA2B;YAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,eAAe,CAAC,4BAA4B,CAAC,CAAC;YACzD,CAAC;YAED,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,MAAM,SAAS;iBAC9B,SAAS,EAAE;iBACX,IAAI,CAAe,cAAc,OAAO,CAAC,OAAO,QAAQ,EAAE;gBAC1D,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,kDAAkD;gBAC9E,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;aACpC,CAAC,CAAC;YAEJ,MAAM,CAAC,IAAI,CACV,mBACE,QAAQ,CAAC,IAAY,CAAC,MAAM,IAAK,QAAQ,CAAC,IAAY,CAAC,EACzD,EAAE,CACF,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,KAAK,YAAY,eAAe;gBACrC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,YAAY,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAED,KAAK,CAAC,SAAS,CACd,OAAgB,EAChB,MAAmB,EACnB,IAAI,GAAG,CAAC,EACR,KAAK,GAAG,EAAE;QAEV,IAAI,CAAC;YACJ,4DAA4D;YAC5D,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtC,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,SAAS;iBAC9B,SAAS,EAAE;iBACX,GAAG,CACH,aAAa,MAAM,CAAC,QAAQ,EAAE,EAAE,CAChC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC5D,OAAO,QAAQ,CAAC,IAAsC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC7C,MAAM,IAAI,YAAY,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAgB;QAC7C,IAAI,CAAC;YACJ,8EAA8E;YAC9E,MAAM,QAAQ,GAAG,OAAO;gBACvB,CAAC,CAAC,cAAc,OAAO,UAAU,MAAM,EAAE;gBACzC,CAAC,CAAC,aAAa,MAAM,EAAE,CAAC;YAEzB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,CAAO,QAAQ,CAAC,CAAC;YAEjE,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,IAAI,YAAY,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAgB;QAChD,IAAI,CAAC;YACJ,yCAAyC;YACzC,MAAM,QAAQ,GAAG,OAAO;gBACvB,CAAC,CAAC,cAAc,OAAO,UAAU,MAAM,EAAE;gBACzC,CAAC,CAAC,aAAa,MAAM,EAAE,CAAC;YAEzB,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,IAAI,YAAY,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAED,sBAAsB,CAAC,UAAoC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC;YACJ,sDAAsD;YACtD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,MAAkB;QAClC,MAAM,SAAS,GAA+B;YAC7C,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,aAAa;SACxB,CAAC;QAEF,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,MAAc;QAC7B,OAAO,cAAc,MAAM,EAAE,CAAC;IAC/B,CAAC;CACD;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
package/dist/tui.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ interface TUIProps {
2
+ token?: string;
3
+ }
4
+ export default function TUI({ token: cliToken }: TUIProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../source/tui.tsx"],"names":[],"mappings":"AAQA,UAAU,QAAQ;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,QAAQ,2CA2HtD"}
package/dist/tui.js ADDED
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { Box, Text } from 'ink';
4
+ import { logger } from './utils/logger.js';
5
+ import { apiClient } from './services/apiClient.js';
6
+ import { tokenStorage } from './utils/storage.js';
7
+ import { AuthToken } from './commands/authToken.js';
8
+ import { InteractiveCLI } from './components/InteractiveCLI.js';
9
+ export default function TUI({ token: cliToken }) {
10
+ const [loadedToken, setLoadedToken] = useState(cliToken || null);
11
+ const [loading, setLoading] = useState(!cliToken);
12
+ const [showAuthInput, setShowAuthInput] = useState(false);
13
+ const [tokenExpired, setTokenExpired] = useState(false);
14
+ // Setup 401 error handler for API client
15
+ useEffect(() => {
16
+ apiClient.set401Callback(async (error) => {
17
+ logger.warn('Token expired, prompting for new token');
18
+ setTokenExpired(true);
19
+ });
20
+ }, []);
21
+ // Load token from storage on startup
22
+ useEffect(() => {
23
+ const loadToken = async () => {
24
+ try {
25
+ // If token provided via CLI, use it directly
26
+ if (cliToken) {
27
+ setLoadedToken(cliToken);
28
+ setLoading(false);
29
+ return;
30
+ }
31
+ // Try to load from storage
32
+ const storedToken = await tokenStorage.getToken();
33
+ if (storedToken) {
34
+ setLoadedToken(storedToken.accessToken);
35
+ setLoading(false);
36
+ }
37
+ else {
38
+ // No token found, show auth input
39
+ setShowAuthInput(true);
40
+ setLoading(false);
41
+ }
42
+ }
43
+ catch (error) {
44
+ logger.warn('Failed to load stored token');
45
+ setShowAuthInput(true);
46
+ setLoading(false);
47
+ }
48
+ };
49
+ loadToken();
50
+ }, [cliToken]);
51
+ // Set token in API client when loaded
52
+ useEffect(() => {
53
+ if (loadedToken) {
54
+ const authToken = {
55
+ accessToken: loadedToken,
56
+ tokenType: 'Bearer',
57
+ expiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
58
+ };
59
+ apiClient.setToken(authToken);
60
+ logger.info('Token set for API authentication');
61
+ }
62
+ }, [loadedToken]);
63
+ // Show loading state
64
+ if (loading) {
65
+ return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsx(Text, { color: "yellow", children: "\u23F3 Loading authentication state..." }) }));
66
+ }
67
+ // Show token input screen if no token or token expired
68
+ if ((!loadedToken && showAuthInput) || tokenExpired) {
69
+ const handleNewToken = (newToken) => {
70
+ setLoadedToken(newToken);
71
+ setTokenExpired(false);
72
+ setShowAuthInput(false);
73
+ };
74
+ return _jsx(AuthToken, { onTokenSet: handleNewToken });
75
+ }
76
+ if (!loadedToken) {
77
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "red", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "red", children: "\u274C No Authentication Token" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Provide a JWT token to use the CLI:" }) }), _jsx(Box, { marginLeft: 2, marginBottom: 1, children: _jsx(Text, { children: "agentarea-cli --token=YOUR_JWT_TOKEN" }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Or set AGENTAREA_TOKEN environment variable:" }) }), _jsx(Box, { marginLeft: 2, marginBottom: 1, children: _jsx(Text, { children: "AGENTAREA_TOKEN=eyJ... agentarea-cli" }) })] }));
78
+ }
79
+ // Extract user info from JWT if possible
80
+ let userEmail = 'user@agentarea.dev';
81
+ try {
82
+ const parts = loadedToken.split('.');
83
+ if (parts.length === 3) {
84
+ const decoded = JSON.parse(Buffer.from(parts[1], 'base64').toString());
85
+ userEmail = decoded.email || decoded.sub || 'User';
86
+ }
87
+ }
88
+ catch (error) {
89
+ logger.warn('Could not decode JWT');
90
+ }
91
+ // Show interactive CLI
92
+ return _jsx(InteractiveCLI, { userEmail: userEmail, token: loadedToken });
93
+ }
94
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../source/tui.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ export interface User {
2
+ id: string;
3
+ email: string;
4
+ name?: string;
5
+ createdAt: Date;
6
+ lastLoginAt?: Date;
7
+ }
8
+ export interface AuthToken {
9
+ accessToken: string;
10
+ refreshToken?: string;
11
+ expiresAt?: Date;
12
+ tokenType: string;
13
+ }
14
+ export interface Credentials {
15
+ email: string;
16
+ password: string;
17
+ apiKey?: string;
18
+ }
19
+ export type AgentStatus = 'online' | 'offline' | 'busy' | 'error';
20
+ export interface Agent {
21
+ id: string;
22
+ name: string;
23
+ description?: string;
24
+ status: AgentStatus;
25
+ capabilities: string[];
26
+ version?: string;
27
+ metadata?: Record<string, unknown>;
28
+ lastHeartbeat?: Date;
29
+ }
30
+ export interface AgentList {
31
+ agents: Agent[];
32
+ total: number;
33
+ timestamp: Date;
34
+ }
35
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
36
+ export interface Task {
37
+ id: string;
38
+ agentId: string;
39
+ title: string;
40
+ description?: string;
41
+ parameters?: Record<string, unknown>;
42
+ status: TaskStatus;
43
+ submittedAt: Date;
44
+ startedAt?: Date;
45
+ completedAt?: Date;
46
+ result?: unknown;
47
+ error?: TaskError;
48
+ }
49
+ export interface TaskError {
50
+ code: string;
51
+ message: string;
52
+ details?: unknown;
53
+ timestamp: Date;
54
+ }
55
+ export interface TaskSubmissionRequest {
56
+ agentId: string;
57
+ title: string;
58
+ description?: string;
59
+ parameters?: Record<string, unknown>;
60
+ }
61
+ export interface TaskResponse {
62
+ taskId: string;
63
+ agentId: string;
64
+ streamUrl: string;
65
+ estimatedDuration?: number;
66
+ }
67
+ export type TaskEventType = 'output' | 'status' | 'progress' | 'error' | 'complete';
68
+ export interface TaskOutputEvent {
69
+ eventType: TaskEventType;
70
+ taskId: string;
71
+ timestamp: Date;
72
+ data: TaskOutputData;
73
+ }
74
+ export type TaskOutputData = OutputChunk | StatusUpdate | ProgressUpdate | ErrorEvent | CompletionEvent;
75
+ export interface OutputChunk {
76
+ type: 'output';
77
+ content: string;
78
+ stream: 'stdout' | 'stderr';
79
+ }
80
+ export interface StatusUpdate {
81
+ type: 'status';
82
+ status: TaskStatus;
83
+ message: string;
84
+ }
85
+ export interface ProgressUpdate {
86
+ type: 'progress';
87
+ current: number;
88
+ total: number;
89
+ percentage: number;
90
+ }
91
+ export interface ErrorEvent {
92
+ type: 'error';
93
+ code: string;
94
+ message: string;
95
+ details?: unknown;
96
+ }
97
+ export interface CompletionEvent {
98
+ type: 'complete';
99
+ status: 'success' | 'failure';
100
+ message: string;
101
+ resultSummary?: unknown;
102
+ }
103
+ export interface CLIConfig {
104
+ kratosUrl: string;
105
+ apiBaseUrl: string;
106
+ apiTimeout?: number;
107
+ maxRetries?: number;
108
+ retryDelay?: number;
109
+ streamTimeout?: number;
110
+ logLevel?: 'debug' | 'info' | 'warn' | 'error';
111
+ theme?: 'light' | 'dark' | 'auto';
112
+ }
113
+ export interface SessionState {
114
+ userId?: string;
115
+ userEmail?: string;
116
+ selectedAgentId?: string;
117
+ recentTaskIds?: string[];
118
+ }
119
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { type CLIConfig } from '../types/index.js';
2
+ export declare class ConfigManager {
3
+ private config;
4
+ constructor();
5
+ private loadConfig;
6
+ get(): CLIConfig;
7
+ set(key: keyof CLIConfig, value: unknown): void;
8
+ update(partial: Partial<CLIConfig>): void;
9
+ reset(): void;
10
+ reinitialize(): void;
11
+ validate(): void;
12
+ }
13
+ export declare const configManager: ConfigManager;
14
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../source/utils/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAyBjD,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAY;;IAO1B,OAAO,CAAC,UAAU;IAkDlB,GAAG,IAAI,SAAS;IAIhB,GAAG,CAAC,GAAG,EAAE,MAAM,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAW/C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAWzC,KAAK,IAAI,IAAI;IAWb,YAAY,IAAI,IAAI;IAUpB,QAAQ,IAAI,IAAI;CAwBhB;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}