219 Commits
Author SHA1 Message Date
Rohit Prasad fb1bfc6272 Merge pull request #548 from mo-tunn/fix/skill-upload-token-traversal
fix(skills): confine staged upload tokens
2026-08-30 12:45:18 -07:00
Rohit Prasad 9e145d9ceb Merge pull request #350 from rkfshakti/fix/repair-tool-pairing-on-load-331
fix: repair tool-call/result pairing on load to prevent unrecoverable 400 errors
2026-08-29 17:03:32 -07:00
Rohit Prasad fbf57149fa Merge pull request #70 from lifrary/fix/atomic-conversation-shrink
Make the conversation-log shrink rewrite atomic (prevent history loss on a mid-write crash)
2026-08-29 17:00:12 -07:00
Rohit Prasad ccc845ded4 Merge pull request #56 from Saidheerajgollu/tolerate-corrupt-jsonl-on-load
Tolerate a corrupt line when loading a conversation .jsonl
2026-08-28 22:53:29 -07:00
Rohit Prasad 5c8f6dd1c2 Merge pull request #219 from hacksics/unparsed-tool-calls-upstream
Recover truncated tool calls, and never pass a leaked one off as an answer
2026-08-28 22:37:03 -07:00
Rohit Prasad e8824ab1f0 Merge pull request #55 from Saidheerajgollu/harden-session-id-path-traversal
Reject path-traversal session ids in the conversation store
2026-08-28 22:35:57 -07:00
Rohit Prasad 6dfd1a4f3b Merge pull request #24 from Saidheerajgollu/fix-inbox-reply-substring-intent
Parse inbox reply intent from the leading word, not substrings
2026-08-28 22:09:53 -07:00
Rohit Prasad d20dd624bb Merge pull request #379 from Saidheerajgollu/fix/scheduler-stale-tick-double-run
fix: scheduled task can run twice when an approval lands on a tick
2026-08-28 22:09:25 -07:00
Rakesh Utekar 0939fd6624 fix(teams): authorize attachment reads
Require attachment reads to resolve through an actor-visible item in the requested board space. Record authoritative attachment provenance so forged comment or transition refs cannot grant blob access, while preserving legacy refs through an atomic one-time migration.

BREAKING CHANGE: BoardDialect.attachment and the /v1/board/attachment endpoint now require a board space.
2026-08-28 15:35:55 -07:00
Rakesh Utekar e826b48a90 fix(teams): enforce worker item visibility 2026-08-28 14:47:07 -07:00
Shakti Prasad Mohapatra 9bad0fdd8e fix: don't inject placeholder for trailing pending tool calls
The repair was synthesising placeholder tool results for any dangling
call, including calls in the last assistant message that are simply
pending (interrupted for approval/question). This broke durable resume
because the provider saw the placeholder and thought the tool already
ran, so resolve_inbox could not re-execute the tool.

Now trailing calls (assistant tool_calls as the last message with no
result) are left untouched — the engine will resume them. Placeholders
are only injected when the thread has moved past the call, proving it
is corrupt rather than pending.

Fixes test_durable_resume_question and
test_durable_resume_approval_executes_tool.
2026-08-26 21:55:48 +05:30
Shakti Prasad Mohapatra 1789a0fd86 fix: repair tool-call/result pairing on load to prevent unrecoverable 400 errors
When a turn is interrupted at the wrong moment, the append-only JSONL can
end up with a user message between an assistant tool_calls block and its
tool result. Providers reject this ordering (Anthropic 400/2013, OpenAI
'tool_call_ids did not have response messages'), making the session
permanently unrecoverable from the UI.

_repair_tool_pairing() runs in ConversationStore.load() and:
- moves a real tool result found later in the thread to sit right after its call
- synthesises a placeholder result for a call with no matching tool message
- is idempotent — well-formed threads pass through unchanged

Fixes #331
2026-08-26 21:55:48 +05:30
mo-tunn e4d3953c86 fix(skills): confine staged upload tokens 2026-08-25 22:26:37 +03:00
Rohit C Prasad 6fbd0f995f Add Ox Alpha (stealth preview) via OpenRouter
Catalog-checked: 1,048,576 ctx, tool calling; matrix cap 60->65.
2026-08-25 09:00:15 -07:00
Rohit C Prasad eaba00184e First contact asks via ask_user; titles read the first reply
Specialists offer starting points as an ask_user (free text stays available) so a picked option briefs the reviewer; title generation adds the agent first reply as evidence with a third attempt window.
2026-08-24 15:44:43 -07:00
Rohit C Prasad eae1ed315f Auto-title at turn start, not turn completion
The title rides the user message the moment it lands — a long agentic turn no longer holds the session name hostage; an opener signature keeps the completion hook (background turns) from burning duplicate attempts.
2026-08-24 15:12:56 -07:00
Rohit C Prasad 5c8a60e7ee Fix session auto-titling on plan-backed sessions
The plan backend 400s on max_output_tokens/temperature/top_p — strip them in the provider; autotitle failures now log at warning, not invisible debug.
2026-08-24 14:48:21 -07:00
Rohit C Prasad a25274e683 Bookkeeping saves keep their place in Recents
Store save gains touch=False (updated_at means last worked on, never last saved); the banner migration and message-less mode switches use it.
2026-08-24 14:34:12 -07:00
Rohit C Prasad 40990da5e2 Persist approval provenance and server-authored mode notices
Approval origins (reviewer/user/bypass, notes, grants) ride the tool message display sidecar so chips and deny blocks survive reload.
The Auto-Approve explainer is persisted once per session server-side with new shorter copy; later switches persist one-line markers.
2026-08-24 14:14:51 -07:00
Rohit C Prasad 6d0d60b1f2 Show the reviewer hesitation on unsure-escalated approval cards
PERMISSION_REQUIRED carries reviewer_unsure when an unsure verdict raised the card; both card layouts render it as a quiet line.
2026-08-24 13:39:56 -07:00
Rohit C Prasad f1345bdfe2 Auto-approve: 5-deny streak breaker with notice, question-aware reviewer evidence, provenance chips
Breaker pauses loudly and resets on non-deny verdicts and ask_user answers; replies reach the judge with the agent question marked as data.
Cardless runs annotate quietly: auto-approved (reviewer reason) or approval bypassed.
2026-08-24 13:16:31 -07:00
Rohit C Prasad 50c2b04678 Restore live-turn state on session reconnect
ws ready now carries running (server truth); the GUI restores Stop + the waiting row and never shows the intro hero mid-turn.
2026-08-24 12:23:29 -07:00
Rohit Prasad 47f26dd90c Merge pull request #50 from asklokesh/fix/automation-schedule-dst-and-weekday
Fix automation scheduling: DST-correct 'local' times and off-by-one weekday labels
2026-08-23 21:45:04 -07:00
Rohit Prasad 941337d212 Merge pull request #291 from Mr-Neutr0n/security/secrets-created-private
security: create secret files private, never chmod them after (#143)
2026-08-23 21:43:58 -07:00
Rohit Prasad c75add0a70 Merge pull request #536 from andrewyng/rp/project-memory
Named memories, boards tied to project identity, Newer lead agents.
2026-08-23 13:10:36 -07:00
Rohit Prasad 02a6b20eb6 Merge pull request #488 from rkfshakti/fix/github-clone-pull-approval-gate
fix: gate github_clone and github_pull behind approval
2026-08-23 13:05:52 -07:00
Rohit Prasad 85330f6c3e Merge pull request #216 from CyberDefenseOperations/contrib/fix-flaky-shell-background-test
test: fix flaky test_background_task_runs_and_exits near the exit tick
2026-08-23 12:15:57 -07:00
Rohit Prasad d6a17e8783 Merge pull request #210 from CyberDefenseOperations/contrib/fix-flaky-ui-refresh-e2e
test: fix flaky ui-refresh e2e by quiescing the auto-title call before mute assertions
2026-08-23 12:15:14 -07:00
Rohit Prasad 21a301f0f4 Merge pull request #209 from CyberDefenseOperations/contrib/fix-flaky-scheduler-test
test: fix flaky test_scheduler_runs_due_task_and_advances near minute boundaries
2026-08-23 12:14:46 -07:00
Rohit C Prasad efb10e0e26 Triage Lead: interview-first standing watch over incoming channels
Brief lives in project memory; pushed wakes share the sweep pipeline; case-ledger dedup.
Board stays the lead's substrate; outward actions ride the normal approval settings.
2026-08-23 01:24:58 -07:00
Rohit C Prasad 34aa6b8dd6 Project identity: binding > git > path; named memories and boards
Worktrees of one repo share one project; one-time path-to-git re-key (board chain honestly recomputed).
Session bindings persist like team ties; grant-time presence notice; menu/binding API.
2026-08-23 01:24:58 -07:00
Rohit C Prasad ef96fc5b80 Golden matrix: the absolute-escape row uses a POSIX-absolute path
C:/Windows/... is only absolute on Windows; on the platforms CI runs it parses relative and lands inside the root.
2026-08-23 01:02:14 -07:00
Rohit C Prasad 87b4eebc15 Merge main into feature/permission-modes
Union resolutions in the four files both sides touched; approval-card sizes settle on the type-scale tokens.
2026-08-23 01:01:57 -07:00
Devika Verma 88bc5c5a36 Reviewer follows model switches; retire the dropdown metering line 2026-08-22 10:07:27 +05:30
Devika Verma 36656407ee Carry reviewer cache tokens into the metering badge 2026-08-22 09:51:16 +05:30
Devika Verma 5cbd3249d2 OPE-130: scope read-only session grants to the session's folders 2026-08-22 09:16:01 +05:30
Devika Verma 0b5294ac41 Merge branch 'main' of https://github.com/andrewyng/openworker into feature/permission-modes
# Conflicts:
#	coworker/agent.py
#	coworker/connectors/tool_defs.py
#	coworker/engine.py
#	coworker/permissions.py
#	coworker/personas/manifest.py
#	coworker/server/manager.py
#	surfaces/gui/src/App.tsx
#	surfaces/gui/src/types.ts
#	tests/test_connectors.py
#	tests/test_send_target_resolution.py
2026-08-22 08:11:32 +05:30
Rohit C Prasad 6bf6018a15 MCP failure notice: one quiet line + Details + Open Connectors; stable dedupe
Per-process noise (0x addresses, pids) no longer defeats the change-detection,
so a relaunch stops re-stamping the same complaint into the session.
2026-08-21 17:18:48 -07:00
Devika Verma a217511d50 Responses stream: rebuild the turn when the terminal event's output is empty
Some backends only stream output items and never repeat them on completed;
collect output_item.done as the fallback so text and tool calls survive.
2026-08-21 16:27:25 -07:00
Devika Verma 19561abeb6 Subscription catalog: add the 5.6 tiers (Sol/Terra/Luna); Sol becomes the recommended model 2026-08-21 16:10:51 -07:00
Devika Verma e4f7e53ebb Provider: ChatGPT-subscription sign-in (OAuth PKCE, tokens local-only)
Browser sign-in on the registered loopback port; tokens in the SecretStore profile.
Rides the Responses provider for conversion/streaming; refresh-on-expiry and on-401.
REST: signin (background + status poll), status, signout; oauth rows in providers list.
2026-08-21 15:18:45 -07:00
Rohit C Prasad a6a73419d3 MCP failure notice fires on state change, not every session
First session after a server breaks (or breaks differently) gets the transcript notice;
unchanged-broken stays quiet (Connectors carries it). Personas declaring the server keep
the every-session notice. Dedupe persists across restarts; recovery re-arms it.
2026-08-21 12:30:44 -07:00
Rohit C Prasad b4d1a01faa Remove MCP server: also shut down the live connection and purge OAuth tokens/DCR 2026-08-21 12:02:53 -07:00
Rohit C Prasad 476032e603 MCP Test on a live server actually tests: round-trip + tool refresh, visible receipt
verify() replaces cached-yes ensure for explicit tests; dead connections tear down and reconnect.
Connected rows show 'tested ⟨when⟩' so the click has a visible result.
2026-08-21 11:58:28 -07:00
Rohit C Prasad 87245498cc MCP OAuth: silent refresh actually works across restarts
Storage reports remaining token lifetime (issued_at persisted) and blanks stale access
tokens so the SDK refreshes before the request; discovered AS metadata is persisted and
seeded so refresh targets the real token endpoint, not <origin>/token.
2026-08-21 11:44:23 -07:00
Rohit C Prasad 4ac1e59370 MCP Test: flag authorizing before the background connect; notice copy says Connectors
The GUI's fast poll keyed off a status the task hadn't set yet, so a failing Test
looked dead until the 5s tick.
2026-08-21 10:43:16 -07:00
Rohit C Prasad 76e7276f7a Merge rp/mcp-add-test: custom MCP add/test flow, single Connectors page 2026-08-21 10:28:47 -07:00
Rohit C Prasad 2c9fb7490b Toolset dedup: one windowed reader, sleep_until only, browser trim/rename
files capability adopts the numbered read_file; per-turn Now: line feeds absolute scheduling.
browser_get_text/browser_read_url dropped; browser_snapshot renamed browser_read_page.
2026-08-20 23:06:36 -07:00
Rohit C Prasad 1e564d56eb request_tool: non-catalog names never raise the install card
Fast-fail with a shell steer before any prompt; docstring names the closed catalog
and stops citing semgrep (pip/brew, deliberately unmanaged) as an example.
2026-08-20 22:14:02 -07:00
Rohit C Prasad ebb97d7643 Root promotion: request_directory gains primary; granted folder can become the workspace
One-way, once, scratch-primary sessions only; consent card says workspace.
Live roots + shell repoint, persisted; engine rebuilds fully anchored after the turn.
2026-08-20 21:37:39 -07:00