Task Summary
Introduce the frontend orchestration service that sits between the upcoming migration-tool UI and the lower layers — the LLM client (migration-tool-llm-client) and the backend microservice (migration-tool-backend-notebook-migration-service). Centralises model lookup, the LLM-conversion lifecycle, the HTTP calls into the notebook-migration microservice, and the in-memory cell↔operator mapping cache.
Scope
Adds two files under frontend/src/app/workspace/service/notebook-migration/:
notebook-migration.service.ts (~195 lines) — NotebookMigrationService, an Angular providedIn: "root" service exposing:
getAvailableModels() (GETs the LiteLLM proxy's /models)
sendToAIGenerateWorkflow(notebook, modelType, apiKey) (drives the full NotebookMigrationLLM lifecycle — initialize → verify → convert → close — and returns the resulting workflow + mapping content)
sendNotebookToJupyter(notebook), getJupyterURL(), getJupyterIframeURL() (HTTP calls into the notebook-migration microservice)
storeNotebookAndMapping(wid, vid, mapping, notebook) (microservice persistence call)
- a small in-memory mapping cache (
hasMapping, getMapping, setMapping, deleteMapping) keyed by
mapping_wid_<workflowId>
notebook-migration.service.spec.ts (~187 lines)
getAvailableModels (success + error → empty array)
sendNotebookToJupyter (success + error), both Jupyter URL getters (success + null on failure)
- mapping cache (set/get + delete)
storeNotebookAndMapping
Task Type
Task Summary
Introduce the frontend orchestration service that sits between the upcoming migration-tool UI and the lower layers — the LLM client (
migration-tool-llm-client) and the backend microservice (migration-tool-backend-notebook-migration-service). Centralises model lookup, the LLM-conversion lifecycle, the HTTP calls into the notebook-migration microservice, and the in-memory cell↔operator mapping cache.Scope
Adds two files under
frontend/src/app/workspace/service/notebook-migration/:notebook-migration.service.ts(~195 lines) —NotebookMigrationService, an AngularprovidedIn: "root"service exposing:getAvailableModels()(GETs the LiteLLM proxy's/models)sendToAIGenerateWorkflow(notebook, modelType, apiKey)(drives the fullNotebookMigrationLLMlifecycle — initialize → verify → convert → close — and returns the resulting workflow + mapping content)sendNotebookToJupyter(notebook),getJupyterURL(),getJupyterIframeURL()(HTTP calls into the notebook-migration microservice)storeNotebookAndMapping(wid, vid, mapping, notebook)(microservice persistence call)hasMapping,getMapping,setMapping,deleteMapping) keyed bymapping_wid_<workflowId>notebook-migration.service.spec.ts(~187 lines)getAvailableModels(success + error → empty array)sendNotebookToJupyter(success + error), both Jupyter URL getters (success + null on failure)storeNotebookAndMappingTask Type