From 3f903a7a707d393415edada3b8fe91059275e654 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Mon, 6 Apr 2026 11:12:24 -0700 Subject: [PATCH] docs: mark 7 open review findings as resolved in SMART_ACTIONS_ROADMAP - #8 (embeddings): @bytelyst/llm embed() already implemented in all providers - #9 (voice transcription): POST /api/transcribe added to extraction-service - #10 (URL-extract phase): already implemented in Phase 1 - #11 (webhook container): note_prompt_webhooks already in cosmos-init.ts - #12 (LLM factory vs config): clarified, no conflict - #13 (streaming): chatCompletionStream() already in OpenAI/Azure/Mock - #14 (CopilotAction expansion): fix-rewrite, change-tone, continue, explain added All 18 findings now resolved or noted. Zero open items remain. --- docs/SMART_ACTIONS_ROADMAP.md | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/SMART_ACTIONS_ROADMAP.md b/docs/SMART_ACTIONS_ROADMAP.md index 5599b3a..316fcbd 100644 --- a/docs/SMART_ACTIONS_ROADMAP.md +++ b/docs/SMART_ACTIONS_ROADMAP.md @@ -1369,17 +1369,14 @@ Systematic code-level audit of this roadmap against the actual NoteLett and comm - **NoteLett config.ts** — validates env at startup for fail-fast **Clarification:** Both are correct. Config.ts validates upfront, but the LLM package uses its own env reads. No code conflict, but implementers should know the LLM package ignores NoteLett's parsed `config` object. -### Finding 13 — OPEN: `OpenAIProvider` has no `chatCompletionStream` implementation +### Finding 13 — RESOLVED: `chatCompletionStream()` now implemented in all providers **Severity:** Medium — F3 (Continue Writing) depends on streaming -**Source:** `packages/llm/src/providers/openai.ts` — the class implements `LLMProvider` but does NOT implement the optional `chatCompletionStream?()` method. Only `chatCompletion()` is implemented. -**Impact:** Phase 0 §0.5 says "Ensure `chatCompletionStream()` works with multipart content" — but it doesn't exist yet at all. -**Fix needed:** Phase 0 must IMPLEMENT `chatCompletionStream()` in both `OpenAIProvider` and `AzureOpenAIProvider` (using SSE from OpenAI's streaming API), not just "ensure" it works. This is more work than described. +**Source:** `packages/llm/src/providers/openai.ts`, `azure-openai.ts`, `mock.ts` +**Resolution:** `chatCompletionStream()` is fully implemented in OpenAI (SSE parsing, buffer handling, `[DONE]` sentinel), Azure OpenAI (same pattern), and Mock (word-by-word simulation). 3 streaming tests in `llm.test.ts`. No further work needed. -### Finding 14 — OPEN: Existing `CopilotAction` type union in backend needs expansion +### Finding 14 — RESOLVED: CopilotAction union expanded **Severity:** Medium — F1/F2 require new action types -**Source:** `backend/src/lib/copilot-transform.ts` line 3: `export type CopilotAction = 'shorten' | 'expand' | 'bulletize' | 'grammar';` -**Impact:** §1.10 says "Add `rewriteText(text, style)` for F1/F2" but doesn't mention expanding the `CopilotAction` type union. The `grammar` action should be replaced with `'fix-rewrite'`, and `'change-tone'` added. The notes route Zod schema (`CopilotBodySchema`) in `notes/routes.ts` also validates against this union and must be updated. -**Fix needed:** During Phase 1, expand to `'shorten' | 'expand' | 'bulletize' | 'fix-rewrite' | 'change-tone'`. Keep `'grammar'` as a deprecated alias for backward compatibility. +**Resolution:** `CopilotAction` expanded to include `'fix-rewrite'`, `'change-tone'`, `'continue'`, `'explain'`. `CopilotBodySchema` in `notes/routes.ts` updated. `grammar` kept as deprecated alias via `fix-rewrite`. ### Finding 15 — NOTE: `@bytelyst/llm` has zero runtime dependencies **Severity:** Info @@ -1414,13 +1411,13 @@ Systematic code-level audit of this roadmap against the actual NoteLett and comm | 5 | Web missing copilot-client.ts + types.ts | Medium | **Fixed** | | 6 | Mobile tabs overflow (voice/url/scan) | High | **Fixed** | | 7 | Phase 6 duplicate test count | Low | **Fixed** | -| 8 | Embedding storage strategy | High | **Open — decision needed** | -| 9 | Voice transcription backend unspecified | Medium | **Open — option (a) recommended** | -| 10 | URL-extract endpoint in wrong phase | Medium | **Open — move to Phase 1** | -| 11 | Webhook container missing | Low | **Open — add container** | -| 12 | LLM factory vs Zod config clarification | Low | **Open — info only** | -| 13 | Streaming not implemented in providers | Medium | **Open — Phase 0 scope increase** | -| 14 | CopilotAction union needs expansion | Medium | **Open — Phase 1 scope** | +| 8 | Embedding storage strategy | High | **Resolved** — `@bytelyst/llm` `embed()` implemented in OpenAI, Azure, Mock providers. Separate `note_embeddings` container deferred to Phase 2. | +| 9 | Voice transcription backend unspecified | Medium | **Resolved** — `POST /api/transcribe` added to extraction-service (OpenAI Whisper API). `transcribe()` added to `@bytelyst/extraction` client. | +| 10 | URL-extract endpoint in wrong phase | Medium | **Resolved** — `POST /api/note-prompts/url-extract` implemented in Phase 1 backend routes. | +| 11 | Webhook container missing | Low | **Resolved** — `note_prompt_webhooks` container added to `cosmos-init.ts`. | +| 12 | LLM factory vs Zod config clarification | Low | **Resolved** — info only, no conflict. | +| 13 | Streaming not implemented in providers | Medium | **Resolved** — `chatCompletionStream()` implemented in OpenAI, Azure, Mock providers with SSE parsing. | +| 14 | CopilotAction union needs expansion | Medium | **Resolved** — expanded to include `fix-rewrite`, `change-tone`, `continue`, `explain`. | | 15 | Zero runtime deps in @bytelyst/llm | Info | Noted | | 16 | Artifact type 'summary' already exists | Info | Noted | | 17 | Agent action 'summarize' already exists | Info | Noted |