{"_id":"@9xlabs/paperclip-mantis-plugin","_rev":"5-7ea9c7f90b89a7d0c7ffa771d1c0fc6a","name":"@9xlabs/paperclip-mantis-plugin","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.1":{"name":"@9xlabs/paperclip-mantis-plugin","version":"0.1.1","keywords":["paperclip","plugin","connector"],"author":{"name":"9xLabs"},"license":"MIT","_id":"@9xlabs/paperclip-mantis-plugin@0.1.1","maintainers":[{"name":"norashing","email":"devduyph@gmail.com"}],"dist":{"shasum":"ccc113a36ba4423939664493a56133a0b5c5f9f4","tarball":"https://registry.npmjs.org/@9xlabs/paperclip-mantis-plugin/-/paperclip-mantis-plugin-0.1.1.tgz","fileCount":8,"integrity":"sha512-MtA3COVhym5i8FmR0SjTKv0VF1FpYF0C5xJ2+tBnBzL3odACYzFFZV/3UYxHYeKBVWz35UQpDnv78RPeLIZyQw==","signatures":[{"sig":"MEYCIQDfZjOX6u1H+SEno0zQI1UrY/PbTXNrYlOzBRCgyG3oIQIhAKXiIwfYpXpZrOn0QXBuv7J1mYx9kO1cWgxXGmqeS+5U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1108011},"type":"module","_from":"file:9xlabs-paperclip-mantis-plugin-0.1.1.tgz","private":false,"scripts":{"dev":"node ./esbuild.config.mjs --watch","test":"vitest run --config ./vitest.config.ts","build":"node ./esbuild.config.mjs","dev:ui":"paperclip-plugin-dev-server --root . --ui-dir dist/ui --port 4177","typecheck":"tsc --noEmit","build:rollup":"rollup -c"},"_npmUser":{"name":"norashing","email":"devduyph@gmail.com"},"_resolved":"/tmp/96425dc84af52097da856d0097b76246/9xlabs-paperclip-mantis-plugin-0.1.1.tgz","_integrity":"sha512-MtA3COVhym5i8FmR0SjTKv0VF1FpYF0C5xJ2+tBnBzL3odACYzFFZV/3UYxHYeKBVWz35UQpDnv78RPeLIZyQw==","_npmVersion":"10.9.7","description":"Synchronize MantisBT issues into Paperclip projects.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","tslib":"^2.8.1","rollup":"^4.38.0","vitest":"^3.0.5","esbuild":"^0.27.3","typescript":"^5.7.3","@types/node":"^24.6.0","@types/react":"^19.0.8","@paperclipai/plugin-sdk":"^2026.403.0","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1"},"paperclipPlugin":{"ui":"./dist/ui/","worker":"./dist/worker.js","manifest":"./dist/manifest.js"},"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/paperclip-mantis-plugin_0.1.1_1776652679922_0.25141577831578843","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@9xlabs/paperclip-mantis-plugin","version":"0.1.2","keywords":["paperclip","plugin","connector"],"author":{"name":"9xLabs"},"license":"MIT","_id":"@9xlabs/paperclip-mantis-plugin@0.1.2","maintainers":[{"name":"norashing","email":"devduyph@gmail.com"}],"dist":{"shasum":"5d241390b6a57f069eb93a7273e0cb8205ce0504","tarball":"https://registry.npmjs.org/@9xlabs/paperclip-mantis-plugin/-/paperclip-mantis-plugin-0.1.2.tgz","fileCount":8,"integrity":"sha512-XKmOvEaqR0lwS2WZ06i0SLDtwQtDjCsKJOSANHNZJcAbO0PiIQi+wLtx1HkjCDMB2j/vNZ5rK2a4Q45vpdpV8A==","signatures":[{"sig":"MEUCIQDKnJq4crC4Yjwj35ezcwFKk+64UvZA/To6nAr7oWqc/AIgVwoCpQTUvTWDFVlaFLvqhg+FnGXrelqnLvi120IPI4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1108524},"type":"module","_from":"file:9xlabs-paperclip-mantis-plugin-0.1.2.tgz","private":false,"scripts":{"dev":"node ./esbuild.config.mjs --watch","test":"vitest run --config ./vitest.config.ts","build":"node ./esbuild.config.mjs","dev:ui":"paperclip-plugin-dev-server --root . --ui-dir dist/ui --port 4177","typecheck":"tsc --noEmit","build:rollup":"rollup -c"},"_npmUser":{"name":"norashing","email":"devduyph@gmail.com"},"_resolved":"/tmp/78e25481c535c6c64b672b046b3c7fc4/9xlabs-paperclip-mantis-plugin-0.1.2.tgz","_integrity":"sha512-XKmOvEaqR0lwS2WZ06i0SLDtwQtDjCsKJOSANHNZJcAbO0PiIQi+wLtx1HkjCDMB2j/vNZ5rK2a4Q45vpdpV8A==","_npmVersion":"10.9.7","description":"Synchronize MantisBT issues into Paperclip projects.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","tslib":"^2.8.1","rollup":"^4.38.0","vitest":"^3.0.5","esbuild":"^0.27.3","typescript":"^5.7.3","@types/node":"^24.6.0","@types/react":"^19.0.8","@paperclipai/plugin-sdk":"^2026.403.0","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1"},"paperclipPlugin":{"ui":"./dist/ui/","worker":"./dist/worker.js","manifest":"./dist/manifest.js"},"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/paperclip-mantis-plugin_0.1.2_1776660678920_0.32699028624869","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@9xlabs/paperclip-mantis-plugin","version":"0.1.3","keywords":["paperclip","plugin","connector"],"author":{"name":"9xLabs"},"license":"MIT","_id":"@9xlabs/paperclip-mantis-plugin@0.1.3","maintainers":[{"name":"norashing","email":"devduyph@gmail.com"}],"dist":{"shasum":"e6f8ee1dee4a7746b6e27dc09498fc167a2e4b0d","tarball":"https://registry.npmjs.org/@9xlabs/paperclip-mantis-plugin/-/paperclip-mantis-plugin-0.1.3.tgz","fileCount":8,"integrity":"sha512-Jlui4qot+h47O8J9KWaNncbRaAHEIoSJeZZ5ukt0ClbCYNqTIh8wi8qh0t8EJJQCX3Ixjie8pH31+X/a9btTFA==","signatures":[{"sig":"MEQCIAfys2V4QsKX5Zyt/4ll7AyWgMxYzyXYdT4x+gqDVDUNAiADxhdr0IAo1mZjWeiLBUEHsdpRye5o8yul5SS/215UOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1107177},"type":"module","_from":"file:9xlabs-paperclip-mantis-plugin-0.1.3.tgz","private":false,"scripts":{"dev":"node ./esbuild.config.mjs --watch","test":"vitest run --config ./vitest.config.ts","build":"node ./esbuild.config.mjs","dev:ui":"paperclip-plugin-dev-server --root . --ui-dir dist/ui --port 4177","typecheck":"tsc --noEmit","build:rollup":"rollup -c"},"_npmUser":{"name":"norashing","email":"devduyph@gmail.com"},"_resolved":"/tmp/f71f80b04867555df53bd77d809a1673/9xlabs-paperclip-mantis-plugin-0.1.3.tgz","_integrity":"sha512-Jlui4qot+h47O8J9KWaNncbRaAHEIoSJeZZ5ukt0ClbCYNqTIh8wi8qh0t8EJJQCX3Ixjie8pH31+X/a9btTFA==","_npmVersion":"10.9.7","description":"Synchronize MantisBT issues into Paperclip projects.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","tslib":"^2.8.1","rollup":"^4.38.0","vitest":"^3.0.5","esbuild":"^0.27.3","typescript":"^5.7.3","@types/node":"^24.6.0","@types/react":"^19.0.8","@paperclipai/plugin-sdk":"^2026.403.0","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1"},"paperclipPlugin":{"ui":"./dist/ui/","worker":"./dist/worker.js","manifest":"./dist/manifest.js"},"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/paperclip-mantis-plugin_0.1.3_1776672090587_0.3982077486069773","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@9xlabs/paperclip-mantis-plugin","version":"0.1.4","keywords":["paperclip","plugin","connector"],"author":{"name":"9xLabs"},"license":"MIT","_id":"@9xlabs/paperclip-mantis-plugin@0.1.4","maintainers":[{"name":"norashing","email":"devduyph@gmail.com"}],"dist":{"shasum":"9e025505cd59a562442f67e2267245c024b044d4","tarball":"https://registry.npmjs.org/@9xlabs/paperclip-mantis-plugin/-/paperclip-mantis-plugin-0.1.4.tgz","fileCount":8,"integrity":"sha512-6G7jbhIOtc5xu2G5FOUNRtptelP12s5qmmBzwpoGoVJtMUeB1P3oEY7B45oBxyZJPaVjzLsWeQGxMW84I84Eyw==","signatures":[{"sig":"MEUCIQCYD/lGGRO4ZwCX8UKCIq6aj68CtkDoo73PdIsJ+luJpQIgSEqWkF9LnzvU76Qb+luspT8K87HOgn2HPC2/jDgIsjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1120112},"type":"module","_from":"file:9xlabs-paperclip-mantis-plugin-0.1.4.tgz","private":false,"scripts":{"dev":"node ./esbuild.config.mjs --watch","test":"vitest run --config ./vitest.config.ts","build":"node ./esbuild.config.mjs","dev:ui":"paperclip-plugin-dev-server --root . --ui-dir dist/ui --port 4177","typecheck":"tsc --noEmit","build:rollup":"rollup -c"},"_npmUser":{"name":"norashing","email":"devduyph@gmail.com"},"_resolved":"/tmp/ef1ae00d321f1d6fab0d45a20ce37733/9xlabs-paperclip-mantis-plugin-0.1.4.tgz","_integrity":"sha512-6G7jbhIOtc5xu2G5FOUNRtptelP12s5qmmBzwpoGoVJtMUeB1P3oEY7B45oBxyZJPaVjzLsWeQGxMW84I84Eyw==","_npmVersion":"10.9.7","description":"Synchronize MantisBT issues into Paperclip projects.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","tslib":"^2.8.1","rollup":"^4.38.0","vitest":"^3.0.5","esbuild":"^0.27.3","typescript":"^5.7.3","@types/node":"^24.6.0","@types/react":"^19.0.8","@paperclipai/plugin-sdk":"^2026.403.0","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1"},"paperclipPlugin":{"ui":"./dist/ui/","worker":"./dist/worker.js","manifest":"./dist/manifest.js"},"peerDependencies":{"react":">=18"},"_npmOperationalInternal":{"tmp":"tmp/paperclip-mantis-plugin_0.1.4_1776741491081_0.24576516587960873","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@9xlabs/paperclip-mantis-plugin","version":"0.1.5","type":"module","private":false,"description":"Synchronize MantisBT issues into Paperclip projects.","paperclipPlugin":{"manifest":"./dist/manifest.js","worker":"./dist/worker.js","ui":"./dist/ui/"},"keywords":["paperclip","plugin","connector"],"author":{"name":"9xLabs"},"license":"MIT","publishConfig":{"access":"public"},"devDependencies":{"react":"^19.0.0","@paperclipai/plugin-sdk":"^2026.403.0","@rollup/plugin-node-resolve":"^16.0.1","@rollup/plugin-typescript":"^12.1.2","@types/node":"^24.6.0","@types/react":"^19.0.8","esbuild":"^0.27.3","rollup":"^4.38.0","tslib":"^2.8.1","typescript":"^5.7.3","vitest":"^3.0.5"},"peerDependencies":{"react":">=18"},"scripts":{"build":"node ./esbuild.config.mjs","build:rollup":"rollup -c","dev":"node ./esbuild.config.mjs --watch","dev:ui":"paperclip-plugin-dev-server --root . --ui-dir dist/ui --port 4177","test":"vitest run --config ./vitest.config.ts","typecheck":"tsc --noEmit"},"_id":"@9xlabs/paperclip-mantis-plugin@0.1.5","_integrity":"sha512-Uc89q8vtnS21KKGeduCSV1k9g3F/brBUbwcb9Hi2fEeK6uIced2IsrUdXPYYGJwur3oK3pQQimoXg2V6jwSaTg==","_resolved":"/tmp/ff2351e42d62bb91edc010fc5220c5e2/9xlabs-paperclip-mantis-plugin-0.1.5.tgz","_from":"file:9xlabs-paperclip-mantis-plugin-0.1.5.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-Uc89q8vtnS21KKGeduCSV1k9g3F/brBUbwcb9Hi2fEeK6uIced2IsrUdXPYYGJwur3oK3pQQimoXg2V6jwSaTg==","shasum":"4c1928348a8ffe593811bdc3ce11313d8c53f96a","tarball":"https://registry.npmjs.org/@9xlabs/paperclip-mantis-plugin/-/paperclip-mantis-plugin-0.1.5.tgz","fileCount":8,"unpackedSize":1125112,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCfUnCz5f+rP4qQjFKeSMA42xy/qm3G8uBgIa1G/dBHJwIhAOPnfrNCr4HQIomwyEe9HyHKa/S/JPqowF70+3/otkdE"}]},"_npmUser":{"name":"norashing","email":"devduyph@gmail.com"},"directories":{},"maintainers":[{"name":"norashing","email":"devduyph@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/paperclip-mantis-plugin_0.1.5_1776743580448_0.5927211003685549"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T02:37:59.819Z","modified":"2026-04-21T03:53:00.715Z","0.1.1":"2026-04-20T02:38:00.060Z","0.1.2":"2026-04-20T04:51:19.086Z","0.1.3":"2026-04-20T08:01:30.790Z","0.1.4":"2026-04-21T03:18:11.272Z","0.1.5":"2026-04-21T03:53:00.588Z"},"author":{"name":"9xLabs"},"license":"MIT","keywords":["paperclip","plugin","connector"],"description":"Synchronize MantisBT issues into Paperclip projects.","maintainers":[{"name":"norashing","email":"devduyph@gmail.com"}],"readme":"# @9xlabs/paperclip-mantis-plugin\n\nMantisBT connector plugin for [Paperclip](https://github.com/paperclipai/paperclip).\n\n**This repository** is the 9xLabs–maintained home for the package (source, release, CI). The Paperclip **core** app and monorepo are upstream and are **not** developed here—install this plugin into any compatible Paperclip instance via npm or a local path.\n\nThis plugin helps operators:\n\n- connect a Paperclip instance to MantisBT using API token validation (secret ref),\n- map Mantis projects to Paperclip projects,\n- import and update Paperclip issues from Mantis (title, description, status where applicable),\n- import Mantis notes as Paperclip issue comments,\n- index Mantis media metadata into issue document `mantis-media-index` (file upload is disabled in compatibility mode for Paperclip 0.3.x),\n- run scheduled sync (`sync.mantis-issues`) plus manual sync from the project toolbar.\n\n## What this plugin includes\n\n- Worker + UI entrypoints (`src/worker.ts`, `src/ui/index.tsx`)\n- **Mantis Sync** settings page (base URL, token ref, mappings, advanced per-company options)\n- Project **toolbar** action for on-demand sync\n- Scheduled job: `sync.mantis-issues` (default poll cadence; respects configured sync interval in plugin state)\n- No separate agent tool surface in v1—the value is **sync + UI**; agents are unaffected unless you extend the package later.\n\n## Requirements\n\n- Paperclip runtime with plugin support\n- MantisBT **REST API** access and a **Personal Access Token** (or equivalent API token) stored as a Paperclip **secret ref** (`mantisTokenRef`)\n- Network path from the Paperclip host to your Mantis base URL (the host’s outbound HTTP rules apply)\n- Attachment upload is currently disabled in compatibility mode so this plugin can run on Paperclip `0.3.x`\n- Media metadata is synchronized into issue document key `mantis-media-index` so agents can consume it through the documents API/SDK\n\n## Development\n\nClone this repo (not the full Paperclip monorepo). Dependencies resolve from the public npm registry (`@paperclipai/plugin-sdk`, etc.).\n\n```bash\npnpm install\npnpm dev\npnpm dev:ui\npnpm test\n```\n\nUseful commands:\n\n```bash\npnpm typecheck\npnpm build\npnpm build:rollup\n```\n\n## Install into local Paperclip\n\n```bash\ncurl -X POST http://127.0.0.1:3100/api/plugins/install \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"packageName\":\"/absolute/path/to/paperclip-mantis-plugin\",\"isLocalPath\":true}'\n```\n\nOr from the CLI (with `PAPERCLIP_API_URL` pointing at your instance):\n\n```bash\npnpm paperclipai plugin install /absolute/path/to/paperclip-mantis-plugin --local\n```\n\nFrom npm (after publish):\n\n```bash\npnpm paperclipai plugin install @9xlabs/paperclip-mantis-plugin\n```\n\n## Configuration flow\n\n1. Open Paperclip → **Settings** → **Plugins** → **Mantis Sync**\n2. Set **`mantisBaseUrl`** (root URL of your Mantis instance)\n3. Validate and save **`mantisTokenRef`** (Paperclip secret reference for the Mantis API token)\n4. Add **project mappings**: Mantis project → Paperclip project (per company)\n5. Optionally tune **`syncIntervalMinutes`** and per-company advanced options (open-only, assignee filter, default status/agent, ignored reporters)\n6. Save settings; the scheduled job and toolbar action will use the resolved configuration\n\n## Upgrading\n\nPaperclip exposes **`POST /api/plugins/:pluginId/upgrade`** (instance admin) for npm upgrades; the board UI may surface the same flow. You can also install a newer npm version explicitly:\n\n```bash\npnpm paperclipai plugin install @9xlabs/paperclip-mantis-plugin@<version>\n```\n\nBecause npm **forbids re-publishing the same version**, each release needs a **new semver** in `package.json`.\n\n## npm release\n\nPackage: `@9xlabs/paperclip-mantis-plugin`\n\nWorkflow: `.github/workflows/publish.yml`\n\n- Trigger: GitHub Release `published` or manual `workflow_dispatch`\n- Required repo secret: `NPM_TOKEN`\n- Publish command:\n\n```bash\npnpm publish --no-git-checks --access public --registry https://registry.npmjs.org/\n```\n\nPrepublish validation:\n\n```bash\npnpm prepublishOnly\n```\n\nWhich runs:\n\n```bash\npnpm typecheck && pnpm test\n```\n\n`prepack` runs `pnpm build` to emit `dist/` before the tarball is packed.\n\n## Troubleshooting\n\n- **Sync does nothing**: confirm project mappings exist and the Mantis token is valid for the projects you mapped.\n- **Notes import but attachments do not**: expected on compatibility builds of this plugin for Paperclip `0.3.x`; file uploads are intentionally skipped and media is indexed into `mantis-media-index`.\n","readmeFilename":"README.md"}