You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Remove the filesystem graph entirely from platform-server. Teams service becomes the sole source of truth. No HybridGraphRepository, no FS storage. Remove SlackTrigger, NodeStateService, and GraphPersistController. Migrate variables to Teams RPCs. Add discover-tools endpoint.
Update graph-api.module.ts — Remove from controllers
Phase 7: Migrate GraphVariablesService to Teams RPCs
Rewrite graphVariables.service.ts — Replace GraphRepository dependency with TEAMS_GRPC_CLIENT; use Teams Variables RPCs for CRUD; keep PrismaService for local overrides (VariableLocal); remove name parameter from all methods
Update graphVariables.controller.ts — Remove 'main' args from service calls
Update reference-resolver.service.ts — Remove graphName parameter from resolveValue calls
Phase 8: Remove SlackTrigger
Delete src/nodes/slackTrigger/ directory
Update nodes.module.ts — Remove SlackTrigger from imports/providers/exports
features/graph/hooks/useGraphData.ts — Remove graph fetching/saving that uses fetchGraph/saveGraph
features/graph/hooks/useNodeTitleMap.ts — Replace fetchGraph() with Teams agents list API
features/secrets/hooks/useSecretsData.ts — Replace getFullGraph() with Teams entity scanning (list agents, tools, mcps from Teams API, scan configs for $secret())
pages/AgentsThreads.tsx — Replace getFullGraph() with Teams agents list for agentOptions
lib/graph/hooks.ts — Remove getNodeState/putNodeState usage; replace with discoverTools for MCP tool state
User Request
Remove the filesystem graph entirely from platform-server. Teams service becomes the sole source of truth. No
HybridGraphRepository, no FS storage. Remove SlackTrigger, NodeStateService, and GraphPersistController. Migrate variables to Teams RPCs. Add discover-tools endpoint.Specification (Full FS Graph Removal)
Phase 1: Proto + Client
buf generateto get latest proto with Variables + McpToolFilter from BSR (feat(teams): add variables and MCP tool filter api#25 merged)TeamsGrpcClient— Add Variable RPC methods:createVariable,getVariable,updateVariable,deleteVariable,listVariables,resolveVariableTeamsGraphSource.mapMcpConfig()— Maptool_filterfield toconfig.toolFilterPhase 2: GraphRepository Replacement
graph.repository.ts— Change abstract class: removeupsert(),upsertNodeState(),initIfNeeded(); replaceget(name)withload()returning non-nullPersistedGraphteamsGraph.repository.ts— ConcreteTeamsGraphRepository extends GraphRepositorywrappingTeamsGraphSource.load()→PersistedGraphgraph-domain.module.ts— ReplaceHybridGraphRepository/FsGraphRepositoryfactory withTeamsGraphRepository; remove unused imports (ConfigService, ModuleRef, TemplateRegistry from factory)Phase 3: Consumer Updates
liveGraph.manager.ts— Changethis.graphs.get('main')→this.graphs.load()memory.service.ts— Changethis.graphRepo.get('main')→this.graphRepo.load()Phase 4: Delete FS Graph Infrastructure
src/graph/fsGraph.repository.tssrc/graph/hybridGraph.repository.tssrc/graph/graphSchema.validator.tssrc/graph/yaml.util.tssrc/graph/index.ts— Remove deleted exports, addTeamsGraphRepositoryPhase 5: Remove NodeStateService
src/graph/nodeState.service.tsgraph.controller.ts— RemoveNodeStateServicedependency; removeGET/PUT nodes/:nodeId/stateendpoints; addPOST nodes/:nodeId/discover-toolsendpointlocalMcpServer.node.ts— RemoveNodeStateServiceusage; tool discovery = in-memory only (this.toolsCache); add publicdiscoverTools()method;enabledToolsfiltering uses in-memory state onlygraph-api.module.ts— RemoveNodeStateServicefrom providers/exportsPhase 6: Remove GraphPersistController + Endpoints
src/graph/controllers/graphPersist.controller.tsgraph-api.module.ts— Remove from controllersPhase 7: Migrate GraphVariablesService to Teams RPCs
graphVariables.service.ts— ReplaceGraphRepositorydependency withTEAMS_GRPC_CLIENT; use Teams Variables RPCs for CRUD; keepPrismaServicefor local overrides (VariableLocal); removenameparameter from all methodsgraphVariables.controller.ts— Remove'main'args from service callsreference-resolver.service.ts— RemovegraphNameparameter fromresolveValuecallsPhase 8: Remove SlackTrigger
src/nodes/slackTrigger/directorynodes.module.ts— RemoveSlackTriggerfrom imports/providers/exportstemplates.ts— RemoveSlackTriggerregistrationPhase 9: Cleanup
config.service.ts—graphRepoPath,graphLockTimeoutMsPersistedGraphUpsertRequest/Responsefromgraph.types.ts; removevariablesfromPersistedGraph__fixtures__/graph-migration/,tools/graph-ref-migrate/graph.utils.tscomment referencingHybridGraphRepositoryif anyPhase 10: UI Changes
api/modules/graph.ts— RemovesaveFullGraph,getFullGraph,putNodeState,getNodeState; adddiscoverTools(nodeId)features/graph/services/api.ts— RemovefetchGraph,saveGraph,getNodeState,putNodeStatefeatures/graph/hooks/useGraphData.ts— Remove graph fetching/saving that usesfetchGraph/saveGraphfeatures/graph/hooks/useNodeTitleMap.ts— ReplacefetchGraph()with Teams agents list APIfeatures/secrets/hooks/useSecretsData.ts— ReplacegetFullGraph()with Teams entity scanning (list agents, tools, mcps from Teams API, scan configs for$secret())pages/AgentsThreads.tsx— ReplacegetFullGraph()with Teams agents list foragentOptionslib/graph/hooks.ts— RemovegetNodeState/putNodeStateusage; replace withdiscoverToolsfor MCP tool statePhase 11: Test Updates
Delete:
__tests__/fsGraph.repository.yaml.test.ts__tests__/graph.fs.persistence.integration.test.ts__tests__/hybridGraph.repository.test.ts__tests__/nodes/slack-trigger.node.spec.ts__tests__/slack.config.schemas.test.ts__tests__/slack.pr.trigger.lifecycle.test.ts__tests__/slack.threading.integration.test.ts__tests__/slack.trigger.events.test.tsUpdate test files that mock
GraphRepository.get('main')→GraphRepository.load():GraphRepositoryNodeStateService— remove mocksKeep:
__tests__/teamsGraph.source.test.ts