Commit Graph

1459 Commits

Author SHA1 Message Date
Dotta
080c9e415d Merge pull request #1635 from paperclipai/pr/pap-768-board-cli-auth
Add browser-based board CLI auth flow
canary/v2026.323.0-canary.3
2026-03-23 08:47:32 -05:00
dotta
7f9a76411a Address Greptile review on board CLI auth
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:46:05 -05:00
dotta
01b6b7e66a fix: make cli auth migration 0044 idempotent
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:46:05 -05:00
dotta
298713fae7 Fix duplicate auth login company flag
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:46:05 -05:00
dotta
37c2c4acc4 Add browser-based board CLI auth flow
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:46:05 -05:00
Dotta
1376fc8f44 Merge pull request #1631 from paperclipai/pr/pap-768-company-import-safe-imports
Improve company import CLI flows and safe existing-company routes
canary/v2026.323.0-canary.2
2026-03-23 08:25:33 -05:00
Dotta
e6801123ca Merge pull request #1632 from paperclipai/pr/pap-768-merge-history
Add merge-history project import option
canary/v2026.323.0-canary.1
2026-03-23 08:22:27 -05:00
dotta
f23d611d0c Route existing-company CLI imports through safe routes
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:14:51 -05:00
dotta
5dfdbe91bb Add merge-history project import option
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:14:51 -05:00
dotta
e6df9fa078 Support GitHub shorthand refs for company import
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:14:51 -05:00
dotta
5a73556871 Use positional source arg for company import
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:14:51 -05:00
dotta
e204e03fa6 Add CLI company import export e2e test
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 08:14:51 -05:00
Dotta
8b4850aaea Merge pull request #1622 from aronprins/docs/api-routines-and-fixes
docs(api): add Routines reference and fix two documentation bugs
canary/v2026.323.0-canary.0
2026-03-23 05:59:37 -05:00
Aron Prins
f87db64ba9 docs(api/routines): address three review findings
**#1 — Missing `description` field in fields table**
The create body example included `description` and the schema confirms
`description: z.string().optional().nullable()`, but the reference table
omitted it. Added as an optional field.

**#2 — Concurrency policy descriptions were inaccurate**
Original docs described both `coalesce_if_active` and `skip_if_active` as
variants of "skip", which was wrong. Source-verified against
`server/src/services/routines.ts` (dispatchRoutineRun, line 568):

  const status = concurrencyPolicy === "skip_if_active" ? "skipped" : "coalesced";

Both policies write identical DB state (same linkedIssueId and
coalescedIntoRunId); the only difference is the run status value.
Descriptions now reflect this: both finalise the incoming run immediately
and link it to the active run — no new issue is created in either case.

Note: the reviewer's suggestion that `coalesce_if_active` "extends or
notifies" the active run was also not supported by the code; corrected
accordingly.

**#3 — `triggerId` undocumented in Manual Run**
`runRoutineSchema` accepts `triggerId` and the service genuinely uses it
(routines.ts:1029–1034): fetches the trigger, enforces that it belongs to
the routine (403) and is enabled (409), then passes it to dispatchRoutineRun
which records the run against the trigger and updates its `lastFiredAt`.
Added `triggerId` to the example body and documented all three behaviours.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 10:21:34 +01:00
Aron Prins
f42aebdff8 docs(api): add Routines reference
Routines are recurring tasks that fire on a schedule, webhook, or API
call and create a heartbeat run for the assigned agent. Document the
full CRUD surface including:

- List / get routines
- Create with concurrency and catch-up policy options
- Add schedule, webhook, and api triggers
- Update / delete triggers, rotate webhook secrets
- Manual run and public trigger fire
- List run history
- Agent access rules (agents can only manage own routines)
- Routine lifecycle (active → paused → archived)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 09:58:27 +01:00
Aron Prins
4ebc12ab5a docs(api): fix goal status value and document checkout re-claim pattern
- Fix goals-and-projects.md: `completed` is not a valid status — correct to
  `achieved` and document all valid values (planned/active/achieved/cancelled)
- Fix issues.md: document that `expectedStatuses: ["in_progress"]` can be used
  to re-claim a stale lock after a crashed run; clarify that `runId` in the
  request body is not accepted (run ID comes from X-Paperclip-Run-Id header only)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 09:58:20 +01:00
Dotta
fdb20d5d08 Merge pull request #550 from mvanhorn/osc/529-fix-missing-agents-md-fallback
fix: graceful fallback when AGENTS.md is missing in claude-local adapter
canary/v2026.321.0-canary.4
2026-03-21 11:17:35 -05:00
Dotta
5bf6fd1270 Merge pull request #551 from mvanhorn/osc/272-fix-comment-image-attachments
fix: embed uploaded images inline in comments via paperclip button
2026-03-21 11:16:49 -05:00
Dotta
e3e7a92c77 Merge pull request #552 from mvanhorn/osc/129-feat-filter-issues-by-project
feat(ui): add project filter to issues list
canary/v2026.321.0-canary.3
2026-03-21 11:15:09 -05:00
Dotta
640f527f8c Merge pull request #832 from mvanhorn/feat/evals-promptfoo-bootstrap
feat(evals): bootstrap promptfoo eval framework (Phase 0)
canary/v2026.321.0-canary.2
2026-03-21 07:28:59 -05:00
Dotta
49c1b8c2d8 Merge branch 'master' into feat/evals-promptfoo-bootstrap 2026-03-21 07:28:51 -05:00
Devin Foley
93ba78362d Merge pull request #1331 from paperclipai/ci/consolidate-pr-workflows
ci: consolidate PR workflows into a single file
canary/v2026.321.0-canary.1
2026-03-20 18:09:19 -07:00
Devin Foley
2fdf953229 ci: consolidate PR workflows into a single file
Merge pr-verify.yml, pr-policy.yml, and pr-e2e.yml into a single
pr.yml with three parallel jobs (policy, verify, e2e). Benefits:

- Single concurrency group cancels all jobs on new push
- Consistent Node 24 across all jobs
- One file to maintain instead of three

The jobs still run independently (no artifact sharing) since pnpm
cache makes install fast and the upload/download overhead for
node_modules would negate the savings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 17:11:36 -07:00
Devin Foley
ebe00359d1 Merge pull request #1316 from paperclipai/fix/lockfile-refresh-automerge-guard
fix(ci): skip auto-merge step when lockfile is unchanged
canary/v2026.321.0-canary.0
2026-03-20 16:58:03 -07:00
Devin Foley
036e2b52db Merge pull request #1326 from paperclipai/ci/pr-e2e-tests
ci: run e2e tests on PRs
canary/v2026.320.0-canary.7
2026-03-20 15:47:21 -07:00
Dotta
f4803291b8 Merge pull request #1385 from paperclipai/fix/worktree-merge-history-migrations
fix: renumber worktree merge history migrations
canary/v2026.320.0-canary.6
2026-03-20 17:26:58 -05:00
dotta
d47ec56eca fix: renumber worktree merge history migrations 2026-03-20 17:23:45 -05:00
Dotta
ae6aac044d Merge pull request #1384 from paperclipai/fix/codex-managed-home-followups
fix: restore post-merge route verification
canary/v2026.320.0-canary.5
2026-03-20 17:12:52 -05:00
dotta
da2c15905a fix: restore post-merge route verification 2026-03-20 17:09:57 -05:00
Dotta
13ca33aa4e Merge pull request #1383 from paperclipai/fix/codex-managed-home-followups
Improve worktree merge/import followups
2026-03-20 17:08:44 -05:00
dotta
54b99d5096 Search sibling storage roots for attachments
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
fb63d61ae5 Skip missing worktree attachment objects
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
73ada45037 Import worktree documents and attachments
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
be911754c5 Default comment reopen to checked
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
cff06c9a54 Add issue titles to worktree merge preview
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
ad011fbf1e Clarify worktree import source and target flags
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
28a5f858b7 Add worktree source discovery commands
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
220a5ec5dd Add project mapping prompts for worktree imports
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
dotta
0ec79d4295 Add worktree history merge command
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 17:01:52 -05:00
Dotta
a46dc4634b Merge pull request #1351 from paperclipai/paperclip-routines
WIP: routines management, triggers, and execution flow
canary/v2026.320.0-canary.4
2026-03-20 16:53:06 -05:00
dotta
df64530333 test: add routines api end-to-end coverage 2026-03-20 16:50:11 -05:00
dotta
8dc98db717 fix: close remaining routine merge blockers 2026-03-20 16:40:27 -05:00
dotta
9093cfbe4f fix: address greptile routine review 2026-03-20 16:26:29 -05:00
Devin Foley
da9b31e393 fix(ci): use --frozen-lockfile in e2e workflow
Align with e2e.yml and ensure CI tests exactly the committed
dependency tree. The pr-policy job already blocks lockfile changes
in PRs, so frozen-lockfile is safe here.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 14:20:46 -07:00
dotta
99eb317600 fix: harden routine dispatch and permissions 2026-03-20 16:15:32 -05:00
Devin Foley
652fa8223e fix: invert reuseExistingServer and remove CI="" workaround
The playwright.config.ts had `reuseExistingServer: !!process.env.CI`
which meant CI would reuse (expect) an existing server while local
dev would start one. This is backwards — in CI Playwright should
manage the server, and in local dev you likely already have one
running.

Flip to `!process.env.CI` and remove the `CI: ""` env override
from the workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:49:03 -07:00
dotta
e3c92a20f1 Merge remote-tracking branch 'public-gh/master' into paperclip-routines
* public-gh/master: (46 commits)
  chore(lockfile): refresh pnpm-lock.yaml (#1377)
  fix: manage codex home per company by default
  Ensure agent home directories exist before use
  Handle directory entries in imported zip archives
  Fix portability import and org chart test blockers
  Fix PR verify failures after merge
  fix: address greptile follow-up feedback
  Address remaining Greptile portability feedback
  docs: clarify quickstart npx usage
  Add guarded dev restart handling
  Fix PAP-576 settings toggles and transcript default
  Add username log censor setting
  fix: use standard toggle component for permission controls
  fix: add missing setPrincipalPermission mock in portability tests
  fix: use fixed 1280x640 dimensions for org chart export image
  Adjust default CEO onboarding task copy
  fix: link Agent Company to agentcompanies.io in export README
  fix: strip agents and projects sections from COMPANY.md export body
  fix: default company export page to README.md instead of first file
  Add default agent instructions bundle
  ...

# Conflicts:
#	packages/adapters/pi-local/src/server/execute.ts
#	packages/db/src/migrations/meta/0039_snapshot.json
#	packages/db/src/migrations/meta/_journal.json
#	server/src/__tests__/agent-permissions-routes.test.ts
#	server/src/__tests__/agent-skills-routes.test.ts
#	server/src/services/company-portability.ts
#	skills/paperclip/references/company-skills.md
#	ui/src/api/agents.ts
2026-03-20 15:04:55 -05:00
github-actions[bot]
a290d1d550 chore(lockfile): refresh pnpm-lock.yaml (#1377)
Co-authored-by: lockfile-bot <lockfile-bot@users.noreply.github.com>
2026-03-20 14:46:31 -05:00
Dotta
abf48cbbf9 Merge pull request #1379 from paperclipai/fix/codex-managed-home-followups
Default codex-local to a managed per-company CODEX_HOME
canary/v2026.320.0-canary.3
2026-03-20 14:45:55 -05:00
dotta
d53714a145 fix: manage codex home per company by default 2026-03-20 14:44:27 -05:00