@multiplayer-app/sandbox 0.0.27 → 0.0.28
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/lib/library/list-library-items.d.ts +21 -0
- package/dist/lib/library/list-library-items.d.ts.map +1 -0
- package/dist/lib/library/list-library-items.js +52 -0
- package/dist/lib/library/list-library-items.js.map +1 -0
- package/dist/routes/library.d.ts +2 -0
- package/dist/routes/library.d.ts.map +1 -0
- package/dist/routes/library.js +34 -0
- package/dist/routes/library.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type LibraryItemKind = 'notebook' | 'web';
|
|
2
|
+
export type LibraryItemStatus = 'live' | 'draft';
|
|
3
|
+
export interface LibraryItem {
|
|
4
|
+
id: string;
|
|
5
|
+
kind: LibraryItemKind;
|
|
6
|
+
title: string;
|
|
7
|
+
createdAt: string;
|
|
8
|
+
updatedAt: string;
|
|
9
|
+
/** Only web apps have a lifecycle; notebooks carry no status. */
|
|
10
|
+
status?: LibraryItemStatus;
|
|
11
|
+
/** API-relative preview path for web items, e.g. /sessions/:id/index.html */
|
|
12
|
+
url?: string;
|
|
13
|
+
fileCount?: number;
|
|
14
|
+
owner?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ListLibraryItemsParams {
|
|
17
|
+
accountId: string;
|
|
18
|
+
userId: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function listLibraryItems(params: ListLibraryItemsParams): Promise<LibraryItem[]>;
|
|
21
|
+
//# sourceMappingURL=list-library-items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-library-items.d.ts","sourceRoot":"","sources":["../../../src/lib/library/list-library-items.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,KAAK,CAAA;AAChD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEhD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,iEAAiE;IACjE,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AA0CD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAM7F"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listLibraryItems = listLibraryItems;
|
|
4
|
+
const context_1 = require("../../context");
|
|
5
|
+
const chat_access_1 = require("../chat-access");
|
|
6
|
+
const list_user_chats_1 = require("../list-user-chats");
|
|
7
|
+
const list_session_artifacts_1 = require("../session-pages/list-session-artifacts");
|
|
8
|
+
async function listNotebookItems(accountId) {
|
|
9
|
+
const repository = (0, context_1.getBuilderApiContext)().notebookRepository;
|
|
10
|
+
if (!repository) {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
const notebooks = await repository.listByAccount(accountId);
|
|
14
|
+
return notebooks.map((notebook) => ({
|
|
15
|
+
id: notebook.notebookId,
|
|
16
|
+
kind: 'notebook',
|
|
17
|
+
title: notebook.title,
|
|
18
|
+
createdAt: notebook.createdAt,
|
|
19
|
+
updatedAt: notebook.updatedAt,
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
async function listWebItems(userId) {
|
|
23
|
+
const { data: chats } = await (0, list_user_chats_1.listUserChats)({ userId });
|
|
24
|
+
const items = await Promise.all(chats.map(async (chat) => {
|
|
25
|
+
var _a;
|
|
26
|
+
const files = await (0, list_session_artifacts_1.listSessionArtifacts)(chat.id);
|
|
27
|
+
if (files.length === 0) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const hasIndex = files.some((file) => file.path === 'index.html');
|
|
31
|
+
return {
|
|
32
|
+
id: chat.id,
|
|
33
|
+
kind: 'web',
|
|
34
|
+
title: ((_a = chat.title) === null || _a === void 0 ? void 0 : _a.trim()) || 'Untitled app',
|
|
35
|
+
createdAt: chat.createdAt,
|
|
36
|
+
updatedAt: chat.updatedAt,
|
|
37
|
+
status: hasIndex ? 'live' : 'draft',
|
|
38
|
+
...(hasIndex ? { url: `/sessions/${chat.id}/index.html` } : {}),
|
|
39
|
+
fileCount: files.length,
|
|
40
|
+
owner: (0, chat_access_1.getChatOwnerId)(chat),
|
|
41
|
+
};
|
|
42
|
+
}));
|
|
43
|
+
return items.filter((item) => item !== null);
|
|
44
|
+
}
|
|
45
|
+
async function listLibraryItems(params) {
|
|
46
|
+
const [notebookItems, webItems] = await Promise.all([
|
|
47
|
+
listNotebookItems(params.accountId),
|
|
48
|
+
listWebItems(params.userId),
|
|
49
|
+
]);
|
|
50
|
+
return [...notebookItems, ...webItems].sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=list-library-items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-library-items.js","sourceRoot":"","sources":["../../../src/lib/library/list-library-items.ts"],"names":[],"mappings":";;AAmEA,4CAMC;AAzED,2CAAoD;AACpD,gDAA+C;AAC/C,wDAAkD;AAClD,oFAA8E;AAwB9E,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IAChD,MAAM,UAAU,GAAG,IAAA,8BAAoB,GAAE,CAAC,kBAAkB,CAAA;IAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClC,EAAE,EAAE,QAAQ,CAAC,UAAU;QACvB,IAAI,EAAE,UAAmB;QACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC,CAAC,CAAA;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,+BAAa,EAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;;QACpD,MAAM,KAAK,GAAG,MAAM,IAAA,6CAAoB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;QACjE,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,IAAI,EAAE,KAAI,cAAc;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YACnC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,KAAK,EAAE,IAAA,4BAAc,EAAC,IAAI,CAAC;SAC5B,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAuB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACnE,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,MAA8B;IACnE,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC;QACnC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/F,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/routes/library.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,aAAa,4CAAmB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.libraryRoutes = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const chat_access_1 = require("../lib/chat-access");
|
|
9
|
+
const list_library_items_1 = require("../lib/library/list-library-items");
|
|
10
|
+
function requireAccountId(req) {
|
|
11
|
+
if (!req.accountId) {
|
|
12
|
+
throw new Error('Unauthorized: accountId is required');
|
|
13
|
+
}
|
|
14
|
+
return req.accountId;
|
|
15
|
+
}
|
|
16
|
+
const listLibrary = async (req, res) => {
|
|
17
|
+
try {
|
|
18
|
+
const accountId = requireAccountId(req);
|
|
19
|
+
const userId = (0, chat_access_1.requireUserId)(req);
|
|
20
|
+
const items = await (0, list_library_items_1.listLibraryItems)({ accountId, userId });
|
|
21
|
+
res.json({ accountId, items });
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
25
|
+
if (message.includes('Unauthorized')) {
|
|
26
|
+
res.status(401).json({ message });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
res.status(500).json({ message });
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.libraryRoutes = express_1.default.Router();
|
|
33
|
+
exports.libraryRoutes.get('/library', listLibrary);
|
|
34
|
+
//# sourceMappingURL=library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/routes/library.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAsD;AACtD,oDAAkD;AAClD,0EAAoE;AAEpE,SAAS,gBAAgB,CAAC,GAAoB;IAC5C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,GAAG,CAAC,SAAS,CAAA;AACtB,CAAC;AAED,MAAM,WAAW,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,IAAA,2BAAa,EAAC,GAAG,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,IAAA,qCAAgB,EAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3D,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;YACjC,OAAM;QACR,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACnC,CAAC;AACH,CAAC,CAAA;AAEY,QAAA,aAAa,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;AAE7C,qBAAa,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAY7B,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAapD"}
|
package/dist/server.js
CHANGED
|
@@ -10,6 +10,7 @@ const activities_1 = require("./routes/activities");
|
|
|
10
10
|
const agents_1 = require("./routes/agents");
|
|
11
11
|
const chats_1 = require("./routes/chats");
|
|
12
12
|
const files_1 = require("./routes/files");
|
|
13
|
+
const library_1 = require("./routes/library");
|
|
13
14
|
const models_1 = require("./routes/models");
|
|
14
15
|
const notebooks_1 = require("./routes/notebooks");
|
|
15
16
|
const sessions_1 = require("./routes/sessions");
|
|
@@ -18,6 +19,7 @@ function getBuilderApiRouter() {
|
|
|
18
19
|
const api = express_1.default.Router();
|
|
19
20
|
api.use(sessions_1.sessionRoutes);
|
|
20
21
|
api.use(notebooks_1.notebookRoutes);
|
|
22
|
+
api.use(library_1.libraryRoutes);
|
|
21
23
|
api.use(account_dbs_1.accountDbRoutes);
|
|
22
24
|
api.use(chats_1.chatRoutes);
|
|
23
25
|
api.use(models_1.modelRoutes);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;AAYA,kDAaC;AAzBD,sDAA6B;AAC7B,sDAAsD;AACtD,oDAAoD;AACpD,4CAA6C;AAC7C,0CAA2C;AAC3C,0CAA2C;AAC3C,8CAAgD;AAChD,4CAA6C;AAC7C,kDAAmD;AACnD,gDAAiD;AACjD,8CAA+C;AAE/C,SAAgB,mBAAmB;IACjC,MAAM,GAAG,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;IAC5B,GAAG,CAAC,GAAG,CAAC,wBAAa,CAAC,CAAA;IACtB,GAAG,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAA;IACvB,GAAG,CAAC,GAAG,CAAC,uBAAa,CAAC,CAAA;IACtB,GAAG,CAAC,GAAG,CAAC,6BAAe,CAAC,CAAA;IACxB,GAAG,CAAC,GAAG,CAAC,kBAAU,CAAC,CAAA;IACnB,GAAG,CAAC,GAAG,CAAC,oBAAW,CAAC,CAAA;IACpB,GAAG,CAAC,GAAG,CAAC,kBAAU,CAAC,CAAA;IACnB,GAAG,CAAC,GAAG,CAAC,oBAAW,CAAC,CAAA;IACpB,GAAG,CAAC,GAAG,CAAC,sBAAY,CAAC,CAAA;IACrB,GAAG,CAAC,GAAG,CAAC,2BAAc,CAAC,CAAA;IACvB,OAAO,GAAG,CAAA;AACZ,CAAC"}
|