This ticket covers the initial setup and scaffolding for the new SyncService, which will be the heart of the bi-directional issue synchronization mechanism. This involves creating the service class itself, exposing it as a new tool, and defining the structure for its state management.
Acceptance Criteria
- A new file,
ai/mcp/server/github-workflow/services/SyncService.mjs, is created.
- The file defines a new class,
SyncService, that extends Neo.core.Base and is configured as a singleton.
- A placeholder method,
runFullSync(), is created within the SyncService.
- The
openapi.yaml for the github-workflow server is updated to include a new sync_issues tool that calls this service.
- The
serviceMapping in ai/mcp/server/github-workflow/services/toolService.mjs is updated to map the sync_issues operationId to SyncService.runFullSync.
- The
SyncService includes #loadMetadata() and #saveMetadata() methods that read from and write to a new .github/.sync-metadata.json file. The initial structure of this JSON file should be defined (e.g., { "last_sync": null, "issues": {} }).
Benefits
- Establishes the core architectural component for the sync process.
- Creates the necessary API endpoint for agents to trigger the synchronization.
- Provides the foundation for stateful, delta-based updates.
This ticket covers the initial setup and scaffolding for the new
SyncService, which will be the heart of the bi-directional issue synchronization mechanism. This involves creating the service class itself, exposing it as a new tool, and defining the structure for its state management.Acceptance Criteria
ai/mcp/server/github-workflow/services/SyncService.mjs, is created.SyncService, that extendsNeo.core.Baseand is configured as asingleton.runFullSync(), is created within theSyncService.openapi.yamlfor thegithub-workflowserver is updated to include a newsync_issuestool that calls this service.serviceMappinginai/mcp/server/github-workflow/services/toolService.mjsis updated to map thesync_issuesoperationId toSyncService.runFullSync.SyncServiceincludes#loadMetadata()and#saveMetadata()methods that read from and write to a new.github/.sync-metadata.jsonfile. The initial structure of this JSON file should be defined (e.g.,{ "last_sync": null, "issues": {} }).Benefits