From bcd6a0f376588810a7a566be38ee73afd9c8f024 Mon Sep 17 00:00:00 2001 From: song Date: Thu, 15 Oct 2026 21:58:44 +0800 Subject: [PATCH 1/4] feat(workspace): suggest next steps from the Goal's current state The Goal composer's "Suggestions" row was five fixed chips that ignored what the Goal is actually waiting on. Derive up to three suggestions from the shared workspace digest, the Todo list, the execution observation and the acceptance observation, each citing a fact the owner can see: - decisions waiting on the owner open the overview's owner rail in place; - blocked work sends a question that names the blocked tasks; - a failing acceptance criterion sends a question that names it; - an observed idle executor with open work asks the steward to continue; - a finished Goal points at its results. A stopped Goal gets no suggestion, an unknown execution state is never read as idle, and nothing waits on the owner before "idle" applies. The collapsed summary line carries the first suggestion. The shipped steward prompt row stays below, unchanged, so existing journeys keep their chips. The derivation is a pure module with a node test; the browser scenario proves the summary hint, the derived row above the steward row, the in-place decision action, the blocked question quoting a real task title and sending without a draft, and a stopped Goal showing no derived row. Co-Authored-By: Claude Fable 5.1 Signed-off-by: song --- apps/presentation/dashboard/package.json | 6 +- .../goal-suggestions.test.mjs | 58 +++++++++++ .../personal-workspace/goal-suggestions.ts | 57 +++++++++++ .../src/features/personal-workspace/i18n.tsx | 20 ++++ .../personal-workspace-contract.test.mjs | 13 +++ .../personal-workspace-page.tsx | 54 ++++++++++- .../personal-workspace/personal-workspace.css | 6 ++ .../goal-suggestions-row.png | Bin 0 -> 134789 bytes docs/guides/personal-workspace-user-guide.md | 18 ++++ examples/personal-workspace-browser-smoke.mjs | 2 + .../goal-suggestions.mjs | 91 ++++++++++++++++++ 11 files changed, 321 insertions(+), 4 deletions(-) create mode 100644 apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs create mode 100644 apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts create mode 100644 docs/assets/personal-workspace/goal-suggestions-row.png create mode 100644 examples/personal-workspace-browser/goal-suggestions.mjs diff --git a/apps/presentation/dashboard/package.json b/apps/presentation/dashboard/package.json index 7412a42580..8d18b1086e 100644 --- a/apps/presentation/dashboard/package.json +++ b/apps/presentation/dashboard/package.json @@ -38,10 +38,10 @@ "smoke:home-route": "rm -rf /tmp/loopx-home-route-smoke && tsc --ignoreConfig --target ES2022 --module CommonJS --moduleResolution Node --ignoreDeprecations 6.0 --skipLibCheck --strict --outDir /tmp/loopx-home-route-smoke smoke/home-route-smoke.ts && node /tmp/loopx-home-route-smoke/home-route-smoke.js", "smoke:delegation-preflight": "rm -rf node_modules/.cache/loopx-delegation-preflight-smoke && tsc --ignoreConfig --target ES2022 --module NodeNext --moduleResolution NodeNext --jsx react-jsx --skipLibCheck --strict --rootDir . --outDir node_modules/.cache/loopx-delegation-preflight-smoke smoke/delegation-preflight-smoke.tsx src/data/delegation-preflight.ts src/features/personal-workspace/delegation-preflight-status.tsx && node node_modules/.cache/loopx-delegation-preflight-smoke/smoke/delegation-preflight-smoke.js", "smoke:delegation-preflight-browser": "node --experimental-strip-types smoke/delegation-preflight-browser-smoke.mjs", - "smoke:personal-workspace": "npm run smoke:conversation-history-order && npm run smoke:goal-order && npm run smoke:goal-activity && npm run smoke:proposal-recency && node src/features/personal-workspace/conversation-order.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/steering-recovery.test.mjs && npm run smoke:delegation-preflight && node src/features/personal-workspace/workspace-theme.test.mjs && node src/features/personal-workspace/font-token.test.mjs && node src/features/personal-workspace/personal-workspace-contract.test.mjs && node ../../../examples/personal-workspace-browser-smoke.mjs", + "smoke:personal-workspace": "npm run smoke:conversation-history-order && npm run smoke:goal-order && npm run smoke:goal-activity && npm run smoke:proposal-recency && node src/features/personal-workspace/conversation-order.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/steering-recovery.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/goal-suggestions.test.mjs && npm run smoke:delegation-preflight && node src/features/personal-workspace/workspace-theme.test.mjs && node src/features/personal-workspace/font-token.test.mjs && node src/features/personal-workspace/personal-workspace-contract.test.mjs && node ../../../examples/personal-workspace-browser-smoke.mjs", "smoke:workspace-locale": "LOOPX_PERSONAL_WORKSPACE_SCENARIO=workspace-locale node ../../../examples/personal-workspace-browser-smoke.mjs", - "smoke:personal-workspace-packaged": "npm run smoke:conversation-history-order && npm run smoke:goal-order && npm run smoke:goal-activity && npm run smoke:proposal-recency && node src/features/personal-workspace/conversation-order.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/steering-recovery.test.mjs && npm run smoke:delegation-preflight && node src/features/personal-workspace/workspace-theme.test.mjs && node src/features/personal-workspace/font-token.test.mjs && node src/features/personal-workspace/personal-workspace-contract.test.mjs && node ../../../examples/personal-workspace-browser/server-startup.test.mjs && LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node ../../../examples/personal-workspace-browser-smoke.mjs && LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/team-evidence-return-smoke.mjs && LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/team-feedback-recovery-smoke.mjs && LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/goal-workspace-craft-browser-smoke.mjs", - "smoke:personal-workspace-packaged:catalog": "npm run smoke:conversation-history-order && npm run smoke:goal-order && npm run smoke:goal-activity && npm run smoke:proposal-recency && node src/features/personal-workspace/conversation-order.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/steering-recovery.test.mjs && npm run smoke:delegation-preflight && node src/features/personal-workspace/workspace-theme.test.mjs && node src/features/personal-workspace/font-token.test.mjs && node src/features/personal-workspace/personal-workspace-contract.test.mjs && node ../../../examples/personal-workspace-browser/server-startup.test.mjs && LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node ../../../examples/personal-workspace-browser-smoke.mjs", + "smoke:personal-workspace-packaged": "npm run smoke:conversation-history-order && npm run smoke:goal-order && npm run smoke:goal-activity && npm run smoke:proposal-recency && node src/features/personal-workspace/conversation-order.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/steering-recovery.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/goal-suggestions.test.mjs && npm run smoke:delegation-preflight && node src/features/personal-workspace/workspace-theme.test.mjs && node src/features/personal-workspace/font-token.test.mjs && node src/features/personal-workspace/personal-workspace-contract.test.mjs && node ../../../examples/personal-workspace-browser/server-startup.test.mjs && LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node ../../../examples/personal-workspace-browser-smoke.mjs && LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/team-evidence-return-smoke.mjs && LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/team-feedback-recovery-smoke.mjs && LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/goal-workspace-craft-browser-smoke.mjs", + "smoke:personal-workspace-packaged:catalog": "npm run smoke:conversation-history-order && npm run smoke:goal-order && npm run smoke:goal-activity && npm run smoke:proposal-recency && node src/features/personal-workspace/conversation-order.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/steering-recovery.test.mjs && node --no-warnings --experimental-strip-types --test src/features/personal-workspace/goal-suggestions.test.mjs && npm run smoke:delegation-preflight && node src/features/personal-workspace/workspace-theme.test.mjs && node src/features/personal-workspace/font-token.test.mjs && node src/features/personal-workspace/personal-workspace-contract.test.mjs && node ../../../examples/personal-workspace-browser/server-startup.test.mjs && LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node ../../../examples/personal-workspace-browser-smoke.mjs", "smoke:personal-workspace-packaged:team": "LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/team-evidence-return-smoke.mjs && LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/team-feedback-recovery-smoke.mjs", "smoke:personal-workspace-packaged:craft": "LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE=\"$PWD/node_modules/playwright\" node smoke/goal-workspace-craft-browser-smoke.mjs", "smoke:todo-resume-condition": "rm -rf /tmp/loopx-todo-resume-condition-smoke && tsc --ignoreConfig --target ES2022 --module commonjs --moduleResolution node --ignoreDeprecations 6.0 --skipLibCheck --strict --outDir /tmp/loopx-todo-resume-condition-smoke smoke/todo-resume-condition-smoke.ts src/features/personal-workspace/todo-resume-condition.ts && node /tmp/loopx-todo-resume-condition-smoke/smoke/todo-resume-condition-smoke.js", diff --git a/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs new file mode 100644 index 0000000000..db2548b712 --- /dev/null +++ b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs @@ -0,0 +1,58 @@ +import assert from "node:assert/strict"; +import test from "node:test"; + +import { deriveGoalSuggestions, goalSuggestionLimit } from "./goal-suggestions.ts"; + +const classes = (overrides = {}) => ({ running_observed: 0, needs_you: 0, waiting_dependency: 0, open: 0, blocked: 0, deferred: 0, done: 0, ...overrides }); +const digest = ({ activation = "active", open = 0, done = 0, blocked = 0, blockedIds = [], waiting = 0, oldest = null, needsYouUnavailable = false } = {}) => ({ + lifecycle: { activation, finishingTurn: false }, + work: { open, done, total: open + done, classes: classes({ open, blocked, done }), rows: [], groups: [], + rail: { needsYou: [], open: [], blocked: blockedIds, done: [] }, coverage: "complete", listedOpen: open, projectedOpen: open }, + needsYou: needsYouUnavailable ? { availability: "unavailable" } : { availability: "ok", blocking: waiting, optional: 0, coverage: "complete", listed: waiting, oldestWaitingSince: oldest }, +}); +const todos = [{ todoId: "t1", text: "Backfill March exports" }, { todoId: "t2", text: " Reconcile totals " }, { todoId: "t3", text: "Third" }]; + +test("a stopped Goal invites nothing", () => { + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ activation: "stopped", open: 3, blocked: 1, waiting: 2 }), todos }), []); +}); + +test("decisions waiting on the owner come first and carry their count and age", () => { + const [first] = deriveGoalSuggestions({ digest: digest({ open: 4, blocked: 1, blockedIds: ["t1"], waiting: 2, oldest: "2026-10-15T08:00:00Z" }), todos }); + assert.deepEqual(first, { kind: "open_decisions", count: 2, oldestWaitingSince: "2026-10-15T08:00:00Z" }); +}); + +test("blocked work names at most two real task titles from the rail", () => { + const [blocked] = deriveGoalSuggestions({ digest: digest({ open: 3, blocked: 3, blockedIds: ["t2", "missing", "t1", "t3"] }), todos }); + assert.deepEqual(blocked, { kind: "explain_blocked", count: 3, titles: ["Reconcile totals", "Backfill March exports"] }); +}); + +test("a failing acceptance criterion is cited by its own description", () => { + const [failing] = deriveGoalSuggestions({ digest: digest({ open: 1 }), todos, criteria: [ + { description: "Totals reconcile", state: "accepted" }, { description: "Backfill matches CSV", state: "failed" }, { description: "Runbook approved", state: "failed" }, + ] }); + assert.deepEqual(failing, { kind: "explain_failed_criterion", criterion: "Backfill matches CSV", failedCount: 2 }); +}); + +test("idle requires an observed idle executor, open work, and nothing waiting on the owner", () => { + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 2 }), todos, execution: { kind: "idle" } }), [{ kind: "continue_idle", open: 2 }]); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 2 }), todos, execution: { kind: "unknown" } }), [], "unknown is not idle"); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 2 }), todos, execution: { kind: "running" } }), []); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 2, waiting: 1 }), todos, execution: { kind: "idle" } }).map((row) => row.kind), ["open_decisions"], "the owner is the blocker, not idleness"); +}); + +test("a finished Goal points at its results only when nothing waits or blocks", () => { + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 0, done: 5 }), todos }), [{ kind: "review_results", done: 5 }]); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 0, done: 5, blocked: 1, blockedIds: ["t1"] }), todos }).map((row) => row.kind), ["explain_blocked"]); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 0, done: 0 }), todos }), [], "an empty Goal suggests nothing"); +}); + +test("needs-you unavailable is not zero and never suggests decisions", () => { + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 1, needsYouUnavailable: true }), todos, execution: { kind: "idle" } }), [{ kind: "continue_idle", open: 1 }]); +}); + +test("at most three suggestions, in owner priority order", () => { + const rows = deriveGoalSuggestions({ digest: digest({ open: 2, blocked: 1, blockedIds: ["t1"], waiting: 1 }), todos, execution: { kind: "idle" }, + criteria: [{ description: "X", state: "failed" }] }); + assert.equal(rows.length, goalSuggestionLimit); + assert.deepEqual(rows.map((row) => row.kind), ["open_decisions", "explain_blocked", "explain_failed_criterion"]); +}); diff --git a/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts new file mode 100644 index 0000000000..d235123f52 --- /dev/null +++ b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts @@ -0,0 +1,57 @@ +import type { GoalWorkspaceDigest } from "../../../../../../loopx/control_plane/presentation/goal_workspace_digest.js"; + +/** + * Suggestions derived from a Goal's current projection. + * + * Each suggestion cites a fact the digest, the Todo list, the execution + * observation or the acceptance observation already states; nothing is + * inferred from prose or counts the owner cannot see. A stopped Goal invites + * nothing (Resume is the masthead's control), and an unknown execution state + * is never read as idle. Order is the owner's priority: a decision that waits + * on them, then work that cannot move, then a failing target, then idleness, + * then a finished Goal. + */ + +export const goalSuggestionLimit = 3; + +export type GoalSuggestion = + | { kind: "open_decisions"; count: number; oldestWaitingSince: string | null } + | { kind: "explain_blocked"; count: number; titles: string[] } + | { kind: "explain_failed_criterion"; criterion: string; failedCount: number } + | { kind: "continue_idle"; open: number } + | { kind: "review_results"; done: number }; + +export type GoalSuggestionInput = { + digest: Pick; + todos: readonly { todoId: string; text: string }[]; + execution?: { kind: "running" | "idle" | "unknown" } | null; + criteria?: readonly { description: string; state: string }[] | null; +}; + +export function deriveGoalSuggestions(input: GoalSuggestionInput): GoalSuggestion[] { + const { digest } = input; + if (digest.lifecycle.activation === "stopped") return []; + const suggestions: GoalSuggestion[] = []; + const waiting = digest.needsYou.availability === "ok" ? digest.needsYou.listed : 0; + if (waiting > 0) { + suggestions.push({ kind: "open_decisions", count: waiting, oldestWaitingSince: digest.needsYou.availability === "ok" ? digest.needsYou.oldestWaitingSince : null }); + } + const blocked = digest.work.classes.blocked; + if (blocked > 0) { + const text = new Map(input.todos.map((todo) => [todo.todoId, todo.text.trim()])); + const titles = digest.work.rail.blocked.map((id) => text.get(id) ?? "").filter(Boolean).slice(0, 2); + suggestions.push({ kind: "explain_blocked", count: blocked, titles }); + } + const failed = (input.criteria ?? []).filter((criterion) => criterion.state === "failed"); + if (failed.length > 0) { + suggestions.push({ kind: "explain_failed_criterion", criterion: failed[0].description, failedCount: failed.length }); + } + // Idle needs an observed idle executor; the owner being the blocker is not idleness. + if (input.execution?.kind === "idle" && digest.work.open > 0 && waiting === 0) { + suggestions.push({ kind: "continue_idle", open: digest.work.open }); + } + if (digest.work.open === 0 && (digest.work.done ?? 0) > 0 && waiting === 0 && blocked === 0) { + suggestions.push({ kind: "review_results", done: digest.work.done ?? 0 }); + } + return suggestions.slice(0, goalSuggestionLimit); +} diff --git a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx index 4db768d258..1d5184bf84 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx @@ -209,6 +209,16 @@ const en = { "composer.monitor": "Configure scheduled check", "composer.nextAction": "Ask what’s next", "composer.nextActionPrompt": "What should I do next?", + "suggestions.row": "Suggested from this Goal's current state", + "suggestions.summary": "Suggestions · {first}", + "suggestions.openDecisions": "Handle {count} decision(s) waiting on you", + "suggestions.explainBlocked": "Explain {count} blocked task(s)", + "suggestions.explainBlockedPrompt": "In this Goal, {count} task(s) are blocked: {titles}. Explain what blocks each one and what would unblock it.", + "suggestions.explainFailedCriterion": "Why “{criterion}” fails", + "suggestions.explainFailedCriterionPrompt": "The acceptance criterion “{criterion}” currently fails. Explain why, what fix is needed, and how it will be re-verified.", + "suggestions.continueIdle": "Nothing is running · continue {count} open task(s)", + "suggestions.continueIdlePrompt": "No work is running in this Goal and {count} task(s) are open. Continue with the one most worth doing now and say why.", + "suggestions.reviewResults": "All {count} task(s) done · review the results", "composer.send": "Send", "composer.sendMessage": "Send a message to LoopX", "composer.sendMessageHint": "Send message", @@ -1716,6 +1726,16 @@ const zhCN: Record = { "composer.monitor": "配置定时检查", "composer.nextAction": "询问下一步", "composer.nextActionPrompt": "我现在该做什么?", + "suggestions.row": "根据这个 Goal 的当前状态建议", + "suggestions.summary": "快捷提问 · {first}", + "suggestions.openDecisions": "先处理 {count} 项等你决定的事项", + "suggestions.explainBlocked": "解释 {count} 项受阻任务", + "suggestions.explainBlockedPrompt": "这个 Goal 里有 {count} 项任务受阻:{titles}。请逐项说明阻塞原因和解除条件。", + "suggestions.explainFailedCriterion": "为什么「{criterion}」未通过", + "suggestions.explainFailedCriterionPrompt": "验收条件「{criterion}」当前未通过。请说明原因、需要的修复,以及如何重新验证。", + "suggestions.continueIdle": "没有在运行的工作 · 继续推进 {count} 项未完成任务", + "suggestions.continueIdlePrompt": "这个 Goal 当前没有运行中的工作,还有 {count} 项未完成。请继续推进现在最值得做的一项,并说明理由。", + "suggestions.reviewResults": "{count} 项任务全部完成 · 查看成果", "composer.send": "发送", "composer.sendMessage": "向 LoopX 发送消息", "composer.sendMessageHint": "发送消息", diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs index 2efa09d6c0..f845a57108 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs @@ -600,4 +600,17 @@ for (const key of ["home.firstGoal.title", "home.firstGoal.lead", "home.firstGoa assert.equal((i18n.match(new RegExp(`"${key.replace(/\./g, "\\.")}":`, "g")) ?? []).length, 2, `${key} exists in both locales`); } +// State-aware suggestions cite digest, Todo, execution and acceptance facts; +// they never replace the shipped steward prompt row, and a stopped Goal or an +// unknown execution state produces none. +const goalSuggestions = source("./goal-suggestions.ts"); +assert.match(goalSuggestions, /if \(digest\.lifecycle\.activation === "stopped"\) return \[\];/, "A stopped Goal invites nothing"); +assert.match(goalSuggestions, /input\.execution\?\.kind === "idle"/, "Idle needs an observed idle executor, never unknown"); +assert.match(page, /deriveGoalSuggestions\(\{\s*digest: workspaceDigest,/, "The page derives suggestions from the shared digest"); +assert.match(page, /className="personal-goal-suggestions"/, "Derived suggestions render in their own row"); +assert.match(page, /
\n\s* + ))} +
+ ) : null} {selectedGoal ? (
diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css index d4172394a9..1c5ad163f5 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css @@ -1176,6 +1176,12 @@ button.personal-execution-chip:focus-visible { outline: 2px solid #0070f3; outli .personal-manager-conversation-bubble p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; } .personal-manager-conversation-bubble .personal-md { font-size: var(--text-body); line-height: var(--leading-prose); } .personal-manager-conversation-bubble small { display: inline-block; margin-top: 4px; color: var(--pw-blue); font-size: var(--text-caption); line-height: var(--leading-caption); } +.personal-goal-suggestions { display: flex; gap: 8px; margin-bottom: 9px; flex-wrap: wrap; } +.personal-goal-suggestions button { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 5px 12px; border: 1px solid var(--pw-blue-soft); border-radius: 99px; background: var(--pw-blue-soft); color: var(--pw-blue-ink); font-size: var(--text-body); line-height: var(--leading-body); cursor: pointer; transition: all .14s ease; } +.personal-goal-suggestions button:hover { border-color: var(--pw-blue); } +.personal-goal-suggestions button:disabled { opacity: .45; cursor: default; } +.personal-goal-suggestions button:focus-visible { outline: 2px solid var(--pw-blue); outline-offset: 2px; } +.personal-composer-tools > summary small { color: var(--pw-blue-ink); font-size: inherit; } .personal-quick-prompts { display: flex; gap: 8px; margin-bottom: 9px; flex-wrap: wrap; } .personal-quick-prompts button { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 5px 12px; border: 1px solid var(--pw-line-strong); border-radius: 99px; background: #fff; color: var(--pw-muted); font-size: var(--text-body); line-height: var(--leading-body); cursor: pointer; transition: all .14s ease; } .personal-quick-prompts button:hover { border-color: var(--pw-blue); color: var(--pw-blue-ink); } diff --git a/docs/assets/personal-workspace/goal-suggestions-row.png b/docs/assets/personal-workspace/goal-suggestions-row.png new file mode 100644 index 0000000000000000000000000000000000000000..3516ec315d6ce48780b2a55e6bf64ecb5840ec0d GIT binary patch literal 134789 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 z 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 !todo.done).length; + first.user_todos.total_count = first.user_todos.items.length; +} + +export const goalSuggestionsScenario = { + id: "goal-suggestions", + async run({ browser, collectCoverage, url }) { + const session = await openWorkspacePage(browser, url, { collectCoverage, viewport: { width: 1440, height: 900 }, + beforeGoto: (api) => { api.transformStatus = addGate; } }); + const { api, page } = session; + try { + await page.locator(".personal-goal-row").first().locator(".personal-goal-link").click(); + await page.getByTestId("goal-vitals").waitFor({ state: "visible", timeout: 15_000 }); + await page.getByRole("navigation", { name: "Goal 视图" }).getByRole("button", { name: "对话", exact: true }).click(); + const tools = page.locator(".personal-composer-tools"); + const summary = tools.locator("> summary"); + await summary.waitFor({ state: "visible", timeout: 15_000 }); + await page.screenshot({ path: resolve(outputDir, "goal-suggestions-collapsed.png"), animations: "disabled" }); + assert.match(await summary.innerText(), /快捷提问 · 先处理 \d+ 项等你决定的事项/, "The collapsed summary carries the first suggestion"); + await summary.click(); + const row = page.getByTestId("goal-suggestions"); + await row.waitFor({ state: "visible" }); + const labels = (await row.locator("button").allInnerTexts()).map((label) => label.trim()); + assert.ok(labels.length >= 2 && labels.length <= 3, `two or three suggestions, got ${labels.join(" / ")}`); + assert.match(labels[0], /^先处理 \d+ 项等你决定的事项$/); + assert.match(labels[1], /^解释 \d+ 项受阻任务$/); + const stewardRow = page.locator(".personal-quick-prompts").first(); + assert.match(await stewardRow.innerText(), /询问下一步[\s\S]*看阻塞[\s\S]*查证据/, "The shipped steward prompt row stays below"); + await page.screenshot({ path: resolve(outputDir, "goal-suggestions-row.png"), animations: "disabled" }); + + // Decisions: acting in place opens the overview with its owner rail. + await row.locator('button[data-suggestion="open_decisions"]').click(); + await page.getByTestId("goal-vitals").waitFor({ state: "visible" }); + const overview = page.locator(".goal-overview, [data-testid=\"goal-overview\"]").first(); + await overview.waitFor({ state: "visible", timeout: 10_000 }); + assert.match(await page.locator("main, .personal-channel-body, body").first().innerText(), new RegExp(gateText.slice(0, 20)), "The overview shows the waiting decision"); + await page.screenshot({ path: resolve(outputDir, "goal-suggestions-decisions.png"), animations: "disabled" }); + await page.getByRole("navigation", { name: "Goal 视图" }).getByRole("button", { name: "对话", exact: true }).click(); + await summary.waitFor({ state: "visible", timeout: 15_000 }); + if (!(await row.isVisible())) await summary.click(); + + // Blocked work: the question names the real blocked tasks and sends immediately. + await row.locator('button[data-suggestion="explain_blocked"]').click(); + let turn; + for (let attempt = 0; attempt < 60 && !turn; attempt += 1) { + turn = api.turnRequests.find((request) => /受阻:/.test(request.message)); + if (!turn) await page.waitForTimeout(50); + } + assert.ok(turn, "Explaining blocked work sends a Turn"); + assert.match(turn.message, /这个 Goal 里有 \d+ 项任务受阻:「[^」]+」/, "The question quotes a real blocked task title"); + assert.ok(/Rerun SkillsBench|Run the next SkillsBench|Run the SkillsBench/.test(turn.message), `names a fixture task, got: ${turn.message.slice(0, 160)}`); + assert.equal(await page.getByLabel("向 LoopX 发送消息").inputValue(), "", "A suggestion sends immediately and leaves no draft"); + + // A stopped Goal invites nothing derived; the steward row remains. + const stoppedGoals = page.locator(".personal-stopped-goals"); + if (await stoppedGoals.count()) await stoppedGoals.locator("summary").click(); + const stopped = stoppedGoals.locator(".personal-goal-row").first(); + if (await stopped.count()) { + await stopped.locator(".personal-goal-link").click(); + await page.getByRole("navigation", { name: "Goal 视图" }).getByRole("button", { name: "对话", exact: true }).click(); + await summary.waitFor({ state: "visible" }); + assert.equal((await summary.innerText()).trim(), "快捷提问", "A stopped Goal shows no derived suggestion"); + await summary.click(); + assert.equal(await page.getByTestId("goal-suggestions").count(), 0); + await page.locator(".personal-quick-prompts").first().waitFor({ state: "visible" }); + } + return { coverageEntries: await session.close() }; + } catch (error) { + await session.close().catch(() => {}); + throw error; + } + }, +}; From c9f64e2d9860e116d95384ca06ce63e95c33f60c Mon Sep 17 00:00:00 2001 From: song Date: Thu, 15 Oct 2026 22:25:07 +0800 Subject: [PATCH 2/4] fix(workspace): keep the folded composer's suggestions in one popover MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI's goal-showcase phone check found the shipped "配置定时检查" chip pushed off-screen on the Goal overview: the folded composer positioned only the steward prompt row as an absolute popover, so the new derived row stayed in flow and widened the trigger, moving the popover's right anchor past the 390px viewport. Both rows now live in one popover panel. The derived row stacks above the steward row with a hairline, the trigger keeps its width, and a long summary hint ellipsizes instead of crowding the composer pill. The chat view is unchanged. goal-showcase, goal-suggestions and steward-journey pass locally. Co-Authored-By: Claude Fable 5.1 Signed-off-by: song --- .../src/features/personal-workspace/goal-overview.css | 10 +++++++--- .../personal-workspace/personal-workspace-page.tsx | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/presentation/dashboard/src/features/personal-workspace/goal-overview.css b/apps/presentation/dashboard/src/features/personal-workspace/goal-overview.css index adef69d7d3..152b13c87d 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/goal-overview.css +++ b/apps/presentation/dashboard/src/features/personal-workspace/goal-overview.css @@ -72,8 +72,12 @@ .personal-composer-folded .personal-composer-tools > summary { padding-inline: 8px; border-radius: 6px; list-style: none; } .personal-composer-folded .personal-composer-tools > summary::-webkit-details-marker { display: none; } .personal-composer-folded .personal-composer-tools > summary:hover { background: var(--pw-hover); color: var(--pw-text); } -.personal-composer-folded .personal-composer-tools .personal-quick-prompts { position: absolute; right: 0; bottom: calc(100% + 8px); z-index: 20; display: grid; gap: 4px; width: max-content; max-width: min(320px, calc(100vw - 32px)); padding: 6px; border: 1px solid var(--pw-line); border-radius: 12px; background: var(--pw-card); box-shadow: 0 12px 32px rgb(0 0 0 / 8%), 0 1px 2px rgb(0 0 0 / 6%); animation: goal-panel-enter var(--motion-base) var(--ease-out); } -.personal-composer-folded .personal-quick-prompts button { justify-content: flex-start; } +.personal-composer-folded .personal-composer-tools > summary { display: block; max-width: min(60vw, 420px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +/* The folded composer's rows pop up as one panel, so a derived row above the shipped prompts never widens the trigger. */ +.personal-composer-folded .personal-composer-tools .personal-composer-tools-panel { position: absolute; right: 0; bottom: calc(100% + 8px); z-index: 20; display: grid; gap: 6px; width: max-content; max-width: min(320px, calc(100vw - 32px)); padding: 6px; border: 1px solid var(--pw-line); border-radius: 12px; background: var(--pw-card); box-shadow: 0 12px 32px rgb(0 0 0 / 8%), 0 1px 2px rgb(0 0 0 / 6%); animation: goal-panel-enter var(--motion-base) var(--ease-out); } +.personal-composer-folded .personal-composer-tools .personal-quick-prompts, .personal-composer-folded .personal-composer-tools .personal-goal-suggestions { display: grid; gap: 4px; margin: 0; } +.personal-composer-folded .personal-composer-tools .personal-goal-suggestions { padding-bottom: 6px; border-bottom: 1px solid var(--pw-line); } +.personal-composer-folded .personal-quick-prompts button, .personal-composer-folded .personal-goal-suggestions button { justify-content: flex-start; } .personal-composer-pill { display: flex; align-items: center; gap: 10px; flex: 0 1 560px; min-width: 0; min-height: 44px; padding: 0 16px; border: 1px solid var(--pw-line-strong); border-radius: 16px; background: var(--pw-card); color: var(--pw-faint); cursor: text; font: inherit; font-size: var(--text-body); line-height: var(--leading-body); text-align: left; transition: border-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard); animation: goal-panel-enter var(--motion-section) var(--ease-out); } .personal-composer-pill span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .personal-composer-pill:hover { border-color: var(--pw-muted); color: var(--pw-muted); } @@ -87,7 +91,7 @@ @keyframes goal-panel-enter { from { opacity: 0; transform: translateY(4px); } } @media (prefers-reduced-motion: reduce) { - .personal-goal-view-panel:not([hidden]), .personal-composer-pill, .personal-composer-folded .personal-quick-prompts { animation: none; } + .personal-goal-view-panel:not([hidden]), .personal-composer-pill, .personal-composer-folded .personal-composer-tools-panel { animation: none; } .goal-overview-criteria li, .goal-overview-attention li, .goal-overview-run svg, .goal-overview-attention li svg:last-child { transition: none; } } diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx index a4965fb2f8..5f6dbc7f47 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx @@ -2155,6 +2155,7 @@ export function PersonalWorkspacePage({ {selectedGoal && goalSuggestions.length ? t("suggestions.summary", { first: goalSuggestionLabel(goalSuggestions[0]) }) : locale === "zh-CN" ? "快捷提问" : "Suggestions"} +
{selectedGoal && goalSuggestions.length ? (
{goalSuggestions.map((suggestion) => ( @@ -2178,6 +2179,7 @@ export function PersonalWorkspacePage({
)} +
: null; const taskBoard = (active: boolean) => selectedGoal ? ( Date: Fri, 16 Oct 2026 01:57:43 +0800 Subject: [PATCH 3/4] fix(workspace): derive suggestions from typed blocking and work coverage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review found two legal projections where the composer's derived suggestions contradicted the shared overview: - "All N tasks done · review the results" appeared for a Goal whose owner counted five open tasks while the listing was empty. Finishing is a completeness claim: it now needs complete work coverage with a known zero open count, never an empty partial listing. - "Handle 1 decision waiting on you" appeared for an optional user action. Decisions now reuse the attention owner's typed blocking count; optional items are listed but never counted, and an unknown or unavailable count is not zero, so it neither suggests decisions nor proves idleness. The idle suggestion counts the owner's projected open work when known. Unit tests add the optional-only, unknown-count and partial-listing counterexamples; the contract test pins the two rules; the fixture scenario opens a second workspace whose lane shows "0 waiting, 1 optional" and "5 open, 0 listed" and asserts neither suggestion appears; the user guide states both rules. Co-Authored-By: Claude Fable 5.1 Signed-off-by: song --- .../goal-suggestions.test.mjs | 26 ++++++-- .../personal-workspace/goal-suggestions.ts | 23 ++++--- .../personal-workspace-contract.test.mjs | 3 + docs/guides/personal-workspace-user-guide.md | 10 ++- .../goal-suggestions.mjs | 61 ++++++++++++++++++- 5 files changed, 106 insertions(+), 17 deletions(-) diff --git a/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs index db2548b712..1d41fb6086 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs +++ b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.test.mjs @@ -4,11 +4,11 @@ import test from "node:test"; import { deriveGoalSuggestions, goalSuggestionLimit } from "./goal-suggestions.ts"; const classes = (overrides = {}) => ({ running_observed: 0, needs_you: 0, waiting_dependency: 0, open: 0, blocked: 0, deferred: 0, done: 0, ...overrides }); -const digest = ({ activation = "active", open = 0, done = 0, blocked = 0, blockedIds = [], waiting = 0, oldest = null, needsYouUnavailable = false } = {}) => ({ +const digest = ({ activation = "active", open = 0, done = 0, blocked = 0, blockedIds = [], waiting = 0, optional = 0, listed = waiting + optional, oldest = null, needsYouUnavailable = false, coverage = "complete", projectedOpen = open } = {}) => ({ lifecycle: { activation, finishingTurn: false }, - work: { open, done, total: open + done, classes: classes({ open, blocked, done }), rows: [], groups: [], - rail: { needsYou: [], open: [], blocked: blockedIds, done: [] }, coverage: "complete", listedOpen: open, projectedOpen: open }, - needsYou: needsYouUnavailable ? { availability: "unavailable" } : { availability: "ok", blocking: waiting, optional: 0, coverage: "complete", listed: waiting, oldestWaitingSince: oldest }, + work: { open, done, total: coverage === "complete" ? open + done : null, classes: classes({ open, blocked, done }), rows: [], groups: [], + rail: { needsYou: [], open: [], blocked: blockedIds, done: [] }, coverage, listedOpen: open, projectedOpen }, + needsYou: needsYouUnavailable ? { availability: "unavailable" } : { availability: "ok", blocking: waiting, optional, coverage, listed, oldestWaitingSince: oldest }, }); const todos = [{ todoId: "t1", text: "Backfill March exports" }, { todoId: "t2", text: " Reconcile totals " }, { todoId: "t3", text: "Third" }]; @@ -46,8 +46,22 @@ test("a finished Goal points at its results only when nothing waits or blocks", assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 0, done: 0 }), todos }), [], "an empty Goal suggests nothing"); }); -test("needs-you unavailable is not zero and never suggests decisions", () => { - assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 1, needsYouUnavailable: true }), todos, execution: { kind: "idle" } }), [{ kind: "continue_idle", open: 1 }]); +test("needs-you unavailable or unknown is not zero: no decisions, no idle, no finish", () => { + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 1, needsYouUnavailable: true }), todos, execution: { kind: "idle" } }), [], "unavailable attention cannot prove nothing waits"); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 1, waiting: null, listed: 0 }), todos, execution: { kind: "idle" } }), [], "an unknown blocking count is not zero"); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 0, done: 4, waiting: null, listed: 0 }), todos }), [], "an unknown blocking count never finishes a Goal"); +}); + +test("an optional user action is listed but is not a decision", () => { + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 2, waiting: 0, optional: 1 }), todos, execution: { kind: "idle" } }), [{ kind: "continue_idle", open: 2 }]); + const [first] = deriveGoalSuggestions({ digest: digest({ open: 2, waiting: 2, optional: 3, listed: 1 }), todos }); + assert.deepEqual(first, { kind: "open_decisions", count: 2, oldestWaitingSince: null }, "the owner's blocking count, not the listed items, is the decision count"); +}); + +test("a partial listing never claims the Goal is finished and counts projected open work", () => { + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 0, done: 3, coverage: "partial", projectedOpen: 5 }), todos }), [], "zero listed items of five open is not finished"); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 0, done: 3, coverage: "unknown", projectedOpen: null }), todos }), [], "unknown coverage is not finished"); + assert.deepEqual(deriveGoalSuggestions({ digest: digest({ open: 1, done: 3, coverage: "partial", projectedOpen: 5 }), todos, execution: { kind: "idle" } }), [{ kind: "continue_idle", open: 5 }], "idle continues the projected open work"); }); test("at most three suggestions, in owner priority order", () => { diff --git a/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts index d235123f52..c180aaef42 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts +++ b/apps/presentation/dashboard/src/features/personal-workspace/goal-suggestions.ts @@ -32,9 +32,12 @@ export function deriveGoalSuggestions(input: GoalSuggestionInput): GoalSuggestio const { digest } = input; if (digest.lifecycle.activation === "stopped") return []; const suggestions: GoalSuggestion[] = []; - const waiting = digest.needsYou.availability === "ok" ? digest.needsYou.listed : 0; - if (waiting > 0) { - suggestions.push({ kind: "open_decisions", count: waiting, oldestWaitingSince: digest.needsYou.availability === "ok" ? digest.needsYou.oldestWaitingSince : null }); + // Decisions are what the attention owner classifies as waiting on the owner. + // An optional item is not a decision, and an unknown count is not zero. + const needsYou = digest.needsYou.availability === "ok" ? digest.needsYou : null; + const waiting = needsYou?.blocking ?? null; + if (waiting !== null && waiting > 0) { + suggestions.push({ kind: "open_decisions", count: waiting, oldestWaitingSince: needsYou?.oldestWaitingSince ?? null }); } const blocked = digest.work.classes.blocked; if (blocked > 0) { @@ -46,11 +49,17 @@ export function deriveGoalSuggestions(input: GoalSuggestionInput): GoalSuggestio if (failed.length > 0) { suggestions.push({ kind: "explain_failed_criterion", criterion: failed[0].description, failedCount: failed.length }); } - // Idle needs an observed idle executor; the owner being the blocker is not idleness. - if (input.execution?.kind === "idle" && digest.work.open > 0 && waiting === 0) { - suggestions.push({ kind: "continue_idle", open: digest.work.open }); + // Idle needs an observed idle executor, open work and a known absence of + // decisions; the owner being the blocker is not idleness. The count is the + // owner's projected open work when it is known, never only the listed part. + const openWork = digest.work.projectedOpen ?? digest.work.open; + if (input.execution?.kind === "idle" && openWork > 0 && waiting === 0) { + suggestions.push({ kind: "continue_idle", open: openWork }); } - if (digest.work.open === 0 && (digest.work.done ?? 0) > 0 && waiting === 0 && blocked === 0) { + // "All done" is a completeness claim: it needs the owner's complete work + // coverage with a known zero open count, not an empty listing of a partial one. + const finished = digest.work.coverage === "complete" && digest.work.projectedOpen === 0 && digest.work.open === 0; + if (finished && (digest.work.done ?? 0) > 0 && waiting === 0 && blocked === 0) { suggestions.push({ kind: "review_results", done: digest.work.done ?? 0 }); } return suggestions.slice(0, goalSuggestionLimit); diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs index f845a57108..ac4cd21fee 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs @@ -606,6 +606,9 @@ for (const key of ["home.firstGoal.title", "home.firstGoal.lead", "home.firstGoa const goalSuggestions = source("./goal-suggestions.ts"); assert.match(goalSuggestions, /if \(digest\.lifecycle\.activation === "stopped"\) return \[\];/, "A stopped Goal invites nothing"); assert.match(goalSuggestions, /input\.execution\?\.kind === "idle"/, "Idle needs an observed idle executor, never unknown"); +assert.match(goalSuggestions, /const waiting = needsYou\?\.blocking \?\? null;/, "Decisions are the attention owner's blocking count; optional items and unknown counts are never decisions"); +assert.doesNotMatch(goalSuggestions, /needsYou\.listed/, "The listed attention count is never read as the decision count"); +assert.match(goalSuggestions, /digest\.work\.coverage === "complete" && digest\.work\.projectedOpen === 0 && digest\.work\.open === 0/, "All done needs complete work coverage with a known zero open count"); assert.match(page, /deriveGoalSuggestions\(\{\s*digest: workspaceDigest,/, "The page derives suggestions from the shared digest"); assert.match(page, /className="personal-goal-suggestions"/, "Derived suggestions render in their own row"); assert.match(page, /
\n\s*