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.
Files changed (67) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/LICENSE +21 -0
  3. package/README.md +85 -2
  4. package/bin/agentoffice.js +38 -0
  5. package/dist/apple-touch-icon.png +0 -0
  6. package/dist/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  7. package/dist/assets/addon-fit-BwprjgOP.js +1 -0
  8. package/dist/assets/index-CozPk6R9.js +4457 -0
  9. package/dist/assets/index-i7sU9SN-.css +32 -0
  10. package/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
  11. package/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
  12. package/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
  13. package/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
  14. package/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
  15. package/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
  16. package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  17. package/dist/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  18. package/dist/assets/jetbrains-mono-cyrillic-400-normal-CIEtRijs.woff +0 -0
  19. package/dist/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  20. package/dist/assets/jetbrains-mono-greek-400-normal-CNojz0t3.woff +0 -0
  21. package/dist/assets/jetbrains-mono-latin-400-normal-B11XCQ5g.woff +0 -0
  22. package/dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  23. package/dist/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  24. package/dist/assets/jetbrains-mono-latin-ext-400-normal-DHMOLxAi.woff +0 -0
  25. package/dist/assets/jetbrains-mono-vietnamese-400-normal-BeU3T8wf.woff +0 -0
  26. package/dist/assets/xterm-C7kOH91j.js +9 -0
  27. package/dist/icon-192.png +0 -0
  28. package/dist/icon-512.png +0 -0
  29. package/dist/icon.svg +9 -0
  30. package/dist/index.html +240 -0
  31. package/dist/manifest.webmanifest +16 -0
  32. package/dist/sw.js +39 -0
  33. package/docs/README.md +26 -0
  34. package/docs/claude-access.md +31 -0
  35. package/docs/configuration.md +53 -0
  36. package/docs/development.md +76 -0
  37. package/docs/getting-started.md +54 -0
  38. package/docs/guides/troubleshooting.md +99 -0
  39. package/docs/guides/updating.md +36 -0
  40. package/docs/guides/working-with-the-team.md +56 -0
  41. package/docs/guides/your-first-job.md +65 -0
  42. package/docs/how-it-works.md +80 -0
  43. package/docs/images/office.jpg +0 -0
  44. package/docs/jobs.md +54 -0
  45. package/docs/leaderboard.md +65 -0
  46. package/docs/packaging.md +49 -0
  47. package/docs/phone.md +28 -0
  48. package/docs/security.md +48 -0
  49. package/docs/terminal.md +46 -0
  50. package/docs/using-the-office.md +109 -0
  51. package/docs/voice.md +44 -0
  52. package/package.json +64 -4
  53. package/server/auth.js +89 -0
  54. package/server/banter.js +53 -0
  55. package/server/changes.js +72 -0
  56. package/server/chief.js +130 -0
  57. package/server/index.js +1952 -0
  58. package/server/leaderboard.js +190 -0
  59. package/server/office-mcp.js +101 -0
  60. package/server/procstat.js +85 -0
  61. package/server/standup.js +78 -0
  62. package/server/supervise.js +51 -0
  63. package/server/terminal.js +255 -0
  64. package/server/tools.js +52 -0
  65. package/server/usage.js +40 -0
  66. package/server/voice.js +172 -0
  67. 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
- # Temporary Holding Version
1
+ # Agent Office
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ [![CI](https://github.com/onuohasilver/agent-office/actions/workflows/ci.yml/badge.svg)](https://github.com/onuohasilver/agent-office/actions/workflows/ci.yml)
4
+ [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](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
+ ![The office: chat on the left, the floor with desks, a break room, a pool table and the chief of staff at reception](docs/images/office.jpg)
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};