Merge Yuxi teacher support with classroom discussions
This commit is contained in:
@@ -4,6 +4,22 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
|
||||
|
||||
## Integrated Through
|
||||
|
||||
- 2026-09-23:任务 `20260923-merge-yuxi-teachers-ml-9d623c5f` 经用户确认交接主目录,将 `d20c818fe79bc5833cef15d99974b699dde71c6d` 从 `1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe` 无冲突快进合入本地 `main`。配套三端已统一为 Yuxi 原生老师、WS 运营选择下发/同步/默认/启停、Main 三个项目/Pi 只读工具及学生账号付费;个人 Agents 保持创建者付费。MakeLore `d20c818` 已关闭 Yuxi 源记录中的子线程正文路由待办。
|
||||
源验证:51 项相关测试、typecheck、lint 和生产构建通过;原 Electron 老师选择/带回草稿流程通过。子线程正文混入先复现失败再修复,回归覆盖两种事件格式及断线游标。 产品文件与源一致,未重写实现;完整生产拓扑及真实供应商计费仍待发布验收。原有 3 份外来文档保持未提交原样,未推送或部署,无本次新增迁移。
|
||||
本条取代早期 Main 独立运行/不保存云端老师消息/运营重复编辑配置的现状说明,旧条目保留为历史。见[本次集成](tasks/20260923-merge-yuxi-teachers-ml-9d623c5f.md)和[源任务](tasks/20260923-yuxi-teachers-client-53ba33e2.md)。
|
||||
|
||||
- 2026-09-22:原老师集成任务后续将修复源 `44e754a43ec6d286fee6b6492da0d1f9347770e6` 从 `7f5131e` 无冲突快进合入本地 `main`。
|
||||
老师能按需只读当前项目目录、UTF-8 代码/配置和本轮捕获的主会话/老师话题原文;长来源及上一轮老师回答保留最近问答节选,避免上下文被全部丢弃或连续追问失败。
|
||||
Main 原生工具结果续接最多六批后要求最终回答,检查账号与取消状态,计算完整输入预算并累计模型用量;不启动 Pi、不写文件或执行命令。
|
||||
原 no-tools/no-files 决策按用户明确要求更新;固定发布版本和既有话题保持,无云端协议或数据库修改。
|
||||
产品树与已测源完全一致,沿用源 56 项相关测试、1 项 Electron 流程、Renderer typecheck、scoped lint 和构建证据;Main 全量严格类型检查仍有既有 66 条诊断。
|
||||
三份外部任务文档原样保留;未推送、打包、安装或真实模型计费验收。见[集成记录](tasks/20260922-merge-coding-teacher-client-b80c376f.md)、[源记录](tasks/20260922-teacher-context-c40f7b51.md)与[老师决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
|
||||
|
||||
- 2026-09-22:原老师集成任务后续将修复源 `28e0decbc34c10cd69c9261d554aed448bb8e145` 从 `e5d271b` 快进合入本地 `main`。
|
||||
修复发布定义中默认思考强度 `effort=null` 被当作具体强度而误报不可用的问题,旧话题可继续使用其固定版本;显式强度与真实不支持选项的校验保持。
|
||||
源复现测试先失败,修复后 25 项相关测试、类型检查、scoped lint 与 Vite 全目标构建通过;合并产品树与已测源完全一致。
|
||||
用户确认发布关闭思考后新建话题可用;当前修复尚未推送、打包或安装,不代表现有安装版已更新。见[集成记录](tasks/20260922-merge-coding-teacher-client-b80c376f.md)和[修复源记录](tasks/20260922-teacher-unavailable-6d8fa721.md)。
|
||||
|
||||
- 2026-09-22:集成任务 `20260922-merge-coding-teacher-client-b80c376f` 以 `00ad84c` 合入教师源 `9242a40d874984159d71494ac6510f3a248e89c0`,保留当前永久点数钱包。
|
||||
项目自动创建默认 Agent,会话直接位于项目下;右侧老师按云端发布配置独立答疑,回答可追加主草稿。
|
||||
唯一 Sidebar 引用冲突保留项目切换引用及主线钱包行为;合并代码 112 项相关单测、Renderer typecheck、Vite 全目标构建与 3 项 Electron 流程通过。
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
## Scope
|
||||
|
||||
- Continue this same teacher integration for approved context/file repair source `44e754a43ec6d286fee6b6492da0d1f9347770e6`, with bounded canonical capability and evidence reconciliation.
|
||||
- Integrate approved coding teacher source 9242a40d874984159d71494ac6510f3a248e89c0 into the local primary branch and reconcile canonical memory; preserve unrelated dirty documents.
|
||||
|
||||
## Intent And Constraints
|
||||
@@ -28,6 +29,9 @@
|
||||
|
||||
## Outcome
|
||||
|
||||
- Context/file cleanup follow-up: user explicitly approved removing source worktree `20260922-teacher-context-c40f7b51`. Rechecked resolved target, managed/ready ownership, committed Ready for Integration record, clean source HEAD `44e754a` and its inclusion in main. Official `retire` (with process-local `core.longpaths=true`) failed with Directory not empty after removing the Git marker. A bounded native recursive residual deletion was rejected before execution by automatic approval with `blocked by policy` and no more specific reason. No alternative deletion attempt followed. Preserved residual contents in same-parent `D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-teacher-context-c40f7b51-recovery-backup`; official `release-missing --force` then cleared the exact failed-retirement registration within the approved cleanup scope. Original path is absent, backup exists, and the source branch still points to `44e754a`. Cleanup is partial: worktree registration released, residual files retained.
|
||||
- Context/file follow-up: fast-forwarded local main from `7f5131e` to tested source `44e754a43ec6d286fee6b6492da0d1f9347770e6` without conflicts. Current-project read-only tools, captured conversation originals, recent Q&A excerpts, continuous follow-ups and native model continuations are now integrated. Source task record imported unchanged. Canonical teacher capability, data flow, domain, decision/index, evidence and provenance updated under existing user authorization; client wording now describes the Operations-selected current teacher rather than asserting singleton management.
|
||||
- Follow-up: fast-forwarded main from e5d271b to 28e0decbc34c10cd69c9261d554aed448bb8e145, including prior source diagnosis commit 2c20314 and the unchanged source task record. Teacher wire DTO now represents nullable effort; model preparation canonicalizes null/missing default strength before validation. Topic definitions remain pinned, no data or Operations migration. User confirmed the new-topic workaround works.
|
||||
- Merged source 9242a40d874984159d71494ac6510f3a248e89c0 into main in 00ad84c, preserving main permanent wallet source a1cce42. Only conflict was Sidebar refs: retain projectEntryIntentRef, do not reintroduce removed tokenPointRequestIdRef/resetCardRequestIdRef. README auto-merge retains both features.
|
||||
- Promoted accepted project/default-Agent/teacher contracts; amended ADR-008 old first-Agent entry using the already-approved product decision. Source task record imported unchanged.
|
||||
- User authorized old wallet recovery: renamed the invalid residual directory to D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-permanent-points-client-7f4c9a2e-recovery-backup, preserving all contents and its node_modules junction. Official release-missing cleared the exact stale reservation; integration claim then succeeded.
|
||||
@@ -36,6 +40,8 @@
|
||||
|
||||
## Verification
|
||||
|
||||
- Context/file follow-up: official same-task start/status passed on primary main, preserving the original task base, lock and three adopted foreign documents. Read 105 peer records (17 placeholder scopes remain unknown/read-only) and source outcome/promotions. Source HEAD is clean and committed Ready for Integration. Source is a descendant of main; after fast-forward `git diff 44e754a -- README.md electron shared src tests package.json pnpm-lock.yaml` is empty. Reuse exact-source 56 unit tests, 1 Electron scenario, Renderer typecheck, scoped ESLint and full Vite build from the immediately preceding repair turn; no product changes or conflict require duplicate runs. Main's existing 66 diagnostics remain disclosed. Task-aware drift validates canonical edits and unchanged foreign/source documents.
|
||||
- Follow-up: latest source ancestry and clean/committed Ready for Integration status confirmed. After fast-forward, git diff 28e0dec -- electron shared src tests returned empty. Reuse exact-source 25 teacher/model regression tests, Renderer typecheck, scoped ESLint and Vite full build from the preceding turn; no new product code or merge conflict justified repeating them. Review the actual merged code and task-aware documentation drift to catch import or ownership mistakes.
|
||||
- Primary pnpm typecheck initially failed because tsc was absent from the existing primary dependency directory; no product diagnostic ran there.
|
||||
- Copied the resolved merged Git index to C:/Users/7brot/AppData/Local/Temp/teacher-merge-client-20260922-b80c376f, linked source-verified dependencies, then completed all checks before source cleanup: 112 relevant unit tests (teacher service/UI, workspace/project entry/schema/conversation store, wallet/sidebar/billing client/routes), pnpm run typecheck and pnpm run build:vite passed.
|
||||
- Three real Electron scenarios passed on that merged build: teacher answer appends the main draft without submission; first PI Conversation editable under 500 ms and submits before Snapshot; wallet reopens unpaid frozen order and refreshes only after confirmed credit. Controlled local responses, no real payment/model charge.
|
||||
@@ -46,6 +52,9 @@
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Context/file repair is merged locally only; push, rebuilt installer and real teacher/provider billing acceptance are not included. Source cleanup was approved and completed only for the Git worktree/ownership registration. Residual files remain in `D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-teacher-context-c40f7b51-recovery-backup` because automatic approval blocked their deletion. Preserve the backup; do not claim its bytes were removed or retry deletion by another mechanism. Branch `codex/20260922-teacher-context-c40f7b51-teacher-context` and all commits remain. No earlier backup cleanup was performed.
|
||||
- Reasoning-fix source checkout 20260922-teacher-unavailable-6d8fa721 at D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-teacher-unavailable-6d8fa721, branch codex/20260922-teacher-unavailable-6d8fa721-teacher-unavailable: user explicitly approved cleanup. Official retire failed with Directory not empty even with process-local Git core.longpaths=true; the Git marker and worktree registration were gone, while 2,996 dependency Junctions and file residuals remained. A bounded native residual-delete attempt was rejected before execution by automatic approval (blocked by policy, no more detail). No deletion retry or policy workaround was attempted. Preserved all residual bytes in the same-parent 20260922-teacher-unavailable-6d8fa721-recovery-backup directory, then official release-missing succeeded. Source branch still resolves to 28e0dec. Cleanup is partial: registry released, backup retained. No cleanup requested for the separate server read-only contract task or old backups.
|
||||
- The running installed app still needs a release containing 28e0dec; this follow-up performs local main integration only, without push/package/install or paid model verification.
|
||||
- No remote push, installer or deployment. Pair with server 93ece7c6; migrate 0095 then configure/test/publish/enable teacher and verify real gateway billing.
|
||||
- Keep both client recovery-backup directories. The teacher checkout cleanup is partial: its registered worktree is released, residual backup retained. Removing backup bytes is not claimed as completed.
|
||||
- Existing primary dependency directory is incomplete; validation used isolated dependencies. Reinstalling the primary development environment is separate work.
|
||||
@@ -53,3 +62,20 @@
|
||||
## Promotion Candidates
|
||||
|
||||
- Applied the user-approved source candidates in integration mode; no unresolved teacher product decision remains.
|
||||
|
||||
## Teacher reasoning fix integration follow-up
|
||||
|
||||
- User confirms new teacher topic works and explicitly requests fixing the old-topic error; continue this same teacher integration task for source 28e0dec, without changing topic-version policy.
|
||||
- Project Context Loaded: official same-task integration resume/status Passed on main at e5d271b; identity, original base 0cf67be, absolute primary worktree and exclusive integration lock match. Read own/source records and entry; reuse unchanged teacher ADR and required memory, architecture/domain/evidence/reflection/commitment context loaded during this conversation. Read 123 peer task records, 17 unknown placeholder scopes; no concrete semantic conflict. Source task is clean and Ready for Integration.
|
||||
- Planning Gate Passed. Main is the exact source base, so integrate with fast-forward; source product verification remains applicable. Preserve the three adopted foreign docs unchanged and exclude them from commits. No subagents, remote push, deployment, installed-file changes or paid calls.
|
||||
- Plan: import the exact tested fix, record integrated provenance and default-effort semantics, check task-document boundaries, commit/complete and offer source checkout cleanup separately.
|
||||
|
||||
- Follow-up Task Documentation Gate: inspected source-to-main product equality, provenance and clean imported source record; task-aware drift passed with the original three foreign documents unchanged. Only current-state and this integration record are committed for the follow-up.
|
||||
|
||||
## Teacher context and project-file integration follow-up
|
||||
|
||||
- User explicitly requests merging the completed `44e754a` repair. This continues the same cloud coding teacher integration, not an unrelated task inheriting main ownership.
|
||||
- Project Context Loaded: official same-task integration resume/status Passed, branch main at `7f5131e`, primary worktree and original base `0cf67be` match; exclusive integration lock retained. Read entry/memory-index/own record, positioning, current-state, decision-index/teacher ADR, architecture/domain, evidence/reflection/commitment/stale indexes and source record. Read 105 peer scopes; 17 existing placeholder scopes are unknown, with no concrete conflict affecting this exact source.
|
||||
- Project goal remains Electron Main ownership of runtime/auth/storage; active scope is current-project/current-conversation read-only teacher access. User's explicit reading request supersedes no-tools/no-files; user already selected Operations-owned current teacher behavior. No additional approval is needed for these decisions. Positioning template gaps are supplied by README/AGENTS and verified source. Real provider acceptance remains unverified.
|
||||
- Planning Gate and Integration Gate Passed. Applied fast-forward, canonical capability/evidence reconciliation and exact product-tree check; no source product changes, subagents, push, installation, deployment or paid requests. Source and foreign task records remain unchanged. Task Documentation Gate checked the actual committed/working range from the original task base and preserved ownership boundaries.
|
||||
- Cleanup gates: official same-task resume/status on main `9b5324f` Passed. Re-read own/source records and all 105 peer scopes; peer scope text is unchanged from the preceding merge gate, including 17 existing placeholders. Reused unchanged canonical memory and loaded post-merge cleanup contract. Resolved exact source/recovery paths before filesystem operations. Planning Gate Passed for user-approved cleanup only; no product edits or repeated product tests were necessary. Recorded the actual failed deletion, safe retention and official registration recovery in this integration-owned record; source record remains unchanged on main.
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# Task: Restore teacher conversation context and project file reading
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260922-teacher-context-c40f7b51
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260922-teacher-context-c40f7b51-teacher-context
|
||||
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260922-teacher-context-c40f7b51
|
||||
- Base commit: 7f5131e92fb06f3357ca45f18aaead0e2eaa87e0
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- 复现并修复云端老师无法获得当前来源会话上下文的问题,并支持按需只读当前项目文件。
|
||||
- 以实际 Main service/model 路径建立失败测试;根据证据修复上下文准备、文件读取及必要 UI 提示,完成相关测试、类型检查和构建。
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- 使用 maintain-project-docs 与 diagnosing-bugs;Concurrent Task Gate / Planning Gate Passed,官方 start/status 已确认本任务独占 feature worktree。106 个 owner 任务记录已读取;既有未知范围保持只读,无已确认阻塞冲突。
|
||||
- 用户明确批准官方 release-missing 清除 17 条工作目录缺失的已完成任务登记;均已完成,只删除登记,保留分支和提交。此前 start 因此被阻断,未绕过门禁写代码。
|
||||
- 用户本次要求老师读取会话和项目文件,授权修正旧“无文件访问”边界;只读当前项目,不增加文件修改、命令执行、跨项目/账号读取或 Pi 编程执行能力。不创建子智能体。
|
||||
- 先通过真实路径的确定性测试捕获缺失上下文,再定位和修复。已复现长来源消息导致上下文全部被删除、无文件工具导致原生工具请求失败;冷会话历史恢复测试通过。未读取用户真实会话或调用真实付费模型,不将测试复现等同于用户当时运行日志。
|
||||
- 定位文档中模板空白以 README、AGENTS 与可执行代码补充;canonical 项目记忆仅提出 promotion,不在 feature 中修改。
|
||||
|
||||
## Outcome
|
||||
|
||||
- Main 老师服务现将当前项目路径、当前 active-branch 完整文本和当前老师话题的已完成历史交给本地只读工具。支持浏览目录、按行读取 UTF-8 文件和按消息 ID 读取本轮会话原文;允许 `.makelore/project.json` 配置,拒绝其他 `.makelore` 会话数据、Git 内部数据和越界路径。复用已有文件读取服务的项目边界、文本校验和 256 KiB 预览限制。
|
||||
- 原预算算法会逐条移除全部来源消息,长中文项目分析可只留下当前含糊追问。现在保留最近问题/回答的首尾节选;同时节选过长的上一轮老师回复,避免预留读取预算后连续追问失败。节选包含消息 ID,并可通过工具恢复中间原文;当前问题、明确引用和系统指令仍保留,超预算明确报错。
|
||||
- 原生 SSE 支持分片工具调用参数、只读结果回传和继续生成;每轮最多六批读取后要求最终文本,计算工具定义/结果/原生思考的输入预算,成组省略较早工具轮次并累计模型用量。思考内容仅用于 Main 内原生后续请求,不发给 Renderer、不持久化。每次读取和后续模型调用检查账号与取消状态。
|
||||
- UI 标明结合当前会话和项目文件答疑,显示上下文节选提示;既有话题无需迁移或重新创建,运营试聊仍不获得真实项目工具。README 已同步当前行为。
|
||||
- 本次只修改客户端,未修改云端协议、运营配置或数据库;不合并、不推送、不部署,不清理任务工作目录。
|
||||
|
||||
## Verification
|
||||
|
||||
- Red-capable loop:实际 CodingTeacherService 长来源测试首先失败,模型请求只含系统指令与当前追问;prepareTeacherModel 原生读取测试首先失败 `teacher_tools_unavailable`;长老师历史追问测试首先失败 `teacher_context_too_long`。修复后均通过。
|
||||
- `pnpm exec vitest run tests/unit/coding-teacher.test.ts tests/unit/coding-teacher-model.test.ts tests/unit/coding-teacher-read-tools.test.ts tests/unit/coding-teacher-ui.test.tsx`:44 passed。覆盖真实 service → source → model → 本地文件 → model continuation,冷历史 active branch、节选、老师原文恢复、路径边界、取消/账号变化、分片参数、原生思考、累计用量、读取轮数和输入预算、旧 UI 行为。
|
||||
- `pnpm exec vitest run tests/unit/coding-project-files.test.ts tests/unit/pi-session-projector.test.ts`:12 passed。
|
||||
- `pnpm exec playwright test tests/e2e/pi-coding-first-chat.spec.ts --grep 'project teacher side chat'`:1 passed;使用现有隔离 Electron fixture 验证新提示及带回主会话草稿,云端/模型边界为测试替身。
|
||||
- `pnpm run typecheck`、修改生产文件的定向 ESLint、`pnpm run build:vite`、`git diff --check`:通过。依赖使用仓库锁定的 pnpm 10.33.4 / frozen lockfile,锁文件未变化。
|
||||
- `pnpm exec tsc --project tsconfig.node.json --noEmit --composite false`:报告 66 条错误,与已记录 Main 基线数量一致;老师模块和 project-files 无诊断。未宣称全量 Main 类型检查通过,未扩大修复其他模块。
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- 集成时将本任务提交合入客户端 main,并按发布流程更新客户端后进行真实老师模型验收;本地测试未消费真实模型点数。
|
||||
- Main 全量类型检查的既有 66 条错误不在本次范围。
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Target:`.project-docs/10-decisions/ADR-2026-09-22-coding-teacher.md`、对应 decision index、`20-architecture/` 老师数据流与 current-state。Proposal:将原“纯文字、无工具、无项目文件”边界更新为“Main 直接请求计费网关,有限的当前项目/当前会话只读工具,仍无 Pi 执行、写文件或命令”。Evidence:用户本次明确要求恢复会话和文件读取,新增 service/model/读取回归与 Electron UI 测试通过。Future impact:后续老师配置、客户端与联调应依此能力边界;云端发布载荷不变。Semantic conflict:旧 ADR 的 no-tools/no-files 明确冲突,不能把旧约束当成当前需求。Human confirmation:用户本次问题已授权该只读边界修正,集成时无需再次询问同一项授权。
|
||||
- Target:current-state / evidence index。Proposal:记录 UTF-8 字节预算逐条删消息可丢光长主会话;应保留最近问答节选,并提供本轮只读原文恢复。Evidence:原实现确定性失败测试与修复后通过的长来源、长老师回复和读取原文测试。Future impact:后续预算调整必须覆盖连续追问和工具结果开销。Semantic conflict:无;无需额外人类确认。
|
||||
@@ -0,0 +1,57 @@
|
||||
# Task: Diagnose coding teacher unavailable message
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260922-teacher-unavailable-6d8fa721
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260922-teacher-unavailable-6d8fa721-teacher-unavailable
|
||||
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260922-teacher-unavailable-6d8fa721
|
||||
- Base commit: e5d271bc457b4e91e6bda52a28db4a1ecf91d406
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Explain the screenshot message 老师暂未开放 by tracing its exact UI condition and cloud configuration path. Follow-up now covers the reported reasoning error and a bounded client fix; live Operations state remains read-only.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Project Context Loaded: official check/start/status passed with Identity above, feature mode, isolated managed worktree and base e5d271bc457b4e91e6bda52a28db4a1ecf91d406. 123 owner records read; 17 peer placeholder scopes remain unknown, no concrete conflicting dependency. Packaging 1.6.2 is independent and product-read-only.
|
||||
- Read entry/planning-gate, own record, teacher ADR and integrated state; reuse unchanged memory-index, template positioning, decisions, system/module/data-flow/domain, success criteria and evidence/reflection/commitment/stale context already loaded during preceding integration. Project goal remains Electron/Main-owned coding with independently configured official teacher.
|
||||
- Active constraints: no subagents, no live configuration/production writes, no paid calls, no access to credentials or unrelated peer work. Accepted teacher ADR separates publication from enablement; deployment and live billing are not established by merge.
|
||||
- Planning Gate Passed. Relevant modules: TeacherChatPanel, teacher config client/service and CodingChatPanel mount lifecycle. Current live server enabled status is unknown; screenshot establishes only the last loaded client state.
|
||||
- diagnosing-bugs applied as bounded symptom-condition inspection. This is a behavior question, not an established defect or requested fix; skip reproduction, hypothesis ranking and regression mutation because the exact single UI condition resolves what the message means. Do not claim a live backend root cause without its response.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Confirmed reasoning error root cause: the selected installed-app topic is pinned to published v1 with mode=enabled and effort=null. Server Pydantic intentionally persists nullable effort; client request validation previously formed effort:null and rejected it as an unavailable native strength. User-reported current Operations disabled selection does not change that existing topic.
|
||||
- Corrected TeacherDefinition's wire type to represent nullable effort, and normalized null/missing enabled effort to the canonical default-strength choice before existing capability validation. Explicit strengths and unsupported-choice rejection remain unchanged; no fallback model, topic migration or capability override.
|
||||
- Immediate installed-version path: save and publish the intended disabled setting as a new version, then create a new teacher topic using +. Reopening the same topic retains its frozen v1. Did not mutate the user's topic or live Operations settings.
|
||||
|
||||
- TeacherChatPanel.tsx:65-68 reads config.enabled; :336-337 renders this exact message only when enabled is false (initial value is true). :383 disables sending under the same condition.
|
||||
- Main definition() forwards /api/coding-teacher/config availability and reads the published definition independently of enabled; restored local topic history may also supply name/avatar. Seeing 编程老师1 does not establish current enablement.
|
||||
- Production createTopic rejects disabled or unpublished status; each send rechecks live availability. Permission/config request failures produce different errors.
|
||||
- Panel config load runs on mount/base/draftRevision only, without a focus/poll refresh. CodingChatPanel conditionally mounts the panel; closing and reopening reloads enabled state. Thus enabling in Operations while the panel stays open can leave the displayed status stale.
|
||||
- Explain Operations must have a published version and enabled switch. If already enabled, close/reopen teacher panel. Did not inspect the user's current live backend response, so unenabled vs stale loaded status remains unverified.
|
||||
|
||||
## Verification
|
||||
|
||||
- Reasoning fix: pnpm exec vitest run tests/unit/coding-teacher-model.test.ts --maxWorkers=1 reproduced the exact user error in prepareTeacherModel for the local topic shape enabled/effort=null: 1 failed, 6 passed before the fix. The real server schema separately emitted JSON null for unspecified effort.
|
||||
- After fix: teacher model/teacher service/managed model capability suites => 25 passed; pnpm run typecheck, scoped ESLint and pnpm run build:vite passed. Cases cover null/missing default strength, disabled, model default, explicit native strength, and rejection of unsupported strength/disabling. Tests run the real model preparation and native request construction with synthetic transport; no external model charge.
|
||||
|
||||
- Read-only exact-path searches and source reads at e5d271b establish setter, message predicate, send disabling, status forwarding and remount behavior. No runtime test executed or production state changed.
|
||||
- Inspected own diff; only this task record is changed. Task-aware documentation drift is checked before completion.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Fix is committed on this feature branch; merge and rebuild/install are still required to update the running app. Live upstream capabilities and an actual model response have not been verified. Existing teacher topics remain pinned to their creation version by design.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- None. This correction brings the client wire boundary into agreement with the existing server schema and accepted default-strength semantics; it does not change canonical teacher behavior.
|
||||
|
||||
## Reasoning error follow-up
|
||||
|
||||
- Same-task official resume/status Passed at unchanged e5d271b base; re-read all 123 peer records, 17 undefined peer scopes remain unknown, no semantic conflict. Required context and teacher ADR unchanged; Planning Gate Passed.
|
||||
- User reports deepseek-flash / disabled in current Operations (not independently fetched live). Read only selected project registration and filtered teacher/provider metadata, without outputting credentials or conversation text: actual local topic v1 persists enabled with effort=null, created 2026-09-22T06:14:37.190Z, zero requests. Local saved model capability supports disabling and deepseek controls; not a fresh server capability response.
|
||||
- Server contract task verifies ReasoningChoice.model_dump(mode="json") includes effort=null. Plan: reproduce prepareTeacherModel with that real wire shape, normalize the teacher wire DTO at model-request preparation, retain capability validation, and verify enabled/default/disabled/native/unsupported cases. No topic-version migration or live configuration mutation.
|
||||
@@ -0,0 +1,44 @@
|
||||
# Task: Integrate Yuxi coding teachers into main branch
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260923-merge-yuxi-teachers-ml-9d623c5f
|
||||
- Mode: Integration
|
||||
- Branch: main
|
||||
- Worktree: D:\Datas\OthersProjects\makelore
|
||||
- Base commit: 1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Integrate the approved three-part Yuxi coding-teacher release; this task owns the ml local primary branch and canonical memory. Exact source: d20c818fe79bc5833cef15d99974b699dde71c6d; source task: 20260923-yuxi-teachers-client-53ba33e2.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Project Context Loaded: official check/start/status passed in integration mode with the task ID, branch, absolute primary worktree and base in Identity, exclusive integration lock and reservation. The user explicitly approved releasing the three completed prior owners and adopting seven existing foreign documents unchanged; they are excluded from commits.
|
||||
- Read entry/memory-index, own and source records, positioning, current-state, decision-index/teacher decisions, system-overview, module-map/data-flow, business-rules/success-criteria, evidence/reflection/commitment/stale indexes. Yuxi root engineering guidance and architecture also loaded. Project goal: MakeLore Main owns desktop credentials, project/Pi reads and local teacher UI/history.
|
||||
- Read 105 peer records from registered paths; all readable. Other peer scopes match the previously loaded implementation assessment, apart from the completed source task. Historical placeholder scopes remain unknown/read-only, with no concrete conflict for this exact integration. Yuxi/MakeLore positioning templates are supplemented by AGENTS, architecture, README and verified source.
|
||||
- Current integrated teacher behavior is local Main execution; the user's accepted Yuxi-native teacher design and explicit student payer decision supersede that boundary. Existing personal-agent creator billing, Pi execution and local project write boundaries remain. Source tests/reviewer evidence applies to unchanged product bytes; real provider/production topology validation is still pending. The paired client source includes d20c818, resolving the routing follow-up recorded in the Yuxi source.
|
||||
- Planning and Integration Gates Passed. Plan: fast-forward the exact verified source; promote the already-approved runtime/distribution/read-tool/billing facts into owning canonical documents; prove source ancestry and product equality, validate documentation/contracts, commit/complete and ask separately about source worktree cleanup. No new subagents, push, deployment or paid model calls.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Fast-forwarded local main from 1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe to d20c818fe79bc5833cef15d99974b699dde71c6d without conflicts. All three paired sources are integrated, including MakeLore d20c818, which resolves the child-thread routing follow-up in the unchanged Yuxi source record.
|
||||
- Promoted the user-approved Yuxi runtime, Operations distribution, Main read-tool/history, main-thread text routing and student payer boundaries into canonical decisions/architecture/domain/current-state/evidence. Source task records are imported unchanged. Product and test files exactly match the verified source.
|
||||
- The three pre-existing foreign documents retain their original adopted state and remain outside commits. No push, deployment, installer update, production migration or paid provider call.
|
||||
|
||||
## Verification
|
||||
|
||||
- Main contains the exact source HEAD; git merge --ff-only and source ancestry/equality checks passed. Product/test/build evidence is inherited from the exact fast-forwarded source; no conflict or product rewrite required another product test run.
|
||||
- New relative document links passed (8 targets in this repository); whitespace checks passed. Official task-aware drift passed with unchanged source provenance and adopted foreign documents. Reviewed the committed/working range from the recorded base; only this integration's canonical documents and task record are committed beyond the source.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Source worktree D:/Datas/OthersProjects/.codex-worktrees/makelore/20260923-yuxi-teachers-client-53ba33e2 (task 20260923-yuxi-teachers-client-53ba33e2) remains pending the separate post-merge cleanup question. Preserve its branch and commits.
|
||||
- Initial blocked start created an unclaimed integration checkout at D:/Datas/OthersProjects/.codex-worktrees/makelore/20260923-merge-yuxi-teachers-ml-9d623c5f, branch codex/20260923-merge-yuxi-teachers-ml-9d623c5f-merge-yuxi-teachers. Ownership was rolled back before a task record was created; it is not a ready managed task and is retained for separate cleanup review. The active task owns the primary worktree in Identity, not this unused checkout.
|
||||
- Release/real provider billing and full deployed three-service acceptance remain separate; keep existing recovery-backup directories unchanged.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Applied the accepted source promotion candidates in integration mode. User confirmation already covers native Yuxi teachers, local read tools and student billing; no unresolved product decision remains.
|
||||
@@ -0,0 +1,46 @@
|
||||
# Task: Connect coding teachers to Yuxi with local project tools
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260923-yuxi-teachers-client-53ba33e2
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260923-yuxi-teachers-client-53ba33e2-yuxi-teachers-client
|
||||
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260923-yuxi-teachers-client-53ba33e2
|
||||
- Base commit: 1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Implement the accepted Yuxi coding-teacher design across Yuxi runtime, Works Square distribution and MakeLore Main/local context. This record owns the ml repository changes only. User explicitly confirmed student-account billing on 2026-09-23.
|
||||
- User-authorized follow-up on 2026-09-23 fixes the confirmed client SSE routing omission: child-agent text must not become the main teacher answer. This follow-up changes only MakeLore Main, its regression test and documentation.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Official check/start/status passed in this isolated managed feature worktree, with matching identity/base/branch. Planning Gate passed after required entry/task/memory/architecture/decision and peer scope reads. Primary checkouts, foreign documents and canonical project memory remain untouched.
|
||||
- Peer task-record scope reads: WS 268, Yuxi 43, MakeLore 105, all readable. Incomplete historical scopes remain unknown; no concrete conflicting dependency found. Yuxi template positioning is supplemented by ARCHITECTURE and current code. WS teacher no-tools text is stale relative to the merged Main read tools.
|
||||
- No subagents without user consent. No production deployment, source push, or real paid model requests. Ordinary personal agents keep creator billing. Teacher guidance remains read-only, user-initiated and bound to the selected local project/Pi conversation; no proactive monitoring or local command execution.
|
||||
- Implementation sequence: establish native cloud client-tool wait/results/continuation with focused unit plus real HTTP/PG/worker evidence; connect published Yuxi teachers to Operations distribution and student entitlement/billing; connect Main context/read dispatch and teacher UI; finish three-end regression, builds, documentation and review. Existing local teacher histories retain a supported read path.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Implemented teacher selection for new topics, Main-owned scoped Yuxi sessions/SSE, local project/Pi snapshot binding, complete structured read results and native cloud continuation. Reconnect follows persisted continuation and cursor; original question ID supports cancellation even if submission acknowledgment is lost.
|
||||
- Main enforces existing project read boundaries; frozen public Pi messages and current teacher topic texts can be read by ID. Legacy teacher histories retain their original path. Disabled teacher topics remain readable without borrowing another teacher's availability. Cloud topic headers reflect the selected teacher, including implicit topic creation on first send.
|
||||
- Updated README with runtime, configuration/version, local read, cancellation and billing behavior. Implementation and local evidence complete. The user-authorized fresh read-only reviewer independently reviewed all three repositories and returned PASS with no reproducible defects. Prepared for integration; no merge, push, deployment, installer release or paid-model calls.
|
||||
- Resolved the follow-up review finding on 2026-09-23: cloud-runner now routes message text using the authoritative cloud main thread_id from the Run view, which differs from the local topic ID. Child-thread events no longer enter the teacher response, saved history or brought-back draft, or reset main-answer accumulation. Every observed event still advances the reconnect cursor. This bounded client fix received direct diff review; the earlier independent reviewer PASS applies to the initial implementation only.
|
||||
|
||||
## Verification
|
||||
|
||||
- Typecheck passed. All 51 relevant tests across coding-teacher, model, read-tools, UI and cloud runner passed after the routing fix (50 at initial implementation). Cloud runner tests use real temporary project files and captured public messages, asserting all result IDs/content, stale-context rejection, saved continuation, lost acknowledgment cancellation and SSE replay/partial final-answer repair. Service integration also validates native Yuxi topics with no local prompt use cloud credentials, local reads and saved cloud request/response rather than the local model loop.
|
||||
- Electron E2E project teacher side chat passed against actual built window with explicit Host API fixtures, including choosing a non-default teacher and bringing its response back to the main draft without submitting. Production Renderer/Main/Preload build passed. Focused ESLint and git diff whitespace checks passed.
|
||||
- Yuxi real HTTP/PG/worker integration separately verifies cloud interruption/continuation; WS verifies student wallet. No real paid provider or deployed three-service topology call.
|
||||
- Added a tracked regression with interleaved main/child text, both payload.items and payload.chunk, cloud/local thread-ID distinction and disconnection after a child event. It failed before the fix with child text plus a duplicated final answer, then passed with teacher-only text and after_seq=2-0 on reconnect. Cursor assertions run outside the transport callback so transport retry handling cannot swallow assertion failures. All six cloud tests passed again after that assertion refinement.
|
||||
- The original task-local probe under ignored node_modules/.cache/teacher-review now passes: pnpm exec vitest run --config node_modules/.cache/teacher-review/vitest.config.mjs -t 'keeps child-agent text' (1 passed / 5 not selected; previously 1 failed). Focused ESLint, typecheck and production Renderer/Main/Preload build passed for this follow-up. Existing Electron E2E was not rerun: its Host API topic fixture bypasses the changed cloud transport; the tracked transport regression exercises the actual routing defect.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Integrate the three paired task branches together when requested. Deployment, real provider billing, remote MCP and production three-service/one-api topology validation remain a separate release step. Retain task worktrees and branches for that handoff.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Target: accepted teacher/cloud-agent architecture and domain documents. Proposal: Yuxi teacher definition/runtime, WS selection/authorization, Main project/Pi read tools; teacher payer is the student while other personal agents keep creator payer. Evidence: user accepted design/implementation and explicitly selected student billing. Future impact: removes duplicate teacher configuration ownership and changes teacher cloud history boundary. Conflicts: old teacher Main-only/no-cloud-history decision is intentionally superseded by accepted scope; feature task records facts, Integration Gate promotes after delivery. No additional product confirmation needed for the accepted scope.
|
||||
@@ -8,7 +8,7 @@
|
||||
- Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore-teacher-merge
|
||||
- Base commit: e5d271bc457b4e91e6bda52a28db4a1ecf91d406
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
- Status: Planning
|
||||
|
||||
## Scope
|
||||
|
||||
@@ -54,3 +54,15 @@
|
||||
1. Merge completed discussion and guidance source branches; presence/classroom ancestors are included.
|
||||
2. Verify typecheck, affected unit tests, lint, production build and isolated interaction checks.
|
||||
3. Preserve known main work, land verified commits on main and verify ancestry and work preservation.
|
||||
|
||||
## Authorized Push And Trial Restart
|
||||
|
||||
- User explicitly requests remote push and trial restart. Same task/worktree resumed via start; matching feature ownership verified, prior project context/peer scope remains applicable. Gate passed. Guidance worktree was retired as approved; other peer scopes unchanged.
|
||||
- Scope: reconcile concurrent origin/main updates if needed, push local main, rebuild final main and restart only the known Makelore Teacher Trial with its existing isolated profile and port. No real teacher test messages or cloud publication.
|
||||
- Initial push was rejected because remote main advanced; fetch and integrate its commits before retry.
|
||||
|
||||
- Reconciled origin/main 158d3ee with the classroom source. Nine textual conflicts were resolved by preserving catalog/Yuxi execution, nullable reasoning and scoped project reads alongside project-role history, proactive check-ins, teaching baseline and persistent discussions. Imported canonical documents and upstream task records (13 files) are byte-identical to origin/main; no new canonical decisions were authored.
|
||||
- Cloud requests now carry the complete ordered compiled context through the existing query string contract, including behavior and discussion instructions; the current request binds its actual operation source. Friend retains its persona and has no local read tools. Disabled teacher history cannot borrow another catalog teacher's enabled state or bypass the UI guard with Enter.
|
||||
- Independent review found structured output contaminated by pre-tool commentary on both execution paths. Cloud suggestions/discussion now deliver only the completed final output; local model execution uses finalOnly to deliver the successful final tool-free response. Red-capable regressions cover preambles/intermediate JSON, reads, final JSON, cancellation and persisted component state. Reviewer confirmed the finding closed.
|
||||
- Final verification: 25 relevant unit suites / 507 tests passed; standard typecheck passed; targeted ESLint passed; 13 headless layout and 3 isolated Electron classroom/proactive/recovery checks passed; final Renderer/Main/Preload/utility build passed. Independent Main diagnostics remain 66 with none in teacher/project-files paths; this is not a clean all-Main typecheck. No paid model or live teacher message was sent.
|
||||
- Push and exact-profile restart follow this verified merge; source and backup branches remain preserved.
|
||||
|
||||
Reference in New Issue
Block a user