autodev-cli 1.4.128 → 1.4.130

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 CHANGED
@@ -4,6 +4,31 @@
4
4
  either run an autonomous loop that works through `TODO.md` with the provider of your choice,
5
5
  or wire the folder up as an MCP-only operator so a plain chat client becomes a live office agent.
6
6
 
7
+ ## Quickstart — run a whole office in one command
8
+
9
+ Create an office (with its characters) in the [pixel-office](https://app.pixeloffice.org)
10
+ web UI, then:
11
+
12
+ ```bash
13
+ npm i -g autodev-cli
14
+ autodev login # once: sign in, stores a token in ~/.autodev/config.json
15
+ autodev office <slug> # runs your WHOLE office — one loop per character
16
+ ```
17
+
18
+ `autodev office <slug>` binds and starts every character, and **auto-starts new
19
+ web agents** as they appear in the office. No `--url`/`--token` needed after
20
+ `autodev login` (flags still override). Press **Ctrl+C** to stop every loop.
21
+
22
+ - `autodev login` — email + password (mints a `pat_` token), or `--token pat_…`
23
+ to store a pasted one, or `--url` to point at a different server (default
24
+ `https://app.pixeloffice.org`). The token is **never printed**.
25
+ - Both `login` and `office` run a **preflight**: a green `✓ connected as <who> · N offices`
26
+ or a red `✗ <reason> — run \`autodev login\`` (non-zero exit).
27
+
28
+ ---
29
+
30
+ ## Single-workspace loop
31
+
7
32
  ```bash
8
33
  npm install -g autodev-cli
9
34
  autodev init . # scaffold TODO.md + .autodev/settings.json
@@ -131,6 +156,34 @@ Press **Ctrl+C** to stop gracefully.
131
156
  > one per line, run top to bottom. The scaffolded template ships with no example task
132
157
  > on purpose — a stray `[ ]` line is a real task the agent would execute first.
133
158
 
159
+ ### `autodev login`
160
+ Authenticate to a pixel-office server once and store a `pat_` token in
161
+ `~/.autodev/config.json` (mode `0600`) so `autodev office` needs no `--url`/`--token`.
162
+
163
+ ```bash
164
+ autodev login # prompts for URL/email/password
165
+ autodev login --email you@co.com --password … # non-interactive
166
+ autodev login --token pat_xxx # store a pasted token
167
+ autodev login --url https://my.office.host # a different server
168
+ ```
169
+
170
+ Flags: `--url`, `--email`, `--password`, `--token <pat_…>`, `--name <token-name>`.
171
+ The token is never printed; login runs a preflight and refuses to store a token it can't use.
172
+
173
+ ### `autodev office <slug>`
174
+ Run a **whole office**: bind + start a loop for every character and auto-start new
175
+ web agents as they appear. Falls back to the stored `autodev login` config when
176
+ `--url`/`--token` are omitted (flags override).
177
+
178
+ ```bash
179
+ autodev office my-team # uses stored login
180
+ autodev office my-team -p claude-cli # force one provider for every character
181
+ autodev office my-team --no-watch # don't keep watching for new characters
182
+ ```
183
+
184
+ Flags: `--url`, `--token`, `--base-dir <dir>`, `-p/--provider`, `--interval <sec>`, `--no-watch`.
185
+ Press **Ctrl+C** to stop all loops.
186
+
134
187
  ### `autodev connect [path]`
135
188
  Bind the workspace to a pixel-office endpoint.
136
189
 
package/out/cli.js CHANGED
@@ -48,6 +48,7 @@ const export_1 = require("./commands/export");
48
48
  const import_1 = require("./commands/import");
49
49
  const mcpOperate_1 = require("./commands/mcpOperate");
50
50
  const office_1 = require("./commands/office");
51
+ const login_1 = require("./commands/login");
51
52
  const connect_2 = require("./connect");
52
53
  const logger_1 = require("./logger");
53
54
  // eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -124,6 +125,7 @@ const program = new commander_1.Command()
124
125
  (0, import_1.importCommand)(program);
125
126
  (0, mcpOperate_1.mcpOperateCommand)(program);
126
127
  (0, office_1.officeCommand)(program);
128
+ (0, login_1.loginCommand)(program);
127
129
  program.parseAsync(process.argv).catch((err) => {
128
130
  console.error(err.message);
129
131
  process.exit(1);
package/out/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function loginCommand(program: Command): void;
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loginCommand = loginCommand;
37
+ const http = __importStar(require("http"));
38
+ const https = __importStar(require("https"));
39
+ const readline = __importStar(require("readline"));
40
+ const url_1 = require("url");
41
+ const logger_1 = require("../logger");
42
+ const userConfig_1 = require("../core/userConfig");
43
+ const officeAuth_1 = require("../core/officeAuth");
44
+ /** Raw request with a cookie jar + JSON body (built-in http/https, no deps). */
45
+ function request(urlStr, opts) {
46
+ return new Promise((resolve, reject) => {
47
+ let parsed;
48
+ try {
49
+ parsed = new url_1.URL(urlStr);
50
+ }
51
+ catch {
52
+ reject(new Error(`Invalid URL: ${urlStr}`));
53
+ return;
54
+ }
55
+ const lib = parsed.protocol === 'http:' ? http : https;
56
+ const req = lib.request(urlStr, {
57
+ method: opts.method ?? 'GET',
58
+ headers: { 'Accept': 'application/json', 'User-Agent': 'autodev-cli', ...opts.headers },
59
+ }, (res) => {
60
+ const chunks = [];
61
+ res.on('data', (c) => chunks.push(c));
62
+ res.on('end', () => resolve({
63
+ status: res.statusCode ?? 0,
64
+ headers: res.headers,
65
+ body: Buffer.concat(chunks).toString('utf8'),
66
+ }));
67
+ });
68
+ req.setTimeout(opts.timeoutMs ?? 15_000, () => { req.destroy(new Error(`Timed out fetching ${urlStr}`)); });
69
+ req.on('error', reject);
70
+ if (opts.body) {
71
+ req.write(opts.body);
72
+ }
73
+ req.end();
74
+ });
75
+ }
76
+ /** Fold set-cookie headers into a name→value jar. */
77
+ function absorbCookies(jar, res) {
78
+ const raw = res.headers['set-cookie'];
79
+ if (!raw) {
80
+ return;
81
+ }
82
+ for (const line of Array.isArray(raw) ? raw : [raw]) {
83
+ const pair = line.split(';', 1)[0];
84
+ const eq = pair.indexOf('=');
85
+ if (eq > 0) {
86
+ jar.set(pair.slice(0, eq).trim(), pair.slice(eq + 1).trim());
87
+ }
88
+ }
89
+ }
90
+ const cookieHeader = (jar) => [...jar.entries()].map(([k, v]) => `${k}=${v}`).join('; ');
91
+ /** Laravel expects the X-XSRF-TOKEN header to be the URL-DECODED cookie value. */
92
+ function xsrf(jar) {
93
+ const c = jar.get('XSRF-TOKEN');
94
+ if (!c) {
95
+ return '';
96
+ }
97
+ try {
98
+ return decodeURIComponent(c);
99
+ }
100
+ catch {
101
+ return c;
102
+ }
103
+ }
104
+ /** Prompt for a line on the TTY (visible). */
105
+ function ask(question) {
106
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
107
+ return new Promise((resolve) => rl.question(question, (a) => { rl.close(); resolve(a.trim()); }));
108
+ }
109
+ /** Prompt for a secret without echoing it to the terminal. */
110
+ function askHidden(question) {
111
+ return new Promise((resolve) => {
112
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
113
+ // Mute echo: swallow everything except the prompt itself.
114
+ rl._writeToOutput = (s) => {
115
+ if (s.includes(question)) {
116
+ process.stdout.write(question);
117
+ }
118
+ };
119
+ rl.question(question, (a) => { rl.close(); process.stdout.write('\n'); resolve(a); });
120
+ });
121
+ }
122
+ /** Cookie-dance login → mint and return a pat_ personal-access token. */
123
+ async function mintToken(base, email, password, name) {
124
+ const jar = new Map();
125
+ // 1. Prime the CSRF cookie.
126
+ const csrfRes = await request(`${base}/api/csrf-token`, { headers: {} });
127
+ absorbCookies(jar, csrfRes);
128
+ if (!jar.get('XSRF-TOKEN')) {
129
+ throw new Error(`Could not obtain a CSRF token from ${base} (HTTP ${csrfRes.status}). Is --url correct?`);
130
+ }
131
+ // 2. Log in (session lives in the cookie jar; no token returned here).
132
+ const loginRes = await request(`${base}/api/auth/login`, {
133
+ method: 'POST',
134
+ headers: {
135
+ 'Content-Type': 'application/json',
136
+ 'X-XSRF-TOKEN': xsrf(jar),
137
+ 'Cookie': cookieHeader(jar),
138
+ },
139
+ body: JSON.stringify({ email, password }),
140
+ });
141
+ absorbCookies(jar, loginRes);
142
+ if (loginRes.status === 401 || loginRes.status === 422) {
143
+ throw new Error('Login failed — check your email and password.');
144
+ }
145
+ if (loginRes.status < 200 || loginRes.status >= 300) {
146
+ throw new Error(`Login failed (HTTP ${loginRes.status}): ${loginRes.body.slice(0, 200)}`);
147
+ }
148
+ // 3. Mint a personal-access token (Bearer pat_…), shown once.
149
+ const tokRes = await request(`${base}/api/auth/tokens`, {
150
+ method: 'POST',
151
+ headers: {
152
+ 'Content-Type': 'application/json',
153
+ 'X-XSRF-TOKEN': xsrf(jar),
154
+ 'Cookie': cookieHeader(jar),
155
+ },
156
+ body: JSON.stringify({ name }),
157
+ });
158
+ if (tokRes.status < 200 || tokRes.status >= 300) {
159
+ throw new Error(`Could not mint a token (HTTP ${tokRes.status}): ${tokRes.body.slice(0, 200)}`);
160
+ }
161
+ let token;
162
+ try {
163
+ const j = JSON.parse(tokRes.body);
164
+ token = j?.data?.token ?? j?.token;
165
+ }
166
+ catch { /* fall through to the missing-token error */ }
167
+ if (!token) {
168
+ throw new Error('Token endpoint returned no token.');
169
+ }
170
+ return token;
171
+ }
172
+ function loginCommand(program) {
173
+ program
174
+ .command('login')
175
+ .description('Authenticate to a pixel-office server and store a token so `autodev office` needs no --url/--token')
176
+ .option('--url <baseUrl>', 'Pixel-office base URL', process.env.AUTODEV_SERVER_URL)
177
+ .option('--email <email>', 'Account email (else prompted)')
178
+ .option('--password <password>', 'Account password (else prompted, hidden)')
179
+ .option('--token <pat_…>', 'Store a pasted personal-access token instead of email/password')
180
+ .option('--name <name>', 'Name for the minted token', 'autodev-cli')
181
+ .action(async (opts) => {
182
+ const stored = (0, userConfig_1.loadUserConfig)();
183
+ let base = String(opts.url ?? stored.baseUrl ?? userConfig_1.DEFAULT_BASE_URL).replace(/\/+$/, '');
184
+ if (!opts.url && !stored.baseUrl && process.stdin.isTTY) {
185
+ const typed = (await ask(`Pixel-office URL [${userConfig_1.DEFAULT_BASE_URL}]: `)).replace(/\/+$/, '');
186
+ if (typed) {
187
+ base = typed;
188
+ }
189
+ }
190
+ logger_1.log.section('🔐 AutoAIDev — Login');
191
+ logger_1.log.info(`Server: ${base}`);
192
+ let token;
193
+ try {
194
+ if (opts.token) {
195
+ token = String(opts.token).trim();
196
+ if (!token) {
197
+ throw new Error('Empty --token.');
198
+ }
199
+ }
200
+ else {
201
+ let email = opts.email;
202
+ let password = opts.password;
203
+ if (!email) {
204
+ if (!process.stdin.isTTY) {
205
+ throw new Error('No --email given and no TTY to prompt. Pass --email/--password or --token.');
206
+ }
207
+ email = await ask('Email: ');
208
+ }
209
+ if (!password) {
210
+ if (!process.stdin.isTTY) {
211
+ throw new Error('No --password given and no TTY to prompt. Pass --password or --token.');
212
+ }
213
+ password = await askHidden('Password: ');
214
+ }
215
+ if (!email || !password) {
216
+ throw new Error('Email and password are required.');
217
+ }
218
+ token = await mintToken(base, email, password, opts.name);
219
+ }
220
+ }
221
+ catch (err) {
222
+ logger_1.log.error(`✗ ${err.message}`);
223
+ process.exit(1);
224
+ return;
225
+ }
226
+ // Preflight BEFORE persisting: don't store a token we can't use.
227
+ const pf = await (0, officeAuth_1.preflight)(base, token);
228
+ if (!pf.ok) {
229
+ logger_1.log.error(`✗ ${pf.reason} — check --url and credentials.`);
230
+ process.exit(1);
231
+ return;
232
+ }
233
+ // Never print the token.
234
+ (0, userConfig_1.saveUserConfig)({ baseUrl: base, token });
235
+ const who = pf.who ? `as ${pf.who} ` : '';
236
+ const nOffices = typeof pf.offices === 'number' ? `· ${pf.offices} office${pf.offices === 1 ? '' : 's'}` : '';
237
+ logger_1.log.success(`✓ connected ${who}${nOffices}`.trim());
238
+ logger_1.log.gray(' saved to: ~/.autodev/config.json');
239
+ logger_1.log.gray(' next: autodev office <slug>');
240
+ });
241
+ }
242
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgJA,oCA6DC;AA7MD,2CAA6B;AAC7B,6CAA+B;AAC/B,mDAAqC;AACrC,6BAA0B;AAE1B,sCAAgC;AAChC,mDAAsF;AACtF,mDAA+C;AAkB/C,gFAAgF;AAChF,SAAS,OAAO,CACd,MAAc,EACd,IAA8F;IAE9F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QACjC,MAAM,CAAC;YAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;YAC5B,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;SACxF,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC;gBAC1B,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;gBAC3B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC7C,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5G,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QACxC,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qDAAqD;AACrD,SAAS,aAAa,CAAC,GAAwB,EAAE,GAAe;IAC9D,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,GAAwB,EAAU,EAAE,CACxD,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE7D,kFAAkF;AAClF,SAAS,IAAI,CAAC,GAAwB;IACpC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACtB,IAAI,CAAC;QAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AAC3D,CAAC;AAED,8CAA8C;AAC9C,SAAS,GAAG,CAAC,QAAgB;IAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,8DAA8D;AAC9D,SAAS,SAAS,CAAC,QAAgB;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,0DAA0D;QACzD,EAAyD,CAAC,cAAc,GAAG,CAAC,CAAS,EAAE,EAAE;YACxF,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;QAC/D,CAAC,CAAC;QACF,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,QAAgB,EAAE,IAAY;IAClF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtC,4BAA4B;IAC5B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,iBAAiB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,UAAU,OAAO,CAAC,MAAM,sBAAsB,CAAC,CAAC;IAC5G,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,iBAAiB,EAAE;QACvD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC;YACzB,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC;SAC5B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,8DAA8D;IAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,kBAAkB,EAAE;QACtD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC;YACzB,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC;SAC5B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;KAC/B,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAkD,CAAC;QACnF,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAAC,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oGAAoG,CAAC;SACjH,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;SAC3E,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;SAC3F,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,aAAa,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,IAAuF,EAAE,EAAE;QACxG,MAAM,MAAM,GAAG,IAAA,2BAAc,GAAE,CAAC;QAChC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,IAAI,6BAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,qBAAqB,6BAAgB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1F,IAAI,KAAK,EAAE,CAAC;gBAAC,IAAI,GAAG,KAAK,CAAC;YAAC,CAAC;QAC9B,CAAC;QAED,YAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACpC,YAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAE5B,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;wBAAC,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;oBAAC,CAAC;oBAC5H,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;wBAAC,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;oBAAC,CAAC;oBACvH,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC3C,CAAC;gBACD,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAAC,CAAC;gBACjF,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAG,CAAC,KAAK,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,iEAAiE;QACjE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAS,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,YAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,iCAAiC,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,IAAA,2BAAc,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,UAAU,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,YAAG,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,YAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC/C,YAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -37,12 +37,12 @@ exports.officeCommand = officeCommand;
37
37
  const os = __importStar(require("os"));
38
38
  const fs = __importStar(require("fs"));
39
39
  const path = __importStar(require("path"));
40
- const http = __importStar(require("http"));
41
- const https = __importStar(require("https"));
42
40
  const url_1 = require("url");
43
41
  const child_process_1 = require("child_process");
44
42
  const logger_1 = require("../logger");
45
43
  const connect_1 = require("../connect");
44
+ const officeAuth_1 = require("../core/officeAuth");
45
+ const userConfig_1 = require("../core/userConfig");
46
46
  // ---------------------------------------------------------------------------
47
47
  // `autodev office <slug>` — run a WHOLE office with one command.
48
48
  //
@@ -90,51 +90,6 @@ function toAutodevProvider(provider) {
90
90
  }
91
91
  return 'claude-cli';
92
92
  }
93
- /** GET JSON with a `pat_` Bearer token (built-in http/https, no deps). */
94
- function fetchJsonAuth(url, token, timeoutMs = 15_000) {
95
- return new Promise((resolve, reject) => {
96
- let parsed;
97
- try {
98
- parsed = new url_1.URL(url);
99
- }
100
- catch {
101
- reject(new Error(`Invalid URL: ${url}`));
102
- return;
103
- }
104
- const lib = parsed.protocol === 'http:' ? http : https;
105
- const req = lib.request(url, {
106
- method: 'GET',
107
- headers: {
108
- 'Accept': 'application/json',
109
- 'Authorization': `Bearer ${token}`,
110
- 'User-Agent': 'autodev-cli',
111
- },
112
- }, (res) => {
113
- const chunks = [];
114
- res.on('data', (c) => chunks.push(c));
115
- res.on('end', () => {
116
- const body = Buffer.concat(chunks).toString('utf8');
117
- if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
118
- try {
119
- resolve(JSON.parse(body));
120
- }
121
- catch (e) {
122
- reject(new Error(`Invalid JSON from ${url}: ${e.message}`));
123
- }
124
- }
125
- else if (res.statusCode === 401 || res.statusCode === 403) {
126
- reject(new Error(`Auth failed (HTTP ${res.statusCode}) — check --token. ${body.slice(0, 200)}`));
127
- }
128
- else {
129
- reject(new Error(`HTTP ${res.statusCode} from ${url}: ${body.slice(0, 300)}`));
130
- }
131
- });
132
- });
133
- req.setTimeout(timeoutMs, () => { req.destroy(new Error(`Timed out after ${timeoutMs}ms fetching ${url}`)); });
134
- req.on('error', reject);
135
- req.end();
136
- });
137
- }
138
93
  /** Normalise the /agents roster response (data[] | data.agents[] | agents[] | bare array). */
139
94
  function normalizeRoster(json) {
140
95
  const raw = json;
@@ -192,14 +147,13 @@ function officeCommand(program) {
192
147
  .option('--interval <seconds>', 'Watcher poll interval for new characters (default 15; 0 disables the watcher)', '15')
193
148
  .option('--no-watch', 'Do not keep watching for new characters after the initial launch')
194
149
  .action(async (slug, opts) => {
195
- const base = String(opts.url ?? '').replace(/\/+$/, '');
196
- const token = String(opts.token ?? '');
197
- if (!base) {
198
- logger_1.log.error('Missing office URL. Pass --url=<baseUrl> or set AUTODEV_SERVER_URL.');
199
- process.exit(1);
200
- }
150
+ // Flags (and their env defaults) win; otherwise fall back to the stored
151
+ // `autodev login` config (~/.autodev/config.json), then the prod default URL.
152
+ const stored = (0, userConfig_1.loadUserConfig)();
153
+ const base = String(opts.url ?? stored.baseUrl ?? userConfig_1.DEFAULT_BASE_URL).replace(/\/+$/, '');
154
+ const token = String(opts.token ?? stored.token ?? '');
201
155
  if (!token) {
202
- logger_1.log.error('Missing token. Pass --token=<pat_…> or set AUTODEV_OFFICE_TOKEN. Mint one via the pixel-office UI (POST /api/auth/tokens).');
156
+ logger_1.log.error('Not logged in. Run `autodev login` first, or pass --token=<pat_…> (and --url).');
203
157
  process.exit(1);
204
158
  }
205
159
  const officeSlug = safeSeg(slug);
@@ -230,6 +184,17 @@ function officeCommand(program) {
230
184
  logger_1.log.info(`Workspaces: ${root}`);
231
185
  logger_1.log.info(watch ? `Watcher : every ${intervalSec}s (auto-starts new characters)` : 'Watcher : off');
232
186
  logger_1.log.plain('');
187
+ // Preflight: confirm the server is reachable and the token is valid before
188
+ // spawning any loops. Green ✓ on success, red ✗ + non-zero exit otherwise.
189
+ const pf = await (0, officeAuth_1.preflight)(base, token);
190
+ if (!pf.ok) {
191
+ logger_1.log.error(`✗ ${pf.reason} — run \`autodev login\``);
192
+ process.exit(1);
193
+ }
194
+ const who = pf.who ? `as ${pf.who} ` : '';
195
+ const nOffices = typeof pf.offices === 'number' ? `· ${pf.offices} office${pf.offices === 1 ? '' : 's'}` : '';
196
+ logger_1.log.success(`✓ connected ${who}${nOffices}`.trim());
197
+ logger_1.log.plain('');
233
198
  // agentId → running child loop. Presence in this map means "we started it";
234
199
  // it gates both duplicate spawns and the block-if-already-running check.
235
200
  const children = new Map();
@@ -279,7 +244,7 @@ function officeCommand(program) {
279
244
  try {
280
245
  fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
281
246
  // Fetch this character's credentials → ready-made wsUrl (token+endpoint).
282
- const credsRes = await fetchJsonAuth(`${base}/api/offices/${encodeURIComponent(slug)}/agents/${encodeURIComponent(a.id)}/credentials`, token);
247
+ const credsRes = await (0, officeAuth_1.fetchJsonAuth)(`${base}/api/offices/${encodeURIComponent(slug)}/agents/${encodeURIComponent(a.id)}/credentials`, token);
283
248
  const rawWs = credsRes?.data?.wsUrl;
284
249
  if (!credsRes?.success || !rawWs) {
285
250
  logger_1.log.error(` ${a.name}: no credentials (${credsRes?.error ?? 'missing wsUrl'})`);
@@ -332,7 +297,7 @@ function officeCommand(program) {
332
297
  }
333
298
  let roster;
334
299
  try {
335
- const json = await fetchJsonAuth(`${base}/api/offices/${encodeURIComponent(slug)}/agents`, token);
300
+ const json = await (0, officeAuth_1.fetchJsonAuth)(`${base}/api/offices/${encodeURIComponent(slug)}/agents`, token);
336
301
  roster = normalizeRoster(json);
337
302
  }
338
303
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"office.js","sourceRoot":"","sources":["../../src/commands/office.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"office.js","sourceRoot":"","sources":["../../src/commands/office.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** GET JSON with a `pat_` Bearer token (built-in http/https, no deps). */
2
+ export declare function fetchJsonAuth<T>(url: string, token: string, timeoutMs?: number): Promise<T>;
3
+ export interface PreflightResult {
4
+ ok: boolean;
5
+ /** Who we're authenticated as (best-effort). */
6
+ who?: string;
7
+ /** Office count on success. */
8
+ offices?: number;
9
+ /** Human reason on failure. */
10
+ reason?: string;
11
+ }
12
+ /**
13
+ * Cheap authed check that the server is reachable and the token is valid.
14
+ * The hard gate is GET /api/offices (401/403/network ⇒ not ok). The signed-in
15
+ * identity is a best-effort GET /api/user — its absence never fails preflight.
16
+ */
17
+ export declare function preflight(baseUrl: string, token: string, timeoutMs?: number): Promise<PreflightResult>;
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.fetchJsonAuth = fetchJsonAuth;
37
+ exports.preflight = preflight;
38
+ const http = __importStar(require("http"));
39
+ const https = __importStar(require("https"));
40
+ const url_1 = require("url");
41
+ // ---------------------------------------------------------------------------
42
+ // Shared pixel-office admin-API helpers (no deps): an authed GET and a cheap
43
+ // green/red preflight used by both `autodev login` and `autodev office`.
44
+ // ---------------------------------------------------------------------------
45
+ /** GET JSON with a `pat_` Bearer token (built-in http/https, no deps). */
46
+ function fetchJsonAuth(url, token, timeoutMs = 15_000) {
47
+ return new Promise((resolve, reject) => {
48
+ let parsed;
49
+ try {
50
+ parsed = new url_1.URL(url);
51
+ }
52
+ catch {
53
+ reject(new Error(`Invalid URL: ${url}`));
54
+ return;
55
+ }
56
+ const lib = parsed.protocol === 'http:' ? http : https;
57
+ const req = lib.request(url, {
58
+ method: 'GET',
59
+ headers: {
60
+ 'Accept': 'application/json',
61
+ 'Authorization': `Bearer ${token}`,
62
+ 'User-Agent': 'autodev-cli',
63
+ },
64
+ }, (res) => {
65
+ const chunks = [];
66
+ res.on('data', (c) => chunks.push(c));
67
+ res.on('end', () => {
68
+ const body = Buffer.concat(chunks).toString('utf8');
69
+ if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
70
+ try {
71
+ resolve(JSON.parse(body));
72
+ }
73
+ catch (e) {
74
+ reject(new Error(`Invalid JSON from ${url}: ${e.message}`));
75
+ }
76
+ }
77
+ else if (res.statusCode === 401 || res.statusCode === 403) {
78
+ reject(new Error(`Auth failed (HTTP ${res.statusCode}) — token invalid or expired. ${body.slice(0, 200)}`));
79
+ }
80
+ else {
81
+ reject(new Error(`HTTP ${res.statusCode} from ${url}: ${body.slice(0, 300)}`));
82
+ }
83
+ });
84
+ });
85
+ req.setTimeout(timeoutMs, () => { req.destroy(new Error(`Timed out after ${timeoutMs}ms fetching ${url}`)); });
86
+ req.on('error', reject);
87
+ req.end();
88
+ });
89
+ }
90
+ /** Count offices from the assorted shapes /api/offices can return. */
91
+ function countOffices(json) {
92
+ const raw = json;
93
+ let list;
94
+ if (Array.isArray(raw?.data)) {
95
+ list = raw.data;
96
+ }
97
+ else if (Array.isArray(raw?.data?.offices)) {
98
+ list = raw.data.offices;
99
+ }
100
+ else if (Array.isArray(raw?.offices)) {
101
+ list = raw.offices;
102
+ }
103
+ else if (Array.isArray(json)) {
104
+ list = json;
105
+ }
106
+ return Array.isArray(list) ? list.length : undefined;
107
+ }
108
+ /** Best-effort human identity from a /api/user-style payload. */
109
+ function pickWho(json) {
110
+ const u = json?.data ?? json;
111
+ if (!u || typeof u !== 'object') {
112
+ return undefined;
113
+ }
114
+ const name = u.name;
115
+ const email = u.email;
116
+ const s = (v) => (typeof v === 'string' && v.trim() ? v.trim() : undefined);
117
+ return s(name) ?? s(email);
118
+ }
119
+ /**
120
+ * Cheap authed check that the server is reachable and the token is valid.
121
+ * The hard gate is GET /api/offices (401/403/network ⇒ not ok). The signed-in
122
+ * identity is a best-effort GET /api/user — its absence never fails preflight.
123
+ */
124
+ async function preflight(baseUrl, token, timeoutMs = 12_000) {
125
+ const base = String(baseUrl ?? '').replace(/\/+$/, '');
126
+ if (!base) {
127
+ return { ok: false, reason: 'no server URL configured' };
128
+ }
129
+ if (!token) {
130
+ return { ok: false, reason: 'no token configured' };
131
+ }
132
+ let offices;
133
+ try {
134
+ const json = await fetchJsonAuth(`${base}/api/offices`, token, timeoutMs);
135
+ offices = countOffices(json);
136
+ }
137
+ catch (err) {
138
+ return { ok: false, reason: err.message };
139
+ }
140
+ let who;
141
+ try {
142
+ who = pickWho(await fetchJsonAuth(`${base}/api/user`, token, 8_000));
143
+ }
144
+ catch { /* identity is best-effort */ }
145
+ return { ok: true, who, offices };
146
+ }
147
+ //# sourceMappingURL=officeAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"officeAuth.js","sourceRoot":"","sources":["../../src/core/officeAuth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** Default pixel-office server used when the user passes no --url. */
2
+ export declare const DEFAULT_BASE_URL = "https://app.pixeloffice.org";
3
+ export interface UserConfig {
4
+ /** Pixel-office base URL (no trailing slash), e.g. https://app.pixeloffice.org */
5
+ baseUrl?: string;
6
+ /** Personal-access token (pat_…) minted by `autodev login`. */
7
+ token?: string;
8
+ }
9
+ /** Absolute path to the user login config (~/.autodev/config.json). */
10
+ export declare function userConfigPath(): string;
11
+ /** Load the stored login config; returns {} if none/invalid. */
12
+ export declare function loadUserConfig(): UserConfig;
13
+ /** Persist the login config owner-only (0600). Never logged. */
14
+ export declare function saveUserConfig(cfg: UserConfig): void;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DEFAULT_BASE_URL = void 0;
37
+ exports.userConfigPath = userConfigPath;
38
+ exports.loadUserConfig = loadUserConfig;
39
+ exports.saveUserConfig = saveUserConfig;
40
+ const os = __importStar(require("os"));
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const secureFile_1 = require("./secureFile");
44
+ // ---------------------------------------------------------------------------
45
+ // User-level login config — ~/.autodev/config.json (mode 0600).
46
+ //
47
+ // `autodev login` mints/stores a pixel-office `pat_` personal-access token here
48
+ // so `autodev office <slug>` works with no --url/--token afterwards. This file
49
+ // carries a live secret, so it is ALWAYS written owner-only via writeFileSecure.
50
+ // ---------------------------------------------------------------------------
51
+ /** Default pixel-office server used when the user passes no --url. */
52
+ exports.DEFAULT_BASE_URL = 'https://app.pixeloffice.org';
53
+ /** Absolute path to the user login config (~/.autodev/config.json). */
54
+ function userConfigPath() {
55
+ return path.join(os.homedir(), '.autodev', 'config.json');
56
+ }
57
+ /** Load the stored login config; returns {} if none/invalid. */
58
+ function loadUserConfig() {
59
+ try {
60
+ const raw = fs.readFileSync(userConfigPath(), 'utf8');
61
+ const obj = JSON.parse(raw);
62
+ if (obj && typeof obj === 'object') {
63
+ return {
64
+ baseUrl: typeof obj.baseUrl === 'string' ? obj.baseUrl.replace(/\/+$/, '') : undefined,
65
+ token: typeof obj.token === 'string' ? obj.token : undefined,
66
+ };
67
+ }
68
+ }
69
+ catch { /* missing / unreadable / bad JSON → treat as unconfigured */ }
70
+ return {};
71
+ }
72
+ /** Persist the login config owner-only (0600). Never logged. */
73
+ function saveUserConfig(cfg) {
74
+ const file = userConfigPath();
75
+ const dir = path.dirname(file);
76
+ if (!fs.existsSync(dir)) {
77
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
78
+ }
79
+ const clean = {
80
+ baseUrl: cfg.baseUrl ? cfg.baseUrl.replace(/\/+$/, '') : undefined,
81
+ token: cfg.token,
82
+ };
83
+ (0, secureFile_1.writeFileSecure)(file, JSON.stringify(clean, null, 2) + '\n');
84
+ }
85
+ //# sourceMappingURL=userConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userConfig.js","sourceRoot":"","sources":["../../src/core/userConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,wCAEC;AAGD,wCAYC;AAGD,wCASC;AArDD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,6CAA+C;AAE/C,8EAA8E;AAC9E,gEAAgE;AAChE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAE9E,sEAAsE;AACzD,QAAA,gBAAgB,GAAG,6BAA6B,CAAC;AAS9D,uEAAuE;AACvE,SAAgB,cAAc;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,gEAAgE;AAChE,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC1C,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBACtF,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,6DAA6D,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gEAAgE;AAChE,SAAgB,cAAc,CAAC,GAAe;IAC5C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAAC,CAAC;IACjF,MAAM,KAAK,GAAe;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QAClE,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC;IACF,IAAA,4BAAe,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/D,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "autodev-cli",
3
- "version": "1.4.128",
3
+ "version": "1.4.130",
4
4
  "description": "AutoAIDev CLI — autonomous AI task loop with VS Code / Cursor launcher",
5
+ "author": "Peter Ivanov <peter@microweber.com>",
5
6
  "license": "MIT",
6
7
  "bin": {
7
8
  "autodev": "./bin/autodev.js"