@nestbox-ai/cli 1.0.29 → 1.0.30
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/commands/agent.d.ts +0 -1
- package/dist/commands/agent.js +0 -4
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/compute/list.js +2 -9
- package/dist/commands/compute/list.js.map +1 -1
- package/dist/commands/document/apiUtils.d.ts +9 -0
- package/dist/commands/document/apiUtils.js +19 -0
- package/dist/commands/document/apiUtils.js.map +1 -0
- package/dist/commands/document/collectionCreate.d.ts +2 -0
- package/dist/commands/document/collectionCreate.js +60 -0
- package/dist/commands/document/collectionCreate.js.map +1 -0
- package/dist/commands/document/collectionDelete.d.ts +2 -0
- package/dist/commands/document/collectionDelete.js +55 -0
- package/dist/commands/document/collectionDelete.js.map +1 -0
- package/dist/commands/document/collectionGet.d.ts +2 -0
- package/dist/commands/document/collectionGet.js +57 -0
- package/dist/commands/document/collectionGet.js.map +1 -0
- package/dist/commands/document/collectionList.d.ts +2 -0
- package/dist/commands/document/collectionList.js +63 -0
- package/dist/commands/document/collectionList.js.map +1 -0
- package/dist/commands/document/collectionUpdate.d.ts +2 -0
- package/dist/commands/document/collectionUpdate.js +61 -0
- package/dist/commands/document/collectionUpdate.js.map +1 -0
- package/dist/commands/document/docAdd.d.ts +2 -0
- package/dist/commands/document/docAdd.js +64 -0
- package/dist/commands/document/docAdd.js.map +1 -0
- package/dist/commands/document/docDelete.d.ts +2 -0
- package/dist/commands/document/docDelete.js +56 -0
- package/dist/commands/document/docDelete.js.map +1 -0
- package/dist/commands/document/docGet.d.ts +2 -0
- package/dist/commands/document/docGet.js +58 -0
- package/dist/commands/document/docGet.js.map +1 -0
- package/dist/commands/document/docSearch.d.ts +2 -0
- package/dist/commands/document/docSearch.js +77 -0
- package/dist/commands/document/docSearch.js.map +1 -0
- package/dist/commands/document/docUpdate.d.ts +2 -0
- package/dist/commands/document/docUpdate.js +63 -0
- package/dist/commands/document/docUpdate.js.map +1 -0
- package/dist/commands/document/docUploadFile.d.ts +2 -0
- package/dist/commands/document/docUploadFile.js +63 -0
- package/dist/commands/document/docUploadFile.js.map +1 -0
- package/dist/commands/document/index.d.ts +12 -0
- package/dist/commands/document/index.js +31 -0
- package/dist/commands/document/index.js.map +1 -0
- package/dist/commands/document.d.ts +4 -1
- package/dist/commands/document.js +26 -327
- package/dist/commands/document.js.map +1 -1
- package/dist/commands/image/apiUtils.js.map +1 -1
- package/dist/commands/image/display.d.ts +0 -1
- package/dist/commands/image/display.js +0 -17
- package/dist/commands/image/display.js.map +1 -1
- package/dist/commands/image/index.d.ts +1 -1
- package/dist/commands/image/index.js +1 -2
- package/dist/commands/image/index.js.map +1 -1
- package/dist/commands/image.d.ts +0 -2
- package/dist/commands/image.js +0 -5
- package/dist/commands/image.js.map +1 -1
- package/dist/types/statusMapping.d.ts +1 -0
- package/dist/types/statusMapping.js +12 -0
- package/dist/types/statusMapping.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/agent.ts +0 -3
- package/src/commands/compute/list.ts +2 -10
- package/src/commands/document/apiUtils.ts +22 -0
- package/src/commands/document/collectionCreate.ts +46 -0
- package/src/commands/document/collectionDelete.ts +45 -0
- package/src/commands/document/collectionGet.ts +47 -0
- package/src/commands/document/collectionList.ts +52 -0
- package/src/commands/document/collectionUpdate.ts +53 -0
- package/src/commands/document/docAdd.ts +56 -0
- package/src/commands/document/docDelete.ts +47 -0
- package/src/commands/document/docGet.ts +49 -0
- package/src/commands/document/docSearch.ts +70 -0
- package/src/commands/document/docUpdate.ts +56 -0
- package/src/commands/document/docUploadFile.ts +55 -0
- package/src/commands/document/index.ts +17 -0
- package/src/commands/document.ts +43 -457
- package/src/commands/image/apiUtils.ts +2 -2
- package/src/commands/image/display.ts +1 -19
- package/src/commands/image/index.ts +1 -1
- package/src/commands/image.ts +0 -7
- package/src/types/statusMapping.ts +8 -0
|
@@ -0,0 +1,58 @@
|
|
|
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.registerDocGetCommand = registerDocGetCommand;
|
|
16
|
+
const error_1 = require("../../utils/error");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const ora_1 = __importDefault(require("ora"));
|
|
19
|
+
const project_1 = require("../../utils/project");
|
|
20
|
+
const apiUtils_1 = require("./apiUtils");
|
|
21
|
+
function registerDocGetCommand(docCommand) {
|
|
22
|
+
const getDocCmd = docCommand
|
|
23
|
+
.command('get')
|
|
24
|
+
.description('Get a document from a collection')
|
|
25
|
+
.requiredOption('--instance <instanceId>', 'Instance ID')
|
|
26
|
+
.requiredOption('--collection <collectionId>', 'Collection ID')
|
|
27
|
+
.requiredOption('--doc <docId>', 'Document ID')
|
|
28
|
+
.option('--project <projectId>', 'Project ID or name (defaults to the current project)');
|
|
29
|
+
getDocCmd.action((options) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
yield (0, error_1.withTokenRefresh)(() => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const apis = (0, apiUtils_1.createDocumentApis)();
|
|
33
|
+
const project = yield (0, project_1.resolveProject)(apis.projectsApi, options);
|
|
34
|
+
const spinner = (0, ora_1.default)(`Getting document "${options.doc}" from collection "${options.collection}" in instance ${options.instance}...`).start();
|
|
35
|
+
try {
|
|
36
|
+
const response = yield apis.documentsApi.documentControllerGetDocById(project.id, options.instance, options.collection, options.doc);
|
|
37
|
+
const document = response.data;
|
|
38
|
+
spinner.succeed('Successfully retrieved document');
|
|
39
|
+
console.log(chalk_1.default.blue(`\nDocument details for ID "${options.doc}" in collection "${options.collection}":\n`));
|
|
40
|
+
console.log(JSON.stringify(document, null, 2));
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
spinner.fail('Operation failed');
|
|
44
|
+
if (error.response && error.response.status === 401) {
|
|
45
|
+
console.error(chalk_1.default.red('Authentication token has expired. Please login again using "nestbox login <domain>".'));
|
|
46
|
+
}
|
|
47
|
+
else if ((_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) {
|
|
48
|
+
console.error(chalk_1.default.red('API Error:'), error.response.data.message);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.error(chalk_1.default.red('Error:'), error.message || 'Unknown error');
|
|
52
|
+
}
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=docGet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docGet.js","sourceRoot":"","sources":["../../../src/commands/document/docGet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAOA,sDAyCC;AA/CD,6CAAqD;AACrD,kDAA0B;AAC1B,8CAAsB;AACtB,iDAAqD;AACrD,yCAAgD;AAEhD,SAAgB,qBAAqB,CAAC,UAAmB;IACvD,MAAM,SAAS,GAAG,UAAU;SACzB,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,kCAAkC,CAAC;SAC/C,cAAc,CAAC,yBAAyB,EAAE,aAAa,CAAC;SACxD,cAAc,CAAC,6BAA6B,EAAE,eAAe,CAAC;SAC9D,cAAc,CAAC,eAAe,EAAE,aAAa,CAAC;SAC9C,MAAM,CAAC,uBAAuB,EAAE,sDAAsD,CAAC,CAAC;IAE3F,SAAS,CAAC,MAAM,CAAC,CAAO,OAAO,EAAE,EAAE;QACjC,MAAM,IAAA,wBAAgB,EAAC,GAAS,EAAE;;YAChC,MAAM,IAAI,GAAG,IAAA,6BAAkB,GAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,qBAAqB,OAAO,CAAC,GAAG,sBAAsB,OAAO,CAAC,UAAU,iBAAiB,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAE5I,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CACnE,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,GAAG,CACZ,CAAC;gBACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAE/B,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,OAAO,CAAC,GAAG,oBAAoB,OAAO,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC;gBAC/G,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACpD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC,CAAC;gBACnH,CAAC;qBAAM,IAAI,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,EAAE,CAAC;oBACzC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;gBACvE,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
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.registerDocSearchCommand = registerDocSearchCommand;
|
|
16
|
+
const error_1 = require("../../utils/error");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const ora_1 = __importDefault(require("ora"));
|
|
19
|
+
const project_1 = require("../../utils/project");
|
|
20
|
+
const apiUtils_1 = require("./apiUtils");
|
|
21
|
+
function registerDocSearchCommand(docCommand) {
|
|
22
|
+
const searchCmd = docCommand
|
|
23
|
+
.command('search')
|
|
24
|
+
.description('Search for documents in a collection')
|
|
25
|
+
.requiredOption('--instance <instanceId>', 'Instance ID')
|
|
26
|
+
.requiredOption('--collection <collectionId>', 'Collection ID')
|
|
27
|
+
.requiredOption('--query <query>', 'Search query')
|
|
28
|
+
.option('--project <projectId>', 'Project ID or name (defaults to the current project)')
|
|
29
|
+
.option('--filter <json>', 'Filter criteria as JSON string');
|
|
30
|
+
searchCmd.action((options) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
yield (0, error_1.withTokenRefresh)(() => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
var _a, _b;
|
|
33
|
+
const apis = (0, apiUtils_1.createDocumentApis)();
|
|
34
|
+
const project = yield (0, project_1.resolveProject)(apis.projectsApi, options);
|
|
35
|
+
// Build the request body
|
|
36
|
+
const requestBody = {
|
|
37
|
+
query: options.query,
|
|
38
|
+
params: {},
|
|
39
|
+
filter: {},
|
|
40
|
+
include: ["embedding"]
|
|
41
|
+
};
|
|
42
|
+
// Parse filter JSON if provided
|
|
43
|
+
if (options.filter) {
|
|
44
|
+
try {
|
|
45
|
+
requestBody.filter = JSON.parse(options.filter);
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
console.error(chalk_1.default.red('Error parsing filter JSON:'), e.message);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
console.log("REQUEST BODY", requestBody);
|
|
53
|
+
const spinner = (0, ora_1.default)(`Searching for documents in collection "${options.collection}" in instance ${options.instance}...`).start();
|
|
54
|
+
try {
|
|
55
|
+
const response = yield apis.documentsApi.documentControllerSimilaritySearch(project.id, options.instance, options.collection, requestBody);
|
|
56
|
+
const results = response.data;
|
|
57
|
+
spinner.succeed('Successfully retrieved search results');
|
|
58
|
+
console.log(chalk_1.default.blue(`\nSearch results for query "${options.query}" in collection "${options.collection}":\n`));
|
|
59
|
+
console.log(JSON.stringify(results, null, 2));
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
spinner.fail('Operation failed');
|
|
63
|
+
if (error.response && error.response.status === 401) {
|
|
64
|
+
console.error(chalk_1.default.red('Authentication token has expired. Please login again using "nestbox login <domain>".'));
|
|
65
|
+
}
|
|
66
|
+
else if ((_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) {
|
|
67
|
+
console.error(chalk_1.default.red('API Error:'), error.response.data.message);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.error(chalk_1.default.red('Error:'), error.message || 'Unknown error');
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}));
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=docSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docSearch.js","sourceRoot":"","sources":["../../../src/commands/document/docSearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
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.registerDocUpdateCommand = registerDocUpdateCommand;
|
|
16
|
+
const error_1 = require("../../utils/error");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const ora_1 = __importDefault(require("ora"));
|
|
19
|
+
const project_1 = require("../../utils/project");
|
|
20
|
+
const apiUtils_1 = require("./apiUtils");
|
|
21
|
+
function registerDocUpdateCommand(docCommand) {
|
|
22
|
+
const updateDocCmd = docCommand
|
|
23
|
+
.command('update')
|
|
24
|
+
.description('Update a document in a collection')
|
|
25
|
+
.requiredOption('--instance <instanceId>', 'Instance ID')
|
|
26
|
+
.requiredOption('--collection <collectionId>', 'Collection ID')
|
|
27
|
+
.requiredOption('--doc <docId>', 'Document ID')
|
|
28
|
+
.requiredOption('--document <string>', 'Updated document content as a string')
|
|
29
|
+
.option('--metadata <json>', 'Updated document metadata in JSON format (optional)')
|
|
30
|
+
.option('--project <projectId>', 'Project ID or name (defaults to the current project)');
|
|
31
|
+
updateDocCmd.action((options) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
yield (0, error_1.withTokenRefresh)(() => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const apis = (0, apiUtils_1.createDocumentApis)();
|
|
35
|
+
const project = yield (0, project_1.resolveProject)(apis.projectsApi, options);
|
|
36
|
+
const spinner = (0, ora_1.default)(`Updating document "${options.doc}" in collection "${options.collection}" in instance ${options.instance}...`).start();
|
|
37
|
+
try {
|
|
38
|
+
const documentContent = options.document;
|
|
39
|
+
const metadata = options.metadata ? JSON.parse(options.metadata) : {};
|
|
40
|
+
yield apis.documentsApi.documentControllerUpdateDoc(project.id, options.instance, options.collection, options.doc, {
|
|
41
|
+
document: documentContent,
|
|
42
|
+
metadata: metadata
|
|
43
|
+
});
|
|
44
|
+
spinner.succeed('Successfully updated document');
|
|
45
|
+
console.log(chalk_1.default.green(`Document with ID "${options.doc}" updated successfully in collection "${options.collection}".`));
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
spinner.fail('Operation failed');
|
|
49
|
+
if (error.response && error.response.status === 401) {
|
|
50
|
+
console.error(chalk_1.default.red('Authentication token has expired. Please login again using "nestbox login <domain>".'));
|
|
51
|
+
}
|
|
52
|
+
else if ((_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) {
|
|
53
|
+
console.error(chalk_1.default.red('API Error:'), error.response.data.message);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.error(chalk_1.default.red('Error:'), error.message || 'Unknown error');
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=docUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docUpdate.js","sourceRoot":"","sources":["../../../src/commands/document/docUpdate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAOA,4DAgDC;AAtDD,6CAAqD;AACrD,kDAA0B;AAC1B,8CAAsB;AACtB,iDAAqD;AACrD,yCAAgD;AAEhD,SAAgB,wBAAwB,CAAC,UAAmB;IAC1D,MAAM,YAAY,GAAG,UAAU;SAC5B,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mCAAmC,CAAC;SAChD,cAAc,CAAC,yBAAyB,EAAE,aAAa,CAAC;SACxD,cAAc,CAAC,6BAA6B,EAAE,eAAe,CAAC;SAC9D,cAAc,CAAC,eAAe,EAAE,aAAa,CAAC;SAC9C,cAAc,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SAC7E,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;SAClF,MAAM,CAAC,uBAAuB,EAAE,sDAAsD,CAAC,CAAC;IAE3F,YAAY,CAAC,MAAM,CAAC,CAAO,OAAO,EAAE,EAAE;QACpC,MAAM,IAAA,wBAAgB,EAAC,GAAS,EAAE;;YAChC,MAAM,IAAI,GAAG,IAAA,6BAAkB,GAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,sBAAsB,OAAO,CAAC,GAAG,oBAAoB,OAAO,CAAC,UAAU,iBAAiB,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3I,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;gBACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEtE,MAAM,IAAI,CAAC,YAAY,CAAC,2BAA2B,CACjD,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,GAAG,EACX;oBACE,QAAQ,EAAE,eAAe;oBACzB,QAAQ,EAAE,QAAQ;iBACnB,CACF,CAAC;gBAEF,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,GAAG,yCAAyC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;YAC5H,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACpD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC,CAAC;gBACnH,CAAC;qBAAM,IAAI,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,EAAE,CAAC;oBACzC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;gBACvE,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
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.registerDocUploadFileCommand = registerDocUploadFileCommand;
|
|
16
|
+
const error_1 = require("../../utils/error");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const ora_1 = __importDefault(require("ora"));
|
|
19
|
+
const project_1 = require("../../utils/project");
|
|
20
|
+
const apiUtils_1 = require("./apiUtils");
|
|
21
|
+
function registerDocUploadFileCommand(docCommand) {
|
|
22
|
+
const uploadFileCmd = docCommand
|
|
23
|
+
.command('upload-file')
|
|
24
|
+
.description('Add documents by file chunking')
|
|
25
|
+
.requiredOption('--instance <instanceId>', 'Instance ID')
|
|
26
|
+
.requiredOption('--collection <collectionId>', 'Collection ID')
|
|
27
|
+
.requiredOption('--file <path>', 'Path to the file to upload')
|
|
28
|
+
.option('--type <fileType>', 'Type of the file (e.g., pdf, txt, doc)')
|
|
29
|
+
.option('--options <json>', 'Additional options for file processing in JSON format')
|
|
30
|
+
.option('--project <projectId>', 'Project ID or name (defaults to the current project)');
|
|
31
|
+
uploadFileCmd.action((options) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
yield (0, error_1.withTokenRefresh)(() => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const apis = (0, apiUtils_1.createDocumentApis)();
|
|
35
|
+
const project = yield (0, project_1.resolveProject)(apis.projectsApi, options);
|
|
36
|
+
const spinner = (0, ora_1.default)(`Processing file "${options.file}" for collection "${options.collection}" in instance ${options.instance}...`).start();
|
|
37
|
+
try {
|
|
38
|
+
const requestData = {
|
|
39
|
+
type: options.type,
|
|
40
|
+
url: options.file,
|
|
41
|
+
options: options.options ? JSON.parse(options.options) : {},
|
|
42
|
+
};
|
|
43
|
+
yield apis.documentsApi.documentControllerAddDocToCollectionFromFile(project.id, options.instance, options.collection, requestData);
|
|
44
|
+
spinner.succeed('Successfully processed file for document chunking');
|
|
45
|
+
console.log(chalk_1.default.green(`File "${options.file}" processed successfully for collection "${options.collection}".`));
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
spinner.fail('Operation failed');
|
|
49
|
+
if (error.response && error.response.status === 401) {
|
|
50
|
+
console.error(chalk_1.default.red('Authentication token has expired. Please login again using "nestbox login <domain>".'));
|
|
51
|
+
}
|
|
52
|
+
else if ((_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) {
|
|
53
|
+
console.error(chalk_1.default.red('API Error:'), error.response.data.message);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.error(chalk_1.default.red('Error:'), error.message || 'Unknown error');
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=docUploadFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docUploadFile.js","sourceRoot":"","sources":["../../../src/commands/document/docUploadFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAOA,oEA+CC;AArDD,6CAAqD;AACrD,kDAA0B;AAC1B,8CAAsB;AACtB,iDAAqD;AACrD,yCAAgD;AAEhD,SAAgB,4BAA4B,CAAC,UAAmB;IAC9D,MAAM,aAAa,GAAG,UAAU;SAC7B,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,cAAc,CAAC,yBAAyB,EAAE,aAAa,CAAC;SACxD,cAAc,CAAC,6BAA6B,EAAE,eAAe,CAAC;SAC9D,cAAc,CAAC,eAAe,EAAE,4BAA4B,CAAC;SAC7D,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,CAAC;SACrE,MAAM,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;SACnF,MAAM,CAAC,uBAAuB,EAAE,sDAAsD,CAAC,CAAC;IAE3F,aAAa,CAAC,MAAM,CAAC,CAAO,OAAO,EAAE,EAAE;QACrC,MAAM,IAAA,wBAAgB,EAAC,GAAS,EAAE;;YAChC,MAAM,IAAI,GAAG,IAAA,6BAAkB,GAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAc,EAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,oBAAoB,OAAO,CAAC,IAAI,qBAAqB,OAAO,CAAC,UAAU,iBAAiB,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3I,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,GAAG,EAAE,OAAO,CAAC,IAAI;oBACjB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;iBAC5D,CAAC;gBAEF,MAAM,IAAI,CAAC,YAAY,CAAC,4CAA4C,CAClE,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,EAClB,WAAW,CACZ,CAAC;gBAEF,OAAO,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,OAAO,CAAC,IAAI,4CAA4C,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;YACpH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACpD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC,CAAC;gBACnH,CAAC;qBAAM,IAAI,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,EAAE,CAAC;oBACzC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;gBACvE,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { registerCollectionListCommand } from './collectionList';
|
|
2
|
+
export { registerCollectionCreateCommand } from './collectionCreate';
|
|
3
|
+
export { registerCollectionGetCommand } from './collectionGet';
|
|
4
|
+
export { registerCollectionDeleteCommand } from './collectionDelete';
|
|
5
|
+
export { registerCollectionUpdateCommand } from './collectionUpdate';
|
|
6
|
+
export { registerDocAddCommand } from './docAdd';
|
|
7
|
+
export { registerDocGetCommand } from './docGet';
|
|
8
|
+
export { registerDocDeleteCommand } from './docDelete';
|
|
9
|
+
export { registerDocUpdateCommand } from './docUpdate';
|
|
10
|
+
export { registerDocUploadFileCommand } from './docUploadFile';
|
|
11
|
+
export { registerDocSearchCommand } from './docSearch';
|
|
12
|
+
export { createDocumentApis, type DocumentApiInstances } from './apiUtils';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDocumentApis = exports.registerDocSearchCommand = exports.registerDocUploadFileCommand = exports.registerDocUpdateCommand = exports.registerDocDeleteCommand = exports.registerDocGetCommand = exports.registerDocAddCommand = exports.registerCollectionUpdateCommand = exports.registerCollectionDeleteCommand = exports.registerCollectionGetCommand = exports.registerCollectionCreateCommand = exports.registerCollectionListCommand = void 0;
|
|
4
|
+
// Collection commands
|
|
5
|
+
var collectionList_1 = require("./collectionList");
|
|
6
|
+
Object.defineProperty(exports, "registerCollectionListCommand", { enumerable: true, get: function () { return collectionList_1.registerCollectionListCommand; } });
|
|
7
|
+
var collectionCreate_1 = require("./collectionCreate");
|
|
8
|
+
Object.defineProperty(exports, "registerCollectionCreateCommand", { enumerable: true, get: function () { return collectionCreate_1.registerCollectionCreateCommand; } });
|
|
9
|
+
var collectionGet_1 = require("./collectionGet");
|
|
10
|
+
Object.defineProperty(exports, "registerCollectionGetCommand", { enumerable: true, get: function () { return collectionGet_1.registerCollectionGetCommand; } });
|
|
11
|
+
var collectionDelete_1 = require("./collectionDelete");
|
|
12
|
+
Object.defineProperty(exports, "registerCollectionDeleteCommand", { enumerable: true, get: function () { return collectionDelete_1.registerCollectionDeleteCommand; } });
|
|
13
|
+
var collectionUpdate_1 = require("./collectionUpdate");
|
|
14
|
+
Object.defineProperty(exports, "registerCollectionUpdateCommand", { enumerable: true, get: function () { return collectionUpdate_1.registerCollectionUpdateCommand; } });
|
|
15
|
+
// Document commands
|
|
16
|
+
var docAdd_1 = require("./docAdd");
|
|
17
|
+
Object.defineProperty(exports, "registerDocAddCommand", { enumerable: true, get: function () { return docAdd_1.registerDocAddCommand; } });
|
|
18
|
+
var docGet_1 = require("./docGet");
|
|
19
|
+
Object.defineProperty(exports, "registerDocGetCommand", { enumerable: true, get: function () { return docGet_1.registerDocGetCommand; } });
|
|
20
|
+
var docDelete_1 = require("./docDelete");
|
|
21
|
+
Object.defineProperty(exports, "registerDocDeleteCommand", { enumerable: true, get: function () { return docDelete_1.registerDocDeleteCommand; } });
|
|
22
|
+
var docUpdate_1 = require("./docUpdate");
|
|
23
|
+
Object.defineProperty(exports, "registerDocUpdateCommand", { enumerable: true, get: function () { return docUpdate_1.registerDocUpdateCommand; } });
|
|
24
|
+
var docUploadFile_1 = require("./docUploadFile");
|
|
25
|
+
Object.defineProperty(exports, "registerDocUploadFileCommand", { enumerable: true, get: function () { return docUploadFile_1.registerDocUploadFileCommand; } });
|
|
26
|
+
var docSearch_1 = require("./docSearch");
|
|
27
|
+
Object.defineProperty(exports, "registerDocSearchCommand", { enumerable: true, get: function () { return docSearch_1.registerDocSearchCommand; } });
|
|
28
|
+
// API utilities
|
|
29
|
+
var apiUtils_1 = require("./apiUtils");
|
|
30
|
+
Object.defineProperty(exports, "createDocumentApis", { enumerable: true, get: function () { return apiUtils_1.createDocumentApis; } });
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/document/index.ts"],"names":[],"mappings":";;;AAAA,sBAAsB;AACtB,mDAAiE;AAAxD,+HAAA,6BAA6B,OAAA;AACtC,uDAAqE;AAA5D,mIAAA,+BAA+B,OAAA;AACxC,iDAA+D;AAAtD,6HAAA,4BAA4B,OAAA;AACrC,uDAAqE;AAA5D,mIAAA,+BAA+B,OAAA;AACxC,uDAAqE;AAA5D,mIAAA,+BAA+B,OAAA;AAExC,oBAAoB;AACpB,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,yCAAuD;AAA9C,qHAAA,wBAAwB,OAAA;AACjC,yCAAuD;AAA9C,qHAAA,wBAAwB,OAAA;AACjC,iDAA+D;AAAtD,6HAAA,4BAA4B,OAAA;AACrC,yCAAuD;AAA9C,qHAAA,wBAAwB,OAAA;AAEjC,gBAAgB;AAChB,uCAA2E;AAAlE,8GAAA,kBAAkB,OAAA"}
|