@mastra/editor 0.11.2-alpha.1 → 0.12.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.
package/dist/index.d.cts CHANGED
@@ -4,7 +4,7 @@ import { GetByIdOptions, IEditorFavoritesNamespace, EditorFavoriteTargetInput, E
4
4
  export { BrowserProvider, MastraEditorConfig } from '@mastra/core/editor';
5
5
  import { IMastraLogger } from '@mastra/core/logger';
6
6
  import { ProcessorProvider } from '@mastra/core/processor-provider';
7
- import { StorageCreateAgentInput, StorageUpdateAgentInput, StorageListAgentsInput, StorageListAgentsOutput, StorageListAgentsResolvedOutput, StorageResolvedAgentType, StorageCreateMCPClientInput, StorageUpdateMCPClientInput, StorageListMCPClientsInput, StorageListMCPClientsOutput, StorageListMCPClientsResolvedOutput, StorageResolvedMCPClientType, StorageMCPServerConfig, StorageCreateMCPServerInput, StorageUpdateMCPServerInput, StorageListMCPServersInput, StorageListMCPServersOutput, StorageListMCPServersResolvedOutput, StorageResolvedMCPServerType, StorageCreatePromptBlockInput, StorageUpdatePromptBlockInput, StorageListPromptBlocksInput, StorageListPromptBlocksOutput, StorageListPromptBlocksResolvedOutput, StorageResolvedPromptBlockType, AgentInstructionBlock, StorageCreateScorerDefinitionInput, StorageUpdateScorerDefinitionInput, StorageListScorerDefinitionsInput, StorageListScorerDefinitionsOutput, StorageListScorerDefinitionsResolvedOutput, StorageResolvedScorerDefinitionType, StorageCreateWorkspaceInput, StorageUpdateWorkspaceInput, StorageListWorkspacesInput, StorageListWorkspacesOutput, StorageListWorkspacesResolvedOutput, StorageResolvedWorkspaceType, StorageWorkspaceSnapshotType, StorageCreateSkillInput, StorageUpdateSkillInput, StorageListSkillsInput, StorageListSkillsOutput, StorageListSkillsResolvedOutput, StorageResolvedSkillType, RuleGroup, PromptBlocksStorage, BlobStore } from '@mastra/core/storage';
7
+ import { StorageCreateAgentInput, StorageUpdateAgentInput, StorageListAgentsInput, StorageListAgentsOutput, StorageListAgentsResolvedOutput, StorageResolvedAgentType, StorageCreateMCPClientInput, StorageUpdateMCPClientInput, StorageListMCPClientsInput, StorageListMCPClientsOutput, StorageListMCPClientsResolvedOutput, StorageResolvedMCPClientType, StorageMCPServerConfig, StorageCreateMCPServerInput, StorageUpdateMCPServerInput, StorageListMCPServersInput, StorageListMCPServersOutput, StorageListMCPServersResolvedOutput, StorageResolvedMCPServerType, StorageCreatePromptBlockInput, StorageUpdatePromptBlockInput, StorageListPromptBlocksInput, StorageListPromptBlocksOutput, StorageListPromptBlocksResolvedOutput, StorageResolvedPromptBlockType, AgentInstructionBlock, StorageCreateScorerDefinitionInput, StorageUpdateScorerDefinitionInput, StorageListScorerDefinitionsInput, StorageListScorerDefinitionsOutput, StorageListScorerDefinitionsResolvedOutput, StorageResolvedScorerDefinitionType, StorageCreateWorkspaceInput, StorageUpdateWorkspaceInput, StorageListWorkspacesInput, StorageListWorkspacesOutput, StorageListWorkspacesResolvedOutput, StorageResolvedWorkspaceType, StorageWorkspaceSnapshotType, StorageCreateSkillInput, StorageUpdateSkillInput, StorageListSkillsInput, StorageListSkillsOutput, StorageListSkillsResolvedOutput, StorageResolvedSkillType, RuleGroup, PromptBlocksStorage, SourceControlProvider, BlobStore } from '@mastra/core/storage';
8
8
  import { ToolProvider } from '@mastra/core/tool-provider';
9
9
  import { Agent } from '@mastra/core/agent';
10
10
  import { RequestContext } from '@mastra/core/request-context';
@@ -101,6 +101,7 @@ declare class EditorAgentNamespace extends CrudEditorNamespace<StorageCreateAgen
101
101
  * Also ensures the referenced workspace (if any) is persisted as a stored workspace.
102
102
  */
103
103
  create(input: StorageCreateAgentInput): Promise<Agent>;
104
+ private getCodeDefinedAgent;
104
105
  /**
105
106
  * Ensure a workspace reference is persisted in the DB.
106
107
  *
@@ -445,6 +446,7 @@ declare class MastraEditor implements IMastraEditor {
445
446
  private __processorProviders;
446
447
  private __source?;
447
448
  private __codePath;
449
+ private __sourceControlProvider?;
448
450
  private readonly __builderConfig?;
449
451
  private __builderInstance?;
450
452
  private __builderResolved;
@@ -526,6 +528,8 @@ declare class MastraEditor implements IMastraEditor {
526
528
  private assertAgentBuilderLicensed;
527
529
  /** Returns the editor's configured source, or undefined if unset. */
528
530
  getSource(): 'code' | 'db' | undefined;
531
+ /** Returns the configured source control provider, if any. */
532
+ getSourceControlProvider(): SourceControlProvider | undefined;
529
533
  /** Registered tool providers */
530
534
  getToolProvider(id: string): ToolProvider | undefined;
531
535
  /**
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import { GetByIdOptions, IEditorFavoritesNamespace, EditorFavoriteTargetInput, E
4
4
  export { BrowserProvider, MastraEditorConfig } from '@mastra/core/editor';
5
5
  import { IMastraLogger } from '@mastra/core/logger';
6
6
  import { ProcessorProvider } from '@mastra/core/processor-provider';
7
- import { StorageCreateAgentInput, StorageUpdateAgentInput, StorageListAgentsInput, StorageListAgentsOutput, StorageListAgentsResolvedOutput, StorageResolvedAgentType, StorageCreateMCPClientInput, StorageUpdateMCPClientInput, StorageListMCPClientsInput, StorageListMCPClientsOutput, StorageListMCPClientsResolvedOutput, StorageResolvedMCPClientType, StorageMCPServerConfig, StorageCreateMCPServerInput, StorageUpdateMCPServerInput, StorageListMCPServersInput, StorageListMCPServersOutput, StorageListMCPServersResolvedOutput, StorageResolvedMCPServerType, StorageCreatePromptBlockInput, StorageUpdatePromptBlockInput, StorageListPromptBlocksInput, StorageListPromptBlocksOutput, StorageListPromptBlocksResolvedOutput, StorageResolvedPromptBlockType, AgentInstructionBlock, StorageCreateScorerDefinitionInput, StorageUpdateScorerDefinitionInput, StorageListScorerDefinitionsInput, StorageListScorerDefinitionsOutput, StorageListScorerDefinitionsResolvedOutput, StorageResolvedScorerDefinitionType, StorageCreateWorkspaceInput, StorageUpdateWorkspaceInput, StorageListWorkspacesInput, StorageListWorkspacesOutput, StorageListWorkspacesResolvedOutput, StorageResolvedWorkspaceType, StorageWorkspaceSnapshotType, StorageCreateSkillInput, StorageUpdateSkillInput, StorageListSkillsInput, StorageListSkillsOutput, StorageListSkillsResolvedOutput, StorageResolvedSkillType, RuleGroup, PromptBlocksStorage, BlobStore } from '@mastra/core/storage';
7
+ import { StorageCreateAgentInput, StorageUpdateAgentInput, StorageListAgentsInput, StorageListAgentsOutput, StorageListAgentsResolvedOutput, StorageResolvedAgentType, StorageCreateMCPClientInput, StorageUpdateMCPClientInput, StorageListMCPClientsInput, StorageListMCPClientsOutput, StorageListMCPClientsResolvedOutput, StorageResolvedMCPClientType, StorageMCPServerConfig, StorageCreateMCPServerInput, StorageUpdateMCPServerInput, StorageListMCPServersInput, StorageListMCPServersOutput, StorageListMCPServersResolvedOutput, StorageResolvedMCPServerType, StorageCreatePromptBlockInput, StorageUpdatePromptBlockInput, StorageListPromptBlocksInput, StorageListPromptBlocksOutput, StorageListPromptBlocksResolvedOutput, StorageResolvedPromptBlockType, AgentInstructionBlock, StorageCreateScorerDefinitionInput, StorageUpdateScorerDefinitionInput, StorageListScorerDefinitionsInput, StorageListScorerDefinitionsOutput, StorageListScorerDefinitionsResolvedOutput, StorageResolvedScorerDefinitionType, StorageCreateWorkspaceInput, StorageUpdateWorkspaceInput, StorageListWorkspacesInput, StorageListWorkspacesOutput, StorageListWorkspacesResolvedOutput, StorageResolvedWorkspaceType, StorageWorkspaceSnapshotType, StorageCreateSkillInput, StorageUpdateSkillInput, StorageListSkillsInput, StorageListSkillsOutput, StorageListSkillsResolvedOutput, StorageResolvedSkillType, RuleGroup, PromptBlocksStorage, SourceControlProvider, BlobStore } from '@mastra/core/storage';
8
8
  import { ToolProvider } from '@mastra/core/tool-provider';
9
9
  import { Agent } from '@mastra/core/agent';
10
10
  import { RequestContext } from '@mastra/core/request-context';
@@ -101,6 +101,7 @@ declare class EditorAgentNamespace extends CrudEditorNamespace<StorageCreateAgen
101
101
  * Also ensures the referenced workspace (if any) is persisted as a stored workspace.
102
102
  */
103
103
  create(input: StorageCreateAgentInput): Promise<Agent>;
104
+ private getCodeDefinedAgent;
104
105
  /**
105
106
  * Ensure a workspace reference is persisted in the DB.
106
107
  *
@@ -445,6 +446,7 @@ declare class MastraEditor implements IMastraEditor {
445
446
  private __processorProviders;
446
447
  private __source?;
447
448
  private __codePath;
449
+ private __sourceControlProvider?;
448
450
  private readonly __builderConfig?;
449
451
  private __builderInstance?;
450
452
  private __builderResolved;
@@ -526,6 +528,8 @@ declare class MastraEditor implements IMastraEditor {
526
528
  private assertAgentBuilderLicensed;
527
529
  /** Returns the editor's configured source, or undefined if unset. */
528
530
  getSource(): 'code' | 'db' | undefined;
531
+ /** Returns the configured source control provider, if any. */
532
+ getSourceControlProvider(): SourceControlProvider | undefined;
529
533
  /** Registered tool providers */
530
534
  getToolProvider(id: string): ToolProvider | undefined;
531
535
  /**
package/dist/index.js CHANGED
@@ -1,6 +1,11 @@
1
1
  // src/index.ts
2
2
  import { BUILT_IN_PROCESSOR_PROVIDERS } from "@mastra/core/processor-provider";
3
- import { FilesystemStore, MastraCompositeStore } from "@mastra/core/storage";
3
+ import {
4
+ createGitHubSourceControlProviderFromEnv,
5
+ FilesystemStore,
6
+ MastraCompositeStore,
7
+ SourceAgentsSourceControl
8
+ } from "@mastra/core/storage";
4
9
  import { UnknownToolProviderError } from "@mastra/core/tool-provider";
5
10
 
6
11
  // src/namespaces/base.ts
@@ -605,8 +610,24 @@ var EditorAgentNamespace = class extends CrudEditorNamespace {
605
610
  finalInput = applyBuilderDefaults(input, agentConfig);
606
611
  }
607
612
  await this.ensureStoredWorkspace(finalInput.workspace);
613
+ const existingCodeAgent = this.getCodeDefinedAgent(finalInput.id);
614
+ if (existingCodeAgent) {
615
+ const adapter = await this.getStorageAdapter();
616
+ await adapter.create(finalInput);
617
+ this._cache.set(finalInput.id, existingCodeAgent);
618
+ return existingCodeAgent;
619
+ }
608
620
  return super.create(finalInput);
609
621
  }
622
+ getCodeDefinedAgent(id) {
623
+ let agent;
624
+ try {
625
+ agent = this.mastra?.getAgentById(id);
626
+ } catch {
627
+ return void 0;
628
+ }
629
+ return agent?.source === "code" ? agent : void 0;
630
+ }
610
631
  /**
611
632
  * Ensure a workspace reference is persisted in the DB.
612
633
  *
@@ -1098,14 +1119,7 @@ var EditorAgentNamespace = class extends CrudEditorNamespace {
1098
1119
  browser,
1099
1120
  ...skillsFormat && { skillsFormat }
1100
1121
  });
1101
- const existingCodeAgent = (() => {
1102
- try {
1103
- return this.mastra?.getAgentById(storedAgent.id);
1104
- } catch {
1105
- return void 0;
1106
- }
1107
- })();
1108
- if (!existingCodeAgent || existingCodeAgent.source !== "code") {
1122
+ if (!this.getCodeDefinedAgent(storedAgent.id)) {
1109
1123
  this.mastra?.addAgent(agent, storedAgent.id, { source: "stored" });
1110
1124
  }
1111
1125
  this.logger?.debug(`[createAgentFromStoredConfig] Successfully created agent "${storedAgent.id}"`);
@@ -2254,6 +2268,7 @@ var MastraEditor = class {
2254
2268
  this.__processorProviders = { ...BUILT_IN_PROCESSOR_PROVIDERS, ...config?.processorProviders };
2255
2269
  this.__source = config?.source;
2256
2270
  this.__codePath = config?.codePath ?? "./mastra/editor";
2271
+ this.__sourceControlProvider = config?.sourceControlProvider ?? createGitHubSourceControlProviderFromEnv(process.env, { pathPrefix: this.__codePath });
2257
2272
  this.__filesystems = /* @__PURE__ */ new Map();
2258
2273
  this.__filesystems.set(localFilesystemProvider.id, localFilesystemProvider);
2259
2274
  for (const [id, provider] of Object.entries(config?.filesystems ?? {})) {
@@ -2292,18 +2307,33 @@ var MastraEditor = class {
2292
2307
  this.__logger = mastra.getLogger();
2293
2308
  }
2294
2309
  if (this.__source === "code") {
2295
- const filesystemStore = new FilesystemStore({ dir: this.__codePath });
2296
2310
  const existingStorage = mastra.getStorage();
2297
- if (existingStorage) {
2311
+ if (this.__sourceControlProvider) {
2312
+ const sourceAgentsStore = new SourceAgentsSourceControl({
2313
+ provider: this.__sourceControlProvider
2314
+ });
2315
+ const filesystemStore = new FilesystemStore({ dir: this.__codePath });
2298
2316
  mastra.setStorage(
2299
2317
  new MastraCompositeStore({
2300
- id: `${existingStorage.id}-with-editor-filesystem`,
2301
- default: existingStorage,
2302
- editor: filesystemStore
2318
+ id: `${existingStorage?.id ?? "mastra"}-with-editor-source-control`,
2319
+ ...existingStorage ? { default: existingStorage } : {},
2320
+ editor: filesystemStore,
2321
+ domains: { agents: sourceAgentsStore }
2303
2322
  })
2304
2323
  );
2305
2324
  } else {
2306
- mastra.setStorage(filesystemStore);
2325
+ const filesystemStore = new FilesystemStore({ dir: this.__codePath });
2326
+ if (existingStorage) {
2327
+ mastra.setStorage(
2328
+ new MastraCompositeStore({
2329
+ id: `${existingStorage.id}-with-editor-filesystem`,
2330
+ default: existingStorage,
2331
+ editor: filesystemStore
2332
+ })
2333
+ );
2334
+ } else {
2335
+ mastra.setStorage(filesystemStore);
2336
+ }
2307
2337
  }
2308
2338
  }
2309
2339
  this.ensureBuilderWorkspaces().then(() => this.reconcileBuilderWorkspaces()).catch((err) => {
@@ -2458,6 +2488,10 @@ var MastraEditor = class {
2458
2488
  getSource() {
2459
2489
  return this.__source;
2460
2490
  }
2491
+ /** Returns the configured source control provider, if any. */
2492
+ getSourceControlProvider() {
2493
+ return this.__sourceControlProvider;
2494
+ }
2461
2495
  /** Registered tool providers */
2462
2496
  getToolProvider(id) {
2463
2497
  return this.__toolProviders[id];