Commit Graph
3049 Commits
Author SHA1 Message Date
DottaandPaperclip 03ab5e07c3 Preserve built-in agent adapter config on reconcile
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 1ee894b3ce Fix built-in resources migration replay test
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 565a2bf59e Fix company skill rebase integration
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 4c4a0f3067 Stabilize low-trust heartbeat cleanup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 4f2419f7b2 Materialize built-in bundles after approval
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip b63e5a624d Fix sidebar nav class token assertion
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip ba7b7a9b27 Stabilize heartbeat suppression cleanup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip c47806d6cc Make managed resource binding upsert atomic
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip ed39a0c504 Consume Reflection Coach change approvals
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip cbd9015791 Fix heartbeat retry test cleanup order
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 75f251d824 Fix server test expectations for grants
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip fb34ccf398 Preserve built-in approval permissions
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip fc0220ff31 Fix CLI portability manifest fixtures
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 46a667f075 Fix built-in agents experimental settings markup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip e6ecaa182e Fix silently skipped change-consent gate suite by awaiting Postgres probe
The embedded-Postgres support probe returned a promise that was never
awaited, so `supported` was always falsy and all 4 gate tests skipped.
QA (PAP-13227) validated this fix; committing it so the suite stays live.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 79de7880cb Harden low-trust config authorization
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip fcbf2ede0d Implement two-tier agent and skill change grants
Add suggest/change permission keys for agent and skill configuration, route protected mutations through authorization.decide, repair default root and reflection-coach grants, and carry agent permission grants through company portability.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip e786d53087 Extract change consent gate
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 04247ade00 Make built-in resource migration replay safe
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 6c3ee652b0 Stabilize CI cleanup tests
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 69b997e5b0 Exclude built-in resources from company exports
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 8d5cbb9f5e Add built-in resources migration journal entry
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip a9d17267d7 Put built-in routines section last
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 344c6cf4fa Separate built-in routines on routines page
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip d830610293 Enforce Reflection Coach mutation gates
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 3183e6db05 test reflection coach apply gate
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip b9496be918 Auto-provision Reflection Coach for fresh companies
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip eefc9968c4 Fix built-in routine stock hash normalization
Normalize built-in routine defaults through the same projection used by persisted routine status checks so pristine bundles do not report operator_modified after a clean reconcile. Add regression coverage for the status read path after Reflection Coach materialization.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 67db22407a Add Reflection Coach routine controls
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip f2b71590cc Add Reflection Coach built-in bundle status UI (PAP-13099)
Implements the bundle status panel for the Reflection Coach built-in agent on
AgentDetail, per the PAP-13097 UX spec and the PAP-13098 server contract:

- ResourceStatusChip: readiness + drift chip grammar (ready/needs-setup/missing/
  update-available/drifted/schedule-off), token-only via brandChipBadge, glyph +
  word so state is never color-alone (WCAG 1.4.1).
- BuiltInBundlePanel: adapter/skill/instructions/routine rows with per-resource
  Update/Reset/Recreate actions (confirm dialogs, ux-spec §8 copy), View links,
  and the zero-token-by-default routine row. Adapter readiness derives from the
  agent lifecycle status; skill/instructions/routine from state.resources.
- Scoped per-resource reset wired to built-in-agents/:key/reset { resources:[kind] }
  (re-materializes one resource to the newest shipped default, preserving other
  edits and adapter credentials); Configure opens the existing modal.
- API client: BuiltInAgentBundleMeta + BuiltInManagedResourceState types,
  resources[] on BuiltInAgentState, scoped reset + reconcile.
- Storybook board + BuiltInBundlePanel.test.tsx (7 tests). tsc, token-gates,
  and tests green.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 752b4a32a5 Implement Reflection Coach built-in bundle server support
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
a56d05ea41 Register reflection-coach in shipped catalog test fixture (PAP-13095)
The Reflection Coach built-in source bundle (bc944f529) added the bundled
reflection-coach skill and regenerated catalog.json, but the shipped-catalog
enumeration test still expected the prior 12-key bundled set. Add the new key
so the catalog key-set and count assertions match the shipped catalog.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
011777f43b Add Reflection Coach built-in source bundle (PAP-13076)
Phase 1 of PAP-13031: markdown-backed shipped defaults for the built-in
Reflection Coach — agent AGENTS.md, paused-by-default recent-agent-reflection
routine template, and the bundled reflection-coach operations skill. Grounded
in the live coach but cleaned up: adds the interaction-gated apply model
(displayed diff + accepted interaction + separate follow-up run) now that the
built-in ships with skill/instruction update permissions.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip 3194907ec7 Gate built-in agents behind experimental flag
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip bbe96928b6 Fix built-in agents route
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:50:34 +00:00
DottaandPaperclip add61ac0cb Document built-in agent OpenAPI routes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:49:40 +00:00
DottaandPaperclip bf0b0c8db1 Fix server CI test expectations
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:49:40 +00:00
DottaandPaperclip f9aa5922ff Reject stale built-in approval setup retries
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:49:40 +00:00
DottaandPaperclip 2645d31d76 Address built-in agent review feedback
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:49:40 +00:00
DottaandPaperclip a7915c9bcf Fix UI token gate violations
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:49:40 +00:00
DottaandPaperclip 5146483fe1 Fix built-in agent roster name collapsing under chip cluster
At narrow widths the agent name could collapse when the built-in badge and setup chip cluster stayed at full width. Give the name a readable floor and let the lower-priority chip cluster wrap instead.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:48:55 +00:00
DottaandPaperclip 947571f334 Fix built-in agent badge token usage
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:47:44 +00:00
DottaandPaperclip 3c4397294a Fix built-in agents checklist test command
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:47:44 +00:00
DottaandPaperclip b65f74c2a3 Built-in agents P2: roster badges, detail banner, configure modal, gate
Implements all UI surfaces for built-in agents (PAP-12978) against the P3
ux-spec (PAP-12977):

- InlineBanner: token-backed info/warning banner primitive (brandBanner tokens)
- BuiltInAgentBadge / BuiltInLifecycleChip: provenance + lifecycle chips
- Roster (Agents page + org tree + sidebar): Built-in badge, Needs-setup /
  Pending-approval chip, inline Set up button, and a Built-in filter tab
- AgentDetail: provenance banner, Reset to defaults, pause-confirm dialog with
  dependency warning, Terminate hidden for built-ins
- ConfigureBuiltInAgentModal: reuses AgentConfigForm adapter/model pickers
  (no second model picker), optional budget, provisions via the API
- BuiltInAgentGate: loading / setup / pending-approval / paused / ready states
- Use-while-paused toast helper (single View-agent link, per D9)
- EmptyState gains an optional title; AgentActionButtons gains pauseConfirm +
  hideTerminate; forward-compatible with the server's board-approval flow
- Component tests for gate states + modal submit path; Storybook story +
  /design-guide entries for the new components

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:47:44 +00:00
DottaandPaperclip ad454e62f5 Freeze pending approval agent config
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:46:23 +00:00
DottaandPaperclip ac3156a6d4 Fix built-in agent approval gating
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:46:23 +00:00
DottaandPaperclip e2c8b2d502 Add built-in agent routes and gate
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:46:23 +00:00
DottaandPaperclip 1d6da01128 Add built-in agent provisioning foundation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-09 20:46:23 +00:00
Devin FoleyandPaperclip bc85b456a1 fix(ui): keep agent names visible on mobile agents index (#9236)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work
> - The Agents index (`ui/src/pages/Agents.tsx`) is the main roster
view, with both a list layout and an org-tree layout
> - On mobile viewports the roster could render rows with no visible
agent names because shrink-resistant trailing controls competed with the
fixed-width title cell
> - A roster where names are unreadable is unusable on phones, and the
org-tree view had a related narrow-width overflow risk for deeply
indented names
> - This pull request lets the list title flex below `xl`, hides
nonessential row controls on mobile, keeps Join/Leave reachable, and
truncates org-tree names safely
> - The result is a readable agents index on mobile while preserving
desktop meta-column alignment and truncation

## Linked Issues or Issue Description

No existing public GitHub issue; describing the bug per the bug report
template:

**What happened?**

On a mobile-width viewport, the agents index showed rows where agent
names could become unreadable or disappear because trailing controls
consumed the available row width. In the org view, deeply indented names
could overflow the row.

**Expected behavior**

Agent names remain visible on every viewport, Join/Leave stays
reachable, and desktop rows continue to align and truncate as before.

**Steps to reproduce**

Open Paperclip in a browser at a narrow viewport, navigate to the Agents
index, and observe rows with long names or left-membership controls.

**Paperclip version or commit**

Reproducible on `master` prior to this fix.

**Deployment mode**

Local dev instance. The bug is viewport-width dependent, not
deployment-mode dependent.

## What Changed

- `EntityRow` now lets callers control title text, subtitle text, and
the meta spacer classes while keeping the default truncation behavior
unchanged.
- Agents list rows now use `flex-1 xl:flex-none xl:w-56`, so names get
mobile width while desktop meta columns keep their aligned fixed title
column.
- Long list-view names/subtitles wrap below `xl` but return to
truncation at `xl` and above.
- Join/Leave stays visible on mobile; run/status/star row controls stay
hidden on mobile to avoid squeezing names.
- Org-tree rows use `min-w-0 truncate`, so deep indentation shortens
names with an ellipsis instead of overflowing.
- Regression tests cover mobile name visibility, left-membership
dimming, responsive title/meta behavior, and mobile Join/Leave
reachability.

## Verification

- `pnpm --filter @paperclipai/ui exec vitest run
src/components/EntityRow.test.tsx src/pages/Agents.test.tsx` — 2 files,
18 tests passed.
- `pnpm check:token-gates` — all gates clean.
- `git diff --cached | rg -n "(AKIA|ASIA|SECRET|TOKEN|PASSWORD|PRIVATE
KEY|BEGIN RSA|BEGIN
OPENSSH|api[_-]?key|bearer|paperclip_api_key|DATABASE_URL|postgres://|sk-[A-Za-z0-9]|xox[baprs]-)"`
— no matches before push.

## Risks

- Low risk: UI-only change scoped to the agents index. The main behavior
change is that nonessential row controls remain hidden on mobile while
Join/Leave remains available there and all controls remain available on
larger screens/detail pages.

## Model Used

- OpenAI GPT-5 via Codex (`codex_local` adapter), agentic code editing
and local/GitHub verification.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [ ] Greptile is 5/5 with no open P2s, recommendations, or follow-ups

Co-authored-by: Paperclip <noreply@paperclip.ing>
canary/v2026.709.0-canary.11
2026-07-09 13:37:17 -07:00
github-actions[bot]andlockfile-bot 4d50fa9f29 chore(lockfile): refresh pnpm-lock.yaml (#9304)
Auto-generated lockfile refresh after dependencies changed on master.
This PR only updates pnpm-lock.yaml.

Co-authored-by: lockfile-bot <lockfile-bot@users.noreply.github.com>
2026-07-09 13:10:22 -05:00