@dbx-tools/appkit-mastra 0.1.97 → 0.1.98

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.
Files changed (2) hide show
  1. package/dist/index.js +64 -11
  2. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -882,6 +882,7 @@ const ASSISTANT_WORKSPACE_SKILLS_MOUNT = "/workspace_skills";
882
882
  const ASSISTANT_USER_SKILLS_MOUNT = "/workspace_user_skills";
883
883
  /** OAuth scopes that gate Databricks workspace file mounts. */
884
884
  const WORKSPACE_FILE_SCOPES = ["workspace", "all-apis"];
885
+ const log$8 = logUtils.logger("mastra/workspaces");
885
886
  /**
886
887
  * Create a Mastra {@link Workspace} with per-request Databricks mounts.
887
888
  *
@@ -907,6 +908,16 @@ function createWorkspace(options = {}) {
907
908
  const { id, name } = resolveWorkspaceIdentity(options);
908
909
  const resolvers = buildMountResolvers(options);
909
910
  const skills = options.skills ?? (resolvers.length > 0 ? buildWorkspaceSkillsResolver(resolvers) : void 0);
911
+ log$8.debug("workspace:create", {
912
+ id,
913
+ name,
914
+ resolverCount: resolvers.length,
915
+ assistantSkills: options.assistantSkills !== false,
916
+ customMountResolvers: options.mounts?.length ?? 0,
917
+ customSkillsResolver: Boolean(options.skills),
918
+ checkSkillFileMtime: options.checkSkillFileMtime ?? options.assistantSkills !== false,
919
+ bm25: options.bm25 !== false
920
+ });
910
921
  return new Workspace({
911
922
  id,
912
923
  name,
@@ -943,18 +954,39 @@ function hasWorkspaceFileScope(requestContext) {
943
954
  function resolveAssistantSkillsMounts(context) {
944
955
  const mounts = {};
945
956
  const requestContext = context.requestContext;
946
- if (!shouldMountAssistantSkills(requestContext)) return {
947
- mounts,
948
- skillPaths: []
949
- };
950
- const client = requestContext.get(MASTRA_USER_KEY)?.executionContext.client;
951
- if (!client) return {
952
- mounts,
953
- skillPaths: []
954
- };
957
+ if (!shouldMountAssistantSkills(requestContext)) {
958
+ log$8.debug("assistant-skills:skipped", {
959
+ reason: !requestContext ? "no-request-context" : "missing-workspace-scope",
960
+ nodeEnv: process.env.NODE_ENV,
961
+ scopes: context.requestContext?.get(MASTRA_SCOPES_KEY)
962
+ });
963
+ return {
964
+ mounts,
965
+ skillPaths: []
966
+ };
967
+ }
968
+ const user = requestContext.get(MASTRA_USER_KEY);
969
+ const client = user?.executionContext.client;
970
+ if (!client) {
971
+ log$8.debug("assistant-skills:skipped", {
972
+ reason: "missing-obo-client",
973
+ userId: user?.id
974
+ });
975
+ return {
976
+ mounts,
977
+ skillPaths: []
978
+ };
979
+ }
955
980
  mounts[ASSISTANT_WORKSPACE_SKILLS_MOUNT] = readOnlyDatabricksFilesystem(client, ASSISTANT_SHARED_SKILLS_PATH);
956
981
  const email = resolveScopedEmail(requestContext);
957
982
  if (email) mounts[ASSISTANT_USER_SKILLS_MOUNT] = readOnlyDatabricksFilesystem(client, userAssistantSkillsPath(email));
983
+ log$8.debug("assistant-skills:mounted", {
984
+ sharedPath: ASSISTANT_SHARED_SKILLS_PATH,
985
+ sharedMount: ASSISTANT_WORKSPACE_SKILLS_MOUNT,
986
+ userMount: email ? ASSISTANT_USER_SKILLS_MOUNT : void 0,
987
+ userPath: email ? userAssistantSkillsPath(email) : void 0,
988
+ mountKeys: Object.keys(mounts)
989
+ });
958
990
  return {
959
991
  mounts,
960
992
  skillPaths: Object.keys(mounts)
@@ -980,6 +1012,12 @@ function buildMountResolvers(options) {
980
1012
  const { assistantSkills = true, mounts } = options;
981
1013
  if (assistantSkills) resolvers.push(resolveAssistantSkillsMounts);
982
1014
  if (mounts?.length) resolvers.push(...mounts);
1015
+ log$8.debug("mounts:resolvers", {
1016
+ assistantSkills,
1017
+ builtInResolver: assistantSkills,
1018
+ customResolverCount: mounts?.length ?? 0,
1019
+ totalResolverCount: resolvers.length
1020
+ });
983
1021
  return resolvers;
984
1022
  }
985
1023
  /**
@@ -1012,11 +1050,20 @@ function readOnlyDatabricksFilesystem(client, basePath) {
1012
1050
  async function resolveWorkspaceContribution(resolvers, context) {
1013
1051
  const mounts = {};
1014
1052
  const skillPaths = [];
1015
- for (const resolver of resolvers) {
1053
+ for (const [index, resolver] of resolvers.entries()) {
1016
1054
  const contribution = await resolver(context);
1055
+ log$8.debug("mounts:resolver", {
1056
+ index,
1057
+ mountKeys: Object.keys(contribution.mounts),
1058
+ skillPaths: contribution.skillPaths ?? []
1059
+ });
1017
1060
  Object.assign(mounts, contribution.mounts);
1018
1061
  if (contribution.skillPaths?.length) skillPaths.push(...contribution.skillPaths);
1019
1062
  }
1063
+ log$8.debug("mounts:merged", {
1064
+ mountKeys: Object.keys(mounts),
1065
+ skillPaths
1066
+ });
1020
1067
  return {
1021
1068
  mounts,
1022
1069
  skillPaths
@@ -1030,7 +1077,12 @@ async function resolveWorkspaceContribution(resolvers, context) {
1030
1077
  */
1031
1078
  async function resolveWorkspaceFilesystem(resolvers, context) {
1032
1079
  const { mounts } = await resolveWorkspaceContribution(resolvers, context);
1033
- if (Object.keys(mounts).length === 0) return emptyFilesystem();
1080
+ const mountKeys = Object.keys(mounts);
1081
+ if (mountKeys.length === 0) {
1082
+ log$8.debug("filesystem:empty", { hasRequestContext: Boolean(context.requestContext) });
1083
+ return emptyFilesystem();
1084
+ }
1085
+ log$8.debug("filesystem:composite", { mountKeys });
1034
1086
  return new CompositeFilesystem({ mounts });
1035
1087
  }
1036
1088
  /**
@@ -1040,6 +1092,7 @@ async function resolveWorkspaceFilesystem(resolvers, context) {
1040
1092
  function buildWorkspaceSkillsResolver(resolvers) {
1041
1093
  return async (context) => {
1042
1094
  const { skillPaths } = await resolveWorkspaceContribution(resolvers, context);
1095
+ log$8.debug("skills:resolved", { skillPaths });
1043
1096
  return skillPaths ?? [];
1044
1097
  };
1045
1098
  }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@dbx-tools/appkit-mastra",
3
- "version": "0.1.97",
3
+ "version": "0.1.98",
4
4
  "dependencies": {
5
5
  "@databricks/sdk-experimental": "^0.17.0",
6
- "@dbx-tools/appkit-mastra-shared": "0.1.97",
7
- "@dbx-tools/genie": "0.1.97",
8
- "@dbx-tools/genie-shared": "0.1.97",
9
- "@dbx-tools/model": "0.1.97",
10
- "@dbx-tools/shared": "0.1.97",
6
+ "@dbx-tools/appkit-mastra-shared": "0.1.98",
7
+ "@dbx-tools/genie": "0.1.98",
8
+ "@dbx-tools/genie-shared": "0.1.98",
9
+ "@dbx-tools/model": "0.1.98",
10
+ "@dbx-tools/shared": "0.1.98",
11
11
  "@mastra/ai-sdk": "^1.6.0",
12
12
  "@mastra/core": "^1.47.0",
13
13
  "@mastra/express": "^1.4.2",