openpaean 0.4.2 → 0.5.1
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.
- package/dist/api/client.d.ts +13 -3
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +131 -24
- package/dist/api/client.js.map +1 -1
- package/dist/api/gateway-api.d.ts +46 -0
- package/dist/api/gateway-api.d.ts.map +1 -0
- package/dist/api/gateway-api.js +54 -0
- package/dist/api/gateway-api.js.map +1 -0
- package/dist/api/worker-api.d.ts +94 -0
- package/dist/api/worker-api.d.ts.map +1 -0
- package/dist/api/worker-api.js +89 -0
- package/dist/api/worker-api.js.map +1 -0
- package/dist/cli.js +13 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.d.ts +4 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +57 -5
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/gateway.d.ts +8 -0
- package/dist/commands/gateway.d.ts.map +1 -0
- package/dist/commands/gateway.js +86 -0
- package/dist/commands/gateway.js.map +1 -0
- package/dist/commands/worker.d.ts +7 -0
- package/dist/commands/worker.d.ts.map +1 -0
- package/dist/commands/worker.js +283 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/gateway/service.d.ts +94 -0
- package/dist/gateway/service.d.ts.map +1 -0
- package/dist/gateway/service.js +338 -0
- package/dist/gateway/service.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/client.d.ts +1 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +15 -1
- package/dist/mcp/client.js.map +1 -1
- package/dist/utils/config.d.ts +14 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +25 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/output.d.ts +4 -0
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +17 -0
- package/dist/utils/output.js.map +1 -1
- package/dist/worker/executors/articulate.d.ts +19 -0
- package/dist/worker/executors/articulate.d.ts.map +1 -0
- package/dist/worker/executors/articulate.js +147 -0
- package/dist/worker/executors/articulate.js.map +1 -0
- package/dist/worker/executors/claude.d.ts +17 -0
- package/dist/worker/executors/claude.d.ts.map +1 -0
- package/dist/worker/executors/claude.js +102 -0
- package/dist/worker/executors/claude.js.map +1 -0
- package/dist/worker/executors/index.d.ts +26 -0
- package/dist/worker/executors/index.d.ts.map +1 -0
- package/dist/worker/executors/index.js +81 -0
- package/dist/worker/executors/index.js.map +1 -0
- package/dist/worker/index.d.ts +9 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +9 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/service.d.ts +48 -0
- package/dist/worker/service.d.ts.map +1 -0
- package/dist/worker/service.js +559 -0
- package/dist/worker/service.js.map +1 -0
- package/dist/worker/types.d.ts +134 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +70 -0
- package/dist/worker/types.js.map +1 -0
- package/package.json +8 -3
package/dist/api/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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(
|
|
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(
|
|
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
|
*/
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,aAAa,
|
|
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;AAsDD;;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"}
|
package/dist/api/client.js
CHANGED
|
@@ -1,42 +1,95 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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 {
|
|
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':
|
|
43
|
+
'User-Agent': `OpenPaean-CLI/${cliVersion}`,
|
|
18
44
|
},
|
|
19
45
|
});
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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':
|
|
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
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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,66 @@ 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
|
+
refreshToken: data.refreshToken,
|
|
157
|
+
expiresAt: data.expiresAt,
|
|
158
|
+
});
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
isRefreshing = false;
|
|
168
|
+
refreshPromise = null;
|
|
169
|
+
}
|
|
170
|
+
})();
|
|
171
|
+
return refreshPromise;
|
|
172
|
+
}
|
|
73
173
|
// Singleton instances
|
|
74
174
|
let apiClient = null;
|
|
75
175
|
let publicApiClient = null;
|
|
76
176
|
/**
|
|
77
177
|
* Get the authenticated API client singleton
|
|
78
178
|
*/
|
|
79
|
-
export function getApiClient() {
|
|
179
|
+
export function getApiClient(options) {
|
|
80
180
|
if (!apiClient) {
|
|
81
|
-
apiClient = createApiClient();
|
|
181
|
+
apiClient = createApiClient(options);
|
|
82
182
|
}
|
|
83
183
|
return apiClient;
|
|
84
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Create a non-clearing API client (doesn't invalidate auth on transient 401s).
|
|
187
|
+
* Used by worker and gateway operations.
|
|
188
|
+
*/
|
|
189
|
+
export function createNonClearingApiClient() {
|
|
190
|
+
return createApiClient({ clearAuthOn401: false });
|
|
191
|
+
}
|
|
85
192
|
/**
|
|
86
193
|
* Get the public API client singleton
|
|
87
194
|
*/
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
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;AAkBH,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,54 @@
|
|
|
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
|
+
let cachedClient = null;
|
|
9
|
+
function getClient() {
|
|
10
|
+
if (!cachedClient) {
|
|
11
|
+
cachedClient = createNonClearingApiClient();
|
|
12
|
+
}
|
|
13
|
+
return cachedClient;
|
|
14
|
+
}
|
|
15
|
+
// ============================================
|
|
16
|
+
// API Functions
|
|
17
|
+
// ============================================
|
|
18
|
+
export async function pollGatewayRequests(sessionId, limit = 5) {
|
|
19
|
+
const client = getClient();
|
|
20
|
+
const response = await client.post('/agent/gateway/poll', { sessionId, limit });
|
|
21
|
+
return response.data.data;
|
|
22
|
+
}
|
|
23
|
+
export async function claimGatewayRequest(requestId, sessionId, deviceName) {
|
|
24
|
+
const client = getClient();
|
|
25
|
+
const response = await client.post(`/agent/gateway/claim/${requestId}`, { sessionId, deviceName });
|
|
26
|
+
return response.data;
|
|
27
|
+
}
|
|
28
|
+
export async function pushGatewayEvents(requestId, sessionId, events) {
|
|
29
|
+
const client = getClient();
|
|
30
|
+
try {
|
|
31
|
+
const response = await client.post(`/agent/gateway/events/${requestId}`, { sessionId, events });
|
|
32
|
+
return response.data;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function completeGatewayRequest(requestId, sessionId, result) {
|
|
42
|
+
const client = getClient();
|
|
43
|
+
try {
|
|
44
|
+
const response = await client.post(`/agent/gateway/complete/${requestId}`, { sessionId, result });
|
|
45
|
+
return response.data;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return {
|
|
49
|
+
success: false,
|
|
50
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# 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;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,IAAI,YAAY,GAAyB,IAAI,CAAC;AAE9C,SAAS,SAAS;IACd,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,YAAY,GAAG,0BAA0B,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,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,89 @@
|
|
|
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
|
+
let cachedClient = null;
|
|
10
|
+
function getWorkerApiClient() {
|
|
11
|
+
if (!cachedClient) {
|
|
12
|
+
cachedClient = createNonClearingApiClient();
|
|
13
|
+
}
|
|
14
|
+
return cachedClient;
|
|
15
|
+
}
|
|
16
|
+
// ============================================
|
|
17
|
+
// API Functions
|
|
18
|
+
// ============================================
|
|
19
|
+
export async function pollWorkerTasks(options) {
|
|
20
|
+
const client = getWorkerApiClient();
|
|
21
|
+
const response = await client.post('/sdk/worker/poll', options);
|
|
22
|
+
return response.data.data;
|
|
23
|
+
}
|
|
24
|
+
export async function claimTask(taskId, sessionId, deviceName) {
|
|
25
|
+
const client = getWorkerApiClient();
|
|
26
|
+
const response = await client.post(`/sdk/worker/claim/${taskId}`, { sessionId, deviceName });
|
|
27
|
+
return response.data;
|
|
28
|
+
}
|
|
29
|
+
export async function releaseTask(taskId, sessionId, reason) {
|
|
30
|
+
const client = getWorkerApiClient();
|
|
31
|
+
try {
|
|
32
|
+
const response = await client.post(`/sdk/worker/release/${taskId}`, { sessionId, reason });
|
|
33
|
+
return response.data;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export async function sendHeartbeat(sessionId, input) {
|
|
40
|
+
const client = getWorkerApiClient();
|
|
41
|
+
try {
|
|
42
|
+
const response = await client.post('/sdk/worker/heartbeat', { sessionId, ...input });
|
|
43
|
+
return response.data;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export async function reportProgress(taskId, sessionId, progress) {
|
|
50
|
+
const client = getWorkerApiClient();
|
|
51
|
+
try {
|
|
52
|
+
const response = await client.post(`/sdk/worker/progress/${taskId}`, { sessionId, ...progress });
|
|
53
|
+
return response.data;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export async function completeWorkerTask(taskId, sessionId, result) {
|
|
60
|
+
const client = getWorkerApiClient();
|
|
61
|
+
try {
|
|
62
|
+
const response = await client.post(`/sdk/worker/complete/${taskId}`, { sessionId, result });
|
|
63
|
+
return response.data;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function checkConfirmation(taskId, subtaskId) {
|
|
70
|
+
const client = getWorkerApiClient();
|
|
71
|
+
try {
|
|
72
|
+
const response = await client.get(`/sdk/worker/confirmation/${taskId}/${subtaskId}`);
|
|
73
|
+
return { approved: response.data.approved };
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return { approved: false, error: error instanceof Error ? error.message : 'Unknown error' };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export async function getActiveWorkers() {
|
|
80
|
+
const client = getWorkerApiClient();
|
|
81
|
+
try {
|
|
82
|
+
const response = await client.get('/sdk/worker/active');
|
|
83
|
+
return response.data.data;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# 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
|
|
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,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|