No description
Find a file
2026-06-03 03:22:17 +00:00
.paperclip-sdk Scaffold Forgejo issue sync plugin 2026-06-02 02:57:49 +00:00
docs Document plugin secret-ref platform blocker 2026-06-03 03:22:17 +00:00
examples Preserve Forgejo mappings across retry failures 2026-06-02 08:01:26 +00:00
migrations Fix plugin migration namespace slug 2026-06-02 09:19:58 +00:00
src Fix Forgejo token secret ref validation 2026-06-03 03:03:03 +00:00
tests Fix Forgejo token secret ref validation 2026-06-03 03:03:03 +00:00
.gitignore Scaffold Forgejo issue sync plugin 2026-06-02 02:57:49 +00:00
package.json Bundle plugin worker against local shared snapshot 2026-06-02 09:29:24 +00:00
pnpm-lock.yaml Bundle plugin worker against local shared snapshot 2026-06-02 09:29:24 +00:00
pnpm-workspace.yaml Scaffold Forgejo issue sync plugin 2026-06-02 02:57:49 +00:00
README.md Implement one-way Paperclip to Forgejo issue sync 2026-06-02 07:00:21 +00:00
tsconfig.build.json fix(build): rootDir=src so tsc emits dist/manifest.js (not dist/src) 2026-06-02 08:48:32 +00:00
tsconfig.json Scaffold Forgejo issue sync plugin 2026-06-02 02:57:49 +00:00
vitest.config.ts Scaffold Forgejo issue sync plugin 2026-06-02 02:57:49 +00:00

Forgejo Issue Sync Plugin

Paperclip plugin for one-way Paperclip issue -> Forgejo issue creation while enforcing the v1 attachment policy:

  • selected Paperclip issues are detected inside the plugin worker
  • scheduled reconciliation stays in plugin jobs
  • mappings, dedupe, and review state stay in the plugin database/state
  • attachment handling is metadata-only
  • no managed agents or managed skills are declared in v1

Layout

  • src/manifest.ts: manifest, capabilities, jobs, webhook declaration, instance config schema
  • src/worker.ts: plugin bootstrap, health, config validation, data/action registration
  • src/paperclip-issue-sync.ts: issue selection, payload shaping, and outbound sync flow
  • src/forgejo-client.ts: outbound Forgejo API client
  • src/reconciliation.ts: scheduled reconciliation job and instance-level last-run state
  • src/persistence.ts: namespace-local persistence helpers for mappings, reviews, and run snapshots
  • src/attachment-policy.ts: metadata-only attachment policy and synced markdown formatter
  • migrations/001_initial.sql: plugin-owned tables for mappings, dedupe, review queue, and reconciliation history

Attachment Policy

This plugin deliberately does not fetch attachment bytes and does not add any path that calls /api/attachments/{id}/content.

Instead it:

  • preserves attachment metadata only
  • appends Attachments are not synced. See the source Paperclip issue. to generated sync content
  • stores a machine-readable review reason code when the issue/comment text suggests the attachment is required for context
  • queues those payloads in review_queue for later human-routing work

Follow-Up Needed

The plugin emits attachments_context_required as a durable review signal, but the human-review destination is still a follow-up decision:

  • create Paperclip-visible review issues/comments
  • expose a plugin UI or scoped API route for triage
  • route review-required payloads into an existing operator workflow

That routing is intentionally left out of this v1 scaffold so the sync runtime stays inside plugin jobs/webhooks/state as requested.