openpaean 0.4.2 → 0.5.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 (70) hide show
  1. package/dist/api/client.d.ts +13 -3
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +130 -24
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/api/gateway-api.d.ts +46 -0
  6. package/dist/api/gateway-api.d.ts.map +1 -0
  7. package/dist/api/gateway-api.js +50 -0
  8. package/dist/api/gateway-api.js.map +1 -0
  9. package/dist/api/worker-api.d.ts +94 -0
  10. package/dist/api/worker-api.d.ts.map +1 -0
  11. package/dist/api/worker-api.js +85 -0
  12. package/dist/api/worker-api.js.map +1 -0
  13. package/dist/cli.js +13 -2
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/agent.d.ts +4 -0
  16. package/dist/commands/agent.d.ts.map +1 -1
  17. package/dist/commands/agent.js +57 -5
  18. package/dist/commands/agent.js.map +1 -1
  19. package/dist/commands/gateway.d.ts +8 -0
  20. package/dist/commands/gateway.d.ts.map +1 -0
  21. package/dist/commands/gateway.js +86 -0
  22. package/dist/commands/gateway.js.map +1 -0
  23. package/dist/commands/worker.d.ts +7 -0
  24. package/dist/commands/worker.d.ts.map +1 -0
  25. package/dist/commands/worker.js +283 -0
  26. package/dist/commands/worker.js.map +1 -0
  27. package/dist/gateway/service.d.ts +94 -0
  28. package/dist/gateway/service.d.ts.map +1 -0
  29. package/dist/gateway/service.js +331 -0
  30. package/dist/gateway/service.js.map +1 -0
  31. package/dist/index.d.ts +5 -3
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +7 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/mcp/client.d.ts.map +1 -1
  36. package/dist/mcp/client.js +12 -1
  37. package/dist/mcp/client.js.map +1 -1
  38. package/dist/utils/config.d.ts +13 -0
  39. package/dist/utils/config.d.ts.map +1 -1
  40. package/dist/utils/config.js +24 -0
  41. package/dist/utils/config.js.map +1 -1
  42. package/dist/utils/output.d.ts +4 -0
  43. package/dist/utils/output.d.ts.map +1 -1
  44. package/dist/utils/output.js +17 -0
  45. package/dist/utils/output.js.map +1 -1
  46. package/dist/worker/executors/articulate.d.ts +19 -0
  47. package/dist/worker/executors/articulate.d.ts.map +1 -0
  48. package/dist/worker/executors/articulate.js +147 -0
  49. package/dist/worker/executors/articulate.js.map +1 -0
  50. package/dist/worker/executors/claude.d.ts +17 -0
  51. package/dist/worker/executors/claude.d.ts.map +1 -0
  52. package/dist/worker/executors/claude.js +102 -0
  53. package/dist/worker/executors/claude.js.map +1 -0
  54. package/dist/worker/executors/index.d.ts +26 -0
  55. package/dist/worker/executors/index.d.ts.map +1 -0
  56. package/dist/worker/executors/index.js +81 -0
  57. package/dist/worker/executors/index.js.map +1 -0
  58. package/dist/worker/index.d.ts +9 -0
  59. package/dist/worker/index.d.ts.map +1 -0
  60. package/dist/worker/index.js +9 -0
  61. package/dist/worker/index.js.map +1 -0
  62. package/dist/worker/service.d.ts +48 -0
  63. package/dist/worker/service.d.ts.map +1 -0
  64. package/dist/worker/service.js +551 -0
  65. package/dist/worker/service.js.map +1 -0
  66. package/dist/worker/types.d.ts +133 -0
  67. package/dist/worker/types.d.ts.map +1 -0
  68. package/dist/worker/types.js +70 -0
  69. package/dist/worker/types.js.map +1 -0
  70. package/package.json +8 -3
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Paean API Client
2
+ * OpenPaean API Client
3
3
  * HTTP client for communicating with the Paean AI backend
4
4
  */
5
5
  import { type AxiosInstance } from 'axios';
@@ -16,8 +16,11 @@ export interface ApiResponse<T> {
16
16
  }
17
17
  /**
18
18
  * Create an authenticated API client
19
+ * @param options.clearAuthOn401 - Clear auth on 401 errors (default: true)
19
20
  */
20
- export declare function createApiClient(): AxiosInstance;
21
+ export declare function createApiClient(options?: {
22
+ clearAuthOn401?: boolean;
23
+ }): AxiosInstance;
21
24
  /**
22
25
  * Create an unauthenticated API client (for login flows)
23
26
  */
@@ -25,7 +28,14 @@ export declare function createPublicApiClient(): AxiosInstance;
25
28
  /**
26
29
  * Get the authenticated API client singleton
27
30
  */
28
- export declare function getApiClient(): AxiosInstance;
31
+ export declare function getApiClient(options?: {
32
+ clearAuthOn401?: boolean;
33
+ }): AxiosInstance;
34
+ /**
35
+ * Create a non-clearing API client (doesn't invalidate auth on transient 401s).
36
+ * Used by worker and gateway operations.
37
+ */
38
+ export declare function createNonClearingApiClient(): AxiosInstance;
29
39
  /**
30
40
  * Get the public API client singleton
31
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAmB,MAAM,OAAO,CAAC;AAGnE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAiD/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,CAiCrD;AAMD;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAK5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAKlD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAoD,MAAM,OAAO,CAAC;AA+BpG,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CA4ErF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,CAoCrD;AAqDD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAKlF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,CAE1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAKlD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
@@ -1,42 +1,95 @@
1
1
  /**
2
- * Paean API Client
2
+ * OpenPaean API Client
3
3
  * HTTP client for communicating with the Paean AI backend
4
4
  */
5
5
  import axios from 'axios';
6
- import { getToken, getApiUrl, clearAuth } from '../utils/config.js';
6
+ import { readFileSync } from 'fs';
7
+ import { fileURLToPath } from 'url';
8
+ import { dirname, join } from 'path';
9
+ import { getToken, getApiUrl, clearAuth, getRefreshToken, isTokenNearExpiry, storeAuth } from '../utils/config.js';
10
+ const MAX_RETRIES = 3;
11
+ const RETRY_BASE_DELAY_MS = 1000;
12
+ const RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
13
+ function isRetryableError(error) {
14
+ if (!error.response)
15
+ return true;
16
+ return RETRYABLE_STATUS_CODES.has(error.response.status);
17
+ }
18
+ function sleep(ms) {
19
+ return new Promise(resolve => setTimeout(resolve, ms));
20
+ }
21
+ const __filename = fileURLToPath(import.meta.url);
22
+ const __dirname = dirname(__filename);
23
+ let cliVersion;
24
+ try {
25
+ const packageJson = JSON.parse(readFileSync(join(__dirname, '..', '..', 'package.json'), 'utf-8'));
26
+ cliVersion = packageJson.version;
27
+ }
28
+ catch {
29
+ cliVersion = 'unknown';
30
+ }
7
31
  /**
8
32
  * Create an authenticated API client
33
+ * @param options.clearAuthOn401 - Clear auth on 401 errors (default: true)
9
34
  */
10
- export function createApiClient() {
35
+ export function createApiClient(options) {
36
+ const clearAuthOn401 = options?.clearAuthOn401 !== false;
11
37
  const client = axios.create({
12
38
  baseURL: getApiUrl(),
13
39
  timeout: 30000,
14
40
  headers: {
15
41
  'Content-Type': 'application/json',
16
42
  'Accept': 'application/json',
17
- 'User-Agent': 'OpenPaean-CLI/0.1.0',
43
+ 'User-Agent': `OpenPaean-CLI/${cliVersion}`,
18
44
  },
19
45
  });
20
- // Add auth token to requests
21
- client.interceptors.request.use((config) => {
46
+ client.interceptors.request.use(async (config) => {
47
+ if (isTokenNearExpiry()) {
48
+ await refreshAuthToken();
49
+ }
22
50
  const token = getToken();
23
51
  if (token) {
24
52
  config.headers.Authorization = `Bearer ${token}`;
25
53
  }
26
54
  return config;
27
55
  });
28
- // Handle response errors
29
- client.interceptors.response.use((response) => response, (error) => {
30
- // Handle 401 Unauthorized - clear auth and prompt re-login
31
- if (error.response?.status === 401) {
56
+ client.interceptors.response.use((response) => response, async (error) => {
57
+ if (error.response?.status === 401 && clearAuthOn401) {
58
+ const refreshToken = getRefreshToken();
59
+ if (refreshToken && error.config && !error.config._retried) {
60
+ const refreshed = await refreshAuthToken();
61
+ if (refreshed) {
62
+ const config = error.config;
63
+ config._retried = true;
64
+ const token = getToken();
65
+ if (token) {
66
+ config.headers.Authorization = `Bearer ${token}`;
67
+ }
68
+ return client.request(config);
69
+ }
70
+ }
32
71
  clearAuth();
33
72
  }
34
- // Extract error message
35
- const errorMessage = error.response?.data?.error ||
36
- error.response?.data?.message ||
37
- error.message ||
38
- 'An unknown error occurred';
39
- // Create a more informative error
73
+ if (error.config && isRetryableError(error)) {
74
+ const config = error.config;
75
+ config._retryCount = (config._retryCount || 0) + 1;
76
+ if (config._retryCount <= MAX_RETRIES) {
77
+ const delay = RETRY_BASE_DELAY_MS * Math.pow(2, config._retryCount - 1);
78
+ await sleep(delay);
79
+ return client.request(config);
80
+ }
81
+ }
82
+ const rawError = error.response?.data?.error;
83
+ let errorMessage;
84
+ if (typeof rawError === 'string') {
85
+ errorMessage = rawError;
86
+ }
87
+ else if (rawError && typeof rawError === 'object' && typeof rawError.message === 'string') {
88
+ errorMessage = rawError.message;
89
+ }
90
+ else {
91
+ errorMessage = error.response?.data?.message || error.message || 'An unknown error occurred';
92
+ }
40
93
  const enhancedError = new Error(errorMessage);
41
94
  enhancedError.statusCode = error.response?.status;
42
95
  enhancedError.isApiError = true;
@@ -54,15 +107,21 @@ export function createPublicApiClient() {
54
107
  headers: {
55
108
  'Content-Type': 'application/json',
56
109
  'Accept': 'application/json',
57
- 'User-Agent': 'OpenPaean-CLI/0.1.0',
110
+ 'User-Agent': `OpenPaean-CLI/${cliVersion}`,
58
111
  },
59
112
  });
60
- // Handle response errors
61
113
  client.interceptors.response.use((response) => response, (error) => {
62
- const errorMessage = error.response?.data?.error ||
63
- error.response?.data?.message ||
64
- error.message ||
65
- 'An unknown error occurred';
114
+ const rawError = error.response?.data?.error;
115
+ let errorMessage;
116
+ if (typeof rawError === 'string') {
117
+ errorMessage = rawError;
118
+ }
119
+ else if (rawError && typeof rawError === 'object' && typeof rawError.message === 'string') {
120
+ errorMessage = rawError.message;
121
+ }
122
+ else {
123
+ errorMessage = error.response?.data?.message || error.message || 'An unknown error occurred';
124
+ }
66
125
  const enhancedError = new Error(errorMessage);
67
126
  enhancedError.statusCode = error.response?.status;
68
127
  enhancedError.isApiError = true;
@@ -70,18 +129,65 @@ export function createPublicApiClient() {
70
129
  });
71
130
  return client;
72
131
  }
132
+ let isRefreshing = false;
133
+ let refreshPromise = null;
134
+ async function refreshAuthToken() {
135
+ if (isRefreshing && refreshPromise)
136
+ return refreshPromise;
137
+ const refreshToken = getRefreshToken();
138
+ if (!refreshToken)
139
+ return false;
140
+ isRefreshing = true;
141
+ refreshPromise = (async () => {
142
+ try {
143
+ const response = await axios.post(`${getApiUrl()}/auth/refresh-token`, {
144
+ refreshToken,
145
+ }, {
146
+ headers: {
147
+ 'Content-Type': 'application/json',
148
+ 'User-Agent': `OpenPaean-CLI/${cliVersion}`,
149
+ },
150
+ timeout: 10000,
151
+ });
152
+ const data = response.data;
153
+ if (data.token) {
154
+ storeAuth({
155
+ token: data.token,
156
+ expiresAt: data.expiresAt,
157
+ });
158
+ return true;
159
+ }
160
+ return false;
161
+ }
162
+ catch {
163
+ return false;
164
+ }
165
+ finally {
166
+ isRefreshing = false;
167
+ refreshPromise = null;
168
+ }
169
+ })();
170
+ return refreshPromise;
171
+ }
73
172
  // Singleton instances
74
173
  let apiClient = null;
75
174
  let publicApiClient = null;
76
175
  /**
77
176
  * Get the authenticated API client singleton
78
177
  */
79
- export function getApiClient() {
178
+ export function getApiClient(options) {
80
179
  if (!apiClient) {
81
- apiClient = createApiClient();
180
+ apiClient = createApiClient(options);
82
181
  }
83
182
  return apiClient;
84
183
  }
184
+ /**
185
+ * Create a non-clearing API client (doesn't invalidate auth on transient 401s).
186
+ * Used by worker and gateway operations.
187
+ */
188
+ export function createNonClearingApiClient() {
189
+ return createApiClient({ clearAuthOn401: false });
190
+ }
85
191
  /**
86
192
  * Get the public API client singleton
87
193
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Gateway API
3
+ * Client functions for OpenPaean CLI Gateway operations.
4
+ * Uses a non-clearing API client so that transient 401 errors
5
+ * don't invalidate user auth.
6
+ */
7
+ export interface GatewayRequest {
8
+ requestId: string;
9
+ conversationId: number;
10
+ conversationHashKey?: string;
11
+ message: string;
12
+ references?: Array<{
13
+ type: string;
14
+ hashKey: string;
15
+ title: string;
16
+ }>;
17
+ clientType: string;
18
+ createdAt: string;
19
+ }
20
+ export interface GatewayStreamEvent {
21
+ type: string;
22
+ data: Record<string, unknown>;
23
+ }
24
+ export interface GatewayCompletionResult {
25
+ content: string;
26
+ toolCalls?: unknown[];
27
+ error?: string;
28
+ }
29
+ export declare function pollGatewayRequests(sessionId: string, limit?: number): Promise<{
30
+ requests: GatewayRequest[];
31
+ count: number;
32
+ }>;
33
+ export declare function claimGatewayRequest(requestId: string, sessionId: string, deviceName?: string): Promise<{
34
+ success: boolean;
35
+ request?: GatewayRequest;
36
+ error?: string;
37
+ }>;
38
+ export declare function pushGatewayEvents(requestId: string, sessionId: string, events: GatewayStreamEvent[]): Promise<{
39
+ success: boolean;
40
+ error?: string;
41
+ }>;
42
+ export declare function completeGatewayRequest(requestId: string, sessionId: string, result: GatewayCompletionResult): Promise<{
43
+ success: boolean;
44
+ error?: string;
45
+ }>;
46
+ //# sourceMappingURL=gateway-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-api.d.ts","sourceRoot":"","sources":["../../src/api/gateway-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAsB,mBAAmB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAU,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAOxD;AAED,wBAAsB,mBAAmB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQzE;AAED,wBAAsB,iBAAiB,CACnC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,EAAE,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/C;AAED,wBAAsB,sBAAsB,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,uBAAuB,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/C"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Gateway API
3
+ * Client functions for OpenPaean CLI Gateway operations.
4
+ * Uses a non-clearing API client so that transient 401 errors
5
+ * don't invalidate user auth.
6
+ */
7
+ import { createNonClearingApiClient } from './client.js';
8
+ function getClient() {
9
+ return createNonClearingApiClient();
10
+ }
11
+ // ============================================
12
+ // API Functions
13
+ // ============================================
14
+ export async function pollGatewayRequests(sessionId, limit = 5) {
15
+ const client = getClient();
16
+ const response = await client.post('/agent/gateway/poll', { sessionId, limit });
17
+ return response.data.data;
18
+ }
19
+ export async function claimGatewayRequest(requestId, sessionId, deviceName) {
20
+ const client = getClient();
21
+ const response = await client.post(`/agent/gateway/claim/${requestId}`, { sessionId, deviceName });
22
+ return response.data;
23
+ }
24
+ export async function pushGatewayEvents(requestId, sessionId, events) {
25
+ const client = getClient();
26
+ try {
27
+ const response = await client.post(`/agent/gateway/events/${requestId}`, { sessionId, events });
28
+ return response.data;
29
+ }
30
+ catch (error) {
31
+ return {
32
+ success: false,
33
+ error: error instanceof Error ? error.message : 'Unknown error',
34
+ };
35
+ }
36
+ }
37
+ export async function completeGatewayRequest(requestId, sessionId, result) {
38
+ const client = getClient();
39
+ try {
40
+ const response = await client.post(`/agent/gateway/complete/${requestId}`, { sessionId, result });
41
+ return response.data;
42
+ }
43
+ catch (error) {
44
+ return {
45
+ success: false,
46
+ error: error instanceof Error ? error.message : 'Unknown error',
47
+ };
48
+ }
49
+ }
50
+ //# sourceMappingURL=gateway-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-api.js","sourceRoot":"","sources":["../../src/api/gateway-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,SAAS,SAAS;IACd,OAAO,0BAA0B,EAAE,CAAC;AACxC,CAAC;AA2BD,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,SAAiB,EACjB,QAAgB,CAAC;IAEjB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAG/B,qBAAqB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,SAAiB,EACjB,SAAiB,EACjB,UAAmB;IAEnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAI/B,wBAAwB,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC,IAAI,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,SAAiB,EACjB,SAAiB,EACjB,MAA4B;IAE5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,yBAAyB,SAAS,EAAE,EACpC,EAAE,SAAS,EAAE,MAAM,EAAE,CACxB,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAClE,CAAC;IACN,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,SAAiB,EACjB,SAAiB,EACjB,MAA+B;IAE/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,2BAA2B,SAAS,EAAE,EACtC,EAAE,SAAS,EAAE,MAAM,EAAE,CACxB,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAClE,CAAC;IACN,CAAC;AACL,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Worker API
3
+ * Specialized API client for OpenPaean CLI Worker operations.
4
+ *
5
+ * All Worker API calls use a non-clearing API client so that
6
+ * transient 401 errors don't invalidate the user's auth state.
7
+ */
8
+ import type { TodoItem } from './todo.js';
9
+ export interface CliPayload {
10
+ hint?: string;
11
+ workingDirectory?: string;
12
+ timeout?: number;
13
+ requiresConfirmation?: boolean;
14
+ context?: Record<string, unknown>;
15
+ allowedPaths?: string[];
16
+ }
17
+ export interface WorkerTask extends TodoItem {
18
+ taskType: 'remote-agent';
19
+ cliPayload?: CliPayload;
20
+ claimedBySessionId?: string;
21
+ claimedByDeviceName?: string;
22
+ claimedAt?: string;
23
+ }
24
+ export type WorkerStatus = 'idle' | 'running' | 'paused';
25
+ export interface WorkerHeartbeatInput {
26
+ status: WorkerStatus;
27
+ currentTaskId?: string;
28
+ completedCount?: number;
29
+ failedCount?: number;
30
+ workingDirectory?: string;
31
+ capabilities?: string[];
32
+ }
33
+ export type ProgressStage = 'started' | 'executing' | 'verifying' | 'waiting_confirmation';
34
+ export interface TaskProgressInput {
35
+ stage: ProgressStage;
36
+ message?: string;
37
+ percentage?: number;
38
+ }
39
+ export interface TaskExecutionResult {
40
+ success: boolean;
41
+ output?: string;
42
+ artifacts?: Array<{
43
+ type: 'file' | 'text';
44
+ name: string;
45
+ content: string;
46
+ }>;
47
+ durationMs?: number;
48
+ }
49
+ export interface ActiveWorker {
50
+ sessionId: string;
51
+ deviceName: string;
52
+ deviceType: string;
53
+ status: WorkerStatus;
54
+ capabilities: string[];
55
+ currentTaskId?: string;
56
+ lastHeartbeat?: string;
57
+ }
58
+ export declare function pollWorkerTasks(options?: {
59
+ sessionId: string;
60
+ taskTypes?: Array<'remote-agent'>;
61
+ tags?: string[];
62
+ limit?: number;
63
+ }): Promise<{
64
+ tasks: WorkerTask[];
65
+ count: number;
66
+ }>;
67
+ export declare function claimTask(taskId: string, sessionId: string, deviceName?: string): Promise<{
68
+ success: boolean;
69
+ task?: WorkerTask;
70
+ error?: string;
71
+ }>;
72
+ export declare function releaseTask(taskId: string, sessionId: string, reason?: string): Promise<{
73
+ success: boolean;
74
+ error?: string;
75
+ }>;
76
+ export declare function sendHeartbeat(sessionId: string, input: WorkerHeartbeatInput): Promise<{
77
+ success: boolean;
78
+ error?: string;
79
+ }>;
80
+ export declare function reportProgress(taskId: string, sessionId: string, progress: TaskProgressInput): Promise<{
81
+ success: boolean;
82
+ subtaskId?: string;
83
+ error?: string;
84
+ }>;
85
+ export declare function completeWorkerTask(taskId: string, sessionId: string, result: TaskExecutionResult): Promise<{
86
+ success: boolean;
87
+ error?: string;
88
+ }>;
89
+ export declare function checkConfirmation(taskId: string, subtaskId: string): Promise<{
90
+ approved: boolean;
91
+ error?: string;
92
+ }>;
93
+ export declare function getActiveWorkers(): Promise<ActiveWorker[]>;
94
+ //# sourceMappingURL=worker-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-api.d.ts","sourceRoot":"","sources":["../../src/api/worker-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Worker API
3
+ * Specialized API client for OpenPaean CLI Worker operations.
4
+ *
5
+ * All Worker API calls use a non-clearing API client so that
6
+ * transient 401 errors don't invalidate the user's auth state.
7
+ */
8
+ import { createNonClearingApiClient } from './client.js';
9
+ function getWorkerApiClient() {
10
+ return createNonClearingApiClient();
11
+ }
12
+ // ============================================
13
+ // API Functions
14
+ // ============================================
15
+ export async function pollWorkerTasks(options) {
16
+ const client = getWorkerApiClient();
17
+ const response = await client.post('/sdk/worker/poll', options);
18
+ return response.data.data;
19
+ }
20
+ export async function claimTask(taskId, sessionId, deviceName) {
21
+ const client = getWorkerApiClient();
22
+ const response = await client.post(`/sdk/worker/claim/${taskId}`, { sessionId, deviceName });
23
+ return response.data;
24
+ }
25
+ export async function releaseTask(taskId, sessionId, reason) {
26
+ const client = getWorkerApiClient();
27
+ try {
28
+ const response = await client.post(`/sdk/worker/release/${taskId}`, { sessionId, reason });
29
+ return response.data;
30
+ }
31
+ catch (error) {
32
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
33
+ }
34
+ }
35
+ export async function sendHeartbeat(sessionId, input) {
36
+ const client = getWorkerApiClient();
37
+ try {
38
+ const response = await client.post('/sdk/worker/heartbeat', { sessionId, ...input });
39
+ return response.data;
40
+ }
41
+ catch (error) {
42
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
43
+ }
44
+ }
45
+ export async function reportProgress(taskId, sessionId, progress) {
46
+ const client = getWorkerApiClient();
47
+ try {
48
+ const response = await client.post(`/sdk/worker/progress/${taskId}`, { sessionId, ...progress });
49
+ return response.data;
50
+ }
51
+ catch (error) {
52
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
53
+ }
54
+ }
55
+ export async function completeWorkerTask(taskId, sessionId, result) {
56
+ const client = getWorkerApiClient();
57
+ try {
58
+ const response = await client.post(`/sdk/worker/complete/${taskId}`, { sessionId, result });
59
+ return response.data;
60
+ }
61
+ catch (error) {
62
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
63
+ }
64
+ }
65
+ export async function checkConfirmation(taskId, subtaskId) {
66
+ const client = getWorkerApiClient();
67
+ try {
68
+ const response = await client.get(`/sdk/worker/confirmation/${taskId}/${subtaskId}`);
69
+ return { approved: response.data.approved };
70
+ }
71
+ catch (error) {
72
+ return { approved: false, error: error instanceof Error ? error.message : 'Unknown error' };
73
+ }
74
+ }
75
+ export async function getActiveWorkers() {
76
+ const client = getWorkerApiClient();
77
+ try {
78
+ const response = await client.get('/sdk/worker/active');
79
+ return response.data.data;
80
+ }
81
+ catch {
82
+ return [];
83
+ }
84
+ }
85
+ //# sourceMappingURL=worker-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-api.js","sourceRoot":"","sources":["../../src/api/worker-api.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -15,6 +15,8 @@ import { serveCommand } from './commands/serve.js';
15
15
  import { validateCommand } from './commands/validate.js';
16
16
  import { agentCommand, runAgentMode } from './commands/agent.js';
17
17
  import { updateCommand } from './commands/update.js';
18
+ import { workerCommand } from './commands/worker.js';
19
+ import { gatewayCommand } from './commands/gateway.js';
18
20
  import { getConfigPath } from './utils/config.js';
19
21
  // Read version from package.json
20
22
  const __filename = fileURLToPath(import.meta.url);
@@ -23,24 +25,31 @@ const packageJson = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'
23
25
  const program = new Command();
24
26
  program
25
27
  .name('openpaean')
26
- .description('OpenPaean - Open source AI agent with scrolling TUI (Claude Code style) and MCP integration')
28
+ .description('OpenPaean - Open source AI agent with scrolling TUI, MCP integration, gateway and worker modes')
27
29
  .version(packageJson.version)
28
30
  .option('--config', 'Show config file path')
29
31
  .option('--no-mcp', 'Disable local MCP server integration')
30
32
  .option('--fullscreen', 'Enable fullscreen mode (default: scrolling mode)')
31
33
  .option('-d, --debug', 'Enable debug logging')
32
34
  .option('-m, --message <message>', 'Send a single message to agent')
35
+ .option('--gateway', 'Enable gateway relay for remote clients')
36
+ .option('--worker', 'Enable background worker for task processing')
37
+ .option('--gateway-interval <ms>', 'Gateway poll interval in milliseconds', '3000')
38
+ .option('--worker-interval <ms>', 'Worker poll interval in milliseconds', '30000')
33
39
  .action(async (options) => {
34
40
  if (options.config) {
35
41
  console.log(getConfigPath());
36
42
  return;
37
43
  }
38
- // Default action: start agent mode
39
44
  await runAgentMode({
40
45
  mcp: options.mcp !== false,
41
46
  fullscreen: options.fullscreen === true,
42
47
  debug: options.debug,
43
48
  message: options.message,
49
+ gatewayEnabled: options.gateway ?? false,
50
+ gatewayPollInterval: parseInt(options.gatewayInterval, 10) || 3000,
51
+ workerEnabled: options.worker ?? false,
52
+ workerPollInterval: parseInt(options.workerInterval, 10) || 30000,
44
53
  });
45
54
  });
46
55
  // Register commands
@@ -51,6 +60,8 @@ program.addCommand(tasksCommand);
51
60
  program.addCommand(contextCommand);
52
61
  program.addCommand(serveCommand);
53
62
  program.addCommand(validateCommand);
63
+ program.addCommand(workerCommand);
64
+ program.addCommand(gatewayCommand);
54
65
  program.addCommand(updateCommand);
55
66
  // Parse arguments
56
67
  program.parse();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,iCAAiC;AACjC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,6FAA6F,CAAC;KAC1G,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,MAAM,CAAC,UAAU,EAAE,uBAAuB,CAAC;KAC3C,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;KAC1D,MAAM,CAAC,cAAc,EAAE,kDAAkD,CAAC;KAC1E,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC;KAC7C,MAAM,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,mCAAmC;IACnC,MAAM,YAAY,CAAC;QACjB,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,9 @@ export declare function runAgentMode(options: {
12
12
  fullscreen?: boolean;
13
13
  debug?: boolean;
14
14
  message?: string;
15
+ gatewayEnabled?: boolean;
16
+ gatewayPollInterval?: number;
17
+ workerEnabled?: boolean;
18
+ workerPollInterval?: number;
15
19
  }): Promise<void>;
16
20
  //# sourceMappingURL=agent.d.ts.map