Commit Graph
10041 Commits
Author SHA1 Message Date
maatheusgois-ddandoh-my-pi <https://omp.sh> 2fa43ad5a6 Omit additionalDirectories for isolated (worktree) task runs
Isolated tasks clone only cwd into the worktree. Forwarding the
parent's additional directories would let the subagent edit absolute
paths under the original extra roots, bypassing isolation. Now
additionalDirectories is undefined when worktree is set.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 02:44:56 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> ffe50650e1 Propagate workspace roots into subagent sessions
Subagents (task tool) now inherit the parent session's
additionalDirectories via ToolSession → ExecutorOptions →
CreateAgentSessionOptions, so delegated agents see the same
<workspace-roots> block and can read/grep/glob added roots.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 02:36:38 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> c24cb606a8 Normalize additionalDirectories in #resetToNewSession through normalizeSessionWorkspace
Relative paths in workspace.additionalDirectories settings (e.g.
'../shared') were stored raw in the new-session header instead of
being expanded to absolute. Now all new-session roots go through the
same normalizer used at startup.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 02:25:03 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> 33e1857a1d Centralize additional-root seeding in SessionManager.newSession
- Add additionalDirectories to NewSessionOptions
- #resetToNewSession now seeds #additionalDirectories from options,
  so all new-session transitions (handoff, branch, /new) get the roots
- AgentSession.newSession passes settings dirs via options instead of
  calling setAdditionalDirectories after the fact

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 02:14:51 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> bff14d121d Copy additionalDirectories in createBranchedSession and normalize fork roots against target cwd
- createBranchedSession (/branch, /btw) now copies additionalDirectories
  to the new header so branches preserve multi-root state
- forkFrom filters source additionalDirectories against the target cwd
  so the new cwd is never also listed as an additional root

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 02:04:05 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> aa15496d29 Await providedWorkspaceTree when it's a Promise before merging root agentsMdFiles
Fixes a crash: createAgentSession passes workspaceTreePromise (a
Promise) as providedWorkspaceTree. The merge path accessed
primary.agentsMdFiles without awaiting, rejecting the system-prompt
prep and falling back to an empty tree.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 01:55:29 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> 1704e3fd5a Normalize additional dirs on /move and discover nested AGENTS.md from added roots
- Filter #additionalDirectories when moveTo changes cwd so the new cwd
  is never also listed as an additional root (session-manager.ts)
- Build workspace tree for each additional root to discover nested
  AGENTS.md files under added roots, merging agentsMdFiles into the
  primary set (system-prompt.ts)

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 01:47:46 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> 25761276bb Merge CLI --add-dir roots with settings roots instead of skipping settings
When --add-dir is provided, settings.get('workspace.additionalDirectories')
was skipped entirely. Now both sources are merged so configured default
roots apply to every session even when CLI adds a one-off root.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 01:38:27 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> e0e7eb4a3b Refresh base system prompt after /new and use top-level os import in tests
- Call refreshBaseSystemPrompt() after newSession so the
  <workspace-roots> block reflects the new session's directory set,
  not the previous session's stale roots (agent-session.ts)
- Replace inline require('node:os') with top-level import * as os
  in test file, following repo convention

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 01:30:21 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> d3777e778d Restore additionalDirectories on failed session switch rollback
restoreState() now syncs #additionalDirectories from the captured
snapshot header, so a failed switchSession (e.g. from a session_switch
hook or model-restore error) doesn't leave the original session with
the target's workspace roots.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 01:20:48 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> ab0c25e058 Fix 2nd-round AI review: context files for all roots, merge on resume, fork copies roots
- Always augment context files with additional root context, even when
  createAgentSession passes preloaded contextFiles (system-prompt.ts)
- Merge configured dirs with existing restored roots on resume instead
  of replacing them (sdk.ts)
- Copy additionalDirectories from source header in forkFrom so forks
  preserve the multi-root set (session-manager.ts)
- Add test for forkFrom preserving additionalDirectories

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 01:14:13 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> 0a4ca2fe20 Load project context files for all workspace roots, not just cwd
When additional workspace directories have their own AGENTS.md/rules,
the agent now discovers and injects those context files alongside the
primary cwd's context. This prevents the agent from editing under a
root without seeing the rules that apply there.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 01:06:55 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> 48381f0e98 Fix AI review findings: settings on initial launch, /new root leak, persisted roots on resume, consistent ~ normalization, dead exports
- Seed workspace.additionalDirectories settings on initial launch session,
  not just /new (sdk.ts)
- Always call setAdditionalDirectories on /new, even with empty list, to
  clear stale roots from the previous session (agent-session.ts)
- Make setAdditionalDirectories async and trigger atomic rewrite when a
  session file already exists, so --continue --add-dir persists (session-manager.ts)
- Route addWorkspaceDirectory/removeWorkspaceDirectory through
  normalizeWorkspaceDirectory for consistent ~ expansion (session-manager.ts)
- Drop dead exports: workspaceRootForPath (no production callers),
  getWorkspace (no production callers), and unused SessionWorkspace type
  import from session-manager.ts (session-workspace.ts, session-manager.ts)
- Remove unnecessary as SettingPath / as string[] casts (agent-session.ts)
- Update tests: add ~ expansion coverage, root-clearing on /new,
  persistence on resumed sessions, fix header line parsing

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-22 00:58:02 -03:00
maatheusgois-ddandoh-my-pi <https://omp.sh> 32d8b84e26 Add dynamic multi-root workspace context (#2569)
A session now carries an ordered list of workspace directories beyond cwd,
managed live from the terminal. New /add-dir, /remove-dir, and /dirs slash
commands let you add and remove folders mid-session; the repeatable --add-dir
CLI flag seeds them at launch, and the workspace.additionalDirectories
setting persists defaults per project. Additional roots are persisted in the
session header, survive reopen/fork/move, and are surfaced to the agent in the
system prompt so it knows they exist and can read/grep/glob them by absolute
path. Design aligns with the endorsed community implementation on
feature/session-workspace.

Co-authored-by: oh-my-pi <https://omp.sh>
2026-07-21 23:38:32 -03:00
can1357 7b141199d5 chore: bump version to 17.0.7 2026-07-21 22:11:51 +02:00
can1357andMatheus Gois 5b798685ef fix(catalog): preserve opaque gateway model ids
Co-authored-by: Matheus Gois <matheus.gois@doordash.com>
2026-07-21 21:46:09 +02:00
can1357 89d6a8f6d1 fix(coding-agent): gate print-mode plan arming on settings before session context
- runPrintMode dereferenced session.sessionManager before checking whether
  plan.defaultOnStartup was even enabled, crashing partial-session harnesses;
  the settings check now short-circuits first.
- Extended the print-mode session fakes with the settings/sessionManager
  members every real session provides.
- Scoped the rpc-stdin-lock stderr assertion to non-load-notice lines: the
  adversarial fixture's load failure is now legitimately surfaced (#4954)
  and mentions the locked stream by design.
2026-07-21 00:16:45 +02:00
can1357 aa1b89db49 chore: bump version to 17.0.6 2026-07-20 23:46:18 +02:00
can1357 24e2a52615 chore: reformat 2026-07-20 23:45:17 +02:00
can1357 51dbe05364 fix(setup): stopped re-running the wizard on existing installs
- Reverted the CURRENT_SETUP_VERSION bump (2 -> 1) introduced with the
  default-model setup step (#5982): the new scene now only runs for fresh
  installs instead of re-prompting every upgraded install once.
- Installs that already advanced to setupVersion 2 stay non-stale under
  the cold-launch gate, so no repeat prompt either way.
2026-07-20 23:45:02 +02:00
can1357 5a728dacaa fix(tools): restored baseline empty-yield guidance wording after #4961 merge 2026-07-20 22:57:11 +02:00
can1357 1fe22ee58c docs: normalized changelogs after merges (fix-changelogs --since 924ea9a4) 2026-07-20 22:55:56 +02:00
can1357 1bf08608a4 Merge PR #4964: fix(cli): resolve bundled extension imports (@roboomp)
# Conflicts:
#	packages/coding-agent/src/extensibility/plugins/legacy-pi-compat.ts
#	packages/coding-agent/src/main.ts
#	packages/coding-agent/src/prompts/system/workflow-notice.md
#	packages/coding-agent/test/extensibility/legacy-pi-bundled-virtual.test.ts
2026-07-20 22:53:16 +02:00
pr-evalandcan1357 f5bd6bbe0e fix(agent): count malformed yields after incremental sections
Narrow the invalid-yield guard to !abortSent so array-typed incremental
yield sections no longer suppress the infinite-submit-loop abort; add
regression coverage for incremental yield followed by repeated malformed
terminal yields.
2026-07-20 22:51:53 +02:00
can1357 a87d7d35cd Merge PR #4961: fix(agent): stop malformed subagent yield loops (@roboomp)
# Conflicts:
#	packages/coding-agent/src/prompts/system/workflow-notice.md
#	packages/coding-agent/src/task/executor.ts
#	packages/coding-agent/src/tools/yield.ts
2026-07-20 22:51:53 +02:00
can1357 024497995c Merge PR #4882: fix(catalog): collapse Devin GLM-5.2 variants so free 200K model works when quota is exhausted (@oldschoola)
# Conflicts:
#	packages/catalog/src/models.json
2026-07-20 22:50:16 +02:00
can1357 b3cb3e6463 fix(vibe): only aggregate tok/s from workers that are actively streaming
An idle worker's finalized last turn has duration set, so
calculateTokensPerSecond returned its completed rate indefinitely and the
status-line badge kept showing stale worker throughput instead of falling
back to the main session's rate. Gate the aggregation on isStreaming and
cover both the idle-worker and mixed idle/streaming contracts.
2026-07-20 22:50:06 +02:00
can1357 d8e137abdd Merge PR #6079: fix(status-line): aggregate vibe worker tok/s into the status-line badge (@oldschoola) 2026-07-20 22:50:06 +02:00
can1357 f9826dc2b3 Merge PR #5977: fix(coding-agent): bound RPC output and reap failed workers (@wolfiesch) 2026-07-20 22:50:05 +02:00
can1357 3c6ade647b Merge PR #4784: fix(coding-agent): persist bash shortcut cwd changes (@jeffscottward) 2026-07-20 22:50:05 +02:00
can1357 60cbcc8c9d Merge PR #5055: feat(coding-agent): add timestamp to per-turn token-usage row (@zommiommy) 2026-07-20 22:50:05 +02:00
can1357 7e49a95d41 Merge PR #5982: fix(setup): add default model selection (@roboomp) 2026-07-20 22:50:05 +02:00
can1357 4577f064cb Merge PR #5736: fix(session): persist /new boundary so autoResume does not resume pre-/new transcript (@roboomp) 2026-07-20 22:50:05 +02:00
can1357 4b7377bd5b Merge PR #5974: fix(tools): keep web_search top-level under xdev (@roboomp) 2026-07-20 22:50:05 +02:00
can1357 a973556558 Merge PR #6045: fix(coding-agent): run fish user shell interactively instead of as a login shell (@iacore) 2026-07-20 22:50:04 +02:00
can1357 091dad0f90 Merge PR #6088: fix(thinking): persist auto selector receipt (@moomooskycow) 2026-07-20 22:50:04 +02:00
can1357 29f25f537e Merge PR #6020: fix(coding-agent): enable plan mode for print prompts (@roboomp) 2026-07-20 22:50:04 +02:00
can1357 cdcb53b6b3 docs(coding-agent): drop duplicated 17.0.5 entries; keep only the Unreleased plan-exit rollback line 2026-07-20 22:50:04 +02:00
can1357 936fdbe4a7 Merge PR #6013: fix(coding-agent): preserve plan exit rollback state (@any-victor) 2026-07-20 22:50:03 +02:00
can1357 1aa70ddc9e Merge PR #6023: fix(coding-agent): preserve model when resuming plan mode (@roboomp) 2026-07-20 22:50:03 +02:00
phrazzld f04741eac2 fix(thinking): persist auto selector receipt 2026-07-19 19:11:30 -05:00
oldschoola 4a065e3d89 fix(status-line): aggregate vibe worker tok/s into the status-line badge
In /vibe mode the director is often idle while workers stream, so the
status-line tok/s badge showed a stale/zero rate even while parallel
workers were actively generating tokens. The badge now aggregates the
main session's live tok/s with every live vibe worker's tok/s, and
falls back to the main session's own cached rate when no workers are
streaming.

- Extract calculateTokensPerSecond to utils/token-rate.ts (neutral
  location) so vibe/runtime.ts can depend on it without the render
  layer depending on the heavy vibe/task graph.
- Add aggregateVibeWorkerTokensPerSecond to vibe/runtime.ts: sums
  each live worker's rate via the shared calculator, returns null
  when no workers are streaming so the main rate shines through.
- StatusLineComponent takes the aggregator via an injected
  setVibeWorkerTokenRateProvider callback (wired in interactive-mode)
  keeping the render layer off the vibe/task dependency graph.
- #getTokensPerSecond splits into #getMainSessionTokensPerSecond
  (preserves the sticky per-assistant-message cache) plus the
  worker-aggregation path, so the director-idle case no longer
  short-circuits to null.
2026-07-19 13:03:38 -07:00
Victor Araújo 38cfbdc787 docs(coding-agent): move plan-exit rollback changelog entry to Unreleased 2026-07-19 15:33:34 -03:00
Victor Araújo 1d667039d1 refactor(coding-agent): share tool presentation apply path 2026-07-19 14:45:41 -03:00
Victor Araújo 7f10e13bbe fix(coding-agent): preserve plan tool presentation 2026-07-19 14:45:41 -03:00
Victor Araújo 57c2e082ab docs(coding-agent): note plan exit rollback fix 2026-07-19 14:45:41 -03:00
Victor Araújo 8a8ff498b3 fix(coding-agent): preserve plan exit rollback state 2026-07-19 14:45:41 -03:00
vmcall 46c936564c fix(coding-agent): corrected workflowz recursion guidance
Document unlimited negative recursion settings accurately and provide JavaScript budget-loop guidance.
2026-07-19 14:39:56 +02:00
vmcall 21e8db496b test(coding-agent): activated eval in skill workflow fixture
Keep the skill keyword workflowz contract on the active eval-and-task path.
2026-07-19 14:29:21 +02:00
vmcall c9e11dbb87 test(coding-agent): corrected workflowz backend assertions
Assert the restored Python and JavaScript example headings instead of denying backend-specific guidance.
2026-07-19 14:23:12 +02:00