62 Commits

Author SHA1 Message Date
Jesse_Chen 9326b7d0a4 fix(web): accept unknown stream payload when binding spoken prompts
Independent Staging Quality Gate / validate (push) Successful in 21m40s
Independent Staging Quality Gate / publish (push) Successful in 11m12s
Publish next build failed because the spoken-bind helper required result/output
on chunk payload, which the runner stream type does not have.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:27:49 +08:00
Jesse_Chen 97b02aef5d fix(web): hold reverse-inference cards until acceptance event quality
Independent Staging Quality Gate / validate (push) Successful in 22m10s
Independent Staging Quality Gate / publish (push) Failing after 7m28s
Conflict probes were jumping after one dated event, so the interview asked
another domain before method collection. Spoken replies now follow the
stamped choice prompt instead of a topic denylist.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 23:53:42 +08:00
Jesse_Chen 37c5c8d356 fix(web): keep spoken rectification prompts on the server choice card
Independent Staging Quality Gate / validate (push) Successful in 18m9s
Independent Staging Quality Gate / publish (push) Successful in 12m9s
Evidence writes now return the persisted open_question so the model asks that stem instead of a second education probe, and the jump-to-latest chip is centered again.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 23:11:23 +08:00
Jesse_Chen 69ebbb9917 fix(web): stop writing choice-card visibility into a ref during render
Independent Staging Quality Gate / validate (push) Successful in 11m56s
Independent Staging Quality Gate / publish (push) Successful in 17m31s
Staging lint failed on react-hooks/refs after the jump overlay fix.
Keep the latest card-open flag in the existing layout effect so ESLint
passes and the overlay still stays off the choice card.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 21:26:26 +08:00
Jesse_Chen 7a4360d848 fix(web): keep rectification stages aligned and stop jump overlay covering choices
Independent Staging Quality Gate / validate (push) Failing after 11m44s
Independent Staging Quality Gate / publish (push) Has been skipped
Progress and spoken text shared a 24px consultation-report gap, and the jump chip covered option D. Put D-chart names back on the activity strip from evidence rescore methods.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 19:31:14 +08:00
Jesse_Chen 5e34dd69ce fix(web): keep rectification replies as model text, hide thinking
Give the interview a hidden reasoning channel so planning leaves the spoken reply, publish terminal text-delta as-is, and stop regex or Case templates from replacing the model.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 16:34:25 +08:00
Jesse_Chen d7afe5b50d fix(web): restore rectification discriminator cards and stop-offer path
Coverage-complete ties never persisted A/B/C/D because contrast probes were stamped with an answered education quality probe, remaining minutes were asked as window D10 signs, and 「没有了」 missed the stop pattern.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 14:41:48 +08:00
Jesse_Chen 3519cf253e fix(web): restore server supabase import for rectification agent route
BUG-368 dropped createServerSupabaseClient while keeping the call, so staging publish failed at next build after validate skipped the production build.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 10:52:33 +08:00
Jesse_Chen fe87a9ecdb fix(web): isolate rectification answers from tool-step planning text
Mastra intermediate text-delta was published as answer.delta, then set-focus domain errors reset the attempt and replayed evidence. Publish only the terminal no-tool step, persist the next probe on the server, and ground batch quotes in the source turn.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 21:26:57 +08:00
Jesse_Chen 3659519bd0 fix(web): apply rectification choice cards without invoking the agent
Clicking A/B/C/D or stop must persist the answer, close the probe, and
update posteriors in one idempotent transaction instead of sending the
option text as a chat message.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-24 18:38:05 +08:00
Jesse_Chen 6b225a288c fix(web): keep later thinking below rectification tool steps
BUG-360: stream thinking and tool activity as an ordered trace so later CoT opens under 正在整理 instead of filling the first 思考 block.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 17:02:06 +08:00
Jesse_Chen 04463e9af3 feat(web): show consult runs as a Lucide timeline with sliced compose
Keep provider thinking on a separate channel so process talk is not billed as the spoken reply (BUG-359).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 14:38:50 +08:00
Jesse_Chen 22010e81b7 fix(web): keep rectification emit types compatible with next build
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
The spoken/thinking splitter must accept sync or async emit, matching the runner input type.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 10:20:41 +08:00
Jesse_Chen f03a2706b4 fix(web): split rectification process talk from the spoken reply
Keep provider thinking off, classify CoT as 思考, and stop remounted sessions from firing a second opening.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 10:14:35 +08:00
Jesse_Chen 0ca7da997f fix(web): stop consultation thinking from pinching the answer
Disable provider thinking so Flash CoT cannot fill max_tokens, raise the
spoken budget to 16384, emit a server-owned step tree, and continue once
when the body ends on length.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 21:19:00 +08:00
Jesse_Chen 9873ba420a fix(rectification): collect dated events, then distinguish with conflict probes
Empty ledgers stay in natural-language collection. After the first dated
event, dasha conflict probes reverse-infer 前事 and block offer until
answered. Unique-minute confirmation stays closed at a representative
time; adopt reverse-verifies remaining probes. Records BUG-348–351.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 10:37:40 +08:00
Jesse_Chen 59559d4b24 fix(web): persist thinking, title sessions distinctly, and send follow-ups from the answer
Thinking disappeared on failure and never reached session storage. Keep the
sanitized chain on disk and on errors, and regroup the sidebar around reports,
charts, favorites, and dated history titles.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 09:10:47 +08:00
Jesse_Chen 4e247c112e fix(web): keep thinking off the spoken consult and rectification answer
Enumerate evidence kinds so education cannot be proposed as a kind, and stream Chinese thinking on a separate channel that collapses when the reply arrives.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 21:30:55 +08:00
Jesse_Chen a4ab229e84 fix(web): stop rectification effects from setting state on mount
eslint-config-next failed staging lint because the case snapshot helper and choice-card reset called setState from useEffect. Load the snapshot in the fetch callback and remount the card by question id instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 18:15:18 +08:00
Jesse_Chen a03756bf18 feat(web): hang Agent-authored A/B/C/D cards under rectification replies
Independent Staging Quality Gate / validate (push) Failing after 11m51s
Independent Staging Quality Gate / publish (push) Has been skipped
Conflict nodes stay server-owned; the Agent writes the question and option copy so users can tap instead of typing through an interrogation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 17:36:32 +08:00
Jesse_Chen 6a44c778c3 fix(web): show live agent work progress and fail truncated rectification answers
Rectification dropped tool.activity started events and treated length finishes as completed. Share generation settings with consultation, keep the activity line through streaming, and name multi-domain chart calculation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:39:09 +08:00
Jesse_Chen f4619df273 fix(web): portal the natal board peek without effect setState
Quality gate lint failed on setHeaderSlot inside useLayoutEffect, so staging never published. Pass the header mount node from a callback ref instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 11:03:57 +08:00
Jesse_Chen 8b8e5214f9 fix(web): keep onboarding and mobile natal board on one aligned overlay
Put the compact board trigger in the chat header, keep the sheet above the composer on iOS, and align onboarding messages with the intake card on the session column.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 23:54:20 +08:00
Jesse_Chen 379f0e6f5f fix(ci): align rectification frontend contracts after skill-style present
The quality gate still expected the old board-only varga sentence ban, and public dasha ledger copy leaked raw scores.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 22:25:14 +08:00
Jesse_Chen 9670b661c4 fix(rectification): show mobile natal board as a covering bottom sheet
BUG-330: the compact board sat in the same layer as the composer, so peek copy overlapped the sheet title. Overlay only below 768px; desktop stays a side column.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 21:35:48 +08:00
Jesse_Chen 994f0583af fix(rectification): stream answers live and keep mobile chat visible
Use the quiet overlay scrollbar on chat and the house board, replace the blocking mobile dialog with a bottom sheet, and emit agent deltas before billing so users can read progress and stop a run.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 19:46:27 +08:00
Jesse_Chen dbbcb71b6a fix(ci): stop writing dialog close refs during render
eslint-plugin-react-hooks forbids updating ref.current in render, which failed staging lint after the compact rectification board landed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 16:20:39 +08:00
Jesse_Chen e07d1bada4 fix(rectification): show natal houses and lagna changes in a live right rail
The board was live data sitting under chat, so each new event looked like nothing changed. Keep candidate cards in the transcript and group 换升 by minute for the side panel.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 14:24:05 +08:00
Jesse_Chen a3196584d2 feat(rectification): add refinement packet without unique-minute claims
Surface D9/D10 change minutes, event-dasha match copy, dual-dasha conflict, and a post-adopt consult handoff so users can keep narrowing or start a reading from a representative time.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 07:47:10 +08:00
Jesse_Chen 464bc33202 fix(rectification): keep offer-message defined through next build
Independent Staging Quality Gate / validate (push) Successful in 10m12s
Independent Staging Quality Gate / publish (push) Successful in 13m52s
Boolean() does not narrow find(), so Docker next build failed typecheck on the selection-card key.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 01:24:59 +08:00
Jesse_Chen a732ff4b58 fix(rectification): hold time cards until an offer turn
Independent Staging Quality Gate / validate (push) Successful in 11m37s
Independent Staging Quality Gate / publish (push) Failing after 9m4s
Keep collecting while a method follow-up can still distinguish candidates, and show adoption cards only after offer-candidates. Align the natal house snapshot with the agent text column.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 00:50:40 +08:00
Jesse_Chen 4d872c68b2 fix(rectification): offer times under the agent bubble
Independent Staging Quality Gate / validate (push) Successful in 11m52s
Independent Staging Quality Gate / publish (push) Successful in 10m10s
Keep the natal house table as a live snapshot outside chat, and show candidate times only after selection is allowed, attached to the latest settled reply.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 22:13:48 +08:00
Jesse_Chen 053e63effa fix(rectification): align the natal house table with agent text
Independent Staging Quality Gate / validate (push) Successful in 9m57s
Independent Staging Quality Gate / publish (push) Successful in 10m55s
The house table sat on the avatar edge because it is a sibling of the message row. Inset it with the avatar width plus assistant gap.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 21:46:37 +08:00
Jesse_Chen c8af18e90a fix(rectification): show the house table and hide the activity fold
Independent Staging Quality Gate / validate (push) Failing after 9m39s
Independent Staging Quality Gate / publish (push) Has been skipped
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 20:11:51 +08:00
Jesse_Chen 4c33329b0c test(rectification): match the stop-collecting prompt contract
Independent Staging Quality Gate / validate (push) Failing after 9m23s
Independent Staging Quality Gate / publish (push) Has been skipped
BUG-304 rewrote the natural-end instruction; keep the source-level lock
aligned so staging quality gate still passes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:40:50 +08:00
Jesse_Chen 7d667fecbf fix(consult): treat pinched answers as failed and restore reply actions
Incomplete Flash generations were billed as completed consultations. Fail
those runs, keep the partial text, and reuse the rectification like/copy/rerun
bar on ordinary chat replies.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:40:50 +08:00
Jesse_Chen 7c7a25773c fix(rectification): let a tied plateau be adopted as the session result
Independent Staging Quality Gate / validate (push) Successful in 8m46s
Independent Staging Quality Gate / publish (push) Successful in 9m8s
Adjacent minutes still cannot confirm a unique birth minute. A scored
representative time can now be accepted, and the copy must say the minute
is not unique.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 10:41:47 +08:00
Jesse_Chen f708edf365 fix(rectification): ingest first-turn events without dropping day precision or claiming a unique minute
Independent Staging Quality Gate / validate (push) Successful in 10m5s
Independent Staging Quality Gate / publish (push) Successful in 7m4s
SQL kinds now match the TypeScript ledger so batch ingest can confirm dated events. Confirm no longer burns the opening focus, recap uses server date labels, and the Agent sees indistinguishable width instead of a fake unique minute.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 07:44:23 +08:00
Jesse_Chen 52f3c04b3b refactor(chat): remove the post-answer suggestion chips and the table that fed them
Measured use of the three chips above the composer was negligible. They
were also not what they appeared to be: the server looked up a fixed
triplet by session theme and passed it as metadata that overrode
anything the model produced, so the same ten hardcoded sets served every
user regardless of question or chart. That is a plausible reason nobody
pressed them.

Both copies of the per-theme table are gone, reply metadata narrows to
the session title, and the two parse entry points collapse into one now
that they return the same shape. The write schema still tolerates a
suggestions field so a client on the previous bundle does not lose its
message mid-deploy, and stored answers containing the legacy hidden
block are still stripped rather than shown raw.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 15:44:19 +08:00
Jesse_Chen 9d8570640d fix(frontend): recover rectification and consultation retries
Independent Staging Quality Gate / validate (push) Successful in 14m1s
Independent Staging Quality Gate / publish (push) Successful in 9m58s
2026-08-16 13:13:49 +08:00
Jesse_Chen b6df2d9e82 test: accept stable profile refresh semantics
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
2026-08-15 23:45:34 +08:00
Jesse_Chen 6d192ad175 feat: add consultation and product domain registries 2026-08-15 06:04:23 +08:00
Jesse_Chen c1f1819de1 feat(skill): add immutable package registry and receipts 2026-08-14 16:37:53 +08:00
Jesse_Chen 2e17ccad64 fix(rectification): restore message actions and retry receipts
Independent Staging Quality Gate / validate (push) Failing after 30m22s
Independent Staging Quality Gate / publish (push) Has been skipped
2026-08-14 00:10:22 +08:00
Jesse_Chen e8952dcc75 fix(rectification): place completion receipt above reply
Independent Staging Quality Gate / validate (push) Successful in 14m18s
Independent Staging Quality Gate / publish (push) Successful in 8m7s
2026-08-13 16:58:22 +08:00
Jesse_Chen 89f96dcfa5 fix(rectification): align activity with real agent work
Independent Staging Quality Gate / validate (push) Successful in 14m58s
Independent Staging Quality Gate / publish (push) Successful in 8m5s
2026-08-13 14:43:54 +08:00
Jesse_Chen 62d12c5c06 fix(rectification): render candidates and keep agent replies natural
Independent Staging Quality Gate / validate (push) Successful in 12m46s
Independent Staging Quality Gate / publish (push) Successful in 8m26s
2026-08-13 13:29:39 +08:00
Jesse_Chen 4deb5c2378 fix(rectification): start new case from homepage
Staging Backend Quality Gate / validate (pull_request) Successful in 24m42s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-12 21:21:26 +08:00
Jesse_Chen 7c03c1a4b5 fix(rectification): confirm clear events in same turn
Staging Backend Quality Gate / validate (pull_request) Successful in 17m59s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-12 14:18:48 +08:00
Jesse_Chen 220828d6f0 fix(rectification): hydrate persisted case turns
Staging Backend Quality Gate / validate (pull_request) Successful in 15m6s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
2026-08-12 10:45:49 +08:00