@nestbox-ai/cli 1.0.13 → 1.0.16
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/.nestboxrc +5 -0
- package/dist/commands/agent.js +592 -173
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/auth.js +1 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/compute.js +38 -8
- package/dist/commands/compute.js.map +1 -1
- package/dist/commands/document.js +2 -0
- package/dist/commands/document.js.map +1 -1
- package/dist/commands/image.js +107 -110
- package/dist/commands/image.js.map +1 -1
- package/dist/commands/projects.js +118 -30
- package/dist/commands/projects.js.map +1 -1
- package/dist/types/agentType.d.ts +1 -1
- package/dist/types/agentType.js +1 -1
- package/dist/types/agentType.js.map +1 -1
- package/dist/types/agentYaml.d.ts +91 -0
- package/dist/types/agentYaml.js +6 -0
- package/dist/types/agentYaml.js.map +1 -0
- package/dist/types/auth.d.ts +4 -6
- package/dist/types/auth.js +1 -0
- package/dist/types/auth.js.map +1 -1
- package/dist/utils/agent.d.ts +11 -0
- package/dist/utils/agent.js +72 -0
- package/dist/utils/agent.js.map +1 -1
- package/dist/utils/auth.d.ts +4 -0
- package/dist/utils/auth.js +31 -3
- package/dist/utils/auth.js.map +1 -1
- package/dist/utils/error.d.ts +8 -0
- package/dist/utils/error.js +163 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/project.d.ts +4 -1
- package/dist/utils/project.js +17 -10
- package/dist/utils/project.js.map +1 -1
- package/package.json +3 -1
- package/sample-agents.yaml +0 -0
- package/src/commands/agent.ts +770 -303
- package/src/commands/auth.ts +1 -0
- package/src/commands/compute.ts +30 -8
- package/src/commands/document.ts +2 -2
- package/src/commands/image.ts +121 -129
- package/src/commands/projects.ts +125 -34
- package/src/types/agentType.ts +1 -1
- package/src/types/agentYaml.ts +107 -0
- package/src/types/auth.ts +10 -10
- package/src/utils/agent.ts +82 -0
- package/src/utils/auth.ts +33 -3
- package/src/utils/error.ts +168 -0
- package/src/utils/project.ts +20 -13
- package/templates/template-base-js.zip +0 -0
- package/templates/template-base-ts.zip +0 -0
- package/templates/template-chatbot-js.zip +0 -0
- package/templates/template-chatbot-ts.zip +0 -0
package/dist/utils/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":";;;;;AAiBA,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced 401 error handler with automatic token refresh
|
|
3
|
+
*/
|
|
4
|
+
export declare function handle401Error(error: any, retryCallback?: () => Promise<any>): Promise<any>;
|
|
5
|
+
/**
|
|
6
|
+
* Wrapper function to make API calls with automatic retry on 401
|
|
7
|
+
*/
|
|
8
|
+
export declare function withTokenRefresh<T>(apiCall: () => Promise<T>, onRetry?: () => void): Promise<T>;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.handle401Error = handle401Error;
|
|
16
|
+
exports.withTokenRefresh = withTokenRefresh;
|
|
17
|
+
// utils/error.ts
|
|
18
|
+
const admin_1 = require("@nestbox-ai/admin");
|
|
19
|
+
const auth_1 = require("./auth");
|
|
20
|
+
const fs_1 = __importDefault(require("fs"));
|
|
21
|
+
const path_1 = __importDefault(require("path"));
|
|
22
|
+
const os_1 = __importDefault(require("os"));
|
|
23
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
24
|
+
/**
|
|
25
|
+
* Attempts to refresh the authentication token using stored credentials
|
|
26
|
+
*/
|
|
27
|
+
function refreshAuthToken(serverUrl, accessToken) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
try {
|
|
30
|
+
// Get the stored credentials to extract user info
|
|
31
|
+
const configDir = path_1.default.join(os_1.default.homedir(), '.config', '.nestbox');
|
|
32
|
+
const files = fs_1.default.readdirSync(configDir);
|
|
33
|
+
// Find the credential file that matches this server URL
|
|
34
|
+
let userCredentials = null;
|
|
35
|
+
for (const file of files) {
|
|
36
|
+
try {
|
|
37
|
+
const data = JSON.parse(fs_1.default.readFileSync(path_1.default.join(configDir, file), 'utf8'));
|
|
38
|
+
if (data.apiServerUrl === serverUrl && data.accessToken === accessToken) {
|
|
39
|
+
userCredentials = data;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
// Skip invalid files
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (!userCredentials) {
|
|
48
|
+
return { success: false, error: 'Could not find stored credentials' };
|
|
49
|
+
}
|
|
50
|
+
// Create new configuration with the access token
|
|
51
|
+
const configuration = new admin_1.Configuration({
|
|
52
|
+
basePath: serverUrl,
|
|
53
|
+
accessToken: accessToken,
|
|
54
|
+
});
|
|
55
|
+
const authApi = new admin_1.AuthApi(configuration);
|
|
56
|
+
// Try to re-authenticate using the stored Google OAuth token
|
|
57
|
+
const response = yield authApi.authControllerOAuthLogin({
|
|
58
|
+
providerId: accessToken,
|
|
59
|
+
type: admin_1.OAuthLoginRequestDTOTypeEnum.Google,
|
|
60
|
+
email: userCredentials.email,
|
|
61
|
+
profilePictureUrl: userCredentials.picture || '',
|
|
62
|
+
});
|
|
63
|
+
const newToken = response.data.token;
|
|
64
|
+
// Update the stored credentials with the new token
|
|
65
|
+
const fileName = `${userCredentials.email.replace('@', '_at_')}_${userCredentials.domain}.json`;
|
|
66
|
+
const filePath = path_1.default.join(configDir, fileName);
|
|
67
|
+
userCredentials.token = newToken;
|
|
68
|
+
userCredentials.timestamp = new Date().toISOString();
|
|
69
|
+
fs_1.default.writeFileSync(filePath, JSON.stringify(userCredentials, null, 2));
|
|
70
|
+
return { success: true, newToken };
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error(chalk_1.default.yellow('Token refresh failed:'), error.message);
|
|
74
|
+
return { success: false, error: error.message };
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Enhanced 401 error handler with automatic token refresh
|
|
80
|
+
*/
|
|
81
|
+
function handle401Error(error, retryCallback) {
|
|
82
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
if (error.response && error.response.status === 401) {
|
|
84
|
+
// Get current auth token info
|
|
85
|
+
const authInfo = (0, auth_1.getAuthToken)();
|
|
86
|
+
if (!authInfo || !authInfo.accessToken) {
|
|
87
|
+
throw new Error('Authentication token has expired. Please login again using "nestbox login <domain>".');
|
|
88
|
+
}
|
|
89
|
+
console.log(chalk_1.default.yellow('Authentication token expired. Attempting to refresh...'));
|
|
90
|
+
// Try to refresh the token
|
|
91
|
+
const refreshResult = yield refreshAuthToken(authInfo.serverUrl, authInfo.accessToken);
|
|
92
|
+
if (refreshResult.success && retryCallback) {
|
|
93
|
+
console.log(chalk_1.default.green('Token refreshed successfully. Retrying request...'));
|
|
94
|
+
try {
|
|
95
|
+
// Retry the original request with the new token
|
|
96
|
+
const result = yield retryCallback();
|
|
97
|
+
return { success: true, data: result };
|
|
98
|
+
}
|
|
99
|
+
catch (retryError) {
|
|
100
|
+
// If retry also fails with 401, the refresh didn't work properly
|
|
101
|
+
if (retryError.response && retryError.response.status === 401) {
|
|
102
|
+
throw new Error('Authentication failed after token refresh. Please login again using "nestbox login <domain>".');
|
|
103
|
+
}
|
|
104
|
+
// Re-throw other errors
|
|
105
|
+
throw retryError;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Refresh failed
|
|
110
|
+
throw new Error('Authentication token has expired and automatic refresh failed. Please login again using "nestbox login <domain>".');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Wrapper function to make API calls with automatic retry on 401
|
|
118
|
+
*/
|
|
119
|
+
function withTokenRefresh(apiCall, onRetry) {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
try {
|
|
122
|
+
return yield apiCall();
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error.response && error.response.status === 401) {
|
|
126
|
+
// Get current auth token info
|
|
127
|
+
const authInfo = (0, auth_1.getAuthToken)();
|
|
128
|
+
if (!authInfo || !authInfo.accessToken) {
|
|
129
|
+
throw new Error('Authentication token has expired. Please login again using "nestbox login <domain>".');
|
|
130
|
+
}
|
|
131
|
+
console.log(chalk_1.default.yellow('Authentication token expired. Attempting to refresh...'));
|
|
132
|
+
// Try to refresh the token
|
|
133
|
+
const refreshResult = yield refreshAuthToken(authInfo.serverUrl, authInfo.accessToken);
|
|
134
|
+
if (refreshResult.success) {
|
|
135
|
+
console.log(chalk_1.default.green('Token refreshed successfully. Retrying request...'));
|
|
136
|
+
// If onRetry callback is provided, call it to reinitialize API clients
|
|
137
|
+
if (onRetry) {
|
|
138
|
+
onRetry();
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
// Retry the original API call
|
|
142
|
+
return yield apiCall();
|
|
143
|
+
}
|
|
144
|
+
catch (retryError) {
|
|
145
|
+
// If retry also fails with 401, the refresh didn't work properly
|
|
146
|
+
if (retryError.response && retryError.response.status === 401) {
|
|
147
|
+
throw new Error('Authentication failed after token refresh. Please login again using "nestbox login <domain>".');
|
|
148
|
+
}
|
|
149
|
+
// Re-throw other errors
|
|
150
|
+
throw retryError;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Refresh failed
|
|
155
|
+
throw new Error('Authentication token has expired and automatic refresh failed. Please login again using "nestbox login <domain>".');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// If not a 401 error, re-throw
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AA8EA,wCAoCC;AAKD,4CAgDC;AAvKD,iBAAiB;AACjB,6CAAyF;AACzF,iCAAsC;AACtC,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AACpB,kDAA0B;AAQ1B;;GAEG;AACH,SAAe,gBAAgB,CAAC,SAAiB,EAAE,WAAmB;;QACpE,IAAI,CAAC;YACH,kDAAkD;YAClD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAExC,wDAAwD;YACxD,IAAI,eAAe,GAAQ,IAAI,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC7E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;wBACxE,eAAe,GAAG,IAAI,CAAC;wBACvB,MAAM;oBACR,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,qBAAqB;gBACvB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;YACxE,CAAC;YAED,iDAAiD;YACjD,MAAM,aAAa,GAAG,IAAI,qBAAa,CAAC;gBACtC,QAAQ,EAAE,SAAS;gBACnB,WAAW,EAAE,WAAW;aACzB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,eAAO,CAAC,aAAa,CAAC,CAAC;YAE3C,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC;gBACtD,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,oCAA4B,CAAC,MAAM;gBACzC,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,iBAAiB,EAAE,eAAe,CAAC,OAAO,IAAI,EAAE;aACjD,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAErC,mDAAmD;YACnD,MAAM,QAAQ,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,eAAe,CAAC,MAAM,OAAO,CAAC;YAChG,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAEhD,eAAe,CAAC,KAAK,GAAG,QAAQ,CAAC;YACjC,eAAe,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAErD,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAErE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CAAA;AAED;;GAEG;AACH,SAAsB,cAAc,CAAC,KAAU,EAAE,aAAkC;;QACjF,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACpD,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,IAAA,mBAAY,GAAE,CAAC;YAEhC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;YAC1G,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;YAEpF,2BAA2B;YAC3B,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEvF,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;gBAE9E,IAAI,CAAC;oBACH,gDAAgD;oBAChD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;oBACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzC,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,iEAAiE;oBACjE,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;wBAC9D,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;oBACnH,CAAC;oBACD,wBAAwB;oBACxB,MAAM,UAAU,CAAC;gBACnB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iBAAiB;gBACjB,MAAM,IAAI,KAAK,CAAC,mHAAmH,CAAC,CAAC;YACvI,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAED;;GAEG;AACH,SAAsB,gBAAgB,CACpC,OAAyB,EACzB,OAAoB;;QAEpB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpD,8BAA8B;gBAC9B,MAAM,QAAQ,GAAG,IAAA,mBAAY,GAAE,CAAC;gBAEhC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;gBAC1G,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;gBAEpF,2BAA2B;gBAC3B,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAEvF,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;oBAE9E,uEAAuE;oBACvE,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAED,IAAI,CAAC;wBACH,8BAA8B;wBAC9B,OAAO,MAAM,OAAO,EAAE,CAAC;oBACzB,CAAC;oBAAC,OAAO,UAAe,EAAE,CAAC;wBACzB,iEAAiE;wBACjE,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;4BAC9D,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;wBACnH,CAAC;wBACD,wBAAwB;wBACxB,MAAM,UAAU,CAAC;oBACnB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,iBAAiB;oBACjB,MAAM,IAAI,KAAK,CAAC,mHAAmH,CAAC,CAAC;gBACvI,CAAC;YACH,CAAC;YAED,+BAA+B;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CAAA"}
|
package/dist/utils/project.d.ts
CHANGED
|
@@ -11,5 +11,8 @@ interface CommandOptions {
|
|
|
11
11
|
metadata?: string;
|
|
12
12
|
[key: string]: any;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
interface ResolveProjectOptions extends CommandOptions {
|
|
15
|
+
showSpinner?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function resolveProject(projectsApi: ProjectsApi, options: ResolveProjectOptions): Promise<ProjectInfo>;
|
|
15
18
|
export {};
|
package/dist/utils/project.js
CHANGED
|
@@ -18,12 +18,15 @@ const projects_1 = require("../commands/projects");
|
|
|
18
18
|
function resolveProject(projectsApi, options) {
|
|
19
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20
20
|
var _a, _b, _c;
|
|
21
|
-
|
|
21
|
+
// Default to showing spinner if not specified
|
|
22
|
+
const showSpinner = options.showSpinner !== false;
|
|
23
|
+
const spinner = showSpinner ? (0, ora_1.default)('Resolving project...').start() : null;
|
|
22
24
|
try {
|
|
23
25
|
const projectsResponse = yield projectsApi.projectControllerGetAllProjects();
|
|
24
26
|
const allProjects = (_b = (_a = projectsResponse.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.projects;
|
|
25
27
|
if (!allProjects || allProjects.length === 0) {
|
|
26
|
-
spinner
|
|
28
|
+
if (spinner)
|
|
29
|
+
spinner.fail('No projects found.');
|
|
27
30
|
throw new Error('No projects found');
|
|
28
31
|
}
|
|
29
32
|
let projectId = options.project;
|
|
@@ -40,35 +43,39 @@ function resolveProject(projectsApi, options) {
|
|
|
40
43
|
projectId = byName.id;
|
|
41
44
|
}
|
|
42
45
|
else {
|
|
43
|
-
spinner
|
|
46
|
+
if (spinner)
|
|
47
|
+
spinner.fail(`Project not found with ID or name: ${projectId}`);
|
|
44
48
|
throw new Error(`Project not found with ID or name: ${projectId}`);
|
|
45
49
|
}
|
|
46
|
-
|
|
50
|
+
if (spinner)
|
|
51
|
+
spinner.succeed(`Using project: ${projectName} (ID: ${projectId})`);
|
|
47
52
|
}
|
|
48
53
|
else {
|
|
49
54
|
const config = (0, projects_1.readNestboxConfig)();
|
|
50
55
|
const defaultProjectName = (_c = config.projects) === null || _c === void 0 ? void 0 : _c.default;
|
|
51
56
|
if (!defaultProjectName) {
|
|
52
|
-
spinner
|
|
57
|
+
if (spinner)
|
|
58
|
+
spinner.fail('No project specified and no default project set. Please provide a project ID or set a default project.');
|
|
53
59
|
throw new Error('No project specified and no default project set');
|
|
54
60
|
}
|
|
55
61
|
const defaultProject = allProjects.find((p) => p.name === defaultProjectName);
|
|
56
62
|
if (!defaultProject) {
|
|
57
|
-
spinner
|
|
63
|
+
if (spinner)
|
|
64
|
+
spinner.fail(`Default project "${defaultProjectName}" not found.`);
|
|
58
65
|
throw new Error(`Default project "${defaultProjectName}" not found.`);
|
|
59
66
|
}
|
|
60
67
|
projectId = defaultProject.id;
|
|
61
68
|
projectName = defaultProject.name;
|
|
62
|
-
|
|
69
|
+
if (spinner)
|
|
70
|
+
spinner.succeed(`Using default project: ${projectName} (ID: ${projectId})`);
|
|
63
71
|
}
|
|
64
72
|
return { id: projectId, name: projectName };
|
|
65
73
|
}
|
|
66
74
|
catch (error) {
|
|
67
|
-
if (
|
|
75
|
+
if (spinner && spinner.isSpinning) {
|
|
68
76
|
// If spinner was already stopped with fail, we don't need to fail it again
|
|
69
|
-
|
|
77
|
+
spinner.fail('Failed to resolve project');
|
|
70
78
|
}
|
|
71
|
-
spinner.fail('Failed to resolve project');
|
|
72
79
|
throw error;
|
|
73
80
|
}
|
|
74
81
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestbox-ai/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"description": "The cli tools that helps developers to build agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@nestbox-ai/admin": "1.0.42",
|
|
51
|
+
"@types/js-yaml": "^4.0.9",
|
|
51
52
|
"adm-zip": "^0.5.16",
|
|
52
53
|
"archiver": "^7.0.1",
|
|
53
54
|
"axios": "^1.8.4",
|
|
@@ -57,6 +58,7 @@
|
|
|
57
58
|
"find-up": "^7.0.0",
|
|
58
59
|
"form-data": "^4.0.2",
|
|
59
60
|
"inquirer": "^8.2.6",
|
|
61
|
+
"js-yaml": "^4.1.0",
|
|
60
62
|
"jszip": "^3.10.1",
|
|
61
63
|
"open": "^8.4.2",
|
|
62
64
|
"ora": "5.4.1",
|
|
File without changes
|