@joynt/foundry 0.1.51 → 0.1.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +70 -0
- package/package.json +28 -2
- package/templates/foundry.yml +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Joynt Shops
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Joynt Foundry
|
|
2
|
+
|
|
3
|
+
Foundry turns a GitHub Issue into a verified pull request. Comment `@foundry go` on an issue and Foundry claims it, runs a coding agent in an isolated git worktree, runs your verify commands, opens a PR into your integration branch, and stands up a preview if you have one. Humans review on GitHub. Three comments are the whole control surface: `@foundry go`, `@foundry restart`, `@foundry stop`. Every other comment is context the agent reads; labels show status.
|
|
4
|
+
|
|
5
|
+
Foundry is a **GitHub Action**. There is no server to run and no machine to keep awake. Each GitHub event that matters starts a job, the job performs one transition of the task's state machine, and state lives on GitHub: in labels, a structured claim comment, the PR, and the preview comment.
|
|
6
|
+
|
|
7
|
+
Foundry is the orchestration layer, not the agent. It runs Claude Code, aider, or any CLI you configure, and bills your own Claude subscription through `CLAUDE_CODE_OAUTH_TOKEN`.
|
|
8
|
+
|
|
9
|
+
## What this package is for
|
|
10
|
+
|
|
11
|
+
This package is the Foundry CLI. The Action itself is referenced from your workflow as `joyntshops/foundry@v0` and builds inside the job, so nothing needs to be installed to run Foundry. The CLI is for:
|
|
12
|
+
|
|
13
|
+
- **Setup**: `init` scaffolds a repository; `setup-bot` creates the GitHub App that gives Foundry an identity.
|
|
14
|
+
- **Operating on a task** from any checkout: `reset`, `preview up` / `down` / `status`.
|
|
15
|
+
- **The integration branch**: `review`, `release`, `sync-integration`.
|
|
16
|
+
|
|
17
|
+
It needs Node 18 or later, git, and `gh` authenticated with `gh auth login`.
|
|
18
|
+
|
|
19
|
+
## Quick start
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx @joynt/foundry init
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
1. **Scaffold.** From a clone, `init` writes `.joynt-foundry.yml`, `.github/workflows/foundry.yml`, and an issue template, and creates the `state:*` and `mode:*` labels. Set `branches:` to the branches you already deploy from; nothing is renamed.
|
|
26
|
+
2. **Secrets.** Add `CLAUDE_CODE_OAUTH_TOKEN` from `claude setup-token`. Run `npx @joynt/foundry setup-bot` and add the two App secrets it prints; without the App, PRs the agent opens get no CI.
|
|
27
|
+
3. **Push** to the default branch. Foundry listens from there.
|
|
28
|
+
4. **Go.** Open an issue, comment `@foundry go`, and watch Actions → Foundry.
|
|
29
|
+
|
|
30
|
+
The full walkthrough is in [Onboarding](https://github.com/joyntshops/foundry/blob/main/docs/foundry/onboarding.md).
|
|
31
|
+
|
|
32
|
+
## The loop
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
human comments @foundry go on an issue
|
|
36
|
+
→ claim (state:in-progress + claim comment)
|
|
37
|
+
→ worktree from origin/<integration branch>
|
|
38
|
+
→ agent runs; transcript is the job log
|
|
39
|
+
→ the agent's typed report: done · needs input · plan ready · blocked
|
|
40
|
+
→ verify (lint, typecheck, build, test); no PR until green
|
|
41
|
+
→ PR into integration · state:ready-for-human-review · preview up
|
|
42
|
+
human reviews; @foundry go <feedback> or "request changes" sends the agent back to the branch
|
|
43
|
+
approve → Foundry rebases, waits for checks, merges → state:done · preview down
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Install globally
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install -g @joynt/foundry
|
|
50
|
+
foundry --version
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Merges to `main` publish a new patch version automatically. The CLI version and the Action ref a workflow pins can differ; nothing depends on them matching.
|
|
54
|
+
|
|
55
|
+
## Documentation
|
|
56
|
+
|
|
57
|
+
- [Overview](https://github.com/joyntshops/foundry/blob/main/docs/foundry/overview.md): what Foundry does, what it does not, and the security model
|
|
58
|
+
- [Installation](https://github.com/joyntshops/foundry/blob/main/docs/foundry/installation.md) · [Onboarding](https://github.com/joyntshops/foundry/blob/main/docs/foundry/onboarding.md)
|
|
59
|
+
- [Writing a task](https://github.com/joyntshops/foundry/blob/main/docs/foundry/writing-a-task.md) · [Workflows](https://github.com/joyntshops/foundry/blob/main/docs/foundry/workflows.md)
|
|
60
|
+
- [Configuration](https://github.com/joyntshops/foundry/blob/main/docs/foundry/config-reference.md) · [CLI](https://github.com/joyntshops/foundry/blob/main/docs/foundry/cli-reference.md) · [GitHub Action](https://github.com/joyntshops/foundry/blob/main/docs/foundry/github-action.md)
|
|
61
|
+
- [Agent backends](https://github.com/joyntshops/foundry/blob/main/docs/foundry/agent-backends.md) · [Preview environments](https://github.com/joyntshops/foundry/blob/main/docs/foundry/preview-environments.md) · [Troubleshooting](https://github.com/joyntshops/foundry/blob/main/docs/foundry/troubleshooting.md)
|
|
62
|
+
- [Releasing](https://github.com/joyntshops/foundry/blob/main/docs/foundry/releasing.md): how versions and tags are produced
|
|
63
|
+
|
|
64
|
+
A public demo of a repository wired up end to end: [joyntshops/foundry-demo](https://github.com/joyntshops/foundry-demo).
|
|
65
|
+
|
|
66
|
+
Source, issues, and contributing: [github.com/joyntshops/foundry](https://github.com/joyntshops/foundry).
|
|
67
|
+
|
|
68
|
+
## License
|
|
69
|
+
|
|
70
|
+
MIT.
|
package/package.json
CHANGED
|
@@ -1,7 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@joynt/foundry",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.53",
|
|
4
4
|
"description": "Developer automation: GitHub Issues → agent sessions → validated PRs",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"github",
|
|
7
|
+
"github-actions",
|
|
8
|
+
"github-action",
|
|
9
|
+
"github-issues",
|
|
10
|
+
"pull-request",
|
|
11
|
+
"coding-agent",
|
|
12
|
+
"ai-agent",
|
|
13
|
+
"agent",
|
|
14
|
+
"claude",
|
|
15
|
+
"claude-code",
|
|
16
|
+
"automation",
|
|
17
|
+
"developer-tools",
|
|
18
|
+
"devops",
|
|
19
|
+
"workflow",
|
|
20
|
+
"code-review",
|
|
21
|
+
"preview-environment",
|
|
22
|
+
"orchestration"
|
|
23
|
+
],
|
|
24
|
+
"homepage": "https://github.com/joyntshops/foundry#readme",
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/joyntshops/foundry/issues"
|
|
27
|
+
},
|
|
28
|
+
"author": "Joynt Shops",
|
|
5
29
|
"license": "MIT",
|
|
6
30
|
"bin": {
|
|
7
31
|
"foundry": "dist/cli.js"
|
|
@@ -10,7 +34,9 @@
|
|
|
10
34
|
"types": "./dist/index.d.ts",
|
|
11
35
|
"files": [
|
|
12
36
|
"dist",
|
|
13
|
-
"templates"
|
|
37
|
+
"templates",
|
|
38
|
+
"README.md",
|
|
39
|
+
"LICENSE"
|
|
14
40
|
],
|
|
15
41
|
"scripts": {
|
|
16
42
|
"build": "tsc",
|
package/templates/foundry.yml
CHANGED
|
@@ -106,7 +106,7 @@ jobs:
|
|
|
106
106
|
|
|
107
107
|
- name: Foundry
|
|
108
108
|
id: foundry
|
|
109
|
-
uses: joyntshops/foundry@
|
|
109
|
+
uses: joyntshops/foundry@v0
|
|
110
110
|
with:
|
|
111
111
|
github-token: ${{ steps.app.outputs.token || github.token }}
|
|
112
112
|
claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|