@sweetoburrito/backstage-plugin-ai-assistant-node 0.7.0 → 0.9.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.cjs.js","sources":["../src/extensions.ts"],"sourcesContent":["import { createExtensionPoint } from '@backstage/backend-plugin-api';\nimport { Ingestor } from './types/ingestor';\nimport { Embeddings } from '@langchain/core/embeddings';\nimport { BaseChatModel } from '@langchain/core/language_models/chat_models';\nimport { CallbackProvider, Tool } from './types';\nimport { ZodType } from 'zod';\n\nexport type DataIngestorExtensionPoint = {\n registerIngestor: (ingestor: Ingestor) => void;\n};\n\nexport const dataIngestorExtensionPoint =\n createExtensionPoint<DataIngestorExtensionPoint>({\n id: 'ai-assistant.data-ingestor',\n });\n\nexport type EmbeddingsProvider = {\n getEmbeddings: () => Promise<Omit<Embeddings, 'caller'>>;\n};\n\nexport type EmbeddingsProviderExtensionPoint = {\n register: (provider: EmbeddingsProvider) => void;\n};\n\nexport const embeddingsProviderExtensionPoint =\n createExtensionPoint<EmbeddingsProviderExtensionPoint>({\n id: 'ai-assistant.embeddings-provider',\n });\n\nexport type Model = {\n id: string;\n chatModel: BaseChatModel;\n};\n\nexport type ModelProviderExtensionPoint = {\n register: (model: Model) => void;\n};\n\nexport const modelProviderExtensionPoint =\n createExtensionPoint<ModelProviderExtensionPoint>({\n id: 'ai-assistant.model-provider',\n });\n\nexport type ToolExtensionPoint = {\n register: (tool: Tool<ZodType>) => void;\n};\n\nexport const toolExtensionPoint = createExtensionPoint<ToolExtensionPoint>({\n id: 'ai-assistant.tool',\n});\n\nexport type CallbackExtensionPoint = {\n register: (callback: CallbackProvider) => void;\n};\n\nexport const callbackProviderExtensionPoint =\n createExtensionPoint<CallbackExtensionPoint>({\n id: 'ai-assistant.callback',\n });\n"],"names":["createExtensionPoint"],"mappings":";;;;AAWO,MAAM,6BACXA,qCAAA,CAAiD;AAAA,EAC/C,EAAA,EAAI;AACN,CAAC;AAUI,MAAM,mCACXA,qCAAA,CAAuD;AAAA,EACrD,EAAA,EAAI;AACN,CAAC;AAWI,MAAM,8BACXA,qCAAA,CAAkD;AAAA,EAChD,EAAA,EAAI;AACN,CAAC;AAMI,MAAM,qBAAqBA,qCAAA,CAAyC;AAAA,EACzE,EAAA,EAAI;AACN,CAAC;AAMM,MAAM,iCACXA,qCAAA,CAA6C;AAAA,EAC3C,EAAA,EAAI;AACN,CAAC;;;;;;;;"}
1
+ {"version":3,"file":"extensions.cjs.js","sources":["../src/extensions.ts"],"sourcesContent":["import { createExtensionPoint } from '@backstage/backend-plugin-api';\nimport { Ingestor } from './types/ingestor';\nimport { Model } from './types/model';\nimport { Embeddings } from '@langchain/core/embeddings';\nimport { CallbackProvider } from './types';\nimport { Tool } from '@sweetoburrito/backstage-plugin-ai-assistant-common';\nimport { ZodType } from 'zod';\n\nexport type DataIngestorExtensionPoint = {\n registerIngestor: (ingestor: Ingestor) => void;\n};\n\nexport const dataIngestorExtensionPoint =\n createExtensionPoint<DataIngestorExtensionPoint>({\n id: 'ai-assistant.data-ingestor',\n });\n\nexport type EmbeddingsProvider = {\n getEmbeddings: () => Promise<Omit<Embeddings, 'caller'>>;\n};\n\nexport type EmbeddingsProviderExtensionPoint = {\n register: (provider: EmbeddingsProvider) => void;\n};\n\nexport const embeddingsProviderExtensionPoint =\n createExtensionPoint<EmbeddingsProviderExtensionPoint>({\n id: 'ai-assistant.embeddings-provider',\n });\n\nexport type ModelProviderExtensionPoint = {\n register: (model: Model) => void;\n};\n\nexport const modelProviderExtensionPoint =\n createExtensionPoint<ModelProviderExtensionPoint>({\n id: 'ai-assistant.model-provider',\n });\n\nexport type ToolExtensionPoint = {\n register: (tool: Tool<ZodType>) => void;\n};\n\nexport const toolExtensionPoint = createExtensionPoint<ToolExtensionPoint>({\n id: 'ai-assistant.tool',\n});\n\nexport type CallbackExtensionPoint = {\n register: (callback: CallbackProvider) => void;\n};\n\nexport const callbackProviderExtensionPoint =\n createExtensionPoint<CallbackExtensionPoint>({\n id: 'ai-assistant.callback',\n });\n"],"names":["createExtensionPoint"],"mappings":";;;;AAYO,MAAM,6BACXA,qCAAA,CAAiD;AAAA,EAC/C,EAAA,EAAI;AACN,CAAC;AAUI,MAAM,mCACXA,qCAAA,CAAuD;AAAA,EACrD,EAAA,EAAI;AACN,CAAC;AAMI,MAAM,8BACXA,qCAAA,CAAkD;AAAA,EAChD,EAAA,EAAI;AACN,CAAC;AAMI,MAAM,qBAAqBA,qCAAA,CAAyC;AAAA,EACzE,EAAA,EAAI;AACN,CAAC;AAMM,MAAM,iCACXA,qCAAA,CAA6C;AAAA,EAC3C,EAAA,EAAI;AACN,CAAC;;;;;;;;"}
package/dist/index.cjs.js CHANGED
@@ -5,6 +5,7 @@ var tool = require('./utils/tool.cjs.js');
5
5
  var streamToString = require('./utils/stream-to-string.cjs.js');
6
6
  var encrypt = require('./utils/encrypt.cjs.js');
7
7
  var getUser = require('./utils/get-user.cjs.js');
8
+ var aiAssistant = require('./services/ai-assistant.cjs.js');
8
9
 
9
10
 
10
11
 
@@ -18,4 +19,5 @@ exports.streamToString = streamToString.streamToString;
18
19
  exports.decrypt = encrypt.decrypt;
19
20
  exports.encrypt = encrypt.encrypt;
20
21
  exports.getUser = getUser.getUser;
22
+ exports.aiAssistantServiceRef = aiAssistant.aiAssistantServiceRef;
21
23
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as _backstage_backend_plugin_api from '@backstage/backend-plugin-api';
2
- import { LoggerService, RootConfigService, SchedulerService, CacheService, BackstageCredentials } from '@backstage/backend-plugin-api';
2
+ import { LoggerService, RootConfigService, SchedulerService, CacheService, AuthService, BackstageCredentials, DiscoveryService, ServiceRef } from '@backstage/backend-plugin-api';
3
3
  import { Embeddings } from '@langchain/core/embeddings';
4
- import { ZodType, z } from 'zod';
5
- import { JsonObject, JsonValue, Message } from '@sweetoburrito/backstage-plugin-ai-assistant-common';
6
4
  import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
5
+ import { JsonValue, Message, Tool, EnabledTool } from '@sweetoburrito/backstage-plugin-ai-assistant-common';
7
6
  import { BaseChatModel } from '@langchain/core/language_models/chat_models';
7
+ import { ZodType } from 'zod';
8
+ import { UserEntity } from '@backstage/catalog-model';
8
9
  import { CatalogService } from '@backstage/plugin-catalog-node';
9
10
 
10
11
  type EmbeddingsSource = string;
@@ -65,16 +66,6 @@ type DataIngestionPipeline = {
65
66
  start: () => Promise<void>;
66
67
  };
67
68
 
68
- type Tool<T extends ZodType<any, any, any> = ZodType<any, any, any>> = {
69
- name: string;
70
- description: string;
71
- schema: T;
72
- func: (params: z.infer<T>) => Promise<{
73
- content: string;
74
- metadata?: JsonObject;
75
- }>;
76
- };
77
-
78
69
  type ChainCallbackOptions = Record<string, JsonValue> & {
79
70
  modelId: string;
80
71
  userId: string;
@@ -94,6 +85,11 @@ type CallbackProvider = {
94
85
  chainMetadataCallback?: ChainMetadataCallback;
95
86
  };
96
87
 
88
+ type Model = {
89
+ id: string;
90
+ chatModel: BaseChatModel;
91
+ };
92
+
97
93
  type DataIngestorExtensionPoint = {
98
94
  registerIngestor: (ingestor: Ingestor) => void;
99
95
  };
@@ -105,10 +101,6 @@ type EmbeddingsProviderExtensionPoint = {
105
101
  register: (provider: EmbeddingsProvider) => void;
106
102
  };
107
103
  declare const embeddingsProviderExtensionPoint: _backstage_backend_plugin_api.ExtensionPoint<EmbeddingsProviderExtensionPoint>;
108
- type Model = {
109
- id: string;
110
- chatModel: BaseChatModel;
111
- };
112
104
  type ModelProviderExtensionPoint = {
113
105
  register: (model: Model) => void;
114
106
  };
@@ -132,7 +124,35 @@ declare function streamToString(readableStream: NodeJS.ReadableStream | null): P
132
124
  declare const encrypt: (text: string, key: string) => string;
133
125
  declare const decrypt: (encryptedText: string, key: string) => string;
134
126
 
135
- declare const getUser: (cache: CacheService, userEntityRef: string, credentials: BackstageCredentials, catalog: CatalogService) => Promise<any>;
127
+ declare const getUser: (cache: CacheService, userEntityRef: string, catalog: CatalogService, auth: AuthService) => Promise<UserEntity | undefined>;
128
+
129
+ type AiAssistantService = {
130
+ summarize: (options: {
131
+ content: string;
132
+ credentials: BackstageCredentials;
133
+ length?: string;
134
+ prompt?: string;
135
+ }) => Promise<string>;
136
+ prompt: (options: {
137
+ messages: Message[];
138
+ tools?: EnabledTool[];
139
+ modelId?: string;
140
+ systemPrompt?: string;
141
+ context?: string;
142
+ metadata: {
143
+ runName: string;
144
+ userId: string;
145
+ };
146
+ credentials: BackstageCredentials;
147
+ }) => Promise<{
148
+ messages: Message[];
149
+ }>;
150
+ };
151
+ type AiAssistantServiceOptions = {
152
+ auth: AuthService;
153
+ discovery: DiscoveryService;
154
+ };
155
+ declare const aiAssistantServiceRef: ServiceRef<AiAssistantService, 'plugin', 'singleton'>;
136
156
 
137
- export { callbackProviderExtensionPoint, createAssistantTool, dataIngestorExtensionPoint, decrypt, embeddingsProviderExtensionPoint, encrypt, getUser, modelProviderExtensionPoint, streamToString, toolExtensionPoint };
138
- export type { AugmentationIndexer, CallbackExtensionPoint, CallbackProvider, ChainCallback, ChainCallbackOptions, ChainMetadata, ChainMetadataCallback, DataIngestionPipeline, DataIngestionPipelineOptions, DataIngestorExtensionPoint, Embedding, EmbeddingDocument, EmbeddingDocumentMetadata, EmbeddingsProvider, EmbeddingsProviderExtensionPoint, EmbeddingsSource, EntityFilterShape, Ingestor, IngestorOptions, Model, ModelProviderExtensionPoint, ScoreCallback, Tool, ToolExtensionPoint, VectorStore };
157
+ export { aiAssistantServiceRef, callbackProviderExtensionPoint, createAssistantTool, dataIngestorExtensionPoint, decrypt, embeddingsProviderExtensionPoint, encrypt, getUser, modelProviderExtensionPoint, streamToString, toolExtensionPoint };
158
+ export type { AiAssistantService, AiAssistantServiceOptions, AugmentationIndexer, CallbackExtensionPoint, CallbackProvider, ChainCallback, ChainCallbackOptions, ChainMetadata, ChainMetadataCallback, DataIngestionPipeline, DataIngestionPipelineOptions, DataIngestorExtensionPoint, Embedding, EmbeddingDocument, EmbeddingDocumentMetadata, EmbeddingsProvider, EmbeddingsProviderExtensionPoint, EmbeddingsSource, EntityFilterShape, Ingestor, IngestorOptions, Model, ModelProviderExtensionPoint, ScoreCallback, ToolExtensionPoint, VectorStore };
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var backendPluginApi = require('@backstage/backend-plugin-api');
4
+
5
+ const createAiAssistantService = ({
6
+ auth,
7
+ discovery
8
+ }) => {
9
+ const summarize = async ({
10
+ content,
11
+ credentials,
12
+ length = "a few sentences",
13
+ prompt: prompt2
14
+ }) => {
15
+ const baseUrl = await discovery.getBaseUrl("ai-assistant");
16
+ const { token } = await auth.getPluginRequestToken({
17
+ onBehalfOf: credentials,
18
+ targetPluginId: "ai-assistant"
19
+ });
20
+ const response = await fetch(`${baseUrl}/summary/content`, {
21
+ method: "POST",
22
+ body: JSON.stringify({ content, length, prompt: prompt2 }),
23
+ headers: {
24
+ "Content-Type": "application/json",
25
+ Authorization: `Bearer ${token}`
26
+ }
27
+ });
28
+ const data = await response.json();
29
+ return data.summary;
30
+ };
31
+ const prompt = async (options) => {
32
+ const { credentials, ...rest } = options;
33
+ const baseUrl = await discovery.getBaseUrl("ai-assistant");
34
+ const { token } = await auth.getPluginRequestToken({
35
+ onBehalfOf: credentials,
36
+ targetPluginId: "ai-assistant"
37
+ });
38
+ const response = await fetch(`${baseUrl}/agent/prompt`, {
39
+ method: "POST",
40
+ body: JSON.stringify({ ...rest }),
41
+ headers: {
42
+ "Content-Type": "application/json",
43
+ Authorization: `Bearer ${token}`
44
+ }
45
+ });
46
+ const body = await response.json();
47
+ const messages = body.messages;
48
+ return {
49
+ messages
50
+ };
51
+ };
52
+ return {
53
+ summarize,
54
+ prompt
55
+ };
56
+ };
57
+ const aiAssistantServiceRef = backendPluginApi.createServiceRef({
58
+ id: "ai-assistant.ai-assistant-service",
59
+ defaultFactory: async (service) => backendPluginApi.createServiceFactory({
60
+ service,
61
+ deps: {
62
+ config: backendPluginApi.coreServices.rootConfig,
63
+ auth: backendPluginApi.coreServices.auth,
64
+ discovery: backendPluginApi.coreServices.discovery
65
+ },
66
+ factory: async (options) => {
67
+ return createAiAssistantService(options);
68
+ }
69
+ })
70
+ });
71
+
72
+ exports.aiAssistantServiceRef = aiAssistantServiceRef;
73
+ //# sourceMappingURL=ai-assistant.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-assistant.cjs.js","sources":["../../src/services/ai-assistant.ts"],"sourcesContent":["import {\n createServiceFactory,\n createServiceRef,\n coreServices,\n} from '@backstage/backend-plugin-api';\n\nimport type {\n ServiceRef,\n BackstageCredentials,\n AuthService,\n DiscoveryService,\n} from '@backstage/backend-plugin-api';\nimport {\n EnabledTool,\n Message,\n} from '@sweetoburrito/backstage-plugin-ai-assistant-common';\n\nexport type AiAssistantService = {\n summarize: (options: {\n content: string;\n credentials: BackstageCredentials;\n length?: string;\n prompt?: string;\n }) => Promise<string>;\n\n prompt: (options: {\n messages: Message[];\n tools?: EnabledTool[];\n modelId?: string;\n systemPrompt?: string;\n context?: string;\n metadata: {\n runName: string;\n userId: string;\n };\n credentials: BackstageCredentials;\n }) => Promise<{\n messages: Message[];\n }>;\n};\n\nexport type AiAssistantServiceOptions = {\n auth: AuthService;\n discovery: DiscoveryService;\n};\n\nconst createAiAssistantService = ({\n auth,\n discovery,\n}: AiAssistantServiceOptions): AiAssistantService => {\n const summarize: AiAssistantService['summarize'] = async ({\n content,\n credentials,\n length = 'a few sentences',\n prompt,\n }) => {\n const baseUrl = await discovery.getBaseUrl('ai-assistant');\n\n const { token } = await auth.getPluginRequestToken({\n onBehalfOf: credentials,\n targetPluginId: 'ai-assistant',\n });\n\n const response = await fetch(`${baseUrl}/summary/content`, {\n method: 'POST',\n body: JSON.stringify({ content, length, prompt }),\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n });\n\n const data = await response.json();\n return data.summary as string;\n };\n\n const prompt: AiAssistantService['prompt'] = async options => {\n const { credentials, ...rest } = options;\n\n const baseUrl = await discovery.getBaseUrl('ai-assistant');\n\n const { token } = await auth.getPluginRequestToken({\n onBehalfOf: credentials,\n targetPluginId: 'ai-assistant',\n });\n\n const response = await fetch(`${baseUrl}/agent/prompt`, {\n method: 'POST',\n body: JSON.stringify({ ...rest }),\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n });\n\n const body = await response.json();\n\n const messages = body.messages as Message[];\n\n return {\n messages,\n };\n };\n\n return {\n summarize,\n prompt,\n };\n};\n\nexport const aiAssistantServiceRef: ServiceRef<\n AiAssistantService,\n 'plugin',\n 'singleton'\n> = createServiceRef<AiAssistantService>({\n id: 'ai-assistant.ai-assistant-service',\n defaultFactory: async service =>\n createServiceFactory({\n service,\n deps: {\n config: coreServices.rootConfig,\n auth: coreServices.auth,\n discovery: coreServices.discovery,\n },\n factory: async options => {\n return createAiAssistantService(options);\n },\n }),\n});\n"],"names":["prompt","createServiceRef","createServiceFactory","coreServices"],"mappings":";;;;AA8CA,MAAM,2BAA2B,CAAC;AAAA,EAChC,IAAA;AAAA,EACA;AACF,CAAA,KAAqD;AACnD,EAAA,MAAM,YAA6C,OAAO;AAAA,IACxD,OAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA,GAAS,iBAAA;AAAA,IACT,MAAA,EAAAA;AAAA,GACF,KAAM;AACJ,IAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,UAAA,CAAW,cAAc,CAAA;AAEzD,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAM,KAAK,qBAAA,CAAsB;AAAA,MACjD,UAAA,EAAY,WAAA;AAAA,MACZ,cAAA,EAAgB;AAAA,KACjB,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,gBAAA,CAAA,EAAoB;AAAA,MACzD,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,SAAS,MAAA,EAAQ,MAAA,EAAAA,SAAQ,CAAA;AAAA,MAChD,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAChC,KACD,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,MAAA,GAAuC,OAAM,OAAA,KAAW;AAC5D,IAAA,MAAM,EAAE,WAAA,EAAa,GAAG,IAAA,EAAK,GAAI,OAAA;AAEjC,IAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,UAAA,CAAW,cAAc,CAAA;AAEzD,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAM,KAAK,qBAAA,CAAsB;AAAA,MACjD,UAAA,EAAY,WAAA;AAAA,MACZ,cAAA,EAAgB;AAAA,KACjB,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,aAAA,CAAA,EAAiB;AAAA,MACtD,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,GAAG,MAAM,CAAA;AAAA,MAChC,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAChC,KACD,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AAEtB,IAAA,OAAO;AAAA,MACL;AAAA,KACF;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AAEO,MAAM,wBAITC,iCAAA,CAAqC;AAAA,EACvC,EAAA,EAAI,mCAAA;AAAA,EACJ,cAAA,EAAgB,OAAM,OAAA,KACpBC,qCAAA,CAAqB;AAAA,IACnB,OAAA;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,QAAQC,6BAAA,CAAa,UAAA;AAAA,MACrB,MAAMA,6BAAA,CAAa,IAAA;AAAA,MACnB,WAAWA,6BAAA,CAAa;AAAA,KAC1B;AAAA,IACA,OAAA,EAAS,OAAM,OAAA,KAAW;AACxB,MAAA,OAAO,yBAAyB,OAAO,CAAA;AAAA,IACzC;AAAA,GACD;AACL,CAAC;;;;"}
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- const getUser = async (cache, userEntityRef, credentials, catalog) => {
3
+ const getUser = async (cache, userEntityRef, catalog, auth) => {
4
4
  const cached = await cache.get(userEntityRef);
5
5
  if (cached) {
6
6
  return JSON.parse(String(cached));
7
7
  }
8
+ const credentials = await auth.getOwnServiceCredentials();
8
9
  const user = await catalog.getEntityByRef(userEntityRef, {
9
10
  credentials
10
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"get-user.cjs.js","sources":["../../src/utils/get-user.ts"],"sourcesContent":["import {\n BackstageCredentials,\n CacheService,\n} from '@backstage/backend-plugin-api';\nimport { UserEntity } from '@backstage/catalog-model';\nimport { CatalogService } from '@backstage/plugin-catalog-node';\n\nexport const getUser = async (\n cache: CacheService,\n userEntityRef: string,\n credentials: BackstageCredentials,\n catalog: CatalogService,\n) => {\n const cached = await cache.get(userEntityRef);\n\n if (cached) {\n return JSON.parse(String(cached));\n }\n\n const user = (await catalog.getEntityByRef(userEntityRef, {\n credentials,\n })) as UserEntity | undefined;\n await cache.set(userEntityRef, JSON.stringify(user));\n\n return user;\n};\n"],"names":[],"mappings":";;AAOO,MAAM,OAAA,GAAU,OACrB,KAAA,EACA,aAAA,EACA,aACA,OAAA,KACG;AACH,EAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,GAAA,CAAI,aAAa,CAAA;AAE5C,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,IAAA,GAAQ,MAAM,OAAA,CAAQ,cAAA,CAAe,aAAA,EAAe;AAAA,IACxD;AAAA,GACD,CAAA;AACD,EAAA,MAAM,MAAM,GAAA,CAAI,aAAA,EAAe,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAEnD,EAAA,OAAO,IAAA;AACT;;;;"}
1
+ {"version":3,"file":"get-user.cjs.js","sources":["../../src/utils/get-user.ts"],"sourcesContent":["import { AuthService, CacheService } from '@backstage/backend-plugin-api';\nimport { UserEntity } from '@backstage/catalog-model';\nimport { CatalogService } from '@backstage/plugin-catalog-node';\n\nexport const getUser = async (\n cache: CacheService,\n userEntityRef: string,\n catalog: CatalogService,\n auth: AuthService,\n): Promise<UserEntity | undefined> => {\n const cached = await cache.get(userEntityRef);\n\n if (cached) {\n return JSON.parse(String(cached));\n }\n\n const credentials = await auth.getOwnServiceCredentials();\n\n const user = (await catalog.getEntityByRef(userEntityRef, {\n credentials,\n })) as UserEntity | undefined;\n await cache.set(userEntityRef, JSON.stringify(user));\n\n return user;\n};\n"],"names":[],"mappings":";;AAIO,MAAM,OAAA,GAAU,OACrB,KAAA,EACA,aAAA,EACA,SACA,IAAA,KACoC;AACpC,EAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,GAAA,CAAI,aAAa,CAAA;AAE5C,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,wBAAA,EAAyB;AAExD,EAAA,MAAM,IAAA,GAAQ,MAAM,OAAA,CAAQ,cAAA,CAAe,aAAA,EAAe;AAAA,IACxD;AAAA,GACD,CAAA;AACD,EAAA,MAAM,MAAM,GAAA,CAAI,aAAA,EAAe,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAEnD,EAAA,OAAO,IAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool.cjs.js","sources":["../../src/utils/tool.ts"],"sourcesContent":["import { ZodType } from 'zod';\nimport { Tool } from '../types';\n\ntype CreateAssistantToolOptions<T extends ZodType<any, any, any>> = {\n tool: Tool<T>;\n};\n\nexport const createAssistantTool = <T extends ZodType<any, any, any>>(\n options: CreateAssistantToolOptions<T>,\n) => {\n return options.tool;\n};\n"],"names":[],"mappings":";;AAOO,MAAM,mBAAA,GAAsB,CACjC,OAAA,KACG;AACH,EAAA,OAAO,OAAA,CAAQ,IAAA;AACjB;;;;"}
1
+ {"version":3,"file":"tool.cjs.js","sources":["../../src/utils/tool.ts"],"sourcesContent":["import { ZodType } from 'zod';\nimport { Tool } from '@sweetoburrito/backstage-plugin-ai-assistant-common';\n\ntype CreateAssistantToolOptions<T extends ZodType<any, any, any>> = {\n tool: Tool<T>;\n};\n\nexport const createAssistantTool = <T extends ZodType<any, any, any>>(\n options: CreateAssistantToolOptions<T>,\n) => {\n return options.tool;\n};\n"],"names":[],"mappings":";;AAOO,MAAM,mBAAA,GAAsB,CACjC,OAAA,KACG;AACH,EAAA,OAAO,OAAA,CAAQ,IAAA;AACjB;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sweetoburrito/backstage-plugin-ai-assistant-node",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Node.js library for the ai-assistant plugin",
6
6
  "main": "dist/index.cjs.js",
@@ -39,7 +39,8 @@
39
39
  "@backstage/catalog-model": "backstage:^",
40
40
  "@backstage/plugin-catalog-node": "backstage:^",
41
41
  "@langchain/core": "^0.3.72",
42
- "@sweetoburrito/backstage-plugin-ai-assistant-common": "^0.6.0",
42
+ "@langchain/mcp-adapters": "^1.0.3",
43
+ "@sweetoburrito/backstage-plugin-ai-assistant-common": "^0.8.0",
43
44
  "zod": "^4.1.11"
44
45
  },
45
46
  "typesVersions": {