@onepointfour-packs/flaredeck-agent 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.
Files changed (148) hide show
  1. package/LICENSE.md +14 -0
  2. package/README.md +102 -0
  3. package/dist/agent.d.ts +104 -0
  4. package/dist/agent.js +329 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/approval.d.ts +72 -0
  7. package/dist/approval.js +161 -0
  8. package/dist/approval.js.map +1 -0
  9. package/dist/approvals.d.ts +2 -0
  10. package/dist/approvals.js +148 -0
  11. package/dist/approvals.js.map +1 -0
  12. package/dist/auth.d.ts +79 -0
  13. package/dist/auth.js +181 -0
  14. package/dist/auth.js.map +1 -0
  15. package/dist/automode.d.ts +33 -0
  16. package/dist/automode.js +69 -0
  17. package/dist/automode.js.map +1 -0
  18. package/dist/branches.d.ts +25 -0
  19. package/dist/branches.js +81 -0
  20. package/dist/branches.js.map +1 -0
  21. package/dist/cli.d.ts +2 -0
  22. package/dist/cli.js +12 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/codesearch.d.ts +27 -0
  25. package/dist/codesearch.js +111 -0
  26. package/dist/codesearch.js.map +1 -0
  27. package/dist/concurrency.d.ts +14 -0
  28. package/dist/concurrency.js +52 -0
  29. package/dist/concurrency.js.map +1 -0
  30. package/dist/config.d.ts +106 -0
  31. package/dist/config.js +119 -0
  32. package/dist/config.js.map +1 -0
  33. package/dist/engine-antigravity.d.ts +23 -0
  34. package/dist/engine-antigravity.js +357 -0
  35. package/dist/engine-antigravity.js.map +1 -0
  36. package/dist/engine-claude.d.ts +18 -0
  37. package/dist/engine-claude.js +64 -0
  38. package/dist/engine-claude.js.map +1 -0
  39. package/dist/engine.d.ts +122 -0
  40. package/dist/engine.js +36 -0
  41. package/dist/engine.js.map +1 -0
  42. package/dist/env.d.ts +1 -0
  43. package/dist/env.js +10 -0
  44. package/dist/env.js.map +1 -0
  45. package/dist/environment.d.ts +39 -0
  46. package/dist/environment.js +100 -0
  47. package/dist/environment.js.map +1 -0
  48. package/dist/flaredeck-check.d.ts +21 -0
  49. package/dist/flaredeck-check.js +12 -0
  50. package/dist/flaredeck-check.js.map +1 -0
  51. package/dist/flaredeck-proxy.d.ts +60 -0
  52. package/dist/flaredeck-proxy.js +186 -0
  53. package/dist/flaredeck-proxy.js.map +1 -0
  54. package/dist/flaredeck.d.ts +132 -0
  55. package/dist/flaredeck.js +106 -0
  56. package/dist/flaredeck.js.map +1 -0
  57. package/dist/gemini.d.ts +21 -0
  58. package/dist/gemini.js +59 -0
  59. package/dist/gemini.js.map +1 -0
  60. package/dist/gitguard.d.ts +2 -0
  61. package/dist/gitguard.js +90 -0
  62. package/dist/gitguard.js.map +1 -0
  63. package/dist/github.d.ts +38 -0
  64. package/dist/github.js +153 -0
  65. package/dist/github.js.map +1 -0
  66. package/dist/githubauth.d.ts +21 -0
  67. package/dist/githubauth.js +90 -0
  68. package/dist/githubauth.js.map +1 -0
  69. package/dist/intake.d.ts +124 -0
  70. package/dist/intake.js +383 -0
  71. package/dist/intake.js.map +1 -0
  72. package/dist/jam.d.ts +45 -0
  73. package/dist/jam.js +385 -0
  74. package/dist/jam.js.map +1 -0
  75. package/dist/jev.d.ts +31 -0
  76. package/dist/jev.js +75 -0
  77. package/dist/jev.js.map +1 -0
  78. package/dist/jevguard.d.ts +28 -0
  79. package/dist/jevguard.js +213 -0
  80. package/dist/jevguard.js.map +1 -0
  81. package/dist/mailbox.d.ts +22 -0
  82. package/dist/mailbox.js +51 -0
  83. package/dist/mailbox.js.map +1 -0
  84. package/dist/main.d.ts +2 -0
  85. package/dist/main.js +764 -0
  86. package/dist/main.js.map +1 -0
  87. package/dist/markdown.d.ts +5 -0
  88. package/dist/markdown.js +81 -0
  89. package/dist/markdown.js.map +1 -0
  90. package/dist/oauth.d.ts +30 -0
  91. package/dist/oauth.js +216 -0
  92. package/dist/oauth.js.map +1 -0
  93. package/dist/permissions.d.ts +43 -0
  94. package/dist/permissions.js +57 -0
  95. package/dist/permissions.js.map +1 -0
  96. package/dist/preflight.d.ts +71 -0
  97. package/dist/preflight.js +116 -0
  98. package/dist/preflight.js.map +1 -0
  99. package/dist/providers.d.ts +26 -0
  100. package/dist/providers.js +27 -0
  101. package/dist/providers.js.map +1 -0
  102. package/dist/repopicker.d.ts +3 -0
  103. package/dist/repopicker.js +111 -0
  104. package/dist/repopicker.js.map +1 -0
  105. package/dist/runs.d.ts +59 -0
  106. package/dist/runs.js +211 -0
  107. package/dist/runs.js.map +1 -0
  108. package/dist/sandbox.d.ts +13 -0
  109. package/dist/sandbox.js +110 -0
  110. package/dist/sandbox.js.map +1 -0
  111. package/dist/schedules.d.ts +11 -0
  112. package/dist/schedules.js +85 -0
  113. package/dist/schedules.js.map +1 -0
  114. package/dist/secretguard.d.ts +4 -0
  115. package/dist/secretguard.js +115 -0
  116. package/dist/secretguard.js.map +1 -0
  117. package/dist/secrets.d.ts +27 -0
  118. package/dist/secrets.js +51 -0
  119. package/dist/secrets.js.map +1 -0
  120. package/dist/serve.d.ts +17 -0
  121. package/dist/serve.js +1206 -0
  122. package/dist/serve.js.map +1 -0
  123. package/dist/status.d.ts +73 -0
  124. package/dist/status.js +98 -0
  125. package/dist/status.js.map +1 -0
  126. package/dist/stream.d.ts +91 -0
  127. package/dist/stream.js +103 -0
  128. package/dist/stream.js.map +1 -0
  129. package/dist/streamtoken.d.ts +2 -0
  130. package/dist/streamtoken.js +30 -0
  131. package/dist/streamtoken.js.map +1 -0
  132. package/dist/team.d.ts +61 -0
  133. package/dist/team.js +136 -0
  134. package/dist/team.js.map +1 -0
  135. package/dist/ui.d.ts +110 -0
  136. package/dist/ui.js +348 -0
  137. package/dist/ui.js.map +1 -0
  138. package/dist/updater.d.ts +15 -0
  139. package/dist/updater.js +178 -0
  140. package/dist/updater.js.map +1 -0
  141. package/dist/workspace.d.ts +115 -0
  142. package/dist/workspace.js +247 -0
  143. package/dist/workspace.js.map +1 -0
  144. package/dist/worktree.d.ts +42 -0
  145. package/dist/worktree.js +140 -0
  146. package/dist/worktree.js.map +1 -0
  147. package/package.json +52 -0
  148. package/python/sidecar.py +178 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function Markdown({ text, color }: {
3
+ text: string;
4
+ color?: string;
5
+ }): React.ReactElement;
@@ -0,0 +1,81 @@
1
+ import { Box, Text } from 'ink';
2
+ import React from 'react';
3
+ /**
4
+ * The model writes markdown. The pane was printing it raw, so a considered answer arrived as
5
+ * `**What I'd build:**` and a wall of backticks — the formatting that makes it skimmable turned
6
+ * into noise instead.
7
+ *
8
+ * This is deliberately a renderer for what an agent actually writes — bold, inline code, bullets,
9
+ * numbered steps, fenced code, headings — and not a markdown implementation. Anything it does not
10
+ * recognise is printed as it came, which is the right failure: unstyled text still reads.
11
+ */
12
+ /** `**bold**`, `` `code` ``, `*italic*`. Ordered longest-delimiter-first so `**` never reads as `*`. */
13
+ const INLINE = /(\*\*[^*]+\*\*|`[^`]+`|\*[^*\s][^*]*\*|_[^_\s][^_]*_)/g;
14
+ function inline(text, key) {
15
+ return text.split(INLINE).filter((p) => p !== '').map((part, i) => {
16
+ const k = `${key}-${i}`;
17
+ // Recurse: `**Rewrite `deploy.yml`**` is bold wrapping code, and rendering the inner text flat
18
+ // left the backticks on screen.
19
+ if (part.startsWith('**') && part.endsWith('**') && part.length > 4) {
20
+ return React.createElement(Text, { key: k, bold: true }, inline(part.slice(2, -2), k));
21
+ }
22
+ if (part.startsWith('`') && part.endsWith('`') && part.length > 2) {
23
+ // Code is the thing people scan for — a path, a command, a field name.
24
+ return React.createElement(Text, { key: k, color: "cyan" }, part.slice(1, -1));
25
+ }
26
+ if (part.length > 2 && ((part.startsWith('*') && part.endsWith('*')) || (part.startsWith('_') && part.endsWith('_')))) {
27
+ return React.createElement(Text, { key: k, italic: true }, inline(part.slice(1, -1), k));
28
+ }
29
+ return React.createElement(Text, { key: k }, part);
30
+ });
31
+ }
32
+ const BULLET = /^(\s*)[-*•]\s+(.*)$/;
33
+ const NUMBERED = /^(\s*)(\d+[.)])\s+(.*)$/;
34
+ const HEADING = /^#{1,6}\s+(.*)$/;
35
+ const FENCE = /^\s*```/;
36
+ export function Markdown({ text, color }) {
37
+ const rows = text.replace(/\r/g, '').split('\n');
38
+ const out = [];
39
+ let inCode = false;
40
+ rows.forEach((row, i) => {
41
+ const key = `md-${i}`;
42
+ // A fence is a boundary, not content: show the block, not the ``` around it.
43
+ if (FENCE.test(row)) {
44
+ inCode = !inCode;
45
+ return;
46
+ }
47
+ if (inCode) {
48
+ out.push(React.createElement(Text, { key: key, color: "cyan" }, ` ${row}`));
49
+ return;
50
+ }
51
+ const heading = HEADING.exec(row);
52
+ if (heading) {
53
+ out.push(React.createElement(Text, { key: key, bold: true, color: color }, heading[1] ?? ''));
54
+ return;
55
+ }
56
+ const bullet = BULLET.exec(row);
57
+ if (bullet) {
58
+ // Hanging indent, so a wrapped bullet stays visibly part of its bullet.
59
+ out.push(React.createElement(Box, { key: key, paddingLeft: (bullet[1] ?? '').length },
60
+ React.createElement(Text, { color: color }, "\u2022 "),
61
+ React.createElement(Text, { color: color }, inline(bullet[2] ?? '', key))));
62
+ return;
63
+ }
64
+ const numbered = NUMBERED.exec(row);
65
+ if (numbered) {
66
+ out.push(React.createElement(Box, { key: key, paddingLeft: (numbered[1] ?? '').length },
67
+ React.createElement(Text, { color: color },
68
+ numbered[2],
69
+ " "),
70
+ React.createElement(Text, { color: color }, inline(numbered[3] ?? '', key))));
71
+ return;
72
+ }
73
+ if (row.trim() === '') {
74
+ out.push(React.createElement(Text, { key: key }, " "));
75
+ return;
76
+ }
77
+ out.push(React.createElement(Text, { key: key, color: color }, inline(row, key)));
78
+ });
79
+ return React.createElement(Box, { flexDirection: "column" }, out);
80
+ }
81
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export type Tokens = {
2
+ accessToken: string;
3
+ refreshToken?: string;
4
+ /** Epoch ms. Refreshed early rather than on expiry, so a turn never fails on a stale token. */
5
+ expiresAt: number;
6
+ clientId: string;
7
+ clientSecret?: string;
8
+ };
9
+ /**
10
+ * Run the authorisation once. Prints the URL rather than opening a browser — this machine may
11
+ * have no browser, and the URL can be opened on any device.
12
+ */
13
+ export declare function authorize(baseUrl: string, say: (s: string) => void, port?: number,
14
+ /** Another MCP server's scope and resource — Jam wants `mcp:read` against its /mcp endpoint. */
15
+ opts?: {
16
+ scope?: string;
17
+ resource?: string;
18
+ }): Promise<Tokens>;
19
+ /**
20
+ * Catch the redirect, either way round.
21
+ *
22
+ * On a machine with a browser the local listener takes it and nothing is typed. On a headless
23
+ * box it cannot: you approve on your laptop, and the redirect goes to YOUR localhost, not the
24
+ * server's — so the listener would wait for something that is never coming. Hence the paste.
25
+ *
26
+ * Both are offered at once and the first to arrive wins, so neither has to be chosen up front.
27
+ */
28
+ /** Over SSH the redirect lands on the wrong machine, so the paste is the main path, not a footnote. */
29
+ export declare function isRemoteSession(): boolean;
30
+ export declare function freshAccessToken(baseUrl: string, tokens: Tokens, onRefreshed: (t: Tokens) => void): Promise<string>;
package/dist/oauth.js ADDED
@@ -0,0 +1,216 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ import { createServer } from 'node:http';
3
+ import { spawn } from 'node:child_process';
4
+ import { createInterface } from 'node:readline';
5
+ /**
6
+ * The harness's own FlareDeck identity.
7
+ *
8
+ * Until now the only thing holding a FlareDeck credential was Claude Code, in the Keychain, in a
9
+ * format we would be unwise to read. That left the harness a passenger: to reach FlareDeck it had
10
+ * to ask the model to call a tool, which is slow, costs a turn, and can simply not happen — the
11
+ * failure class this whole harness exists to remove.
12
+ *
13
+ * So the harness registers as an OAuth client and holds its own tokens. One interactive step at
14
+ * install, folded into the browser trip you already make. After that it is a first-class client:
15
+ * it can mint its own stream token, post as the agent rather than as "API (default)", and call
16
+ * tools while the model is busy or wedged.
17
+ */
18
+ const b64u = (b) => b.toString('base64url');
19
+ async function discover(baseUrl) {
20
+ const res = await fetch(`${baseUrl}/.well-known/oauth-authorization-server`);
21
+ if (!res.ok)
22
+ throw new Error(`OAuth discovery failed (${res.status})`);
23
+ return (await res.json());
24
+ }
25
+ /** Register this machine as a client. Dynamic registration, so there is nothing to pre-provision. */
26
+ async function registerClient(endpoint, redirectUri) {
27
+ const res = await fetch(endpoint, {
28
+ method: 'POST',
29
+ headers: { 'Content-Type': 'application/json' },
30
+ body: JSON.stringify({
31
+ client_name: `flaredeck-agent on ${process.env['HOSTNAME'] || 'this machine'}`,
32
+ redirect_uris: [redirectUri],
33
+ grant_types: ['authorization_code', 'refresh_token'],
34
+ response_types: ['code'],
35
+ token_endpoint_auth_method: 'client_secret_post',
36
+ scope: 'flaredeck',
37
+ }),
38
+ });
39
+ const body = await res.json().catch(() => ({}));
40
+ if (!res.ok || !body.client_id)
41
+ throw new Error(`Could not register: ${body?.error ?? res.status}`);
42
+ return { clientId: body.client_id, clientSecret: body.client_secret };
43
+ }
44
+ /**
45
+ * Run the authorisation once. Prints the URL rather than opening a browser — this machine may
46
+ * have no browser, and the URL can be opened on any device.
47
+ */
48
+ export async function authorize(baseUrl, say, port = 41789,
49
+ /** Another MCP server's scope and resource — Jam wants `mcp:read` against its /mcp endpoint. */
50
+ opts = {}) {
51
+ const meta = await discover(baseUrl);
52
+ const redirectUri = `http://localhost:${port}/callback`;
53
+ const { clientId, clientSecret } = await registerClient(meta.registration_endpoint, redirectUri);
54
+ const verifier = b64u(randomBytes(32));
55
+ const challenge = b64u(createHash('sha256').update(verifier).digest());
56
+ const state = b64u(randomBytes(16));
57
+ const url = new URL(meta.authorization_endpoint);
58
+ url.search = new URLSearchParams({
59
+ response_type: 'code',
60
+ client_id: clientId,
61
+ redirect_uri: redirectUri,
62
+ code_challenge: challenge,
63
+ code_challenge_method: 'S256',
64
+ state,
65
+ scope: opts.scope ?? 'flaredeck',
66
+ resource: opts.resource ?? `${baseUrl}/`,
67
+ }).toString();
68
+ const remote = isRemoteSession();
69
+ if (remote) {
70
+ say('This is a remote session: the browser has to be on YOUR machine, not this one.');
71
+ say('Open this address there, sign in, and choose the agent to connect as:');
72
+ }
73
+ else {
74
+ say('Sign in as this agent (or as an admin, then "Connect as an agent").');
75
+ say('Opening your browser; if nothing appears, open this address yourself:');
76
+ }
77
+ say('');
78
+ say(url.toString());
79
+ say('');
80
+ if (!remote)
81
+ openBrowser(url.toString());
82
+ const code = await waitForCode(port, state, say, remote);
83
+ return exchange(meta.token_endpoint, {
84
+ grant_type: 'authorization_code',
85
+ code,
86
+ redirect_uri: redirectUri,
87
+ client_id: clientId,
88
+ code_verifier: verifier,
89
+ ...(clientSecret ? { client_secret: clientSecret } : {}),
90
+ }, clientId, clientSecret);
91
+ }
92
+ /**
93
+ * Catch the redirect, either way round.
94
+ *
95
+ * On a machine with a browser the local listener takes it and nothing is typed. On a headless
96
+ * box it cannot: you approve on your laptop, and the redirect goes to YOUR localhost, not the
97
+ * server's — so the listener would wait for something that is never coming. Hence the paste.
98
+ *
99
+ * Both are offered at once and the first to arrive wins, so neither has to be chosen up front.
100
+ */
101
+ /** Over SSH the redirect lands on the wrong machine, so the paste is the main path, not a footnote. */
102
+ export function isRemoteSession() {
103
+ return !!(process.env['SSH_CONNECTION'] || process.env['SSH_TTY'] || process.env['SSH_CLIENT']);
104
+ }
105
+ /** Best effort, never awaited: a browser that fails to open is what the printed URL is for. */
106
+ function openBrowser(url) {
107
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
108
+ try {
109
+ const child = spawn(cmd, [url], { stdio: 'ignore', detached: true });
110
+ child.on('error', () => { });
111
+ child.unref();
112
+ }
113
+ catch { /* same */ }
114
+ }
115
+ function waitForCode(port, state, say, remote) {
116
+ return new Promise((resolve, reject) => {
117
+ let done = false;
118
+ const finish = (fn) => {
119
+ if (done)
120
+ return;
121
+ done = true;
122
+ try {
123
+ server.close();
124
+ }
125
+ catch { /* not listening */ }
126
+ rl.close();
127
+ fn();
128
+ };
129
+ const take = (raw) => {
130
+ let url;
131
+ try {
132
+ url = new URL(raw.trim());
133
+ }
134
+ catch {
135
+ say('That is not a whole address. Paste everything from the browser\'s address bar, then Enter.');
136
+ rl.prompt();
137
+ return;
138
+ }
139
+ const code = url.searchParams.get('code');
140
+ const got = url.searchParams.get('state');
141
+ if (!code)
142
+ return finish(() => reject(new Error('That URL has no code in it.')));
143
+ // A mismatched state means the redirect did not come from the request we made.
144
+ if (got !== state)
145
+ return finish(() => reject(new Error('State mismatch — ignoring this redirect.')));
146
+ finish(() => resolve(code));
147
+ };
148
+ const server = createServer((req, res) => {
149
+ const url = new URL(req.url ?? '/', `http://localhost:${port}`);
150
+ if (!url.pathname.startsWith('/callback'))
151
+ return res.end();
152
+ res.writeHead(200, { 'Content-Type': 'text/html' });
153
+ res.end('<p>Authorised. You can close this tab and go back to the terminal.</p>');
154
+ take(`http://localhost:${port}${req.url}`);
155
+ });
156
+ // A port already in use is not fatal here: the paste still works.
157
+ server.on('error', (e) => say(`(not listening on ${port}: ${e.message} — use the paste below)`));
158
+ server.listen(port);
159
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
160
+ rl.on('line', (line) => { if (line.trim())
161
+ take(line);
162
+ else
163
+ rl.prompt(); });
164
+ // Both ways in at once; the first to arrive wins. The paste is a real prompt with a cursor,
165
+ // because on a headless box it is the ONLY way in and it used to read like an afterthought.
166
+ if (remote) {
167
+ say('After you sign in, the browser lands on a localhost address that does not load.');
168
+ say('That is expected. Copy the whole address from the address bar and paste it here:');
169
+ }
170
+ else {
171
+ say('If this does not finish by itself, the browser will have landed on a localhost');
172
+ say('address that does not load. Copy that whole address and paste it here:');
173
+ }
174
+ rl.setPrompt('> ');
175
+ rl.prompt();
176
+ });
177
+ }
178
+ async function exchange(tokenEndpoint, form, clientId, clientSecret) {
179
+ const res = await fetch(tokenEndpoint, {
180
+ method: 'POST',
181
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
182
+ body: new URLSearchParams(form).toString(),
183
+ });
184
+ const body = await res.json().catch(() => ({}));
185
+ if (!res.ok || !body.access_token) {
186
+ throw new Error(`Token exchange failed: ${body?.error_description ?? body?.error ?? res.status}`);
187
+ }
188
+ return {
189
+ accessToken: body.access_token,
190
+ refreshToken: body.refresh_token,
191
+ expiresAt: Date.now() + (Number(body.expires_in) || 3600) * 1000,
192
+ clientId,
193
+ ...(clientSecret ? { clientSecret } : {}),
194
+ };
195
+ }
196
+ /** Refresh a minute early: a token that expires mid-request fails the request, not the clock. */
197
+ const EARLY_MS = 60_000;
198
+ export async function freshAccessToken(baseUrl, tokens, onRefreshed) {
199
+ if (Date.now() < tokens.expiresAt - EARLY_MS)
200
+ return tokens.accessToken;
201
+ if (!tokens.refreshToken)
202
+ throw new Error('Access token expired and there is no refresh token.');
203
+ const meta = await discover(baseUrl);
204
+ const next = await exchange(meta.token_endpoint, {
205
+ grant_type: 'refresh_token',
206
+ refresh_token: tokens.refreshToken,
207
+ client_id: tokens.clientId,
208
+ ...(tokens.clientSecret ? { client_secret: tokens.clientSecret } : {}),
209
+ }, tokens.clientId, tokens.clientSecret);
210
+ // The provider re-issues the refresh token on each use (sliding 30 days), so keep the new one
211
+ // or the agent silently stops being able to refresh a month from now.
212
+ const merged = { ...next, refreshToken: next.refreshToken ?? tokens.refreshToken };
213
+ onRefreshed(merged);
214
+ return merged.accessToken;
215
+ }
216
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Who decides a tool call that isn't already allowed.
3
+ *
4
+ * This is the seam the whole harness turns on. Today there are two deciders: one that denies and
5
+ * says why (safe when nobody is watching) and one that asks at the terminal (for trying things by
6
+ * hand). The one that matters comes later and posts the request to Flaredeck so the lead can
7
+ * answer from a phone — it implements this same interface, and nothing else has to change.
8
+ *
9
+ * Whatever the decider, the agent is never left hanging: every path resolves, and the SDK hands us
10
+ * an AbortSignal so a wait can be cut short.
11
+ */
12
+ export type Decision = {
13
+ allow: true;
14
+ } | {
15
+ allow: false;
16
+ reason: string;
17
+ };
18
+ export type Decider = (request: {
19
+ toolName: string;
20
+ input: Record<string, unknown>;
21
+ }, options: {
22
+ signal: AbortSignal;
23
+ }) => Promise<Decision>;
24
+ /**
25
+ * Flaredeck tools that only read. These are pre-approved, so they never reach the decider.
26
+ *
27
+ * Everything NOT on this list — every write — deliberately falls through to it. That is the whole
28
+ * point, and it is why this list is spelled out one tool at a time instead of `mcp__flaredeck__*`:
29
+ * a wildcard would auto-approve all 36 tools, and an auto-approved call never reaches the
30
+ * decider at all. The permission broker would still look wired up, and would in fact be off.
31
+ */
32
+ export declare const FLAREDECK_READ_TOOLS: readonly ["get-board-info", "get-card-details", "get-cards-by-column", "get-build-status", "get-deploy-status", "get-guide", "get-outstanding", "get-portfolio", "get-timesheet-options", "find-card", "health-check", "hello-authenticated", "list-boards", "list-channel-subscriptions", "list-conversations", "read-messages"];
33
+ export declare const readToolNames: (server: string) => string[];
34
+ /**
35
+ * Unattended default until the lead exists.
36
+ *
37
+ * In auto mode the classifier handles the routine calls, so whatever reaches here is already the
38
+ * unusual kind — an explicit ask rule, a tool that requires human interaction. Those are exactly
39
+ * the ones meant to go to the team lead; refusing is the honest placeholder until they can.
40
+ */
41
+ export declare const denyingDecider: Decider;
42
+ /** For trying things by hand: ask, and treat a cancelled wait as a refusal. */
43
+ export declare const terminalDecider: Decider;
@@ -0,0 +1,57 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ /**
3
+ * Flaredeck tools that only read. These are pre-approved, so they never reach the decider.
4
+ *
5
+ * Everything NOT on this list — every write — deliberately falls through to it. That is the whole
6
+ * point, and it is why this list is spelled out one tool at a time instead of `mcp__flaredeck__*`:
7
+ * a wildcard would auto-approve all 36 tools, and an auto-approved call never reaches the
8
+ * decider at all. The permission broker would still look wired up, and would in fact be off.
9
+ */
10
+ export const FLAREDECK_READ_TOOLS = [
11
+ 'get-board-info',
12
+ 'get-card-details',
13
+ 'get-cards-by-column',
14
+ 'get-build-status',
15
+ 'get-deploy-status',
16
+ 'get-guide',
17
+ 'get-outstanding',
18
+ 'get-portfolio',
19
+ 'get-timesheet-options',
20
+ 'find-card',
21
+ 'health-check',
22
+ 'hello-authenticated',
23
+ 'list-boards',
24
+ 'list-channel-subscriptions',
25
+ 'list-conversations',
26
+ 'read-messages',
27
+ ];
28
+ export const readToolNames = (server) => FLAREDECK_READ_TOOLS.map((t) => `mcp__${server}__${t}`);
29
+ /**
30
+ * Unattended default until the lead exists.
31
+ *
32
+ * In auto mode the classifier handles the routine calls, so whatever reaches here is already the
33
+ * unusual kind — an explicit ask rule, a tool that requires human interaction. Those are exactly
34
+ * the ones meant to go to the team lead; refusing is the honest placeholder until they can.
35
+ */
36
+ export const denyingDecider = async (request) => ({
37
+ allow: false,
38
+ reason: `${request.toolName} needs a person to approve it, and there is no one to ask yet. ` +
39
+ `Carry on with anything that does not depend on it, and say clearly what you could not do.`,
40
+ });
41
+ /** For trying things by hand: ask, and treat a cancelled wait as a refusal. */
42
+ export const terminalDecider = async (request, { signal }) => {
43
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
44
+ try {
45
+ const answer = await rl.question(`\n ${request.toolName}\n ${JSON.stringify(request.input).slice(0, 300)}\n allow? [y/N] `, { signal });
46
+ return answer.trim().toLowerCase().startsWith('y')
47
+ ? { allow: true }
48
+ : { allow: false, reason: 'A human declined this call.' };
49
+ }
50
+ catch {
51
+ return { allow: false, reason: 'Nobody answered in time.' };
52
+ }
53
+ finally {
54
+ rl.close();
55
+ }
56
+ };
57
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAoBzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,gBAAgB;IAChB,kBAAkB;IAClB,qBAAqB;IACrB,kBAAkB;IAClB,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,uBAAuB;IACvB,WAAW;IACX,cAAc;IACd,qBAAqB;IACrB,aAAa;IACb,4BAA4B;IAC5B,oBAAoB;IACpB,eAAe;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAY,EAAE,CACxD,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAY,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACzD,KAAK,EAAE,KAAK;IACZ,MAAM,EACJ,GAAG,OAAO,CAAC,QAAQ,iEAAiE;QACpF,2FAA2F;CAC9F,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAY,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACpE,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC9B,OAAO,OAAO,CAAC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,mBAAmB,EAC5F,EAAE,MAAM,EAAE,CACX,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAChD,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;YACjB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Check the job can be done before starting it.
3
+ *
4
+ * Most flailing is not the model being dim, it is the environment being wrong — a port already
5
+ * bound, the dev API down, node_modules missing. Left to discover that itself, an agent spends
6
+ * forty minutes and a lot of tokens working it out sideways from error messages. Asking first
7
+ * turns that into five seconds and a clear sentence.
8
+ *
9
+ * Declared per project, because only the project knows what it needs:
10
+ *
11
+ * # .flaredeck/agent.yaml
12
+ * checks:
13
+ * - name: dev API
14
+ * run: curl -fsS http://localhost:5000/health
15
+ * fix: scripts/harness.sh up
16
+ * - name: dependencies installed
17
+ * run: test -d node_modules
18
+ * fix: npm ci
19
+ *
20
+ * A check is anything that exits 0 when things are fine. `fix` is optional and only tried once —
21
+ * a fix that does not fix it is a fact about the environment, not something to retry.
22
+ */
23
+ export type Check = {
24
+ name: string;
25
+ run: string;
26
+ fix?: string;
27
+ };
28
+ /**
29
+ * How this project merges, when it has a script for it.
30
+ *
31
+ * merge:
32
+ * command: bash scripts/merge-and-promote.sh
33
+ * dryRun: --dry-run # what to add to preview it
34
+ * confirm: --yes # what to add once a person has approved
35
+ *
36
+ * Split into three parts on purpose. The agent calls a tool with no arguments; the harness puts
37
+ * the command together. So the agent cannot pick another branch, cannot skip the dry run, and
38
+ * cannot pass the confirmation flag — which in a good script is the human safety valve, and is
39
+ * exactly the flag an agent would otherwise have to be trusted not to use.
40
+ */
41
+ export type MergeConfig = {
42
+ command: string;
43
+ dryRun?: string;
44
+ confirm?: string;
45
+ };
46
+ /**
47
+ * Where work goes. `origin/HEAD` is the wrong answer for any project whose default branch is not
48
+ * where features land — a project may merge to `dev` while the repo's default is something else, so
49
+ * guessing from git would open every pull request against the wrong base.
50
+ *
51
+ * branches:
52
+ * base: dev
53
+ */
54
+ export declare function loadBaseBranch(repo: string): string | null;
55
+ export declare function loadMergeConfig(repo: string): MergeConfig | null;
56
+ export type CheckResult = {
57
+ name: string;
58
+ ok: boolean;
59
+ detail: string;
60
+ fixed: boolean;
61
+ };
62
+ export declare function loadChecks(repo: string): Check[];
63
+ export declare function preflight(repo: string, onStep: (text: string) => void): Promise<CheckResult[]>;
64
+ /**
65
+ * What the agent is told about the state of its environment.
66
+ *
67
+ * On failure it is told NOT to attempt the work. An agent that tries anyway produces a confident
68
+ * account of why the code is broken when the truth is that nothing was running — which is worse
69
+ * than no answer, because someone believes it.
70
+ */
71
+ export declare function preflightBrief(results: CheckResult[]): string;