{"_id":"@arungeorgesaji/assembly","_rev":"2-a7c82c7dd3ca79b82dc95405acfe7b1d","name":"@arungeorgesaji/assembly","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@arungeorgesaji/assembly","version":"0.1.0","license":"MIT","_id":"@arungeorgesaji/assembly@0.1.0","maintainers":[{"name":"arungeorgesaji","email":"arungeorgesaji@gmail.com"}],"bin":{"assembly":"src/cli.js"},"dist":{"shasum":"eebae466cf8df6afa58f1eebada3ddbbffb36739","tarball":"https://registry.npmjs.org/@arungeorgesaji/assembly/-/assembly-0.1.0.tgz","fileCount":38,"integrity":"sha512-vKY3RjfO4YEDHz7CgPm1D/074Kh/ayq97jAwrkEkX6jJlyVpehtaq9srh/fJDGORmIQJ7eZSKIEcJOyCaX4bBg==","signatures":[{"sig":"MEQCIDH5l9IXG725s8ezqZQlTGdnWn4trZgN4loXjhViR5s/AiBmOwPQedu9k8xATzvGzhuE74pGo7MvuCGC2MTYgWve0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171121},"type":"module","engines":{"node":">=20"},"gitHead":"5b81f52cc5020de37436c2ac3a76083effa3e35f","scripts":{"run":"node src/cli.js run","plan":"node src/cli.js plan","test":"node --test"},"_npmUser":{"name":"arungeorgesaji","email":"arungeorgesaji@gmail.com"},"_npmVersion":"11.14.1","description":"A coordination layer for AI software engineering teams.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/assembly_0.1.0_1780783201790_0.03172895963423672","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@arungeorgesaji/assembly","version":"0.1.1","description":"A coordination layer for AI software engineering teams.","type":"module","bin":{"assembly":"src/cli.js"},"scripts":{"test":"node --test","plan":"node src/cli.js plan","run":"node src/cli.js run"},"engines":{"node":">=20"},"license":"MIT","gitHead":"f9f0aa5fcfb2d6bea3e750e38f6b4ab6a60fa9db","_id":"@arungeorgesaji/assembly@0.1.1","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-3P5Y/VFARHCpNIJqkahPx0bgsUjHR3KzswmimkelQGa4TNzlxNWpCAcdSZfMcSbSB8qFHKu4unFALYGPm2p7HQ==","shasum":"eb08b4051e5ce7fceef19f82517f0cabda3dcd6b","tarball":"https://registry.npmjs.org/@arungeorgesaji/assembly/-/assembly-0.1.1.tgz","fileCount":38,"unpackedSize":158430,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD6WfOXF/2K464NRzqgvOnMRq0PJ/6R0pdGCm2ON3v58wIhAMNtRzbIevpGzFSSg6RVDIxvEKK4XjB4W4sCT9Ezz4jW"}]},"_npmUser":{"name":"arungeorgesaji","email":"arungeorgesaji@gmail.com"},"directories":{},"maintainers":[{"name":"arungeorgesaji","email":"arungeorgesaji@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/assembly_0.1.1_1780788179672_0.06885625960117214"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-06T22:00:01.653Z","modified":"2026-06-06T23:22:59.929Z","0.1.0":"2026-06-06T22:00:01.994Z","0.1.1":"2026-06-06T23:22:59.818Z"},"license":"MIT","description":"A coordination layer for AI software engineering teams.","maintainers":[{"name":"arungeorgesaji","email":"arungeorgesaji@gmail.com"}],"readme":"# Assembly\n\nAssembly is a Node.js CLI for coordinating AI coding work with scoped tasks, validation, review, and GitHub/Slack workflows.\n\nIt runs inside a target Git repository, stores state under `.assembly/`, and can create or update pull requests from local commands, GitHub comments, or Slack requests.\n\nAssembly supports interaction via CLI, GitHub, and Slack requests, enabling flexible coordination of AI coding tasks across these platforms.\n\n## Install\n\nInstall as a dependency:\n\n```bash\nnpm i @arungeorgesaji/assembly\n```\n\nInstall the CLI globally:\n\n```bash\nnpm install -g @arungeorgesaji/assembly\n```\n\nThen use:\n\n```bash\nassembly init\nassembly doctor\nassembly webhook --port 3000\n```\n\n## Quick Start\n\nFrom the repository Assembly should modify:\n\n```bash\ncd my-repo\nassembly init\nassembly doctor\nassembly plan \"Add README setup notes\" --pretty\nassembly run \"Add README setup notes\" --pretty\n```\n\n`assembly init` creates:\n\n```text\n.env\n.assembly/\n```\n\nAssembly resolves the target to the Git repository root. To target another checkout:\n\n```bash\nassembly --repo /path/to/repo doctor\n```\n\n## Configuration\n\n`.env` is loaded from the target repo:\n\n```text\nASSEMBLY_AGENT_PROVIDER=stub\nASSEMBLY_APPROVAL_MODE=auto\nOPENAI_API_KEY=\nOPENAI_MODEL=gpt-4.1-mini\nGITHUB_WEBHOOK_SECRET=\nSLACK_SIGNING_SECRET=\nSLACK_BOT_TOKEN=\n```\n\nUse `ASSEMBLY_AGENT_PROVIDER=stub` for no-op local testing. Use `openai` for provider-backed implementation and review.\n\nRun:\n\n```bash\nassembly doctor\n```\n\nto check missing setup.\n\n## Commands\n\n```bash\nassembly init [--force]\nassembly doctor [--json] [--pretty]\nassembly plan \"request\" --pretty\nassembly run \"request\" --pretty\nassembly follow-up <run-id> \"feedback\" --pretty\nassembly status <run-id>\nassembly inspect <run-id> --pretty\nassembly github create-pr <run-id>\nassembly job list\nassembly job inspect <job-id> --pretty\nassembly job process <job-id>\nassembly job retry <job-id>\nassembly webhook --port 3000\n```\n\nRuns are stored under:\n\n```text\n.assembly/runs/<run-id>/\n```\n\nJobs are stored under:\n\n```text\n.assembly/jobs/\n```\n\n## How It Works\n\nAssembly creates a plan from a request, assigns scoped tasks, runs agents, validates their output, runs verification, and writes a final report.\n\nCurrent task owners:\n\n- `planner`\n- `implementation-agent`\n- `review-agent`\n\nPlans also include dynamic agent profiles derived from each task's scope, denylist, and change policy. These profiles are not predefined personas; they are generated per plan and passed to implementation/review agents as the delegation contract.\n\nAssembly validates:\n\n- task dependencies and acceptance criteria\n- changed files against task scope\n- denied paths such as `.env`, `.git/`, and `.assembly/`\n- agent result shape\n- additive edits for `Add ...` requests\n- final git diff before PR creation\n- review completion before PR creation\n\n## GitHub\n\nCreate a PR from a completed run:\n\n```bash\nassembly github create-pr <run-id>\n```\n\nRequirements:\n\n- `gh auth login` or `GH_TOKEN` / `GITHUB_TOKEN`\n- clean working tree except run-owned files\n- completed run\n- completed review\n- passing verification\n\nAssembly stages only files owned by the run. It does not use `git add .`.\n\n## Webhooks\n\nStart the webhook server:\n\n```bash\nassembly webhook --port 3000\n```\n\nExpose it with a tunnel:\n\n```bash\nngrok http 3000\n```\n\nGitHub webhook:\n\n- Payload URL: `https://<tunnel>/github/webhook`\n- Content type: `application/json`\n- Secret: `GITHUB_WEBHOOK_SECRET`\n- Events: issues, issue comments, pull request review comments, pull request reviews\n\nSlack app:\n\n- Request URL: `https://<tunnel>/slack/events`\n- Bot events: `app_mention`, `message.im`\n- Env: `SLACK_SIGNING_SECRET`, `SLACK_BOT_TOKEN`\n\nMention `@assembly` in GitHub issues, PR comments, review comments, or Slack messages to queue work.\n\n## Development\n\n```bash\nnpm install\nnpm test\nnpm link\n```\n","readmeFilename":"README.md"}