wayari 0.1.0
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/README.md +41 -0
- package/bin/wayari.mjs +30 -0
- package/dist/evidence.mjs +1848 -0
- package/dist/wayari-mark.txt +16 -0
- package/dist/wayari.mjs +26724 -0
- package/package.json +31 -0
package/README.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# wayari
|
|
2
|
+
|
|
3
|
+
Ship PRs while you sleep. Merge them with your eyes open.
|
|
4
|
+
|
|
5
|
+
`wayari` runs a software factory from your terminal. You describe a job on a repo, it opens a
|
|
6
|
+
channel, puts coding agents on it, runs the gate (typecheck, build, tests, and the repo's own
|
|
7
|
+
checks) after every stage, and opens one reviewed pull request. You merge it.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
npm i -g wayari
|
|
13
|
+
wayari doctor
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
macOS and Linux. It needs Node 20 or newer, tmux, git, `gh` signed in, and at least one agent CLI
|
|
17
|
+
such as Claude Code. `wayari doctor` names anything missing and the fix beside it.
|
|
18
|
+
|
|
19
|
+
## First run
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
wayari serve # in a terminal you keep open
|
|
23
|
+
wayari start "the goal" --repo . --lead opus # in another: opens a channel, staffs it
|
|
24
|
+
wayari # where things stand
|
|
25
|
+
wayari merge <channel> # when the pull request is ready
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`--hours 8 --limit 20` on `start` lets a channel run unattended until then, stopping at the cap.
|
|
29
|
+
Without them it runs while you watch.
|
|
30
|
+
|
|
31
|
+
## What it writes outside its own directory
|
|
32
|
+
|
|
33
|
+
`wayari serve` adds its status hooks to `~/.claude/settings.json` so it can hear an agent's state
|
|
34
|
+
without reading its screen. Your own hooks are untouched. `wayari uninstall` takes them back out;
|
|
35
|
+
`wayari uninstall --data` removes the data directory too. The command's data lives in `~/.wayari`,
|
|
36
|
+
or in the Wayari app's directory when the app is installed, or wherever `WAYARI_HOME` points.
|
|
37
|
+
|
|
38
|
+
## Feedback
|
|
39
|
+
|
|
40
|
+
`wayari feedback "what happened"` opens a prefilled GitHub issue with the version and the doctor's
|
|
41
|
+
verdicts. The issues are at https://github.com/jawadjalal/wayariapp/issues.
|
package/bin/wayari.mjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The installed `wayari`. `dist/wayari.mjs` is the repo's `scripts/wayari.mjs` bundled with the core
|
|
3
|
+
// it calls (`scripts/build-cli.mjs`). This file only refuses what the bundle cannot survive: the
|
|
4
|
+
// factory keeps agents alive in tmux, which Windows does not have, so it says so here in one line
|
|
5
|
+
// rather than failing inside node-pty on the first shift.
|
|
6
|
+
if (process.platform === 'win32') {
|
|
7
|
+
console.error('wayari runs on macOS and Linux. It keeps agents alive in tmux, which Windows does not have. WSL works.')
|
|
8
|
+
process.exit(1)
|
|
9
|
+
}
|
|
10
|
+
import { spawn } from 'node:child_process'
|
|
11
|
+
import { existsSync } from 'node:fs'
|
|
12
|
+
import { resolve } from 'node:path'
|
|
13
|
+
import { fileURLToPath } from 'node:url'
|
|
14
|
+
|
|
15
|
+
// INSIDE AN AGENT'S PANE, THE WORD `wayari` IS THE AGENT'S. Every agent on a shift is briefed to
|
|
16
|
+
// call `wayari claim` and `wayari done`, and those verbs belong to the shim the app writes at
|
|
17
|
+
// `<userData>/bin/wayari` and puts first on the pane's PATH. The agent's own shell then sources its
|
|
18
|
+
// rc files, which put `~/.local/bin` or `/opt/homebrew/bin` back in front, and there this operator
|
|
19
|
+
// command sits once `npm link` or `npm i -g wayari` has run. On 2026-09-05 two builders each got this
|
|
20
|
+
// file's usage back from `wayari claim` and `wayari done`, nothing was claimed, no done ever reached
|
|
21
|
+
// the factory, no gate ran, and the channel ran out its clock at $5.28. The app sets `WAYARI_CLI` to
|
|
22
|
+
// the shim's path in every hook-capable pane, so that variable is how this file knows it is standing
|
|
23
|
+
// where the shim should, and it hands the whole command over.
|
|
24
|
+
const shim = process.env.WAYARI_CLI
|
|
25
|
+
if (shim && existsSync(shim) && resolve(shim) !== fileURLToPath(import.meta.url)) {
|
|
26
|
+
const agent = spawn(shim, process.argv.slice(2), { stdio: 'inherit', env: process.env })
|
|
27
|
+
agent.on('exit', (code, signal) => process.exit(code ?? (signal ? 1 : 0)))
|
|
28
|
+
} else {
|
|
29
|
+
await import('../dist/wayari.mjs')
|
|
30
|
+
}
|