# ivanbbaev/syncrona architecture

> Architecture diagram of the GitHub repository ivanbbaev/syncrona, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ivanbbaev/syncrona
- Repository: https://github.com/ivanbbaev/syncrona

## Overview

SyncroNow AI is a ServiceNow scoped-application development toolkit: its CLI pulls editable records into a project, supports local build tooling, and pushes changes back. Separate product surfaces provide an instance mirror and an MCP server for AI-assisted ServiceNow work, including analysis and Jira tools. The graph combines documented capabilities with sampled call evidence; unsampled subsystem wiring is intentionally kept broad or omitted.

Main entry points: [`packages/core/src/mirrorCommand.ts`](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/mirrorCommand.ts) (Mirror command), [`packages/core/src/PluginManager.ts`](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/PluginManager.ts) (Plugin manager), [`packages/mcp-server/src/toolService.ts`](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/toolService.ts) (Tool service), [`packages/core/src/snClient.ts`](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/snClient.ts) (ServiceNow client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI sync"]
  node_cli["CLI commands<br/>[index.ts]"]
  node_download["Download pipeline"]
  node_push["Push pipeline<br/>[pushPipeline.ts]"]
  node_project["Project files<br/>[FileUtils.ts]"]
end

subgraph group_mirror["Instance mirror"]
  node_mirrorcmd["Mirror command<br/>[mirrorCommand.ts]"]
  node_mirrorpipeline["Mirror pipeline<br/>[pipeline.ts]"]
  node_catalog["Table catalog<br/>[catalogService.ts]"]
  node_mirrorhttp["Mirror transport<br/>[client.ts]"]
  node_mirrorwriter["Mirror writer<br/>[writer.ts]"]
  node_coverage["Coverage report<br/>[coverageReport.ts]"]
  node_mirrorstore["Mirror files<br/>[fs.ts]"]
end

subgraph group_mcp["MCP tools"]
  node_mcpentry["MCP server<br/>[index.ts]"]
  node_dispatch["Tool dispatch<br/>[toolDispatch.ts]"]
  node_toolservice["Tool service<br/>[toolService.ts]"]
  node_session["Session tools<br/>[sessionHandlers.ts]"]
  node_analysis["Analysis tools<br/>[analysis.ts]"]
  node_sncore["MCP ServiceNow<br/>[servicenowCore.ts]"]
  node_jira["Jira tools"]
end

subgraph group_shared["Shared integrations"]
  node_snclient["ServiceNow client<br/>[snClient.ts]"]
  node_instance[("ServiceNow instance")]
  node_jiraext["Jira"]
end

subgraph group_plugins["Build plugins"]
  node_pluginmanager["Plugin manager<br/>[PluginManager.ts]"]
  node_babel["Babel tooling<br/>[index.ts]"]
  node_preset["ServiceNow preset<br/>[index.ts]"]
  node_typescript["TypeScript tooling<br/>[index.ts]"]
  node_webpack["Webpack tooling<br/>[index.ts]"]
  node_sass["Sass tooling<br/>[index.ts]"]
end

node_developer(("Developer"))
node_mcpuser(("MCP client"))

node_developer -->|"runs commands"| node_cli
node_cli -->|"downloads records"| node_download
node_download -->|"fetches records"| node_snclient
node_snclient -->|"requests data"| node_instance
node_download -->|"writes files"| node_project
node_developer -->|"edits code"| node_project
node_cli -->|"pushes changes"| node_push
node_push -->|"builds files"| node_pluginmanager
node_pluginmanager -.->|"runs plugin"| node_babel
node_pluginmanager -.->|"runs plugin"| node_preset
node_pluginmanager -.->|"runs plugin"| node_typescript
node_pluginmanager -.->|"runs plugin"| node_webpack
node_pluginmanager -.->|"runs plugin"| node_sass
node_push -->|"updates records"| node_snclient
node_snclient -->|"writes changes"| node_instance
node_developer -->|"runs mirror"| node_mirrorcmd
node_mirrorcmd -->|"builds catalog"| node_catalog
node_catalog -->|"reads metadata"| node_mirrorhttp
node_mirrorcmd -->|"fetches records"| node_mirrorhttp
node_mirrorhttp -->|"requests data"| node_instance
node_mirrorcmd -->|"serializes rows"| node_mirrorpipeline
node_mirrorcmd -->|"writes mirror"| node_mirrorwriter
node_mirrorwriter -->|"stores files"| node_mirrorstore
node_mirrorcmd -->|"generates report"| node_coverage
node_mcpuser -->|"sends tools"| node_mcpentry
node_mcpentry -->|"dispatches calls"| node_dispatch
node_dispatch -->|"routes tools"| node_toolservice
node_toolservice -->|"handles session"| node_session
node_toolservice -->|"handles analysis"| node_analysis
node_toolservice -->|"calls ServiceNow"| node_sncore
node_sncore -->|"requests data"| node_instance
node_toolservice -->|"routes Jira tools"| node_jira
node_jira -->|"reads issues"| node_jiraext

click node_cli "https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/index.ts"
click node_download "https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/downloadPipeline.ts"
click node_push "https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/pushPipeline.ts"
click node_snclient "https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/snClient.ts"
click node_project "https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/FileUtils.ts"
click node_pluginmanager "https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/PluginManager.ts"
click node_babel "https://github.com/ivanbbaev/syncrona/blob/main/packages/babel-plugin/src/index.ts"
click node_preset "https://github.com/ivanbbaev/syncrona/blob/main/packages/babel-preset-servicenow/src/index.ts"
click node_typescript "https://github.com/ivanbbaev/syncrona/blob/main/packages/typescript-plugin/src/index.ts"
click node_webpack "https://github.com/ivanbbaev/syncrona/blob/main/packages/webpack-plugin/src/index.ts"
click node_sass "https://github.com/ivanbbaev/syncrona/blob/main/packages/sass-plugin/src/index.ts"
click node_mirrorcmd "https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/mirrorCommand.ts"
click node_mirrorpipeline "https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/pipeline.ts"
click node_catalog "https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/catalog/catalogService.ts"
click node_mirrorhttp "https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/http/client.ts"
click node_mirrorwriter "https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/write/writer.ts"
click node_coverage "https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/report/coverageReport.ts"
click node_mirrorstore "https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/write/fs.ts"
click node_mcpentry "https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/index.ts"
click node_dispatch "https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/toolDispatch.ts"
click node_toolservice "https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/toolService.ts"
click node_session "https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/handlers/sessionHandlers.ts"
click node_analysis "https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/analysis.ts"
click node_sncore "https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/servicenowCore.ts"
click node_jira "https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/handlers/jiraToolHandlers.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_download,node_push,node_project,node_mcpuser toneBlue
class node_mirrorcmd,node_mirrorpipeline,node_catalog,node_mirrorhttp,node_mirrorwriter,node_coverage,node_mirrorstore toneAmber
class node_mcpentry,node_dispatch,node_toolservice,node_session,node_analysis,node_sncore,node_jira toneMint
class node_snclient,node_instance,node_jiraext toneRose
class node_pluginmanager,node_babel,node_preset,node_typescript,node_webpack,node_sass,node_developer toneIndigo
```

## Components

### CLI sync

- [CLI commands](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/index.ts): `packages/core/src/index.ts`
- [Download pipeline](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/downloadPipeline.ts): `packages/core/src/downloadPipeline.ts`
- [Push pipeline](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/pushPipeline.ts): `packages/core/src/pushPipeline.ts`
- [Project files](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/FileUtils.ts): `packages/core/src/FileUtils.ts`

### Instance mirror

- [Mirror command](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/mirrorCommand.ts): `packages/core/src/mirrorCommand.ts`
- [Mirror pipeline](https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/pipeline.ts): `packages/mirror/src/pipeline.ts`
- [Table catalog](https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/catalog/catalogService.ts): `packages/mirror/src/catalog/catalogService.ts`
- [Mirror transport](https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/http/client.ts): `packages/mirror/src/http/client.ts`
- [Mirror writer](https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/write/writer.ts): `packages/mirror/src/write/writer.ts`
- [Coverage report](https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/report/coverageReport.ts): `packages/mirror/src/report/coverageReport.ts`
- [Mirror files](https://github.com/ivanbbaev/syncrona/blob/main/packages/mirror/src/write/fs.ts): `packages/mirror/src/write/fs.ts`

### MCP tools

- [MCP server](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/index.ts): `packages/mcp-server/src/index.ts`
- [Tool dispatch](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/toolDispatch.ts): `packages/mcp-server/src/toolDispatch.ts`
- [Tool service](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/toolService.ts): `packages/mcp-server/src/toolService.ts`
- [Session tools](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/handlers/sessionHandlers.ts): `packages/mcp-server/src/handlers/sessionHandlers.ts`
- [Analysis tools](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/analysis.ts): `packages/mcp-server/src/analysis.ts`
- [MCP ServiceNow](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/servicenowCore.ts): `packages/mcp-server/src/servicenowCore.ts`
- [Jira tools](https://github.com/ivanbbaev/syncrona/blob/main/packages/mcp-server/src/handlers/jiraToolHandlers.ts): `packages/mcp-server/src/handlers/jiraToolHandlers.ts`

### Shared integrations

- [ServiceNow client](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/snClient.ts): `packages/core/src/snClient.ts`
- **ServiceNow instance**
- **Jira**

### Build plugins

- [Plugin manager](https://github.com/ivanbbaev/syncrona/blob/main/packages/core/src/PluginManager.ts): `packages/core/src/PluginManager.ts`
- [Babel tooling](https://github.com/ivanbbaev/syncrona/blob/main/packages/babel-plugin/src/index.ts): `packages/babel-plugin/src/index.ts`
- [ServiceNow preset](https://github.com/ivanbbaev/syncrona/blob/main/packages/babel-preset-servicenow/src/index.ts): `packages/babel-preset-servicenow/src/index.ts`
- [TypeScript tooling](https://github.com/ivanbbaev/syncrona/blob/main/packages/typescript-plugin/src/index.ts): `packages/typescript-plugin/src/index.ts`
- [Webpack tooling](https://github.com/ivanbbaev/syncrona/blob/main/packages/webpack-plugin/src/index.ts): `packages/webpack-plugin/src/index.ts`
- [Sass tooling](https://github.com/ivanbbaev/syncrona/blob/main/packages/sass-plugin/src/index.ts): `packages/sass-plugin/src/index.ts`

### Other components

- **Developer**
- **MCP client**

## Connections

- Developer → CLI commands: runs commands
- CLI commands → Download pipeline: downloads records
- Download pipeline → ServiceNow client: fetches records
- ServiceNow client → ServiceNow instance: requests data
- Download pipeline → Project files: writes files
- Developer → Project files: edits code
- CLI commands → Push pipeline: pushes changes
- Push pipeline → Plugin manager: builds files
- Plugin manager → Babel tooling: runs plugin
- Plugin manager → ServiceNow preset: runs plugin
- Plugin manager → TypeScript tooling: runs plugin
- Plugin manager → Webpack tooling: runs plugin
- Plugin manager → Sass tooling: runs plugin
- Push pipeline → ServiceNow client: updates records
- ServiceNow client → ServiceNow instance: writes changes
- Developer → Mirror command: runs mirror
- Mirror command → Table catalog: builds catalog
- Table catalog → Mirror transport: reads metadata
- Mirror command → Mirror transport: fetches records
- Mirror transport → ServiceNow instance: requests data
- Mirror command → Mirror pipeline: serializes rows
- Mirror command → Mirror writer: writes mirror
- Mirror writer → Mirror files: stores files
- Mirror command → Coverage report: generates report
- MCP client → MCP server: sends tools
- MCP server → Tool dispatch: dispatches calls
- Tool dispatch → Tool service: routes tools
- Tool service → Session tools: handles session
- Tool service → Analysis tools: handles analysis
- Tool service → MCP ServiceNow: calls ServiceNow
- MCP ServiceNow → ServiceNow instance: requests data
- Tool service → Jira tools: routes Jira tools
- Jira tools → Jira: reads issues
