@agent-deck/backend 1.3.0 → 1.3.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/.tsbuildinfo +1 -1
- package/dist/cli-runtime.d.ts +23 -1
- package/dist/cli-runtime.d.ts.map +1 -1
- package/dist/cli-runtime.js +54 -1
- package/dist/cli-runtime.js.map +1 -1
- package/dist/export-import/export-bundle.d.ts +9 -0
- package/dist/export-import/export-bundle.d.ts.map +1 -0
- package/dist/export-import/export-bundle.js +78 -0
- package/dist/export-import/export-bundle.js.map +1 -0
- package/dist/export-import/import-bundle.d.ts +8 -0
- package/dist/export-import/import-bundle.d.ts.map +1 -0
- package/dist/export-import/import-bundle.js +267 -0
- package/dist/export-import/import-bundle.js.map +1 -0
- package/dist/export-import/index.d.ts +4 -0
- package/dist/export-import/index.d.ts.map +1 -0
- package/dist/export-import/index.js +15 -0
- package/dist/export-import/index.js.map +1 -0
- package/dist/export-import/sanitize-for-export.d.ts +8 -0
- package/dist/export-import/sanitize-for-export.d.ts.map +1 -0
- package/dist/export-import/sanitize-for-export.js +75 -0
- package/dist/export-import/sanitize-for-export.js.map +1 -0
- package/dist/models/database.d.ts +8 -0
- package/dist/models/database.d.ts.map +1 -1
- package/dist/models/database.js +151 -67
- package/dist/models/database.js.map +1 -1
- package/dist/routes/export-import.d.ts +3 -0
- package/dist/routes/export-import.d.ts.map +1 -0
- package/dist/routes/export-import.js +52 -0
- package/dist/routes/export-import.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/package.json +2 -2
- package/static-ui/assets/index-BkYGH65z.js +420 -0
- package/static-ui/assets/index-DMYIwycS.css +1 -0
- package/static-ui/index.html +2 -2
- package/static-ui/assets/index-CQoBRW1p.js +0 -409
- package/static-ui/assets/index-wleyGzod.css +0 -1
package/dist/cli-runtime.js
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PlaybookDependencyError = void 0;
|
|
6
|
+
exports.ImportBundleError = exports.ExportBundleError = exports.PlaybookDependencyError = void 0;
|
|
4
7
|
exports.createCliCredentialManager = createCliCredentialManager;
|
|
5
8
|
exports.createCliCollectionAdmin = createCliCollectionAdmin;
|
|
9
|
+
exports.createCliExportImport = createCliExportImport;
|
|
10
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
6
12
|
const database_1 = require("./models/database");
|
|
7
13
|
const paths_1 = require("./lib/paths");
|
|
8
14
|
const vault_1 = require("./vault");
|
|
9
15
|
const playbook_manager_1 = require("./playbooks/playbook-manager");
|
|
10
16
|
Object.defineProperty(exports, "PlaybookDependencyError", { enumerable: true, get: function () { return playbook_manager_1.PlaybookDependencyError; } });
|
|
17
|
+
const export_import_1 = require("./export-import");
|
|
18
|
+
Object.defineProperty(exports, "ExportBundleError", { enumerable: true, get: function () { return export_import_1.ExportBundleError; } });
|
|
19
|
+
Object.defineProperty(exports, "ImportBundleError", { enumerable: true, get: function () { return export_import_1.ImportBundleError; } });
|
|
11
20
|
/** Shared credential manager for the agent-deck CLI (vault + exec). */
|
|
12
21
|
function createCliCredentialManager() {
|
|
13
22
|
const db = new database_1.DatabaseManager((0, paths_1.resolveDatabasePath)());
|
|
@@ -76,4 +85,48 @@ function createCliCollectionAdmin() {
|
|
|
76
85
|
},
|
|
77
86
|
};
|
|
78
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Export / import layouts (MCP + playbooks + decks). No credentials or secrets.
|
|
90
|
+
*/
|
|
91
|
+
function createCliExportImport() {
|
|
92
|
+
const db = new database_1.DatabaseManager((0, paths_1.resolveDatabasePath)());
|
|
93
|
+
return {
|
|
94
|
+
async exportToFile(outputPath, request) {
|
|
95
|
+
try {
|
|
96
|
+
const bundle = await (0, export_import_1.buildExportBundle)(db, request);
|
|
97
|
+
const resolved = node_path_1.default.resolve(outputPath);
|
|
98
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(resolved), { recursive: true });
|
|
99
|
+
await promises_1.default.writeFile(resolved, `${JSON.stringify(bundle, null, 2)}\n`, 'utf8');
|
|
100
|
+
return { ok: true, bundle };
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
const message = error instanceof export_import_1.ExportBundleError
|
|
104
|
+
? error.message
|
|
105
|
+
: error instanceof Error
|
|
106
|
+
? error.message
|
|
107
|
+
: String(error);
|
|
108
|
+
return { ok: false, error: message };
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
async importFromFile(inputPath) {
|
|
112
|
+
try {
|
|
113
|
+
const text = await promises_1.default.readFile(node_path_1.default.resolve(inputPath), 'utf8');
|
|
114
|
+
const raw = (0, export_import_1.parseBundleJson)(text);
|
|
115
|
+
const report = await (0, export_import_1.importBundle)(db, raw);
|
|
116
|
+
if (report.status === 'failed') {
|
|
117
|
+
return { ok: false, error: report.warnings.join('; ') || 'Import failed' };
|
|
118
|
+
}
|
|
119
|
+
return { ok: true, report };
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const message = error instanceof export_import_1.ImportBundleError
|
|
123
|
+
? error.message
|
|
124
|
+
: error instanceof Error
|
|
125
|
+
? error.message
|
|
126
|
+
: String(error);
|
|
127
|
+
return { ok: false, error: message };
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
79
132
|
//# sourceMappingURL=cli-runtime.js.map
|
package/dist/cli-runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-runtime.js","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-runtime.js","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BundleV1, ExportRequest } from '@agent-deck/shared';
|
|
2
|
+
import type { DatabaseManager } from '../models/database';
|
|
3
|
+
export declare class ExportBundleError extends Error {
|
|
4
|
+
constructor(message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function buildExportBundle(db: DatabaseManager, request: ExportRequest, options?: {
|
|
7
|
+
agentDeckVersion?: string;
|
|
8
|
+
}): Promise<BundleV1>;
|
|
9
|
+
//# sourceMappingURL=export-bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-bundle.d.ts","sourceRoot":"","sources":["../../src/export-import/export-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,aAAa,EAId,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AA2BD,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GACtC,OAAO,CAAC,QAAQ,CAAC,CA8DnB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExportBundleError = void 0;
|
|
4
|
+
exports.buildExportBundle = buildExportBundle;
|
|
5
|
+
const shared_1 = require("@agent-deck/shared");
|
|
6
|
+
const version_1 = require("../lib/version");
|
|
7
|
+
const sanitize_for_export_1 = require("./sanitize-for-export");
|
|
8
|
+
class ExportBundleError extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'ExportBundleError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.ExportBundleError = ExportBundleError;
|
|
15
|
+
function toBundlePlaybook(playbook, allowedServiceIds) {
|
|
16
|
+
return {
|
|
17
|
+
id: playbook.id,
|
|
18
|
+
title: playbook.title,
|
|
19
|
+
body: playbook.body,
|
|
20
|
+
triggers: playbook.triggers,
|
|
21
|
+
dependsOnServiceIds: playbook.dependsOnServiceIds.filter((id) => allowedServiceIds.has(id)),
|
|
22
|
+
...(playbook.exec ? { exec: playbook.exec } : {}),
|
|
23
|
+
...(playbook.skill ? { skill: playbook.skill } : {}),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async function buildExportBundle(db, request, options) {
|
|
27
|
+
const input = shared_1.ExportRequestSchema.parse(request);
|
|
28
|
+
const agentDeckVersion = options?.agentDeckVersion ?? (0, version_1.getAgentDeckVersion)();
|
|
29
|
+
let services = [];
|
|
30
|
+
let playbooks = [];
|
|
31
|
+
let decks = [];
|
|
32
|
+
if (input.scope === 'collection') {
|
|
33
|
+
const allServices = await db.getAllServices();
|
|
34
|
+
services = allServices.map(sanitize_for_export_1.sanitizeServiceForExport);
|
|
35
|
+
const allowedServiceIds = new Set(services.map((service) => service.id));
|
|
36
|
+
const allPlaybooks = await db.getAllPlaybooks();
|
|
37
|
+
playbooks = allPlaybooks.map((playbook) => toBundlePlaybook(playbook, allowedServiceIds));
|
|
38
|
+
const allDecks = await db.getAllDecks();
|
|
39
|
+
decks = allDecks.map((deck) => ({
|
|
40
|
+
id: deck.id,
|
|
41
|
+
name: deck.name,
|
|
42
|
+
...(deck.description ? { description: deck.description } : {}),
|
|
43
|
+
serviceIds: (deck.services ?? []).map((service) => service.id),
|
|
44
|
+
playbookIds: (deck.playbooks ?? []).map((playbook) => playbook.id),
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const deck = await db.getDeck(input.deckId);
|
|
49
|
+
if (!deck) {
|
|
50
|
+
throw new ExportBundleError(`Deck not found: ${input.deckId}`);
|
|
51
|
+
}
|
|
52
|
+
const deckServices = deck.services ?? [];
|
|
53
|
+
services = deckServices.map(sanitize_for_export_1.sanitizeServiceForExport);
|
|
54
|
+
const allowedServiceIds = new Set(services.map((service) => service.id));
|
|
55
|
+
const deckPlaybooks = deck.playbooks ?? [];
|
|
56
|
+
playbooks = deckPlaybooks.map((playbook) => toBundlePlaybook(playbook, allowedServiceIds));
|
|
57
|
+
decks = [
|
|
58
|
+
{
|
|
59
|
+
id: deck.id,
|
|
60
|
+
name: deck.name,
|
|
61
|
+
...(deck.description ? { description: deck.description } : {}),
|
|
62
|
+
serviceIds: deckServices.map((service) => service.id),
|
|
63
|
+
playbookIds: deckPlaybooks.map((playbook) => playbook.id),
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
return shared_1.BundleV1Schema.parse({
|
|
68
|
+
format: 'agent-deck-bundle',
|
|
69
|
+
version: 1,
|
|
70
|
+
exportedAt: new Date().toISOString(),
|
|
71
|
+
exportedFrom: { agentDeckVersion },
|
|
72
|
+
scope: input.scope,
|
|
73
|
+
services,
|
|
74
|
+
playbooks,
|
|
75
|
+
decks,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=export-bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-bundle.js","sourceRoot":"","sources":["../../src/export-import/export-bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ImportReport } from '@agent-deck/shared';
|
|
2
|
+
import type { DatabaseManager } from '../models/database';
|
|
3
|
+
export declare class ImportBundleError extends Error {
|
|
4
|
+
constructor(message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function importBundle(db: DatabaseManager, raw: unknown): Promise<ImportReport>;
|
|
7
|
+
export declare function parseBundleJson(text: string): unknown;
|
|
8
|
+
//# sourceMappingURL=import-bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-bundle.d.ts","sourceRoot":"","sources":["../../src/export-import/import-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AA+LD,wBAAsB,YAAY,CAChC,EAAE,EAAE,eAAe,EACnB,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,YAAY,CAAC,CAgIvB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ImportBundleError = void 0;
|
|
4
|
+
exports.importBundle = importBundle;
|
|
5
|
+
exports.parseBundleJson = parseBundleJson;
|
|
6
|
+
const shared_1 = require("@agent-deck/shared");
|
|
7
|
+
const sanitize_for_export_1 = require("./sanitize-for-export");
|
|
8
|
+
class ImportBundleError extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'ImportBundleError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.ImportBundleError = ImportBundleError;
|
|
15
|
+
function isUniqueConstraintError(error) {
|
|
16
|
+
const code = error && typeof error === 'object' && 'code' in error
|
|
17
|
+
? String(error.code)
|
|
18
|
+
: '';
|
|
19
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
20
|
+
return (code.includes('CONSTRAINT') ||
|
|
21
|
+
message.includes('UNIQUE constraint failed') ||
|
|
22
|
+
message.includes('already exists'));
|
|
23
|
+
}
|
|
24
|
+
function remapServiceDeps(playbookTitle, dependsOnServiceIds, serviceIdMap, warnings) {
|
|
25
|
+
const resolved = [];
|
|
26
|
+
for (const bundleServiceId of dependsOnServiceIds) {
|
|
27
|
+
const mapped = serviceIdMap[bundleServiceId];
|
|
28
|
+
if (mapped) {
|
|
29
|
+
resolved.push(mapped);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
warnings.push(`Playbook "${playbookTitle}": dropped missing service dependency ${bundleServiceId}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return resolved;
|
|
36
|
+
}
|
|
37
|
+
async function resolveService(db, service, warnings, servicesNeedingOauth) {
|
|
38
|
+
try {
|
|
39
|
+
const created = await db.createService({
|
|
40
|
+
name: service.name,
|
|
41
|
+
type: service.type,
|
|
42
|
+
url: service.url,
|
|
43
|
+
cardColor: service.cardColor ?? '#92E4DD',
|
|
44
|
+
...(service.description ? { description: service.description } : {}),
|
|
45
|
+
...(service.iconUrl ? { iconUrl: service.iconUrl } : {}),
|
|
46
|
+
...(service.headers ? { headers: service.headers } : {}),
|
|
47
|
+
...(service.oauthClientId ? { oauthClientId: service.oauthClientId } : {}),
|
|
48
|
+
...(service.oauthAuthorizationUrl
|
|
49
|
+
? { oauthAuthorizationUrl: service.oauthAuthorizationUrl }
|
|
50
|
+
: {}),
|
|
51
|
+
...(service.oauthTokenUrl ? { oauthTokenUrl: service.oauthTokenUrl } : {}),
|
|
52
|
+
...(service.oauthRedirectUri
|
|
53
|
+
? { oauthRedirectUri: service.oauthRedirectUri }
|
|
54
|
+
: {}),
|
|
55
|
+
...(service.oauthScope ? { oauthScope: service.oauthScope } : {}),
|
|
56
|
+
...(service.localCommand ? { localCommand: service.localCommand } : {}),
|
|
57
|
+
...(service.localArgs ? { localArgs: service.localArgs } : {}),
|
|
58
|
+
...(service.localWorkingDir
|
|
59
|
+
? { localWorkingDir: service.localWorkingDir }
|
|
60
|
+
: {}),
|
|
61
|
+
});
|
|
62
|
+
if (service.disabledToolNames && service.disabledToolNames.length > 0) {
|
|
63
|
+
await db.updateServiceDisabledTools(created.id, service.disabledToolNames);
|
|
64
|
+
}
|
|
65
|
+
if ((0, sanitize_for_export_1.serviceNeedsOauthReconnect)(service)) {
|
|
66
|
+
servicesNeedingOauth.push(service.name);
|
|
67
|
+
}
|
|
68
|
+
return { targetId: created.id, created: true };
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (!isUniqueConstraintError(error)) {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
const existing = (await db.getAllServices()).find((row) => row.name === service.name);
|
|
75
|
+
if (!existing) {
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
warnings.push(`Skipped service "${service.name}" (already exists)`);
|
|
79
|
+
return { targetId: existing.id, created: false };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function resolvePlaybook(db, playbook, serviceIdMap, warnings) {
|
|
83
|
+
try {
|
|
84
|
+
const dependsOnServiceIds = remapServiceDeps(playbook.title, playbook.dependsOnServiceIds, serviceIdMap, warnings);
|
|
85
|
+
const created = await db.createPlaybook({
|
|
86
|
+
id: playbook.id,
|
|
87
|
+
title: playbook.title,
|
|
88
|
+
body: playbook.body,
|
|
89
|
+
triggers: playbook.triggers,
|
|
90
|
+
dependsOnCredentialIds: [],
|
|
91
|
+
dependsOnServiceIds,
|
|
92
|
+
exec: playbook.exec,
|
|
93
|
+
skill: playbook.skill,
|
|
94
|
+
});
|
|
95
|
+
return { targetId: created.id, created: true };
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (!isUniqueConstraintError(error)) {
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
const byId = await db.getPlaybook(playbook.id);
|
|
102
|
+
const byTitle = byId ??
|
|
103
|
+
(await db.getAllPlaybooks()).find((row) => row.title === playbook.title);
|
|
104
|
+
if (!byTitle) {
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
warnings.push(`Skipped playbook "${playbook.title}" (${playbook.id}) (already exists)`);
|
|
108
|
+
return { targetId: byTitle.id, created: false };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function resolveDeck(db, name, description, warnings) {
|
|
112
|
+
try {
|
|
113
|
+
const created = await db.createDeck({
|
|
114
|
+
name,
|
|
115
|
+
...(description ? { description } : {}),
|
|
116
|
+
isActive: false,
|
|
117
|
+
credentials: [],
|
|
118
|
+
playbooks: [],
|
|
119
|
+
});
|
|
120
|
+
return { targetId: created.id, created: true };
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (!isUniqueConstraintError(error)) {
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
const existing = (await db.getAllDecks()).find((row) => row.name === name);
|
|
127
|
+
if (!existing) {
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
warnings.push(`Skipped deck "${name}" (already exists)`);
|
|
131
|
+
return { targetId: existing.id, created: false };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async function linkService(db, deckId, serviceId, position) {
|
|
135
|
+
const existing = await db.getDeckServices(deckId);
|
|
136
|
+
if (existing.some((row) => row.serviceId === serviceId)) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
await db.addServiceToDeck({ deckId, serviceId, position });
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
async function linkPlaybook(db, deckId, playbookId, position) {
|
|
143
|
+
const existing = await db.getDeckPlaybooks(deckId);
|
|
144
|
+
if (existing.some((row) => row.playbookId === playbookId)) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
await db.addPlaybookToDeck({ deckId, playbookId, position });
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
async function importBundle(db, raw) {
|
|
151
|
+
const parsed = shared_1.BundleV1Schema.safeParse(raw);
|
|
152
|
+
if (!parsed.success) {
|
|
153
|
+
const message = parsed.error.issues
|
|
154
|
+
.map((issue) => `${issue.path.join('.') || 'bundle'}: ${issue.message}`)
|
|
155
|
+
.join('; ');
|
|
156
|
+
throw new ImportBundleError(`Invalid bundle: ${message}`);
|
|
157
|
+
}
|
|
158
|
+
const bundle = parsed.data;
|
|
159
|
+
const warnings = [];
|
|
160
|
+
const servicesNeedingOauth = [];
|
|
161
|
+
const idMap = {};
|
|
162
|
+
const counts = {
|
|
163
|
+
services: { created: 0, reused: 0 },
|
|
164
|
+
playbooks: { created: 0, reused: 0 },
|
|
165
|
+
decks: { created: 0, reused: 0 },
|
|
166
|
+
};
|
|
167
|
+
try {
|
|
168
|
+
const seenBundleServiceIds = new Set();
|
|
169
|
+
for (const service of bundle.services) {
|
|
170
|
+
if (seenBundleServiceIds.has(service.id)) {
|
|
171
|
+
warnings.push(`Skipped duplicate service id in bundle: ${service.id}`);
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
seenBundleServiceIds.add(service.id);
|
|
175
|
+
const resolved = await resolveService(db, service, warnings, servicesNeedingOauth);
|
|
176
|
+
idMap[service.id] = resolved.targetId;
|
|
177
|
+
if (resolved.created) {
|
|
178
|
+
counts.services.created += 1;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
counts.services.reused += 1;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const seenBundlePlaybookIds = new Set();
|
|
185
|
+
for (const playbook of bundle.playbooks) {
|
|
186
|
+
if (seenBundlePlaybookIds.has(playbook.id)) {
|
|
187
|
+
warnings.push(`Skipped duplicate playbook id in bundle: ${playbook.id}`);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
seenBundlePlaybookIds.add(playbook.id);
|
|
191
|
+
const resolved = await resolvePlaybook(db, playbook, idMap, warnings);
|
|
192
|
+
idMap[playbook.id] = resolved.targetId;
|
|
193
|
+
if (resolved.created) {
|
|
194
|
+
counts.playbooks.created += 1;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
counts.playbooks.reused += 1;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
for (const deck of bundle.decks) {
|
|
201
|
+
const resolved = await resolveDeck(db, deck.name, deck.description, warnings);
|
|
202
|
+
idMap[deck.id] = resolved.targetId;
|
|
203
|
+
if (resolved.created) {
|
|
204
|
+
counts.decks.created += 1;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
counts.decks.reused += 1;
|
|
208
|
+
}
|
|
209
|
+
const deckId = resolved.targetId;
|
|
210
|
+
const existingServices = await db.getDeckServices(deckId);
|
|
211
|
+
let position = existingServices.length;
|
|
212
|
+
for (const bundleServiceId of deck.serviceIds) {
|
|
213
|
+
const serviceId = idMap[bundleServiceId];
|
|
214
|
+
if (!serviceId) {
|
|
215
|
+
warnings.push(`Deck "${deck.name}": skipped unknown service ${bundleServiceId}`);
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
const linked = await linkService(db, deckId, serviceId, position);
|
|
219
|
+
if (linked) {
|
|
220
|
+
position += 1;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const existingPlaybooks = await db.getDeckPlaybooks(deckId);
|
|
224
|
+
position = existingPlaybooks.length;
|
|
225
|
+
for (const bundlePlaybookId of deck.playbookIds) {
|
|
226
|
+
const playbookId = idMap[bundlePlaybookId];
|
|
227
|
+
if (!playbookId) {
|
|
228
|
+
warnings.push(`Deck "${deck.name}": skipped unknown playbook ${bundlePlaybookId}`);
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
const linked = await linkPlaybook(db, deckId, playbookId, position);
|
|
232
|
+
if (linked) {
|
|
233
|
+
position += 1;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return shared_1.ImportReportSchema.parse({
|
|
238
|
+
status: 'completed',
|
|
239
|
+
counts,
|
|
240
|
+
servicesNeedingOauth,
|
|
241
|
+
warnings,
|
|
242
|
+
idMap,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
if (error instanceof ImportBundleError) {
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
250
|
+
return shared_1.ImportReportSchema.parse({
|
|
251
|
+
status: 'failed',
|
|
252
|
+
counts,
|
|
253
|
+
servicesNeedingOauth,
|
|
254
|
+
warnings: [...warnings, message],
|
|
255
|
+
idMap,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function parseBundleJson(text) {
|
|
260
|
+
try {
|
|
261
|
+
return JSON.parse(text);
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
throw new ImportBundleError('Bundle is not valid JSON');
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=import-bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-bundle.js","sourceRoot":"","sources":["../../src/export-import/import-bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { buildExportBundle, ExportBundleError } from './export-bundle';
|
|
2
|
+
export { importBundle, parseBundleJson, ImportBundleError } from './import-bundle';
|
|
3
|
+
export { sanitizeServiceForExport, serviceNeedsOauthReconnect, FORBIDDEN_EXPORT_SERVICE_KEYS, } from './sanitize-for-export';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/export-import/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FORBIDDEN_EXPORT_SERVICE_KEYS = exports.serviceNeedsOauthReconnect = exports.sanitizeServiceForExport = exports.ImportBundleError = exports.parseBundleJson = exports.importBundle = exports.ExportBundleError = exports.buildExportBundle = void 0;
|
|
4
|
+
var export_bundle_1 = require("./export-bundle");
|
|
5
|
+
Object.defineProperty(exports, "buildExportBundle", { enumerable: true, get: function () { return export_bundle_1.buildExportBundle; } });
|
|
6
|
+
Object.defineProperty(exports, "ExportBundleError", { enumerable: true, get: function () { return export_bundle_1.ExportBundleError; } });
|
|
7
|
+
var import_bundle_1 = require("./import-bundle");
|
|
8
|
+
Object.defineProperty(exports, "importBundle", { enumerable: true, get: function () { return import_bundle_1.importBundle; } });
|
|
9
|
+
Object.defineProperty(exports, "parseBundleJson", { enumerable: true, get: function () { return import_bundle_1.parseBundleJson; } });
|
|
10
|
+
Object.defineProperty(exports, "ImportBundleError", { enumerable: true, get: function () { return import_bundle_1.ImportBundleError; } });
|
|
11
|
+
var sanitize_for_export_1 = require("./sanitize-for-export");
|
|
12
|
+
Object.defineProperty(exports, "sanitizeServiceForExport", { enumerable: true, get: function () { return sanitize_for_export_1.sanitizeServiceForExport; } });
|
|
13
|
+
Object.defineProperty(exports, "serviceNeedsOauthReconnect", { enumerable: true, get: function () { return sanitize_for_export_1.serviceNeedsOauthReconnect; } });
|
|
14
|
+
Object.defineProperty(exports, "FORBIDDEN_EXPORT_SERVICE_KEYS", { enumerable: true, get: function () { return sanitize_for_export_1.FORBIDDEN_EXPORT_SERVICE_KEYS; } });
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/export-import/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuE;AAA9D,kHAAA,iBAAiB,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AAC7C,iDAAmF;AAA1E,6GAAA,YAAY,OAAA;AAAE,gHAAA,eAAe,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AACzD,6DAI+B;AAH7B,+HAAA,wBAAwB,OAAA;AACxB,iIAAA,0BAA0B,OAAA;AAC1B,oIAAA,6BAA6B,OAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BundleService } from '@agent-deck/shared';
|
|
2
|
+
import type { Service } from '@agent-deck/shared';
|
|
3
|
+
/** Create-safe service snapshot for export bundles (no secrets, no runtime state). */
|
|
4
|
+
export declare function sanitizeServiceForExport(service: Service): BundleService;
|
|
5
|
+
export declare function serviceNeedsOauthReconnect(service: BundleService): boolean;
|
|
6
|
+
/** Keys that must never appear on an exported service object. */
|
|
7
|
+
export declare const FORBIDDEN_EXPORT_SERVICE_KEYS: readonly ["oauthClientSecret", "oauthAccessToken", "oauthRefreshToken", "oauthTokenExpiresAt", "oauthState", "oauthHasToken", "localEnv", "credentialId", "health", "isConnected", "lastPing", "registeredAt", "updatedAt"];
|
|
8
|
+
//# sourceMappingURL=sanitize-for-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-for-export.d.ts","sourceRoot":"","sources":["../../src/export-import/sanitize-for-export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAsBlD,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CA+BxE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAM1E;AAED,iEAAiE;AACjE,eAAO,MAAM,6BAA6B,6NAchC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FORBIDDEN_EXPORT_SERVICE_KEYS = void 0;
|
|
4
|
+
exports.sanitizeServiceForExport = sanitizeServiceForExport;
|
|
5
|
+
exports.serviceNeedsOauthReconnect = serviceNeedsOauthReconnect;
|
|
6
|
+
function stripAuthorizationHeader(headers) {
|
|
7
|
+
if (!headers) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const next = {};
|
|
11
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
12
|
+
if (key.toLowerCase() === 'authorization') {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
next[key] = value;
|
|
16
|
+
}
|
|
17
|
+
return Object.keys(next).length > 0 ? next : undefined;
|
|
18
|
+
}
|
|
19
|
+
function presentString(value) {
|
|
20
|
+
return value == null || value === '' ? undefined : value;
|
|
21
|
+
}
|
|
22
|
+
/** Create-safe service snapshot for export bundles (no secrets, no runtime state). */
|
|
23
|
+
function sanitizeServiceForExport(service) {
|
|
24
|
+
const headers = stripAuthorizationHeader(service.headers);
|
|
25
|
+
const description = presentString(service.description);
|
|
26
|
+
const iconUrl = presentString(service.iconUrl);
|
|
27
|
+
const oauthClientId = presentString(service.oauthClientId);
|
|
28
|
+
const oauthAuthorizationUrl = presentString(service.oauthAuthorizationUrl);
|
|
29
|
+
const oauthTokenUrl = presentString(service.oauthTokenUrl);
|
|
30
|
+
const oauthRedirectUri = presentString(service.oauthRedirectUri);
|
|
31
|
+
const oauthScope = presentString(service.oauthScope);
|
|
32
|
+
const localCommand = presentString(service.localCommand);
|
|
33
|
+
const localWorkingDir = presentString(service.localWorkingDir);
|
|
34
|
+
return {
|
|
35
|
+
id: service.id,
|
|
36
|
+
name: service.name,
|
|
37
|
+
type: service.type,
|
|
38
|
+
url: service.url,
|
|
39
|
+
...(description ? { description } : {}),
|
|
40
|
+
...(service.cardColor ? { cardColor: service.cardColor } : {}),
|
|
41
|
+
...(iconUrl ? { iconUrl } : {}),
|
|
42
|
+
disabledToolNames: service.disabledToolNames ?? [],
|
|
43
|
+
...(headers ? { headers } : {}),
|
|
44
|
+
...(oauthClientId ? { oauthClientId } : {}),
|
|
45
|
+
...(oauthAuthorizationUrl ? { oauthAuthorizationUrl } : {}),
|
|
46
|
+
...(oauthTokenUrl ? { oauthTokenUrl } : {}),
|
|
47
|
+
...(oauthRedirectUri ? { oauthRedirectUri } : {}),
|
|
48
|
+
...(oauthScope ? { oauthScope } : {}),
|
|
49
|
+
...(localCommand ? { localCommand } : {}),
|
|
50
|
+
...(service.localArgs?.length ? { localArgs: service.localArgs } : {}),
|
|
51
|
+
...(localWorkingDir ? { localWorkingDir } : {}),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function serviceNeedsOauthReconnect(service) {
|
|
55
|
+
return Boolean(service.oauthClientId ||
|
|
56
|
+
service.oauthAuthorizationUrl ||
|
|
57
|
+
service.oauthTokenUrl);
|
|
58
|
+
}
|
|
59
|
+
/** Keys that must never appear on an exported service object. */
|
|
60
|
+
exports.FORBIDDEN_EXPORT_SERVICE_KEYS = [
|
|
61
|
+
'oauthClientSecret',
|
|
62
|
+
'oauthAccessToken',
|
|
63
|
+
'oauthRefreshToken',
|
|
64
|
+
'oauthTokenExpiresAt',
|
|
65
|
+
'oauthState',
|
|
66
|
+
'oauthHasToken',
|
|
67
|
+
'localEnv',
|
|
68
|
+
'credentialId',
|
|
69
|
+
'health',
|
|
70
|
+
'isConnected',
|
|
71
|
+
'lastPing',
|
|
72
|
+
'registeredAt',
|
|
73
|
+
'updatedAt',
|
|
74
|
+
];
|
|
75
|
+
//# sourceMappingURL=sanitize-for-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-for-export.js","sourceRoot":"","sources":["../../src/export-import/sanitize-for-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,13 @@ export declare class DatabaseManager {
|
|
|
4
4
|
constructor(dbPath?: string);
|
|
5
5
|
private tableExists;
|
|
6
6
|
private addColumnIfMissing;
|
|
7
|
+
private indexExists;
|
|
8
|
+
/**
|
|
9
|
+
* Rename duplicate display names so a UNIQUE index can be applied.
|
|
10
|
+
* Keeps the oldest row's name; suffixes later rows with " (imported N)".
|
|
11
|
+
*/
|
|
12
|
+
private dedupeDisplayNames;
|
|
13
|
+
private ensureUniqueDisplayNameIndex;
|
|
7
14
|
private migrate;
|
|
8
15
|
private createTables;
|
|
9
16
|
hasAnyServices(): boolean;
|
|
@@ -23,6 +30,7 @@ export declare class DatabaseManager {
|
|
|
23
30
|
expiresAt?: string | null;
|
|
24
31
|
hasToken?: boolean;
|
|
25
32
|
}): Promise<void>;
|
|
33
|
+
private throwIfUniqueConstraint;
|
|
26
34
|
createDeck(input: CreateDeckInput): Promise<Deck>;
|
|
27
35
|
getDeck(id: string): Promise<Deck | null>;
|
|
28
36
|
getAllDecks(): Promise<Deck[]>;
|