feat: improve semantic monitoring and Pi handoffs - #76
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Stage 1 of #75:
semanticReplyaction for ordinaryinput-requiredhandoffs, with exact session/event/decision/state revalidation and trusted global permissionThis is the monitoring and Pi-handoff foundation only. Inline confirmations and multi-select remain later #75 stages, so this PR intentionally does not close the issue.
Behavior
monitor.semantic.quietIntervalMsis bounded to 250–60,000ms and defaults to 2,000ms.Safety
semantic-replypermissiondenywins; unmatched defaults toask; unavailable/rejected UI fails closedValidation
npm run typechecknpm pack --dry-run— 53 packaged files includingsemantic-reply.tsgit diff --check9c7700breceived targeted fresh review with no P0/P1/P2 findingsLive Jev acceptance
Using the real Jev provider and production supervisor/event/reply paths:
input-requiredwith source excerptresult-readyTwo earlier harness runs timed out only because the synthetic scenario presented completion while leaving its second detected question unanswered. Jev correctly continued to report
waiting_input; answering that handoff made the end-to-end scenario pass.Provider cache
Low impact: quiet reassessment reuses the existing Jev request schema, contextual excerpts are event data, and
semanticReplyis local. The public tool schema gains stable fields, so provider tool-schema caches must refresh once; there is no per-turn tool-definition or system-prompt mutation.Part of #75.