agent-office-studio 0.0.0-stage → 0.2.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/CHANGELOG.md +57 -0
- package/LICENSE +21 -0
- package/README.md +85 -2
- package/bin/agentoffice.js +38 -0
- package/dist/apple-touch-icon.png +0 -0
- package/dist/assets/_commonjsHelpers-CqkleIqs.js +1 -0
- package/dist/assets/addon-fit-BwprjgOP.js +1 -0
- package/dist/assets/index-CozPk6R9.js +4457 -0
- package/dist/assets/index-i7sU9SN-.css +32 -0
- package/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
- package/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
- package/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
- package/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
- package/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
- package/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
- package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/dist/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
- package/dist/assets/jetbrains-mono-cyrillic-400-normal-CIEtRijs.woff +0 -0
- package/dist/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
- package/dist/assets/jetbrains-mono-greek-400-normal-CNojz0t3.woff +0 -0
- package/dist/assets/jetbrains-mono-latin-400-normal-B11XCQ5g.woff +0 -0
- package/dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
- package/dist/assets/jetbrains-mono-latin-ext-400-normal-DHMOLxAi.woff +0 -0
- package/dist/assets/jetbrains-mono-vietnamese-400-normal-BeU3T8wf.woff +0 -0
- package/dist/assets/xterm-C7kOH91j.js +9 -0
- package/dist/icon-192.png +0 -0
- package/dist/icon-512.png +0 -0
- package/dist/icon.svg +9 -0
- package/dist/index.html +240 -0
- package/dist/manifest.webmanifest +16 -0
- package/dist/sw.js +39 -0
- package/docs/README.md +26 -0
- package/docs/claude-access.md +31 -0
- package/docs/configuration.md +53 -0
- package/docs/development.md +76 -0
- package/docs/getting-started.md +54 -0
- package/docs/guides/troubleshooting.md +99 -0
- package/docs/guides/updating.md +36 -0
- package/docs/guides/working-with-the-team.md +56 -0
- package/docs/guides/your-first-job.md +65 -0
- package/docs/how-it-works.md +80 -0
- package/docs/images/office.jpg +0 -0
- package/docs/jobs.md +54 -0
- package/docs/leaderboard.md +65 -0
- package/docs/packaging.md +49 -0
- package/docs/phone.md +28 -0
- package/docs/security.md +48 -0
- package/docs/terminal.md +46 -0
- package/docs/using-the-office.md +109 -0
- package/docs/voice.md +44 -0
- package/package.json +64 -4
- package/server/auth.js +89 -0
- package/server/banter.js +53 -0
- package/server/changes.js +72 -0
- package/server/chief.js +130 -0
- package/server/index.js +1952 -0
- package/server/leaderboard.js +190 -0
- package/server/office-mcp.js +101 -0
- package/server/procstat.js +85 -0
- package/server/standup.js +78 -0
- package/server/supervise.js +51 -0
- package/server/terminal.js +255 -0
- package/server/tools.js +52 -0
- package/server/usage.js +40 -0
- package/server/voice.js +172 -0
- package/shared/speakable.js +50 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Notable changes to Agent Office. The format follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow
|
|
5
|
+
[Semantic Versioning](https://semver.org/).
|
|
6
|
+
|
|
7
|
+
## Unreleased
|
|
8
|
+
|
|
9
|
+
## 0.2.0 — 2026-10-12
|
|
10
|
+
|
|
11
|
+
### Install
|
|
12
|
+
- Published as `agent-office-studio`. `npm install -g agent-office-studio`, then
|
|
13
|
+
run `agentoffice` (or `agentstudio`) in the folder that holds your projects.
|
|
14
|
+
State lives in `~/.agent-office`; `OFFICE_DATA` and `OFFICE_ROOT` override.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- A job whose agent flagged a question, decision or blocker is no longer
|
|
18
|
+
reported as done when their turn ends. The chief posts "Waiting on you"
|
|
19
|
+
instead, and no shipped count, XP or celebration is given until it resumes.
|
|
20
|
+
|
|
21
|
+
### Leaderboard
|
|
22
|
+
- An optional leaderboard: join under a claimed handle and compare jobs
|
|
23
|
+
finished, tokens used and agent time, weekly and all time. Off until you
|
|
24
|
+
join; only per-day counters are shared. The service is a Cloudflare Worker in
|
|
25
|
+
`leaderboard/`. A local ledger (`data/activity.json`) now keeps those counters.
|
|
26
|
+
|
|
27
|
+
## 0.1.0 — 2026-10-11
|
|
28
|
+
|
|
29
|
+
The first public release.
|
|
30
|
+
|
|
31
|
+
### The office
|
|
32
|
+
- A 3D office where each agent is a Claude Code session. Agents walk to the
|
|
33
|
+
library to read, the server room to run commands and their desk to write.
|
|
34
|
+
- Chat with `@agent` and `#project` tags; a chief of staff routes everything
|
|
35
|
+
else, hands follow-ups to whoever is on the job, and asks when unsure.
|
|
36
|
+
- Slack-style channels and threads; attachments, including screenshots the
|
|
37
|
+
chief can read.
|
|
38
|
+
- A daily standup at the whiteboard, and a break room where idle agents talk
|
|
39
|
+
(in #chill-room) and play eight-ball.
|
|
40
|
+
- Levels: shipped jobs earn XP, and each level hires another agent.
|
|
41
|
+
- Themes, light and dark mode, and an installable app for desktop and phone.
|
|
42
|
+
|
|
43
|
+
### Jobs
|
|
44
|
+
- Clearance per job: plan only, edit files, or full autonomy, with the option
|
|
45
|
+
to grant more mid-job.
|
|
46
|
+
- The chief picks Haiku, Sonnet or Opus to fit the work and steps up a rung
|
|
47
|
+
when a job fails.
|
|
48
|
+
- Agents message each other and hand work to free colleagues.
|
|
49
|
+
- "What changed": each job's diff, from working-tree snapshots that never
|
|
50
|
+
touch the repo's own index or history.
|
|
51
|
+
- Jobs resume after a server restart.
|
|
52
|
+
|
|
53
|
+
### Setup
|
|
54
|
+
- Claude access: the Claude Code login on the machine, or an Anthropic API key.
|
|
55
|
+
- Plan usage meters for the Claude Code login.
|
|
56
|
+
- Voice: dictation with whisper.cpp and a Piper voice per agent, all local.
|
|
57
|
+
- An opt-in terminal in a drawer under the office.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Onuoha Obinna
|
|
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
CHANGED
|
@@ -1,3 +1,86 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent Office
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/onuohasilver/agent-office/actions/workflows/ci.yml)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
A 3D office where the staff are Claude Code agents. Hand someone a job and they
|
|
7
|
+
walk to a desk and do it for real, in that project folder, with `claude -p`.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g agent-office-studio
|
|
13
|
+
cd ~/projects # the folder whose subfolders are your projects
|
|
14
|
+
agentoffice # or: agentstudio. Serves on http://localhost:4317
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or from source:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
git clone https://github.com/onuohasilver/agent-office.git
|
|
21
|
+
cd agent-office
|
|
22
|
+
npm install
|
|
23
|
+
npm start # builds, then serves on http://localhost:4317
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
You need Node.js 20+, git, and [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
|
27
|
+
signed in on this machine (or an Anthropic API key). Your projects are the
|
|
28
|
+
folders next to this one (or, with `agentoffice`, in the folder you run it from) — see [Getting started](docs/getting-started.md).
|
|
29
|
+
|
|
30
|
+
## What it does
|
|
31
|
+
|
|
32
|
+
- **You chat; the office does the rest.** `@Ada #storefront fix the checkout
|
|
33
|
+
bar` goes straight to Ada. Anything untagged goes to the chief of staff,
|
|
34
|
+
who works out which project and who's free, hands follow-ups to whoever is
|
|
35
|
+
already on it, and asks when it can't tell.
|
|
36
|
+
- **Real work, visibly.** Every job is a `claude` process in that project.
|
|
37
|
+
Agents walk to the library to read, the server room to run commands and
|
|
38
|
+
their desk to write, and each job's drawer shows its log, the model it ran
|
|
39
|
+
on and exactly which files it changed.
|
|
40
|
+
- **You stay in charge.** Pick the clearance for each job — plan only, edit
|
|
41
|
+
files, or full autonomy — and grant more mid-job when it's blocked. The
|
|
42
|
+
chief picks Haiku, Sonnet or Opus to fit the work and steps up a rung when
|
|
43
|
+
a job fails.
|
|
44
|
+
- **A team, not a queue.** Agents message each other mid-task and hand work
|
|
45
|
+
to free colleagues. There's a standup at 9:30, Slack-style channels, and a
|
|
46
|
+
break room where they talk and play pool when nothing's on.
|
|
47
|
+
- **Talk to it.** Dictate with whisper.cpp and hear replies in a different
|
|
48
|
+
voice per agent — all on this machine.
|
|
49
|
+
- **Yours, on your machine.** It listens on localhost only. Use it on your
|
|
50
|
+
Claude plan or with an API key.
|
|
51
|
+
|
|
52
|
+
## Guides
|
|
53
|
+
|
|
54
|
+
- [Your first job](docs/guides/your-first-job.md) — from a fresh install to a change you've reviewed
|
|
55
|
+
- [Working with the team](docs/guides/working-with-the-team.md) — briefs that work, clearance, channels, cost
|
|
56
|
+
- [Troubleshooting](docs/guides/troubleshooting.md) — common problems and their fixes
|
|
57
|
+
- [Updating](docs/guides/updating.md) — getting new versions without losing your office
|
|
58
|
+
|
|
59
|
+
## Documentation
|
|
60
|
+
|
|
61
|
+
| | |
|
|
62
|
+
|---|---|
|
|
63
|
+
| [Getting started](docs/getting-started.md) | install, run, point it at your projects |
|
|
64
|
+
| [Using the office](docs/using-the-office.md) | the chat, channels, threads, standup, the break room |
|
|
65
|
+
| [Jobs](docs/jobs.md) | clearance, which model, what changed |
|
|
66
|
+
| [The leaderboard](docs/leaderboard.md) | an optional board of jobs, tokens and agent time |
|
|
67
|
+
| [Claude access](docs/claude-access.md) | Claude Code login or API key, and the plan meters |
|
|
68
|
+
| [Configuration](docs/configuration.md) | every setting |
|
|
69
|
+
| [Talking out loud](docs/voice.md) | speech in and voices out |
|
|
70
|
+
| [The terminal](docs/terminal.md) | a real shell under the office |
|
|
71
|
+
| [On your phone](docs/phone.md) | install it like an app |
|
|
72
|
+
| [How the office works](docs/how-it-works.md) | jobs, office tools, where things are kept |
|
|
73
|
+
| [Security](docs/security.md) | who can reach it and what jobs may do |
|
|
74
|
+
| [Development](docs/development.md) | dev server, shipping, testing safely |
|
|
75
|
+
| [Packaging roadmap](docs/packaging.md) | from a clone to an install |
|
|
76
|
+
|
|
77
|
+
## Contributing
|
|
78
|
+
|
|
79
|
+
Bug reports, ideas and pull requests are welcome — see
|
|
80
|
+
[CONTRIBUTING.md](CONTRIBUTING.md). Report security problems privately, as
|
|
81
|
+
described in [SECURITY.md](SECURITY.md). What's changed between versions is in
|
|
82
|
+
[CHANGELOG.md](CHANGELOG.md).
|
|
83
|
+
|
|
84
|
+
## Licence
|
|
85
|
+
|
|
86
|
+
[MIT](LICENSE).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// `agentoffice` starts the office. Projects are the folders next to where you
|
|
3
|
+
// run it; the office's own state lives in ~/.agent-office, so upgrading the
|
|
4
|
+
// package never touches it. OFFICE_ROOT and OFFICE_DATA override both.
|
|
5
|
+
|
|
6
|
+
import os from 'node:os';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import fs from 'node:fs';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
|
|
11
|
+
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(HERE, '..', 'package.json'), 'utf8'));
|
|
13
|
+
const arg = process.argv[2];
|
|
14
|
+
|
|
15
|
+
if (arg === '--version' || arg === '-v') {
|
|
16
|
+
console.log(pkg.version);
|
|
17
|
+
process.exit(0);
|
|
18
|
+
}
|
|
19
|
+
if (arg === '--help' || arg === '-h') {
|
|
20
|
+
console.log(`agentoffice ${pkg.version}
|
|
21
|
+
|
|
22
|
+
Usage: agentoffice (or agentstudio)
|
|
23
|
+
|
|
24
|
+
Starts the office at http://localhost:\${PORT:-4317}. Needs Claude Code
|
|
25
|
+
(\`claude\`) installed and signed in.
|
|
26
|
+
|
|
27
|
+
OFFICE_ROOT folder whose subfolders are your projects (default: this folder)
|
|
28
|
+
OFFICE_DATA where the office keeps its state (default: ~/.agent-office)
|
|
29
|
+
PORT port to listen on (default: 4317)
|
|
30
|
+
|
|
31
|
+
Docs: ${pkg.homepage}`);
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
process.env.OFFICE_ROOT ||= process.cwd();
|
|
36
|
+
process.env.OFFICE_DATA ||= path.join(os.homedir(), '.agent-office');
|
|
37
|
+
|
|
38
|
+
await import('../server/supervise.js');
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}export{e as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as f}from"./_commonjsHelpers-CqkleIqs.js";function g(i,n){for(var o=0;o<n.length;o++){const t=n[o];if(typeof t!="string"&&!Array.isArray(t)){for(const e in t)if(e!=="default"&&!(e in i)){const r=Object.getOwnPropertyDescriptor(t,e);r&&Object.defineProperty(i,e,r.get?r:{enumerable:!0,get:()=>t[e]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}var l={exports:{}};(function(i,n){(function(o,t){i.exports=t()})(self,()=>(()=>{var o={};return(()=>{var t=o;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){const e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;const r=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(r._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;const e=this._terminal._core,r=e._renderService.dimensions;if(r.css.cell.width===0||r.css.cell.height===0)return;const c=this._terminal.options.scrollback===0?0:e.viewport.scrollBarWidth,a=window.getComputedStyle(this._terminal.element.parentElement),d=parseInt(a.getPropertyValue("height")),m=Math.max(0,parseInt(a.getPropertyValue("width"))),s=window.getComputedStyle(this._terminal.element),h=d-(parseInt(s.getPropertyValue("padding-top"))+parseInt(s.getPropertyValue("padding-bottom"))),u=m-(parseInt(s.getPropertyValue("padding-right"))+parseInt(s.getPropertyValue("padding-left")))-c;return{cols:Math.max(2,Math.floor(u/r.css.cell.width)),rows:Math.max(1,Math.floor(h/r.css.cell.height))}}}})(),o})())})(l);var p=l.exports;const _=f(p),w=g({__proto__:null,default:_},[p]);export{w as a};
|