Leon4gr45 commited on
Commit
fee1116
·
verified ·
1 Parent(s): e372349

Upload folder using huggingface_hub (part 2)

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. apps/backend/dist/libraries/nestjs-libraries/src/3rdparties/thirdparty.module.js +21 -0
  2. apps/backend/dist/libraries/nestjs-libraries/src/3rdparties/thirdparty.module.js.map +1 -0
  3. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.categories.d.ts +1 -0
  4. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.categories.js +36 -0
  5. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.categories.js.map +1 -0
  6. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.insert.service.d.ts +27 -0
  7. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.insert.service.js +119 -0
  8. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.insert.service.js.map +1 -0
  9. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.service.d.ts +113 -0
  10. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.service.js +328 -0
  11. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.service.js.map +1 -0
  12. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.module.d.ts +2 -0
  13. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.module.js +20 -0
  14. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.module.js.map +1 -0
  15. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.topics.d.ts +1 -0
  16. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.topics.js +86 -0
  17. apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.topics.js.map +1 -0
  18. apps/backend/dist/libraries/nestjs-libraries/src/chat/agent.tool.interface.d.ts +6 -0
  19. apps/backend/dist/libraries/nestjs-libraries/src/chat/agent.tool.interface.js +3 -0
  20. apps/backend/dist/libraries/nestjs-libraries/src/chat/agent.tool.interface.js.map +1 -0
  21. apps/backend/dist/libraries/nestjs-libraries/src/chat/async.storage.d.ts +9 -0
  22. apps/backend/dist/libraries/nestjs-libraries/src/chat/async.storage.js +21 -0
  23. apps/backend/dist/libraries/nestjs-libraries/src/chat/async.storage.js.map +1 -0
  24. apps/backend/dist/libraries/nestjs-libraries/src/chat/auth.context.d.ts +1 -0
  25. apps/backend/dist/libraries/nestjs-libraries/src/chat/auth.context.js +14 -0
  26. apps/backend/dist/libraries/nestjs-libraries/src/chat/auth.context.js.map +1 -0
  27. apps/backend/dist/libraries/nestjs-libraries/src/chat/chat.module.d.ts +2 -0
  28. apps/backend/dist/libraries/nestjs-libraries/src/chat/chat.module.js +21 -0
  29. apps/backend/dist/libraries/nestjs-libraries/src/chat/chat.module.js.map +1 -0
  30. apps/backend/dist/libraries/nestjs-libraries/src/chat/load.tools.service.d.ts +15 -0
  31. apps/backend/dist/libraries/nestjs-libraries/src/chat/load.tools.service.js +101 -0
  32. apps/backend/dist/libraries/nestjs-libraries/src/chat/load.tools.service.js.map +1 -0
  33. apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.service.d.ts +8 -0
  34. apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.service.js +35 -0
  35. apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.service.js.map +1 -0
  36. apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.store.d.ts +2 -0
  37. apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.store.js +9 -0
  38. apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.store.js.map +1 -0
  39. apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-middleware.d.ts +22 -0
  40. apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-middleware.js +168 -0
  41. apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-middleware.js.map +1 -0
  42. apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-types.d.ts +32 -0
  43. apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-types.js +47 -0
  44. apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-types.js.map +1 -0
  45. apps/backend/dist/libraries/nestjs-libraries/src/chat/rules.description.decorator.d.ts +2 -0
  46. apps/backend/dist/libraries/nestjs-libraries/src/chat/rules.description.decorator.js +10 -0
  47. apps/backend/dist/libraries/nestjs-libraries/src/chat/rules.description.decorator.js.map +1 -0
  48. apps/backend/dist/libraries/nestjs-libraries/src/chat/start.mcp.d.ts +2 -0
  49. apps/backend/dist/libraries/nestjs-libraries/src/chat/start.mcp.js +219 -0
  50. apps/backend/dist/libraries/nestjs-libraries/src/chat/start.mcp.js.map +1 -0
apps/backend/dist/libraries/nestjs-libraries/src/3rdparties/thirdparty.module.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ThirdPartyModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const heygen_provider_1 = require("./heygen/heygen.provider");
7
+ const reelfarm_provider_1 = require("./reelfarm/reelfarm.provider");
8
+ const thirdparty_manager_1 = require("./thirdparty.manager");
9
+ let ThirdPartyModule = class ThirdPartyModule {
10
+ };
11
+ exports.ThirdPartyModule = ThirdPartyModule;
12
+ exports.ThirdPartyModule = ThirdPartyModule = tslib_1.__decorate([
13
+ (0, common_1.Global)(),
14
+ (0, common_1.Module)({
15
+ providers: [heygen_provider_1.HeygenProvider, reelfarm_provider_1.ReelFarmProvider, thirdparty_manager_1.ThirdPartyManager],
16
+ get exports() {
17
+ return this.providers;
18
+ },
19
+ })
20
+ ], ThirdPartyModule);
21
+ //# sourceMappingURL=thirdparty.module.js.map
apps/backend/dist/libraries/nestjs-libraries/src/3rdparties/thirdparty.module.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"thirdparty.module.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/3rdparties/thirdparty.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAgD;AAChD,8DAA6F;AAC7F,oEAAmG;AACnG,6DAA4F;AASrF,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAP5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,gCAAc,EAAE,oCAAgB,EAAE,sCAAiB,CAAC;QAChE,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;KACF,CAAC;GACW,gBAAgB,CAAG"}
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.categories.d.ts ADDED
@@ -0,0 +1 @@
 
 
1
+ export declare const agentCategories: string[];
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.categories.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.agentCategories = void 0;
4
+ exports.agentCategories = [
5
+ 'Educational',
6
+ 'Inspirational',
7
+ 'Promotional',
8
+ 'Entertaining',
9
+ 'Interactive',
10
+ 'Behind The Scenes',
11
+ 'Testimonial',
12
+ 'Informative',
13
+ 'Humorous',
14
+ 'Seasonal',
15
+ 'News',
16
+ 'Challenge',
17
+ 'Contest',
18
+ 'Tips',
19
+ 'Tutorial',
20
+ 'Poll',
21
+ 'Survey',
22
+ 'Quote',
23
+ 'Event',
24
+ 'FAQ',
25
+ 'Story',
26
+ 'Meme',
27
+ 'Review',
28
+ 'Announcement',
29
+ 'Highlight',
30
+ 'Celebration',
31
+ 'Reminder',
32
+ 'Debate',
33
+ 'Update',
34
+ 'Trend',
35
+ ];
36
+ //# sourceMappingURL=agent.categories.js.map
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.categories.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"agent.categories.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/agent/agent.categories.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG;IAC7B,aAAa;IACb,eAAe;IACf,aAAa;IACb,cAAc;IACd,aAAa;IACb,mBAAmB;IACnB,aAAa;IACb,aAAa;IACb,UAAU;IACV,UAAU;IACV,MAAM;IACN,WAAW;IACX,SAAS;IACT,MAAM;IACN,UAAU;IACV,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,KAAK;IACL,OAAO;IACP,MAAM;IACN,QAAQ;IACR,cAAc;IACd,WAAW;IACX,aAAa;IACb,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;CACR,CAAC"}
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.insert.service.d.ts ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { BaseMessage } from '@langchain/core/messages';
2
+ import { StateGraph } from '@langchain/langgraph';
3
+ import { PostsService } from "../database/prisma/posts/posts.service";
4
+ interface WorkflowChannelsState {
5
+ messages: BaseMessage[];
6
+ topic?: string;
7
+ category: string;
8
+ hook?: string;
9
+ content?: string;
10
+ }
11
+ export declare class AgentGraphInsertService {
12
+ private _postsService;
13
+ constructor(_postsService: PostsService);
14
+ static state: () => StateGraph<WorkflowChannelsState, WorkflowChannelsState, Partial<WorkflowChannelsState>, "__start__", import("@langchain/langgraph").StateDefinition, import("@langchain/langgraph").StateDefinition, import("@langchain/langgraph").StateDefinition, unknown, unknown, unknown>;
15
+ findCategory(state: WorkflowChannelsState): Promise<{
16
+ category?: string;
17
+ }>;
18
+ findTopic(state: WorkflowChannelsState): Promise<{
19
+ topic?: string;
20
+ }>;
21
+ findHook(state: WorkflowChannelsState): Promise<{
22
+ hook?: string;
23
+ }>;
24
+ savePost(state: WorkflowChannelsState): Promise<{}>;
25
+ newPost(post: string): Promise<import("@langchain/langgraph").StateType<import("@langchain/langgraph").StateDefinition>>;
26
+ }
27
+ export {};
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.insert.service.js ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ var AgentGraphInsertService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AgentGraphInsertService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const messages_1 = require("@langchain/core/messages");
8
+ const langgraph_1 = require("@langchain/langgraph");
9
+ const openai_1 = require("@langchain/openai");
10
+ const prompts_1 = require("@langchain/core/prompts");
11
+ const agent_categories_1 = require("./agent.categories");
12
+ const zod_1 = require("zod");
13
+ const agent_topics_1 = require("./agent.topics");
14
+ const posts_service_1 = require("../database/prisma/posts/posts.service");
15
+ const model = new openai_1.ChatOpenAI({
16
+ apiKey: process.env.OPENAI_API_KEY || 'sk-proj-',
17
+ model: 'gpt-4o-2024-08-06',
18
+ temperature: 0,
19
+ });
20
+ const category = zod_1.z.object({
21
+ category: zod_1.z.string().describe('The category for the post'),
22
+ });
23
+ const topic = zod_1.z.object({
24
+ topic: zod_1.z.string().describe('The topic of the post'),
25
+ });
26
+ const hook = zod_1.z.object({
27
+ hook: zod_1.z.string().describe('The hook of the post'),
28
+ });
29
+ let AgentGraphInsertService = AgentGraphInsertService_1 = class AgentGraphInsertService {
30
+ constructor(_postsService) {
31
+ this._postsService = _postsService;
32
+ }
33
+ async findCategory(state) {
34
+ const { messages } = state;
35
+ const structuredOutput = model.withStructuredOutput(category);
36
+ return prompts_1.ChatPromptTemplate.fromTemplate(`
37
+ You are an assistant that get a social media post and categorize it into to one from the following categories:
38
+ {categories}
39
+ Here is the post:
40
+ {post}
41
+ `)
42
+ .pipe(structuredOutput)
43
+ .invoke({
44
+ post: messages[0].content,
45
+ categories: agent_categories_1.agentCategories.join(', '),
46
+ });
47
+ }
48
+ findTopic(state) {
49
+ const { messages } = state;
50
+ const structuredOutput = model.withStructuredOutput(topic);
51
+ return prompts_1.ChatPromptTemplate.fromTemplate(`
52
+ You are an assistant that get a social media post and categorize it into one of the following topics:
53
+ {topics}
54
+ Here is the post:
55
+ {post}
56
+ `)
57
+ .pipe(structuredOutput)
58
+ .invoke({
59
+ post: messages[0].content,
60
+ topics: agent_topics_1.agentTopics.join(', '),
61
+ });
62
+ }
63
+ findHook(state) {
64
+ const { messages } = state;
65
+ const structuredOutput = model.withStructuredOutput(hook);
66
+ return prompts_1.ChatPromptTemplate.fromTemplate(`
67
+ You are an assistant that get a social media post and extract the hook, the hook is usually the first or second of both sentence of the post, but can be in a different place, make sure you don't change the wording of the post use the exact text:
68
+ {post}
69
+ `)
70
+ .pipe(structuredOutput)
71
+ .invoke({
72
+ post: messages[0].content,
73
+ });
74
+ }
75
+ async savePost(state) {
76
+ await this._postsService.createPopularPosts({
77
+ category: state.category,
78
+ topic: state.topic,
79
+ hook: state.hook,
80
+ content: state.messages[0].content,
81
+ });
82
+ return {};
83
+ }
84
+ newPost(post) {
85
+ const state = AgentGraphInsertService_1.state();
86
+ const workflow = state
87
+ .addNode('find-category', this.findCategory)
88
+ .addNode('find-topic', this.findTopic)
89
+ .addNode('find-hook', this.findHook)
90
+ .addNode('save-post', this.savePost.bind(this))
91
+ .addEdge(langgraph_1.START, 'find-category')
92
+ .addEdge('find-category', 'find-topic')
93
+ .addEdge('find-topic', 'find-hook')
94
+ .addEdge('find-hook', 'save-post')
95
+ .addEdge('save-post', langgraph_1.END);
96
+ const app = workflow.compile();
97
+ return app.invoke({
98
+ messages: [new messages_1.HumanMessage(post)],
99
+ });
100
+ }
101
+ };
102
+ exports.AgentGraphInsertService = AgentGraphInsertService;
103
+ AgentGraphInsertService.state = () => new langgraph_1.StateGraph({
104
+ channels: {
105
+ messages: {
106
+ reducer: (currentState, updateValue) => currentState.concat(updateValue),
107
+ default: () => [],
108
+ },
109
+ topic: null,
110
+ category: null,
111
+ hook: null,
112
+ content: null,
113
+ },
114
+ });
115
+ exports.AgentGraphInsertService = AgentGraphInsertService = AgentGraphInsertService_1 = tslib_1.__decorate([
116
+ (0, common_1.Injectable)(),
117
+ tslib_1.__metadata("design:paramtypes", [posts_service_1.PostsService])
118
+ ], AgentGraphInsertService);
119
+ //# sourceMappingURL=agent.graph.insert.service.js.map
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.insert.service.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"agent.graph.insert.service.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/agent/agent.graph.insert.service.ts"],"names":[],"mappings":";;;;;AAAA,2CAA4C;AAC5C,uDAAqE;AACrE,oDAA8D;AAC9D,8CAA+C;AAC/C,qDAA6D;AAC7D,yDAAmF;AACnF,6BAAwB;AACxB,iDAA2E;AAC3E,0EAA6F;AAE7F,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU;IAChD,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,CAAC;CACf,CAAC,CAAC;AAUH,MAAM,QAAQ,GAAG,OAAC,CAAC,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,OAAC,CAAC,MAAM,CAAC;IACrB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,OAAC,CAAC,MAAM,CAAC;IACpB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CAClD,CAAC,CAAC;AAGI,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAClC,YAAoB,aAA2B;QAA3B,kBAAa,GAAb,aAAa,CAAc;IAAG,CAAC;IAgBnD,KAAK,CAAC,YAAY,CAAC,KAA4B;QAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,MAAM,gBAAgB,GAAG,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC9D,OAAO,4BAAkB,CAAC,YAAY,CACpC;;;;;KAKD,CACA;aACE,IAAI,CAAC,gBAAgB,CAAC;aACtB,MAAM,CAAC;YACN,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;YACzB,UAAU,EAAE,kCAAe,CAAC,IAAI,CAAC,IAAI,CAAC;SACvC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,KAA4B;QACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,MAAM,gBAAgB,GAAG,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,4BAAkB,CAAC,YAAY,CACpC;;;;;KAKD,CACA;aACE,IAAI,CAAC,gBAAgB,CAAC;aACtB,MAAM,CAAC;YACN,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;YACzB,MAAM,EAAE,0BAAW,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/B,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAA4B;QACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,MAAM,gBAAgB,GAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO,4BAAkB,CAAC,YAAY,CACpC;;;KAGD,CACA;aACE,IAAI,CAAC,gBAAgB,CAAC;aACtB,MAAM,CAAC;YACN,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAA4B;QACzC,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;YAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAM;YACnB,IAAI,EAAE,KAAK,CAAC,IAAK;YACjB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAkB;SAC9C,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,KAAK,GAAG,yBAAuB,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK;aACnB,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC;aAC3C,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;aACrC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;aACnC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9C,OAAO,CAAC,iBAAK,EAAE,eAAe,CAAC;aAC/B,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC;aACtC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC;aAClC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC;aACjC,OAAO,CAAC,WAAW,EAAE,eAAG,CAAC,CAAC;QAE7B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,MAAM,CAAC;YAChB,QAAQ,EAAE,CAAC,IAAI,uBAAY,CAAC,IAAI,CAAC,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;;AAhGU,0DAAuB;AAE3B,6BAAK,GAAG,GAAG,EAAE,CAClB,IAAI,sBAAU,CAAwB;IACpC,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,CACrC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;YAClC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;SAClB;QACD,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;KACd;CACF,CAAC,AAbQ,CAaP;kCAfM,uBAAuB;IADnC,IAAA,mBAAU,GAAE;6CAEwB,4BAAY;GADpC,uBAAuB,CAiGnC"}
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.service.d.ts ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { BaseMessage, ToolMessage } from '@langchain/core/messages';
2
+ import { StateGraph } from '@langchain/langgraph';
3
+ import { PostsService } from "../database/prisma/posts/posts.service";
4
+ import { MediaService } from "../database/prisma/media/media.service";
5
+ import { GeneratorDto } from "../dtos/generator/generator.dto";
6
+ interface WorkflowChannelsState {
7
+ messages: BaseMessage[];
8
+ orgId: string;
9
+ question: string;
10
+ hook?: string;
11
+ fresearch?: string;
12
+ category?: string;
13
+ topic?: string;
14
+ date?: string;
15
+ format: 'one_short' | 'one_long' | 'thread_short' | 'thread_long';
16
+ tone: 'personal' | 'company';
17
+ content?: {
18
+ content: string;
19
+ website?: string;
20
+ prompt?: string;
21
+ image?: string;
22
+ }[];
23
+ isPicture?: boolean;
24
+ popularPosts?: {
25
+ content: string;
26
+ hook: string;
27
+ }[];
28
+ }
29
+ export declare class AgentGraphService {
30
+ private _postsService;
31
+ private _mediaService;
32
+ private storage;
33
+ constructor(_postsService: PostsService, _mediaService: MediaService);
34
+ static state: () => StateGraph<WorkflowChannelsState, WorkflowChannelsState, Partial<WorkflowChannelsState>, "__start__", import("@langchain/langgraph").StateDefinition, import("@langchain/langgraph").StateDefinition, import("@langchain/langgraph").StateDefinition, unknown, unknown, unknown>;
35
+ startCall(state: WorkflowChannelsState): Promise<{
36
+ messages: import("@langchain/core/messages").AIMessageChunk<import("@langchain/core/messages").MessageStructure<import("@langchain/core/messages").MessageToolSet>>[];
37
+ }>;
38
+ saveResearch(state: WorkflowChannelsState): Promise<{
39
+ fresearch: ToolMessage<any>[];
40
+ }>;
41
+ findCategories(state: WorkflowChannelsState): Promise<{
42
+ category: string;
43
+ }>;
44
+ findTopic(state: WorkflowChannelsState): Promise<{
45
+ topic: string;
46
+ }>;
47
+ findPopularPosts(state: WorkflowChannelsState): Promise<{
48
+ popularPosts: {
49
+ content: string;
50
+ hook: string;
51
+ }[];
52
+ }>;
53
+ generateHook(state: WorkflowChannelsState): Promise<{
54
+ hook: string;
55
+ }>;
56
+ generateContent(state: WorkflowChannelsState): Promise<{
57
+ content: {
58
+ website?: string;
59
+ content?: string;
60
+ prompt?: string;
61
+ } | {
62
+ website?: string;
63
+ content?: string;
64
+ prompt?: string;
65
+ }[];
66
+ }>;
67
+ fixArray(state: WorkflowChannelsState): Promise<{
68
+ content: {
69
+ content: string;
70
+ website?: string;
71
+ prompt?: string;
72
+ image?: string;
73
+ }[][];
74
+ } | {
75
+ content?: undefined;
76
+ }>;
77
+ generatePictures(state: WorkflowChannelsState): Promise<{
78
+ content?: undefined;
79
+ } | {
80
+ content: {
81
+ image: any;
82
+ content: string;
83
+ website?: string;
84
+ prompt?: string;
85
+ }[];
86
+ }>;
87
+ uploadPictures(state: WorkflowChannelsState): Promise<{
88
+ content: ({
89
+ content: string;
90
+ website?: string;
91
+ prompt?: string;
92
+ image?: string;
93
+ } | {
94
+ image: {
95
+ id: string;
96
+ name: string;
97
+ originalName: string;
98
+ path: string;
99
+ thumbnail: string;
100
+ alt: string;
101
+ };
102
+ content: string;
103
+ website?: string;
104
+ prompt?: string;
105
+ })[];
106
+ }>;
107
+ isGeneratePicture(state: WorkflowChannelsState): Promise<"generate-picture" | "post-time">;
108
+ postDateTime(state: WorkflowChannelsState): Promise<{
109
+ date: string;
110
+ }>;
111
+ start(orgId: string, body: GeneratorDto): import("@langchain/core/utils/stream").IterableReadableStream<import("@langchain/core/tracers/log_stream").StreamEvent>;
112
+ }
113
+ export {};
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.service.js ADDED
@@ -0,0 +1,328 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ var AgentGraphService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AgentGraphService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const messages_1 = require("@langchain/core/messages");
8
+ const langgraph_1 = require("@langchain/langgraph");
9
+ const openai_1 = require("@langchain/openai");
10
+ const tavily_1 = require("@langchain/tavily");
11
+ const prebuilt_1 = require("@langchain/langgraph/prebuilt");
12
+ const prompts_1 = require("@langchain/core/prompts");
13
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
14
+ const posts_service_1 = require("../database/prisma/posts/posts.service");
15
+ const zod_1 = require("zod");
16
+ const media_service_1 = require("../database/prisma/media/media.service");
17
+ const upload_factory_1 = require("../upload/upload.factory");
18
+ const generation_error_1 = require("../openai/generation.error");
19
+ const tools = !process.env.TAVILY_API_KEY
20
+ ? []
21
+ : [new tavily_1.TavilySearch({ maxResults: 3 })];
22
+ const toolNode = new prebuilt_1.ToolNode(tools);
23
+ const model = new openai_1.ChatOpenAI({
24
+ apiKey: process.env.OPENAI_API_KEY || 'sk-proj-',
25
+ model: 'gpt-4.1',
26
+ temperature: 0.7,
27
+ });
28
+ const dalle = new openai_1.DallEAPIWrapper({
29
+ apiKey: process.env.OPENAI_API_KEY || 'sk-proj-',
30
+ model: 'chatgpt-image-latest',
31
+ });
32
+ const category = zod_1.z.object({
33
+ category: zod_1.z.string().describe('The category for the post'),
34
+ });
35
+ const topic = zod_1.z.object({
36
+ topic: zod_1.z.string().describe('The topic for the post'),
37
+ });
38
+ const hook = zod_1.z.object({
39
+ hook: zod_1.z
40
+ .string()
41
+ .describe('Hook for the new post, don\'t take it from "the request of the user"'),
42
+ });
43
+ const contentZod = (isPicture, format) => {
44
+ const content = zod_1.z.object({
45
+ content: zod_1.z.string().describe('Content for the new post'),
46
+ website: zod_1.z
47
+ .string()
48
+ .nullable()
49
+ .optional()
50
+ .describe("Website for the new post if exists, If one of the post present a brand, website link must be to the root domain of the brand or don't include it, website url should contain the brand name"),
51
+ ...(isPicture
52
+ ? {
53
+ prompt: zod_1.z
54
+ .string()
55
+ .describe("Prompt to generate a picture for this post later, make sure it doesn't contain brand names and make it very descriptive in terms of style"),
56
+ }
57
+ : {}),
58
+ });
59
+ return zod_1.z.object({
60
+ content: format === 'one_short' || format === 'one_long'
61
+ ? content
62
+ : zod_1.z.array(content).min(2).describe(`Content for the new post`),
63
+ });
64
+ };
65
+ let AgentGraphService = AgentGraphService_1 = class AgentGraphService {
66
+ constructor(_postsService, _mediaService) {
67
+ this._postsService = _postsService;
68
+ this._mediaService = _mediaService;
69
+ this.storage = upload_factory_1.UploadFactory.createStorage();
70
+ }
71
+ async startCall(state) {
72
+ const runTools = model.bindTools(tools);
73
+ const response = await prompts_1.ChatPromptTemplate.fromTemplate(`
74
+ Today is ${(0, dayjs_1.default)().format()}, You are an assistant that gets a social media post or requests for a social media post.
75
+ You research should be on the most possible recent data.
76
+ You concat the text of the request together with an internet research based on the text.
77
+ {text}
78
+ `)
79
+ .pipe(runTools)
80
+ .invoke({
81
+ text: state.messages[state.messages.length - 1].content,
82
+ });
83
+ return { messages: [response] };
84
+ }
85
+ async saveResearch(state) {
86
+ const content = state.messages.filter((f) => f instanceof messages_1.ToolMessage);
87
+ return { fresearch: content };
88
+ }
89
+ async findCategories(state) {
90
+ const allCategories = await this._postsService.findAllExistingCategories();
91
+ const structuredOutput = model.withStructuredOutput(category);
92
+ const { category: outputCategory } = await prompts_1.ChatPromptTemplate.fromTemplate(`
93
+ You are an assistant that gets a text that will be later summarized into a social media post
94
+ and classify it to one of the following categories: {categories}
95
+ text: {text}
96
+ `)
97
+ .pipe(structuredOutput)
98
+ .invoke({
99
+ categories: allCategories.map((p) => p.category).join(', '),
100
+ text: state.fresearch,
101
+ });
102
+ return {
103
+ category: outputCategory,
104
+ };
105
+ }
106
+ async findTopic(state) {
107
+ const allTopics = await this._postsService.findAllExistingTopicsOfCategory(state?.category);
108
+ if (allTopics.length === 0) {
109
+ return { topic: null };
110
+ }
111
+ const structuredOutput = model.withStructuredOutput(topic);
112
+ const { topic: outputTopic } = await prompts_1.ChatPromptTemplate.fromTemplate(`
113
+ You are an assistant that gets a text that will be later summarized into a social media post
114
+ and classify it to one of the following topics: {topics}
115
+ text: {text}
116
+ `)
117
+ .pipe(structuredOutput)
118
+ .invoke({
119
+ topics: allTopics.map((p) => p.topic).join(', '),
120
+ text: state.fresearch,
121
+ });
122
+ return {
123
+ topic: outputTopic,
124
+ };
125
+ }
126
+ async findPopularPosts(state) {
127
+ const popularPosts = await this._postsService.findPopularPosts(state.category, state.topic);
128
+ return { popularPosts };
129
+ }
130
+ async generateHook(state) {
131
+ const structuredOutput = model.withStructuredOutput(hook);
132
+ const { hook: outputHook } = await prompts_1.ChatPromptTemplate.fromTemplate(`
133
+ You are an assistant that gets content for a social media post, and generate only the hook.
134
+ The hook is the 1-2 sentences of the post that will be used to grab the attention of the reader.
135
+ You will be provided existing hooks you should use as inspiration.
136
+ - Avoid weird hook that starts with "Discover the secret...", "The best...", "The most...", "The top..."
137
+ - Make sure it sounds ${state.tone}
138
+ - Use ${state.tone === 'personal' ? '1st' : '3rd'} person mode
139
+ - Make sure it's engaging
140
+ - Don't be cringy
141
+ - Use simple english
142
+ - Make sure you add "\n" between the lines
143
+ - Don't take the hook from "request of the user"
144
+
145
+ <!-- BEGIN request of the user -->
146
+ {request}
147
+ <!-- END request of the user -->
148
+
149
+ <!-- BEGIN existing hooks -->
150
+ {hooks}
151
+ <!-- END existing hooks -->
152
+
153
+ <!-- BEGIN current content -->
154
+ {text}
155
+ <!-- END current content -->
156
+
157
+ `)
158
+ .pipe(structuredOutput)
159
+ .invoke({
160
+ request: state.messages[0].content,
161
+ hooks: state.popularPosts.map((p) => p.hook).join('\n'),
162
+ text: state.fresearch,
163
+ });
164
+ return {
165
+ hook: outputHook,
166
+ };
167
+ }
168
+ async generateContent(state) {
169
+ const structuredOutput = model.withStructuredOutput(contentZod(!!state.isPicture, state.format));
170
+ const { content: outputContent } = await prompts_1.ChatPromptTemplate.fromTemplate(`
171
+ You are an assistant that gets existing hook of a social media, content and generate only the content.
172
+ - Don't add any hashtags
173
+ - Make sure it sounds ${state.tone}
174
+ - Use ${state.tone === 'personal' ? '1st' : '3rd'} person mode
175
+ - ${state.format === 'one_short' || state.format === 'thread_short'
176
+ ? 'Post should be maximum 200 chars to fit twitter'
177
+ : 'Post should be long'}
178
+ - ${state.format === 'one_short' || state.format === 'one_long'
179
+ ? 'Post should have only 1 item'
180
+ : 'Post should have minimum 2 items'}
181
+ - Use the hook as inspiration
182
+ - Make sure it's engaging
183
+ - Don't be cringy
184
+ - Use simple english
185
+ - The Content should not contain the hook
186
+ - Try to put some call to action at the end of the post
187
+ - Make sure you add "\n" between the lines
188
+ - Add "\n" after every "."
189
+
190
+ Hook:
191
+ {hook}
192
+
193
+ User request:
194
+ {request}
195
+
196
+ current content information:
197
+ {information}
198
+ `)
199
+ .pipe(structuredOutput)
200
+ .invoke({
201
+ hook: state.hook,
202
+ request: state.messages[0].content,
203
+ information: state.fresearch,
204
+ });
205
+ return {
206
+ content: outputContent,
207
+ };
208
+ }
209
+ async fixArray(state) {
210
+ if (state.format === 'one_short' || state.format === 'one_long') {
211
+ return {
212
+ content: [state.content],
213
+ };
214
+ }
215
+ return {};
216
+ }
217
+ async generatePictures(state) {
218
+ if (!state.isPicture) {
219
+ return {};
220
+ }
221
+ try {
222
+ const newContent = await Promise.all((state.content || []).map(async (p) => {
223
+ const image = await dalle.invoke(p.prompt);
224
+ return {
225
+ ...p,
226
+ image,
227
+ };
228
+ }));
229
+ return {
230
+ content: newContent,
231
+ };
232
+ }
233
+ catch (err) {
234
+ throw (0, generation_error_1.generationError)(err);
235
+ }
236
+ }
237
+ async uploadPictures(state) {
238
+ const all = await Promise.all((state.content || []).map(async (p) => {
239
+ if (p.image) {
240
+ const upload = await this.storage.uploadSimple(p.image);
241
+ const name = upload.split('/').pop();
242
+ const uploadWithId = await this._mediaService.saveFile(state.orgId, name, upload);
243
+ return {
244
+ ...p,
245
+ image: uploadWithId,
246
+ };
247
+ }
248
+ return p;
249
+ }));
250
+ return { content: all };
251
+ }
252
+ async isGeneratePicture(state) {
253
+ if (state.isPicture) {
254
+ return 'generate-picture';
255
+ }
256
+ return 'post-time';
257
+ }
258
+ async postDateTime(state) {
259
+ return { date: await this._postsService.findFreeDateTime(state.orgId) };
260
+ }
261
+ start(orgId, body) {
262
+ const state = AgentGraphService_1.state();
263
+ const workflow = state
264
+ .addNode('agent', this.startCall.bind(this))
265
+ .addNode('research', toolNode)
266
+ .addNode('save-research', this.saveResearch.bind(this))
267
+ .addNode('find-category', this.findCategories.bind(this))
268
+ .addNode('find-topic', this.findTopic.bind(this))
269
+ .addNode('find-popular-posts', this.findPopularPosts.bind(this))
270
+ .addNode('generate-hook', this.generateHook.bind(this))
271
+ .addNode('generate-content', this.generateContent.bind(this))
272
+ .addNode('generate-content-fix', this.fixArray.bind(this))
273
+ .addNode('generate-picture', this.generatePictures.bind(this))
274
+ .addNode('upload-pictures', this.uploadPictures.bind(this))
275
+ .addNode('post-time', this.postDateTime.bind(this))
276
+ .addEdge(langgraph_1.START, 'agent')
277
+ .addEdge('agent', 'research')
278
+ .addEdge('research', 'save-research')
279
+ .addEdge('save-research', 'find-category')
280
+ .addEdge('find-category', 'find-topic')
281
+ .addEdge('find-topic', 'find-popular-posts')
282
+ .addEdge('find-popular-posts', 'generate-hook')
283
+ .addEdge('generate-hook', 'generate-content')
284
+ .addEdge('generate-content', 'generate-content-fix')
285
+ .addConditionalEdges('generate-content-fix', this.isGeneratePicture.bind(this))
286
+ .addEdge('generate-picture', 'upload-pictures')
287
+ .addEdge('upload-pictures', 'post-time')
288
+ .addEdge('post-time', langgraph_1.END);
289
+ const app = workflow.compile();
290
+ return app.streamEvents({
291
+ messages: [new messages_1.HumanMessage(body.research)],
292
+ isPicture: body.isPicture,
293
+ format: body.format,
294
+ tone: body.tone,
295
+ orgId,
296
+ }, {
297
+ streamMode: 'values',
298
+ version: 'v2',
299
+ });
300
+ }
301
+ };
302
+ exports.AgentGraphService = AgentGraphService;
303
+ AgentGraphService.state = () => new langgraph_1.StateGraph({
304
+ channels: {
305
+ messages: {
306
+ reducer: (currentState, updateValue) => currentState.concat(updateValue),
307
+ default: () => [],
308
+ },
309
+ fresearch: null,
310
+ format: null,
311
+ tone: null,
312
+ question: null,
313
+ orgId: null,
314
+ hook: null,
315
+ content: null,
316
+ date: null,
317
+ category: null,
318
+ popularPosts: null,
319
+ topic: null,
320
+ isPicture: null,
321
+ },
322
+ });
323
+ exports.AgentGraphService = AgentGraphService = AgentGraphService_1 = tslib_1.__decorate([
324
+ (0, common_1.Injectable)(),
325
+ tslib_1.__metadata("design:paramtypes", [posts_service_1.PostsService,
326
+ media_service_1.MediaService])
327
+ ], AgentGraphService);
328
+ //# sourceMappingURL=agent.graph.service.js.map
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.graph.service.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"agent.graph.service.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/agent/agent.graph.service.ts"],"names":[],"mappings":"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"}
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.module.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ export declare class AgentModule {
2
+ }
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.module.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const agent_graph_service_1 = require("./agent.graph.service");
7
+ const agent_graph_insert_service_1 = require("./agent.graph.insert.service");
8
+ let AgentModule = class AgentModule {
9
+ };
10
+ exports.AgentModule = AgentModule;
11
+ exports.AgentModule = AgentModule = tslib_1.__decorate([
12
+ (0, common_1.Global)(),
13
+ (0, common_1.Module)({
14
+ providers: [agent_graph_service_1.AgentGraphService, agent_graph_insert_service_1.AgentGraphInsertService],
15
+ get exports() {
16
+ return this.providers;
17
+ },
18
+ })
19
+ ], AgentModule);
20
+ //# sourceMappingURL=agent.module.js.map
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.module.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"agent.module.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/agent/agent.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAgD;AAChD,+DAAwF;AACxF,6EAAqG;AAS9F,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAPvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,uCAAiB,EAAE,oDAAuB,CAAC;QACvD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;KACF,CAAC;GACW,WAAW,CAAG"}
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.topics.d.ts ADDED
@@ -0,0 +1 @@
 
 
1
+ export declare const agentTopics: string[];
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.topics.js ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.agentTopics = void 0;
4
+ exports.agentTopics = [
5
+ 'Business',
6
+ 'Marketing',
7
+ 'Finance',
8
+ 'Startups',
9
+ 'Networking',
10
+ 'Leadership',
11
+ 'Strategy',
12
+ 'Branding',
13
+ 'Analytics',
14
+ 'Growth',
15
+ 'Drawing',
16
+ 'Painting',
17
+ 'Design',
18
+ 'Photography',
19
+ 'Writing',
20
+ 'Sculpting',
21
+ 'Animation',
22
+ 'Sketching',
23
+ 'Crafting',
24
+ 'Calligraphy',
25
+ 'Mindset',
26
+ 'Productivity',
27
+ 'Motivation',
28
+ 'Education',
29
+ 'Learning',
30
+ 'Skills',
31
+ 'Success',
32
+ 'Wellness',
33
+ 'Goals',
34
+ 'Inspiration',
35
+ 'Fashion',
36
+ 'Travel',
37
+ 'Food',
38
+ 'Fitness',
39
+ 'Health',
40
+ 'Beauty',
41
+ 'Home',
42
+ 'Decor',
43
+ 'Hobbies',
44
+ 'Parenting',
45
+ 'Tech',
46
+ 'Gadgets',
47
+ 'AI',
48
+ 'Coding',
49
+ 'Software',
50
+ 'Innovation',
51
+ 'Apps',
52
+ 'Gaming',
53
+ 'Robotics',
54
+ 'Security',
55
+ 'Music',
56
+ 'Movies',
57
+ 'Sports',
58
+ 'Books',
59
+ 'Theater',
60
+ 'Comedy',
61
+ 'Dance',
62
+ 'Celebrities',
63
+ 'Culture',
64
+ 'Gaming',
65
+ 'Environment',
66
+ 'Equality',
67
+ 'Activism',
68
+ 'Justice',
69
+ 'Diversity',
70
+ 'Sustainability',
71
+ 'Inclusion',
72
+ 'Awareness',
73
+ 'Charity',
74
+ 'Peace',
75
+ 'Holidays',
76
+ 'Festivities',
77
+ 'Seasons',
78
+ 'Trends',
79
+ 'Celebrations',
80
+ 'Anniversaries',
81
+ 'Milestones',
82
+ 'Memories',
83
+ 'Promotions',
84
+ 'Updates',
85
+ ];
86
+ //# sourceMappingURL=agent.topics.js.map
apps/backend/dist/libraries/nestjs-libraries/src/agent/agent.topics.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"agent.topics.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/agent/agent.topics.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,UAAU;IACV,WAAW;IACX,SAAS;IACT,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;IACT,UAAU;IACV,QAAQ;IACR,aAAa;IACb,SAAS;IACT,WAAW;IACX,WAAW;IACX,WAAW;IACX,UAAU;IACV,aAAa;IACb,SAAS;IACT,cAAc;IACd,YAAY;IACZ,WAAW;IACX,UAAU;IACV,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;IACP,aAAa;IACb,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,IAAI;IACJ,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,UAAU;IACV,UAAU;IACV,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,aAAa;IACb,SAAS;IACT,QAAQ;IACR,aAAa;IACb,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,SAAS;IACT,OAAO;IACP,UAAU;IACV,aAAa;IACb,SAAS;IACT,QAAQ;IACR,cAAc;IACd,eAAe;IACf,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,SAAS;CACV,CAAC"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/agent.tool.interface.d.ts ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ import type { ToolAction } from '@mastra/core/tools';
2
+ export type ToolReturn = ToolAction<any, any, any, any, any, any>;
3
+ export interface AgentToolInterface {
4
+ name: string;
5
+ run(): ToolReturn;
6
+ }
apps/backend/dist/libraries/nestjs-libraries/src/chat/agent.tool.interface.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=agent.tool.interface.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/agent.tool.interface.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"agent.tool.interface.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/agent.tool.interface.ts"],"names":[],"mappings":""}
apps/backend/dist/libraries/nestjs-libraries/src/chat/async.storage.d.ts ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ type Ctx = {
2
+ requestId: string;
3
+ auth: any;
4
+ };
5
+ export declare function runWithContext<T>(ctx: Ctx, fn: () => Promise<T> | T): T | Promise<T>;
6
+ export declare function getContext(): Ctx | undefined;
7
+ export declare function getAuth<T = any>(): T | undefined;
8
+ export declare function getRequestId(): string | undefined;
9
+ export {};
apps/backend/dist/libraries/nestjs-libraries/src/chat/async.storage.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runWithContext = runWithContext;
4
+ exports.getContext = getContext;
5
+ exports.getAuth = getAuth;
6
+ exports.getRequestId = getRequestId;
7
+ const node_async_hooks_1 = require("node:async_hooks");
8
+ const als = new node_async_hooks_1.AsyncLocalStorage();
9
+ function runWithContext(ctx, fn) {
10
+ return als.run(ctx, fn);
11
+ }
12
+ function getContext() {
13
+ return als.getStore();
14
+ }
15
+ function getAuth() {
16
+ return als.getStore()?.auth;
17
+ }
18
+ function getRequestId() {
19
+ return als.getStore()?.requestId;
20
+ }
21
+ //# sourceMappingURL=async.storage.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/async.storage.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"async.storage.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/async.storage.ts"],"names":[],"mappings":";;AAUA,wCAEC;AAED,gCAEC;AAED,0BAEC;AAED,oCAEC;AAvBD,uDAAqD;AAOrD,MAAM,GAAG,GAAG,IAAI,oCAAiB,EAAO,CAAC;AAEzC,SAAgB,cAAc,CAAI,GAAQ,EAAE,EAAwB;IAClE,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,SAAgB,OAAO;IACrB,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAqB,CAAC;AAC/C,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC;AACnC,CAAC"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/auth.context.d.ts ADDED
@@ -0,0 +1 @@
 
 
1
+ export declare const checkAuth: (inputData: any, context: any) => void;
apps/backend/dist/libraries/nestjs-libraries/src/chat/auth.context.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkAuth = void 0;
4
+ const async_storage_1 = require("./async.storage");
5
+ const checkAuth = (inputData, context) => {
6
+ const auth = (0, async_storage_1.getAuth)();
7
+ const authInfo = context?.mcp?.extra?.authInfo || auth;
8
+ if (authInfo && context?.requestContext) {
9
+ context.requestContext.set('organization', JSON.stringify(authInfo));
10
+ context.requestContext.set('ui', 'false');
11
+ }
12
+ };
13
+ exports.checkAuth = checkAuth;
14
+ //# sourceMappingURL=auth.context.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/auth.context.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"auth.context.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/auth.context.ts"],"names":[],"mappings":";;;AAAA,mDAAuE;AAEhE,MAAM,SAAS,GAAG,CACvB,SAAc,EACd,OAAY,EACZ,EAAE;IACF,MAAM,IAAI,GAAG,IAAA,uBAAO,GAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC;IACvD,IAAI,QAAQ,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;QACvC,OAAO,CAAC,cAAsB,CAAC,GAAG,CACjC,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;QACD,OAAO,CAAC,cAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AAbW,QAAA,SAAS,aAapB"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/chat.module.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ export declare class ChatModule {
2
+ }
apps/backend/dist/libraries/nestjs-libraries/src/chat/chat.module.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChatModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const load_tools_service_1 = require("./load.tools.service");
7
+ const mastra_service_1 = require("./mastra.service");
8
+ const tool_list_1 = require("./tools/tool.list");
9
+ let ChatModule = class ChatModule {
10
+ };
11
+ exports.ChatModule = ChatModule;
12
+ exports.ChatModule = ChatModule = tslib_1.__decorate([
13
+ (0, common_1.Global)(),
14
+ (0, common_1.Module)({
15
+ providers: [mastra_service_1.MastraService, load_tools_service_1.LoadToolsService, ...tool_list_1.toolList],
16
+ get exports() {
17
+ return this.providers;
18
+ },
19
+ })
20
+ ], ChatModule);
21
+ //# sourceMappingURL=chat.module.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/chat.module.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"chat.module.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/chat.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAgD;AAChD,6DAAqF;AACrF,qDAA8E;AAC9E,iDAA0E;AASnE,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAPtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,8BAAa,EAAE,qCAAgB,EAAE,GAAG,oBAAQ,CAAC;QACzD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;KACF,CAAC;GACW,UAAU,CAAG"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/load.tools.service.d.ts ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Agent } from '@mastra/core/agent';
2
+ import { ModuleRef } from '@nestjs/core';
3
+ export declare const AgentState: import("zod").ZodObject<{
4
+ proverbs: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString, "many">>;
5
+ }, "strip", import("zod").ZodTypeAny, {
6
+ proverbs?: string[];
7
+ }, {
8
+ proverbs?: string[];
9
+ }>;
10
+ export declare class LoadToolsService {
11
+ private _moduleRef;
12
+ constructor(_moduleRef: ModuleRef);
13
+ loadTools(): Promise<Record<string, any>>;
14
+ agent(): Promise<Agent<"postiz", Record<string, any>, undefined, unknown>>;
15
+ }
apps/backend/dist/libraries/nestjs-libraries/src/chat/load.tools.service.js ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoadToolsService = exports.AgentState = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const agent_1 = require("@mastra/core/agent");
7
+ const openai_1 = require("@ai-sdk/openai");
8
+ const memory_1 = require("@mastra/memory");
9
+ const mastra_store_1 = require("./mastra.store");
10
+ const zod_1 = require("zod");
11
+ const core_1 = require("@nestjs/core");
12
+ const tool_list_1 = require("./tools/tool.list");
13
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
14
+ exports.AgentState = (0, zod_1.object)({
15
+ proverbs: (0, zod_1.array)((0, zod_1.string)()).default([]),
16
+ });
17
+ const renderArray = (list, show) => {
18
+ if (!show)
19
+ return '';
20
+ return list.map((p) => `- ${p}`).join('\n');
21
+ };
22
+ let LoadToolsService = class LoadToolsService {
23
+ constructor(_moduleRef) {
24
+ this._moduleRef = _moduleRef;
25
+ }
26
+ async loadTools() {
27
+ return (await Promise.all(tool_list_1.toolList
28
+ .map((p) => this._moduleRef.get(p, { strict: false }))
29
+ .map(async (p) => ({
30
+ name: p.name,
31
+ tool: await p.run(),
32
+ })))).reduce((all, current) => ({
33
+ ...all,
34
+ [current.name]: current.tool,
35
+ }), {});
36
+ }
37
+ async agent() {
38
+ const tools = await this.loadTools();
39
+ return new agent_1.Agent({
40
+ id: 'postiz',
41
+ name: 'postiz',
42
+ description: 'Agent that helps manage and schedule social media posts for users',
43
+ instructions: ({ requestContext }) => {
44
+ const ui = requestContext.get('ui');
45
+ return `
46
+ Global information:
47
+ - Date (UTC): ${(0, dayjs_1.default)().format('YYYY-MM-DD HH:mm:ss')}
48
+
49
+ You are an agent that helps manage and schedule social media posts for users, you can:
50
+ - Schedule posts into the future, or now, adding texts, images and videos
51
+ - Generate pictures for posts
52
+ - Generate videos for posts
53
+ - Generate text for posts
54
+ - Show global analytics about socials
55
+ - List integrations (channels)
56
+ - List groups (customers) and filter the channels by a group
57
+
58
+ - We schedule posts to different integration like facebook, instagram, etc. but to the user we don't say integrations we say channels as integration is the technical name
59
+ - When scheduling a post, you must follow the social media rules and best practices.
60
+ - When scheduling a post, you can pass an array for list of posts for a social media platform, But it has different behavior depending on the platform.
61
+ - For platforms like Threads, Bluesky and X (Twitter), each post in the array will be a separate post in the thread.
62
+ - For platforms like LinkedIn and Facebook, second part of the array will be added as "comments" to the first post.
63
+ - If the social media platform has the concept of "threads", we need to ask the user if they want to create a thread or one long post.
64
+ - For X, if you don't have Premium, don't suggest a long post because it won't work.
65
+ - Platform format will also be passed can be "normal", "markdown", "html", make sure you use the correct format for each platform.
66
+
67
+ - Sometimes 'integrationSchema' will return rules, make sure you follow them (these rules are set in stone, even if the user asks to ignore them)
68
+ - Each socials media platform has different settings and rules, you can get them by using the integrationSchema tool.
69
+ - Always make sure you use this tool before you schedule any post.
70
+ - In every message I will send you the list of needed social medias (id and platform), if you already have the information use it, if not, use the integrationSchema tool to get it.
71
+ - Make sure you always take the last information I give you about the socials, it might have changed.
72
+ - Before scheduling a post, always make sure you ask the user confirmation by providing all the details of the post (text, images, videos, date, time, social media platform, account).
73
+ - Between tools, we will reference things like: [output:name] and [input:name] to set the information right.
74
+ - When outputting a date for the user, make sure it's human readable with time
75
+ - The content of the post, HTML, Each line must be wrapped in <p> here is the possible tags: h1, h2, h3, u, strong, li, ul, p (you can\'t have u and strong together), don't use a "code" box
76
+ ${renderArray([
77
+ 'If the user confirm, ask if they would like to get a modal with populated content without scheduling the post yet or if they want to schedule it right away.',
78
+ ], !!ui)}
79
+ `;
80
+ },
81
+ model: (0, openai_1.openai)('gpt-5.2'),
82
+ tools,
83
+ memory: new memory_1.Memory({
84
+ storage: mastra_store_1.pStore,
85
+ options: {
86
+ generateTitle: true,
87
+ workingMemory: {
88
+ enabled: true,
89
+ schema: exports.AgentState,
90
+ },
91
+ },
92
+ }),
93
+ });
94
+ }
95
+ };
96
+ exports.LoadToolsService = LoadToolsService;
97
+ exports.LoadToolsService = LoadToolsService = tslib_1.__decorate([
98
+ (0, common_1.Injectable)(),
99
+ tslib_1.__metadata("design:paramtypes", [core_1.ModuleRef])
100
+ ], LoadToolsService);
101
+ //# sourceMappingURL=load.tools.service.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/load.tools.service.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"load.tools.service.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/load.tools.service.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,8CAA2C;AAC3C,2CAAwC;AACxC,2CAAwC;AACxC,iDAAqE;AACrE,6BAA4C;AAC5C,uCAAyC;AACzC,iDAA0E;AAC1E,0DAA0B;AAEb,QAAA,UAAU,GAAG,IAAA,YAAM,EAAC;IAC/B,QAAQ,EAAE,IAAA,WAAK,EAAC,IAAA,YAAM,GAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,IAAc,EAAE,IAAa,EAAE,EAAE;IACpD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC;AAGK,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAAoB,UAAqB;QAArB,eAAU,GAAV,UAAU,CAAW;IAAG,CAAC;IAE7C,KAAK,CAAC,SAAS;QACb,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,oBAAQ;aACL,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;aACrD,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACjB,IAAI,EAAE,CAAC,CAAC,IAAc;YACtB,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE;SACpB,CAAC,CAAC,CACN,CACF,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACjB,GAAG,GAAG;YACN,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI;SAC7B,CAAC,EACF,EAAyB,CAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,IAAI,aAAK,CAAC;YACf,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mEAAmE;YAChF,YAAY,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;gBACnC,MAAM,EAAE,GAAW,cAAc,CAAC,GAAG,CAAC,IAAa,CAAC,CAAC;gBACrD,OAAO;;wBAES,IAAA,eAAK,GAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6BrD,WAAW,CACX;oBACE,8JAA8J;iBAC/J,EACD,CAAC,CAAC,EAAE,CACL;CACN,CAAC;YACI,CAAC;YACD,KAAK,EAAE,IAAA,eAAM,EAAC,SAAS,CAAC;YACxB,KAAK;YACL,MAAM,EAAE,IAAI,eAAM,CAAC;gBACjB,OAAO,EAAE,qBAAM;gBACf,OAAO,EAAE;oBACP,aAAa,EAAE,IAAI;oBACnB,aAAa,EAAE;wBACb,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,kBAAU;qBACnB;iBACF;aACF,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnFY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;6CAEqB,gBAAS;GAD9B,gBAAgB,CAmF5B"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.service.d.ts ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import { Mastra } from '@mastra/core/mastra';
2
+ import { LoadToolsService } from "./load.tools.service";
3
+ export declare class MastraService {
4
+ private _loadToolsService;
5
+ static mastra: Mastra;
6
+ constructor(_loadToolsService: LoadToolsService);
7
+ mastra(): Promise<Mastra<Record<string, import("@mastra/core/agent").Agent<any, import("@mastra/core/agent").ToolsInput, undefined, unknown>>, Record<string, import("@mastra/core/workflows").AnyWorkflow>, Record<string, import("@mastra/core/vector").MastraVector<any>>, Record<string, import("@mastra/core/dist/tts").MastraTTS>, import("@mastra/core/logger").IMastraLogger, Record<string, import("@mastra/core/mcp").MCPServerBase<any>>, Record<string, import("@mastra/core/evals").MastraScorer<any, any, any, any>>, Record<string, import("@mastra/core/tools").ToolAction<any, any, any, any, any, any, unknown>>, Record<string, import("@mastra/core/processors").Processor<any, unknown>>, Record<string, import("@mastra/core/memory").MastraMemory>>>;
8
+ }
apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.service.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ var MastraService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MastraService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const mastra_1 = require("@mastra/core/mastra");
7
+ const logger_1 = require("@mastra/core/logger");
8
+ const mastra_store_1 = require("./mastra.store");
9
+ const common_1 = require("@nestjs/common");
10
+ const load_tools_service_1 = require("./load.tools.service");
11
+ let MastraService = MastraService_1 = class MastraService {
12
+ constructor(_loadToolsService) {
13
+ this._loadToolsService = _loadToolsService;
14
+ }
15
+ async mastra() {
16
+ MastraService_1.mastra =
17
+ MastraService_1.mastra ||
18
+ new mastra_1.Mastra({
19
+ storage: mastra_store_1.pStore,
20
+ agents: {
21
+ postiz: await this._loadToolsService.agent(),
22
+ },
23
+ logger: new logger_1.ConsoleLogger({
24
+ level: 'info',
25
+ }),
26
+ });
27
+ return MastraService_1.mastra;
28
+ }
29
+ };
30
+ exports.MastraService = MastraService;
31
+ exports.MastraService = MastraService = MastraService_1 = tslib_1.__decorate([
32
+ (0, common_1.Injectable)(),
33
+ tslib_1.__metadata("design:paramtypes", [load_tools_service_1.LoadToolsService])
34
+ ], MastraService);
35
+ //# sourceMappingURL=mastra.service.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.service.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"mastra.service.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/mastra.service.ts"],"names":[],"mappings":";;;;;AAAA,gDAA6C;AAC7C,gDAAoD;AACpD,iDAAqE;AACrE,2CAA4C;AAC5C,6DAAqF;AAG9E,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAExB,YAAoB,iBAAmC;QAAnC,sBAAiB,GAAjB,iBAAiB,CAAkB;IAAG,CAAC;IAC3D,KAAK,CAAC,MAAM;QACV,eAAa,CAAC,MAAM;YAClB,eAAa,CAAC,MAAM;gBACpB,IAAI,eAAM,CAAC;oBACT,OAAO,EAAE,qBAAM;oBACf,MAAM,EAAE;wBACN,MAAM,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;qBAC7C;oBACD,MAAM,EAAE,IAAI,sBAAa,CAAC;wBACxB,KAAK,EAAE,MAAM;qBACd,CAAC;iBACH,CAAC,CAAC;QAEL,OAAO,eAAa,CAAC,MAAM,CAAC;IAC9B,CAAC;CACF,CAAA;AAlBY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;6CAG4B,qCAAgB;GAF5C,aAAa,CAkBzB"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.store.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ import { PostgresStore } from '@mastra/pg';
2
+ export declare const pStore: PostgresStore;
apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.store.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pStore = void 0;
4
+ const pg_1 = require("@mastra/pg");
5
+ exports.pStore = new pg_1.PostgresStore({
6
+ id: 'postiz-store',
7
+ connectionString: process.env.DATABASE_URL,
8
+ });
9
+ //# sourceMappingURL=mastra.store.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/mastra.store.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"mastra.store.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/mastra.store.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAE9B,QAAA,MAAM,GAAG,IAAI,kBAAa,CAAC;IACtC,EAAE,EAAE,cAAc;IAClB,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,YAAa;CAC5C,CAAC,CAAC"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-middleware.d.ts ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type * as http from 'node:http';
2
+ import type { MCPServerOAuthConfig, TokenValidationResult } from './oauth-types';
3
+ interface OAuthMiddlewareLogger {
4
+ debug?: (message: string, ...args: unknown[]) => void;
5
+ }
6
+ export interface OAuthMiddlewareOptions {
7
+ oauth: MCPServerOAuthConfig;
8
+ mcpPath?: string;
9
+ logger?: OAuthMiddlewareLogger;
10
+ }
11
+ export interface OAuthMiddlewareResult {
12
+ proceed: boolean;
13
+ handled: boolean;
14
+ tokenValidation?: TokenValidationResult;
15
+ }
16
+ export declare function createOAuthMiddleware(options: OAuthMiddlewareOptions): (req: http.IncomingMessage, res: http.ServerResponse, url: URL) => Promise<OAuthMiddlewareResult>;
17
+ export declare function createStaticTokenValidator(validTokens: string[]): MCPServerOAuthConfig['validateToken'];
18
+ export declare function createIntrospectionValidator(introspectionEndpoint: string, clientCredentials?: {
19
+ clientId: string;
20
+ clientSecret: string;
21
+ }): MCPServerOAuthConfig['validateToken'];
22
+ export {};
apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-middleware.js ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOAuthMiddleware = createOAuthMiddleware;
4
+ exports.createStaticTokenValidator = createStaticTokenValidator;
5
+ exports.createIntrospectionValidator = createIntrospectionValidator;
6
+ const oauth_types_1 = require("./oauth-types");
7
+ function createOAuthMiddleware(options) {
8
+ const { oauth, mcpPath = '/mcp', logger } = options;
9
+ const protectedResourceMetadata = (0, oauth_types_1.generateProtectedResourceMetadata)(oauth);
10
+ const wellKnownPath = '/.well-known/oauth-protected-resource';
11
+ const resourceMetadataUrl = new URL(wellKnownPath, oauth.resource).toString();
12
+ return async function oauthMiddleware(req, res, url) {
13
+ logger?.debug?.(`OAuth middleware: ${req.method} ${url.pathname}`);
14
+ if (url.pathname === wellKnownPath && req.method === 'GET') {
15
+ logger?.debug?.('OAuth middleware: Serving Protected Resource Metadata');
16
+ res.writeHead(200, {
17
+ 'Content-Type': 'application/json',
18
+ 'Cache-Control': 'max-age=3600',
19
+ 'Access-Control-Allow-Origin': '*',
20
+ });
21
+ res.end(JSON.stringify(protectedResourceMetadata));
22
+ return { proceed: false, handled: true };
23
+ }
24
+ if (url.pathname === wellKnownPath && req.method === 'OPTIONS') {
25
+ res.writeHead(204, {
26
+ 'Access-Control-Allow-Origin': '*',
27
+ 'Access-Control-Allow-Methods': 'GET, OPTIONS',
28
+ 'Access-Control-Allow-Headers': 'Content-Type',
29
+ 'Access-Control-Max-Age': '86400',
30
+ });
31
+ res.end();
32
+ return { proceed: false, handled: true };
33
+ }
34
+ if (!url.pathname.startsWith(mcpPath)) {
35
+ return { proceed: true, handled: false };
36
+ }
37
+ const authHeader = req.headers['authorization'];
38
+ const token = (0, oauth_types_1.extractBearerToken)(authHeader);
39
+ if (!token) {
40
+ logger?.debug?.('OAuth middleware: No bearer token provided');
41
+ res.writeHead(401, {
42
+ 'Content-Type': 'application/json',
43
+ 'WWW-Authenticate': (0, oauth_types_1.generateWWWAuthenticateHeader)({ resourceMetadataUrl }),
44
+ });
45
+ res.end(JSON.stringify({
46
+ error: 'unauthorized',
47
+ error_description: 'Bearer token required',
48
+ }));
49
+ return { proceed: false, handled: true };
50
+ }
51
+ if (oauth.validateToken) {
52
+ logger?.debug?.('OAuth middleware: Validating token');
53
+ const validationResult = await oauth.validateToken(token, oauth.resource);
54
+ if (!validationResult.valid) {
55
+ logger?.debug?.(`OAuth middleware: Token validation failed: ${validationResult.error}`);
56
+ res.writeHead(401, {
57
+ 'Content-Type': 'application/json',
58
+ 'WWW-Authenticate': (0, oauth_types_1.generateWWWAuthenticateHeader)({
59
+ resourceMetadataUrl,
60
+ additionalParams: {
61
+ error: validationResult.error || 'invalid_token',
62
+ ...(validationResult.errorDescription && {
63
+ error_description: validationResult.errorDescription,
64
+ }),
65
+ },
66
+ }),
67
+ });
68
+ res.end(JSON.stringify({
69
+ error: validationResult.error || 'invalid_token',
70
+ error_description: validationResult.errorDescription || 'Token validation failed',
71
+ }));
72
+ return { proceed: false, handled: true, tokenValidation: validationResult };
73
+ }
74
+ logger?.debug?.('OAuth middleware: Token validated successfully');
75
+ return { proceed: true, handled: false, tokenValidation: validationResult };
76
+ }
77
+ logger?.debug?.('OAuth middleware: No token validation configured, accepting token');
78
+ return {
79
+ proceed: true,
80
+ handled: false,
81
+ tokenValidation: { valid: true },
82
+ };
83
+ };
84
+ }
85
+ function createStaticTokenValidator(validTokens) {
86
+ const tokenSet = new Set(validTokens);
87
+ return async (token) => {
88
+ if (tokenSet.has(token)) {
89
+ return { valid: true, scopes: ['mcp:read', 'mcp:write'] };
90
+ }
91
+ return {
92
+ valid: false,
93
+ error: 'invalid_token',
94
+ errorDescription: 'Token not recognized',
95
+ };
96
+ };
97
+ }
98
+ function createIntrospectionValidator(introspectionEndpoint, clientCredentials) {
99
+ return async (token, resource) => {
100
+ try {
101
+ const headers = {
102
+ 'Content-Type': 'application/x-www-form-urlencoded',
103
+ };
104
+ if (clientCredentials) {
105
+ if (clientCredentials.clientId.includes(':')) {
106
+ return {
107
+ valid: false,
108
+ error: 'invalid_request',
109
+ errorDescription: 'clientId cannot contain a colon character per RFC 7617',
110
+ };
111
+ }
112
+ const credentials = Buffer.from(`${clientCredentials.clientId}:${clientCredentials.clientSecret}`).toString('base64');
113
+ headers['Authorization'] = `Basic ${credentials}`;
114
+ }
115
+ const response = await fetch(introspectionEndpoint, {
116
+ method: 'POST',
117
+ headers,
118
+ body: new URLSearchParams({
119
+ token,
120
+ token_type_hint: 'access_token',
121
+ }),
122
+ });
123
+ if (!response.ok) {
124
+ return {
125
+ valid: false,
126
+ error: 'server_error',
127
+ errorDescription: `Introspection failed: ${response.status}`,
128
+ };
129
+ }
130
+ const data = (await response.json());
131
+ if (!data.active) {
132
+ return {
133
+ valid: false,
134
+ error: 'invalid_token',
135
+ errorDescription: 'Token is not active',
136
+ };
137
+ }
138
+ if (data.aud) {
139
+ const audiences = Array.isArray(data.aud) ? data.aud : [data.aud];
140
+ if (!audiences.includes(resource)) {
141
+ return {
142
+ valid: false,
143
+ error: 'invalid_token',
144
+ errorDescription: 'Token audience does not match this resource',
145
+ };
146
+ }
147
+ }
148
+ return {
149
+ valid: true,
150
+ scopes: data.scope
151
+ ?.trim()
152
+ .split(' ')
153
+ .filter(s => s !== '') || [],
154
+ subject: data.sub,
155
+ expiresAt: data.exp,
156
+ claims: data,
157
+ };
158
+ }
159
+ catch (error) {
160
+ return {
161
+ valid: false,
162
+ error: 'server_error',
163
+ errorDescription: error instanceof Error ? error.message : 'Introspection failed',
164
+ };
165
+ }
166
+ };
167
+ }
168
+ //# sourceMappingURL=oauth-middleware.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-middleware.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"oauth-middleware.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/oauth-middleware.ts"],"names":[],"mappings":"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"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-types.d.ts ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export interface MCPServerOAuthConfig {
2
+ resource: string;
3
+ authorizationServers: string[];
4
+ scopesSupported?: string[];
5
+ resourceName?: string;
6
+ resourceDocumentation?: string;
7
+ validateToken?: (token: string, resource: string) => Promise<TokenValidationResult>;
8
+ }
9
+ export interface TokenValidationResult {
10
+ valid: boolean;
11
+ error?: string;
12
+ errorDescription?: string;
13
+ scopes?: string[];
14
+ subject?: string;
15
+ expiresAt?: number;
16
+ claims?: Record<string, unknown>;
17
+ }
18
+ export interface OAuthResponseOptions {
19
+ resourceMetadataUrl?: string;
20
+ additionalParams?: Record<string, string>;
21
+ }
22
+ export interface OAuthProtectedResourceMetadata {
23
+ resource: string;
24
+ authorization_servers: string[];
25
+ scopes_supported?: string[];
26
+ bearer_methods_supported?: string[];
27
+ resource_name?: string;
28
+ resource_documentation?: string;
29
+ }
30
+ export declare function generateWWWAuthenticateHeader(options?: OAuthResponseOptions): string;
31
+ export declare function generateProtectedResourceMetadata(config: MCPServerOAuthConfig): OAuthProtectedResourceMetadata;
32
+ export declare function extractBearerToken(authHeader: string | null | undefined): string | undefined;
apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-types.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateWWWAuthenticateHeader = generateWWWAuthenticateHeader;
4
+ exports.generateProtectedResourceMetadata = generateProtectedResourceMetadata;
5
+ exports.extractBearerToken = extractBearerToken;
6
+ function escapeHeaderValue(value) {
7
+ return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
8
+ }
9
+ function generateWWWAuthenticateHeader(options = {}) {
10
+ const params = [];
11
+ if (options.resourceMetadataUrl) {
12
+ params.push(`resource_metadata="${escapeHeaderValue(options.resourceMetadataUrl)}"`);
13
+ }
14
+ if (options.additionalParams) {
15
+ for (const [key, value] of Object.entries(options.additionalParams)) {
16
+ params.push(`${key}="${escapeHeaderValue(value)}"`);
17
+ }
18
+ }
19
+ if (params.length === 0) {
20
+ return 'Bearer';
21
+ }
22
+ return `Bearer ${params.join(', ')}`;
23
+ }
24
+ function generateProtectedResourceMetadata(config) {
25
+ return {
26
+ resource: config.resource,
27
+ authorization_servers: config.authorizationServers,
28
+ scopes_supported: config.scopesSupported ?? ['mcp:read', 'mcp:write'],
29
+ bearer_methods_supported: ['header'],
30
+ ...(config.resourceName && { resource_name: config.resourceName }),
31
+ ...(config.resourceDocumentation && {
32
+ resource_documentation: config.resourceDocumentation,
33
+ }),
34
+ };
35
+ }
36
+ function extractBearerToken(authHeader) {
37
+ if (!authHeader)
38
+ return undefined;
39
+ const prefix = 'bearer ';
40
+ if (authHeader.length <= prefix.length)
41
+ return undefined;
42
+ if (authHeader.slice(0, prefix.length).toLowerCase() !== prefix)
43
+ return undefined;
44
+ const token = authHeader.slice(prefix.length).trim();
45
+ return token || undefined;
46
+ }
47
+ //# sourceMappingURL=oauth-types.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/oauth-types.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"oauth-types.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/oauth-types.ts"],"names":[],"mappings":";;AA6DA,sEAkBC;AAED,8EAWC;AAED,gDASC;AA9CD,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,6BAA6B,CAAC,UAAgC,EAAE;IAC9E,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,sBAAsB,iBAAiB,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,SAAgB,iCAAiC,CAAC,MAA4B;IAC5E,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,qBAAqB,EAAE,MAAM,CAAC,oBAAoB;QAClD,gBAAgB,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC;QACrE,wBAAwB,EAAE,CAAC,QAAQ,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,qBAAqB,IAAI;YAClC,sBAAsB,EAAE,MAAM,CAAC,qBAAqB;SACrD,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,UAAqC;IACtE,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACzD,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAElF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/rules.description.decorator.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ import 'reflect-metadata';
2
+ export declare function Rules(description: string): (target: any) => void;
apps/backend/dist/libraries/nestjs-libraries/src/chat/rules.description.decorator.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Rules = Rules;
4
+ require("reflect-metadata");
5
+ function Rules(description) {
6
+ return function (target) {
7
+ Reflect.defineMetadata('custom:rules:description', description, target);
8
+ };
9
+ }
10
+ //# sourceMappingURL=rules.description.decorator.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/rules.description.decorator.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"rules.description.decorator.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/rules.description.decorator.ts"],"names":[],"mappings":";;AAEA,sBASC;AAXD,4BAA0B;AAE1B,SAAgB,KAAK,CAAC,WAAmB;IACvC,OAAO,UAAU,MAAW;QAE1B,OAAO,CAAC,cAAc,CACpB,0BAA0B,EAC1B,WAAW,EACX,MAAM,CACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
apps/backend/dist/libraries/nestjs-libraries/src/chat/start.mcp.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ import { INestApplication } from '@nestjs/common';
2
+ export declare const startMcp: (app: INestApplication) => Promise<void>;
apps/backend/dist/libraries/nestjs-libraries/src/chat/start.mcp.js ADDED
@@ -0,0 +1,219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startMcp = void 0;
4
+ const mastra_service_1 = require("./mastra.service");
5
+ const mcp_1 = require("@mastra/mcp");
6
+ const crypto_1 = require("crypto");
7
+ const organization_service_1 = require("../database/prisma/organizations/organization.service");
8
+ const oauth_service_1 = require("../database/prisma/oauth/oauth.service");
9
+ const async_storage_1 = require("./async.storage");
10
+ const oauth_middleware_1 = require("./oauth-middleware");
11
+ const fixAcceptHeader = (req) => {
12
+ const value = 'application/json, text/event-stream';
13
+ req.headers.accept = value;
14
+ const idx = req.rawHeaders.findIndex((h) => h.toLowerCase() === 'accept');
15
+ if (idx !== -1) {
16
+ req.rawHeaders[idx + 1] = value;
17
+ }
18
+ else {
19
+ req.rawHeaders.push('Accept', value);
20
+ }
21
+ };
22
+ const startMcp = async (app) => {
23
+ const mastraService = app.get(mastra_service_1.MastraService, { strict: false });
24
+ const organizationService = app.get(organization_service_1.OrganizationService, { strict: false });
25
+ const oauthService = app.get(oauth_service_1.OAuthService, { strict: false });
26
+ const resolveAuth = async (token) => {
27
+ if (token.startsWith('pos_')) {
28
+ const authorization = await oauthService.getOrgByOAuthToken(token);
29
+ if (!authorization)
30
+ return null;
31
+ return authorization.organization;
32
+ }
33
+ return organizationService.getOrgByApiKey(token);
34
+ };
35
+ const mastra = await mastraService.mastra();
36
+ const agent = mastra.getAgent('postiz');
37
+ const tools = await agent.listTools();
38
+ const serverConfig = {
39
+ name: 'Postiz MCP',
40
+ version: '1.0.0',
41
+ tools,
42
+ agents: { postiz: agent },
43
+ };
44
+ const server = new mcp_1.MCPServer(serverConfig);
45
+ const oauthMiddleware = (0, oauth_middleware_1.createOAuthMiddleware)({
46
+ oauth: {
47
+ resource: new URL('/mcp-oauth', process.env.NEXT_PUBLIC_BACKEND_URL).toString(),
48
+ authorizationServers: [process.env.NEXT_PUBLIC_BACKEND_URL],
49
+ validateToken: async (token) => {
50
+ const org = await resolveAuth(token);
51
+ if (!org) {
52
+ return { valid: false, error: 'invalid_token', errorDescription: 'Invalid API Key or OAuth token' };
53
+ }
54
+ return { valid: true, subject: token };
55
+ },
56
+ },
57
+ mcpPath: '/mcp-oauth',
58
+ });
59
+ if (process.env.OPENAI_APP_CHALLANGE) {
60
+ app.use('/.well-known/openai-apps-challenge', (req, res) => {
61
+ res.setHeader('Content-Type', 'text/plain');
62
+ res.send(process.env.OPENAI_APP_CHALLANGE);
63
+ });
64
+ }
65
+ app.use('/.well-known/oauth-protected-resource', async (req, res) => {
66
+ const url = new URL('/.well-known/oauth-protected-resource', process.env.NEXT_PUBLIC_BACKEND_URL);
67
+ await oauthMiddleware(req, res, url);
68
+ });
69
+ app.use('/.well-known/oauth-authorization-server', async (req, res) => {
70
+ res.setHeader('Access-Control-Allow-Origin', '*');
71
+ if (req.method === 'OPTIONS') {
72
+ res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
73
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
74
+ res.writeHead(204);
75
+ res.end();
76
+ return;
77
+ }
78
+ res.setHeader('Content-Type', 'application/json');
79
+ res.setHeader('Cache-Control', 'max-age=3600');
80
+ res.json({
81
+ issuer: process.env.NEXT_PUBLIC_BACKEND_URL,
82
+ authorization_endpoint: `${process.env.FRONTEND_URL}/oauth/authorize`,
83
+ token_endpoint: `${process.env.NEXT_PUBLIC_OVERRIDE_BACKEND_URL || process.env.NEXT_PUBLIC_BACKEND_URL}/oauth/token`,
84
+ response_types_supported: ['code'],
85
+ grant_types_supported: ['authorization_code'],
86
+ code_challenge_methods_supported: ['S256'],
87
+ scopes_supported: ['mcp:read', 'mcp:write'],
88
+ });
89
+ });
90
+ app.use('/mcp-oauth', async (req, res, next) => {
91
+ if (req.path !== '/' && req.path !== '') {
92
+ next();
93
+ return;
94
+ }
95
+ const url = new URL('/mcp-oauth', process.env.NEXT_PUBLIC_BACKEND_URL);
96
+ const result = await oauthMiddleware(req, res, url);
97
+ if (!result.proceed)
98
+ return;
99
+ const token = result.tokenValidation?.subject;
100
+ const auth = await resolveAuth(token);
101
+ if (!auth) {
102
+ res.status(401).json({ error: 'invalid_token', error_description: 'Could not resolve organization' });
103
+ return;
104
+ }
105
+ fixAcceptHeader(req);
106
+ await (0, async_storage_1.runWithContext)({ requestId: token, auth }, async () => {
107
+ await server.startHTTP({
108
+ url: url,
109
+ httpPath: url.pathname,
110
+ options: {
111
+ sessionIdGenerator: () => {
112
+ return (0, crypto_1.randomUUID)();
113
+ },
114
+ enableJsonResponse: true,
115
+ },
116
+ req,
117
+ res,
118
+ });
119
+ });
120
+ });
121
+ app.use('/mcp', async (req, res, next) => {
122
+ if (req.path !== '/' && req.path !== '') {
123
+ next();
124
+ return;
125
+ }
126
+ res.setHeader('Access-Control-Allow-Origin', '*');
127
+ res.setHeader('Access-Control-Allow-Methods', '*');
128
+ res.setHeader('Access-Control-Allow-Headers', '*');
129
+ res.setHeader('Access-Control-Expose-Headers', '*');
130
+ if (req.method === 'OPTIONS') {
131
+ res.sendStatus(200);
132
+ return;
133
+ }
134
+ const token = req.headers.authorization?.replace('Bearer ', '');
135
+ if (!token) {
136
+ res.status(401).send('Missing Authorization header');
137
+ return;
138
+ }
139
+ req.auth = await resolveAuth(token);
140
+ if (!req.auth) {
141
+ res.status(401).send('Invalid API Key or OAuth token');
142
+ return;
143
+ }
144
+ const url = new URL('/mcp', process.env.NEXT_PUBLIC_BACKEND_URL);
145
+ fixAcceptHeader(req);
146
+ await (0, async_storage_1.runWithContext)({ requestId: token, auth: req.auth }, async () => {
147
+ await server.startHTTP({
148
+ url,
149
+ httpPath: url.pathname,
150
+ options: {
151
+ sessionIdGenerator: () => {
152
+ return (0, crypto_1.randomUUID)();
153
+ },
154
+ enableJsonResponse: true,
155
+ },
156
+ req,
157
+ res,
158
+ });
159
+ });
160
+ });
161
+ app.use('/mcp/:id', async (req, res) => {
162
+ res.setHeader('Access-Control-Allow-Origin', '*');
163
+ res.setHeader('Access-Control-Allow-Methods', '*');
164
+ res.setHeader('Access-Control-Allow-Headers', '*');
165
+ res.setHeader('Access-Control-Expose-Headers', '*');
166
+ if (req.method === 'OPTIONS') {
167
+ res.sendStatus(200);
168
+ return;
169
+ }
170
+ req.auth = await organizationService.getOrgByApiKey(req.params.id);
171
+ if (!req.auth) {
172
+ res.status(400).send('Invalid API Key');
173
+ return;
174
+ }
175
+ const url = new URL(`/mcp/${req.params.id}`, process.env.NEXT_PUBLIC_BACKEND_URL);
176
+ fixAcceptHeader(req);
177
+ await (0, async_storage_1.runWithContext)({ requestId: req.params.id, auth: req.auth }, async () => {
178
+ await server.startHTTP({
179
+ url,
180
+ httpPath: url.pathname,
181
+ options: {
182
+ sessionIdGenerator: () => {
183
+ return (0, crypto_1.randomUUID)();
184
+ },
185
+ enableJsonResponse: true,
186
+ },
187
+ req,
188
+ res,
189
+ });
190
+ });
191
+ });
192
+ app.use(['/sse/:id', '/message/:id'], async (req, res) => {
193
+ res.setHeader('Access-Control-Allow-Origin', '*');
194
+ res.setHeader('Access-Control-Allow-Methods', '*');
195
+ res.setHeader('Access-Control-Allow-Headers', '*');
196
+ res.setHeader('Access-Control-Expose-Headers', '*');
197
+ if (req.method === 'OPTIONS') {
198
+ res.sendStatus(200);
199
+ return;
200
+ }
201
+ req.auth = await organizationService.getOrgByApiKey(req.params.id);
202
+ if (!req.auth) {
203
+ res.status(400).send('Invalid API Key');
204
+ return;
205
+ }
206
+ const url = new URL(req.originalUrl, process.env.NEXT_PUBLIC_BACKEND_URL);
207
+ await (0, async_storage_1.runWithContext)({ requestId: req.params.id, auth: req.auth }, async () => {
208
+ await new mcp_1.MCPServer(serverConfig).startSSE({
209
+ url,
210
+ ssePath: `/sse/${req.params.id}`,
211
+ messagePath: `/message/${req.params.id}`,
212
+ req,
213
+ res,
214
+ });
215
+ });
216
+ });
217
+ };
218
+ exports.startMcp = startMcp;
219
+ //# sourceMappingURL=start.mcp.js.map
apps/backend/dist/libraries/nestjs-libraries/src/chat/start.mcp.js.map ADDED
@@ -0,0 +1 @@
 
 
1
+ {"version":3,"file":"start.mcp.js","sourceRoot":"","sources":["../../../../../../../libraries/nestjs-libraries/src/chat/start.mcp.ts"],"names":[],"mappings":"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"}