@onepointfour-packs/flaredeck-agent 0.2.209 → 0.2.211
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/dist/agent.js +2 -1
- package/dist/agent.js.map +1 -1
- package/dist/assistant.d.ts +1 -1
- package/dist/assistant.js +4 -2
- package/dist/assistant.js.map +1 -1
- package/dist/check.d.ts +32 -0
- package/dist/check.js +251 -0
- package/dist/check.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js.map +1 -1
- package/dist/environment.d.ts +13 -3
- package/dist/environment.js +25 -15
- package/dist/environment.js.map +1 -1
- package/dist/envtools.d.ts +29 -0
- package/dist/envtools.js +67 -5
- package/dist/envtools.js.map +1 -1
- package/dist/features/card-folder.d.ts +69 -0
- package/dist/features/card-folder.js +305 -0
- package/dist/features/card-folder.js.map +1 -0
- package/dist/features/chat.d.ts +45 -0
- package/dist/features/chat.js +90 -0
- package/dist/features/chat.js.map +1 -0
- package/dist/features/dispatch.d.ts +55 -0
- package/dist/features/dispatch.js +101 -0
- package/dist/features/dispatch.js.map +1 -0
- package/dist/features/hand-back.d.ts +60 -0
- package/dist/features/hand-back.js +127 -0
- package/dist/features/hand-back.js.map +1 -0
- package/dist/features/manage-pane.d.ts +31 -0
- package/dist/features/manage-pane.js +60 -0
- package/dist/features/manage-pane.js.map +1 -0
- package/dist/features/release-wiring.d.ts +18 -0
- package/dist/features/release-wiring.js +56 -0
- package/dist/features/release-wiring.js.map +1 -0
- package/dist/features/services.d.ts +45 -0
- package/dist/features/services.js +147 -0
- package/dist/features/services.js.map +1 -0
- package/dist/features/sign-in-request.d.ts +81 -0
- package/dist/features/sign-in-request.js +91 -0
- package/dist/features/sign-in-request.js.map +1 -0
- package/dist/github.d.ts +14 -0
- package/dist/github.js +39 -8
- package/dist/github.js.map +1 -1
- package/dist/harness/events.d.ts +58 -0
- package/dist/harness/events.js +126 -0
- package/dist/harness/events.js.map +1 -0
- package/dist/harness/handover.d.ts +39 -0
- package/dist/harness/handover.js +63 -0
- package/dist/harness/handover.js.map +1 -0
- package/dist/harness/pause.d.ts +67 -0
- package/dist/harness/pause.js +128 -0
- package/dist/harness/pause.js.map +1 -0
- package/dist/harness/plan-usage.d.ts +49 -0
- package/dist/harness/plan-usage.js +69 -0
- package/dist/harness/plan-usage.js.map +1 -0
- package/dist/harness/prompt.d.ts +59 -0
- package/dist/harness/prompt.js +289 -0
- package/dist/harness/prompt.js.map +1 -0
- package/dist/harness/repo-notes.d.ts +1 -0
- package/dist/harness/repo-notes.js +26 -0
- package/dist/harness/repo-notes.js.map +1 -0
- package/dist/harness/restarter.d.ts +33 -0
- package/dist/harness/restarter.js +78 -0
- package/dist/harness/restarter.js.map +1 -0
- package/dist/harness/start-scripts.d.ts +7 -0
- package/dist/harness/start-scripts.js +44 -0
- package/dist/harness/start-scripts.js.map +1 -0
- package/dist/harness/tools.d.ts +37 -0
- package/dist/harness/tools.js +17 -0
- package/dist/harness/tools.js.map +1 -0
- package/dist/hydrate.d.ts +5 -0
- package/dist/hydrate.js +1 -0
- package/dist/hydrate.js.map +1 -1
- package/dist/main.js +32 -1
- package/dist/main.js.map +1 -1
- package/dist/profile.d.ts +80 -0
- package/dist/profile.js +77 -0
- package/dist/profile.js.map +1 -0
- package/dist/release.js +3 -0
- package/dist/release.js.map +1 -1
- package/dist/sandbox.js +3 -1
- package/dist/sandbox.js.map +1 -1
- package/dist/serve.d.ts +21 -115
- package/dist/serve.js +971 -1612
- package/dist/serve.js.map +1 -1
- package/dist/stream.d.ts +5 -0
- package/dist/stream.js.map +1 -1
- package/dist/workspace.d.ts +6 -0
- package/dist/workspace.js +19 -0
- package/dist/workspace.js.map +1 -1
- package/dist/worktree.d.ts +55 -2
- package/dist/worktree.js +130 -5
- package/dist/worktree.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asking a person to sign in for the agent, as a tool the agent can call (request_sign_in).
|
|
3
|
+
*
|
|
4
|
+
* Three pieces already worked and were never joined up: open_page DETECTS a sign-in wall and says
|
|
5
|
+
* which kind it is, signInSession captures a session a person completes by hand, and loadSession
|
|
6
|
+
* replays it for every later card. The gap was the middle — all the agent could do was say in prose
|
|
7
|
+
* that someone should sign in, so it wrote a comment, flagged the card and stopped.
|
|
8
|
+
*
|
|
9
|
+
* So: start the agent's own browser on the page, put it on a FlareDeck page through the relay (a
|
|
10
|
+
* person may be on a phone and the agent on a cloud box), flag the card with the link (a flag is
|
|
11
|
+
* what reaches a phone), and when the session lands, store it in FlareDeck, clear the flag and put
|
|
12
|
+
* the card back at the front of the queue. The agent's next turn opens the app already signed in.
|
|
13
|
+
*
|
|
14
|
+
* The tool call resolves as soon as the person has been ASKED, not when they finish: the card parks
|
|
15
|
+
* and the turn ends, instead of holding a tool call open for as long as somebody takes to arrive.
|
|
16
|
+
* Split out of serve.ts (docs/spec-harness-profiles.md, step 2).
|
|
17
|
+
*/
|
|
18
|
+
import type { SignInAsk } from '../envtools.js';
|
|
19
|
+
import type { SavedSession } from '../session.js';
|
|
20
|
+
export type SignInCard = {
|
|
21
|
+
card: string;
|
|
22
|
+
board?: string;
|
|
23
|
+
code?: string;
|
|
24
|
+
};
|
|
25
|
+
export type SignInDeps = {
|
|
26
|
+
/** The card this turn is on, read at the moment the agent asks. */
|
|
27
|
+
card: () => SignInCard | null;
|
|
28
|
+
/** The agent-service base the relay lives on (http/https); empty means not configured. */
|
|
29
|
+
relayService: string | undefined;
|
|
30
|
+
/** Where the person opens the viewer. */
|
|
31
|
+
appBase: string;
|
|
32
|
+
token: () => Promise<string>;
|
|
33
|
+
/** Make sure this machine has a browser; false when it could not get one. */
|
|
34
|
+
ensureBrowser: () => Promise<boolean>;
|
|
35
|
+
/** Run the sign-in — signInSession with a real browser, unless a test says otherwise. */
|
|
36
|
+
runSignIn: (o: {
|
|
37
|
+
url: string;
|
|
38
|
+
relay: {
|
|
39
|
+
url: string;
|
|
40
|
+
token: string;
|
|
41
|
+
id: string;
|
|
42
|
+
viewerUrl: (t: string) => string;
|
|
43
|
+
};
|
|
44
|
+
onReady: (viewer: string) => void;
|
|
45
|
+
onNote: (t: string) => void;
|
|
46
|
+
}) => Promise<{
|
|
47
|
+
ok: boolean;
|
|
48
|
+
session?: SavedSession;
|
|
49
|
+
why?: string;
|
|
50
|
+
}>;
|
|
51
|
+
/** Keep the session in FlareDeck for this project. */
|
|
52
|
+
remember: (part: string, session: SavedSession) => Promise<{
|
|
53
|
+
id: string;
|
|
54
|
+
ok: boolean;
|
|
55
|
+
message?: string;
|
|
56
|
+
}>;
|
|
57
|
+
/** Flag the card for a person (set-needs-human), optionally with links to open. */
|
|
58
|
+
flag: (ref: SignInCard, reason: string, links?: {
|
|
59
|
+
url: string;
|
|
60
|
+
label?: string;
|
|
61
|
+
}[]) => void;
|
|
62
|
+
/** Clear the card's flag once signed in. */
|
|
63
|
+
clearFlag: (ref: SignInCard) => Promise<void>;
|
|
64
|
+
/** The card is no longer parked on a person, and comes back to the agent with this note. */
|
|
65
|
+
resume: (card: SignInCard, text: string) => void;
|
|
66
|
+
/** While a person has not signed in yet, the checkout's environment is kept up. */
|
|
67
|
+
pending: {
|
|
68
|
+
start: () => void;
|
|
69
|
+
done: () => void;
|
|
70
|
+
};
|
|
71
|
+
/** A fresh pairing id. */
|
|
72
|
+
newId: () => string;
|
|
73
|
+
log: (kind: 'tool' | 'warn', text: string) => void;
|
|
74
|
+
};
|
|
75
|
+
/** One line a page repeats hundreds of times is logged once, then counted. */
|
|
76
|
+
export declare function pageNotes(log: (text: string) => void): (t: string) => void;
|
|
77
|
+
export declare function requestSignIn(d: SignInDeps): ({ part, url, why }: {
|
|
78
|
+
part: string;
|
|
79
|
+
url: string;
|
|
80
|
+
why: string;
|
|
81
|
+
}) => Promise<SignInAsk>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** One line a page repeats hundreds of times is logged once, then counted. */
|
|
2
|
+
export function pageNotes(log) {
|
|
3
|
+
let last = '';
|
|
4
|
+
let repeats = 0;
|
|
5
|
+
return (t) => {
|
|
6
|
+
if (t === last) {
|
|
7
|
+
repeats++;
|
|
8
|
+
if (repeats === 3 || repeats % 50 === 0)
|
|
9
|
+
log(`(the same line ${repeats + 1}× so far) ${t.slice(0, 120)}`);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
last = t;
|
|
13
|
+
repeats = 0;
|
|
14
|
+
log(t);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function requestSignIn(d) {
|
|
18
|
+
return async ({ part, url, why }) => {
|
|
19
|
+
const card = d.card();
|
|
20
|
+
if (!card)
|
|
21
|
+
return { asked: false, why: 'the card went away while this was being asked' };
|
|
22
|
+
if (!(await d.ensureBrowser()))
|
|
23
|
+
return { asked: false, why: 'this machine has no browser and could not fetch one' };
|
|
24
|
+
/* agent-service, not the MCP. The MCP deploys as a Firebase Function, which hands you (req, res)
|
|
25
|
+
with no http.Server underneath, so a WebSocket upgrade can never complete there. agent-service
|
|
26
|
+
is a real Cloud Run service and already the one this harness holds an event stream open to. */
|
|
27
|
+
if (!d.relayService) {
|
|
28
|
+
// Configured by default, so this means somebody blanked it. Say which setting.
|
|
29
|
+
return { asked: false, why: 'this harness has no agentServiceUrl, so a sign-in cannot be relayed' };
|
|
30
|
+
}
|
|
31
|
+
const id = d.newId();
|
|
32
|
+
const relayBase = d.relayService.replace(/^http/, 'ws').replace(/\/+$/, '');
|
|
33
|
+
const appBase = d.appBase.replace(/\/+$/, '');
|
|
34
|
+
const viewerUrl = (t) => `${appBase}/signin/${id}?t=${encodeURIComponent(t)}`;
|
|
35
|
+
const ref = { card: card.card, ...(card.board ? { board: card.board } : {}), ...(card.code ? { code: card.code } : {}) };
|
|
36
|
+
let settle;
|
|
37
|
+
const ready = new Promise((r) => { settle = r; });
|
|
38
|
+
d.pending.start();
|
|
39
|
+
void d.runSignIn({
|
|
40
|
+
url,
|
|
41
|
+
relay: { url: relayBase, token: await d.token(), id, viewerUrl },
|
|
42
|
+
onReady: (viewer) => {
|
|
43
|
+
d.log('tool', `sign-in wanted for "${part}" — ${viewer}`);
|
|
44
|
+
d.flag(ref, `${url} needs someone to sign in before this card can go on. ${why}\n\n` +
|
|
45
|
+
`Open the sign-in below and do it there. It is this agent's real browser, ` +
|
|
46
|
+
`shown live — click and type in the picture, then press Save & finish. The ` +
|
|
47
|
+
`session is kept for the whole project, so this is once, not once per card.`, [{ url: viewer, label: 'Sign in' }]);
|
|
48
|
+
settle({ asked: true, where: viewer });
|
|
49
|
+
},
|
|
50
|
+
onNote: pageNotes((t) => d.log('tool', `sign-in: ${t}`)),
|
|
51
|
+
})
|
|
52
|
+
.then(async (r) => {
|
|
53
|
+
d.pending.done();
|
|
54
|
+
if (!r.ok || !r.session) {
|
|
55
|
+
d.log('warn', `sign-in for "${part}" did not finish: ${r.why ?? 'nothing was saved'}`);
|
|
56
|
+
/* Said ON THE CARD. The flag already raised links to a viewer that is now dead, and a
|
|
57
|
+
person coming back to it an hour later would find a page that cannot connect and no
|
|
58
|
+
reason why — which reads as the feature being broken, not as a window having closed. */
|
|
59
|
+
d.flag(ref, `The sign-in for ${url} expired before anyone did it — the link in the ` +
|
|
60
|
+
`earlier request no longer works.\n\n${why}\n\nNothing is broken: ask ` +
|
|
61
|
+
`the agent to try again and a fresh sign-in is offered.`);
|
|
62
|
+
settle({ asked: false, why: r.why ?? 'nothing was saved' });
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
/* Awaited, and the failure handled. Sessions live only in FlareDeck — there is no copy on
|
|
66
|
+
this machine — so a failed write means the sign-in is GONE. Announcing "Signed in" and
|
|
67
|
+
resuming the card would wake an agent that meets the same wall and asks again. */
|
|
68
|
+
const saved = await d.remember(part, r.session);
|
|
69
|
+
if (!saved.ok) {
|
|
70
|
+
d.log('warn', `sign-in for "${part}" completed but was NOT saved: ${saved.message ?? 'no reason given'}`);
|
|
71
|
+
d.flag(ref, `Someone signed in to ${url}, but the session could not be saved to FlareDeck ` +
|
|
72
|
+
`(${saved.message ?? 'no reason given'}). Credentials are kept only in FlareDeck, ` +
|
|
73
|
+
`so nothing was retained here and the sign-in has been lost.\n\n${why}\n\n` +
|
|
74
|
+
`Once FlareDeck is reachable, ask the agent to try again.`);
|
|
75
|
+
settle({ asked: false, why: saved.message ?? 'the session could not be saved' });
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
d.log('tool', `signed in — kept for ${saved.id}; every card on this project opens straight in`);
|
|
79
|
+
await d.clearFlag(ref).catch((e) => d.log('warn', `could not clear needs-human: ${e instanceof Error ? e.message : String(e)}`));
|
|
80
|
+
d.resume(card, `Signed in. The session is kept for ${saved.id}, so open_page opens the app signed ` +
|
|
81
|
+
`in from now on. Carry on with what you were going to check: ${why}`);
|
|
82
|
+
})
|
|
83
|
+
.catch((e) => {
|
|
84
|
+
const why2 = e instanceof Error ? e.message : String(e);
|
|
85
|
+
d.log('warn', `sign-in for "${part}" failed: ${why2}`);
|
|
86
|
+
settle({ asked: false, why: why2 });
|
|
87
|
+
});
|
|
88
|
+
return ready;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=sign-in-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign-in-request.js","sourceRoot":"","sources":["../../src/features/sign-in-request.ts"],"names":[],"mappings":"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"}
|
package/dist/github.d.ts
CHANGED
|
@@ -33,6 +33,20 @@ export type Job = {
|
|
|
33
33
|
branch: string;
|
|
34
34
|
repo: string;
|
|
35
35
|
}) => Promise<string | void> | string | void;
|
|
36
|
+
/** The other repositories in the card's folder (features/card-folder.ts), published by folder name. */
|
|
37
|
+
others?: {
|
|
38
|
+
name: string;
|
|
39
|
+
cwd: string;
|
|
40
|
+
branch: string;
|
|
41
|
+
base: string;
|
|
42
|
+
}[];
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The job for one repository of the card's folder: the same card, branch rules and credentials,
|
|
46
|
+
* that repository's checkout and base. No name, or the card's own: the job itself.
|
|
47
|
+
*/
|
|
48
|
+
export declare function jobFor(j: Job, repository: string | undefined): Job | {
|
|
49
|
+
why: string;
|
|
36
50
|
};
|
|
37
51
|
/**
|
|
38
52
|
* Publish a job's branch. Extracted from the tool it used to live inside because the OTHER engine
|
package/dist/github.js
CHANGED
|
@@ -2,6 +2,23 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import { tool } from '@anthropic-ai/claude-agent-sdk';
|
|
3
3
|
import { sdkServer } from './localmcp.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* The job for one repository of the card's folder: the same card, branch rules and credentials,
|
|
7
|
+
* that repository's checkout and base. No name, or the card's own: the job itself.
|
|
8
|
+
*/
|
|
9
|
+
export function jobFor(j, repository) {
|
|
10
|
+
const name = (repository ?? '').trim();
|
|
11
|
+
const own = j.cwd.split('/').pop() ?? '';
|
|
12
|
+
if (!name || name.toLowerCase() === own.toLowerCase())
|
|
13
|
+
return j;
|
|
14
|
+
const o = j.others?.find((x) => x.name.toLowerCase() === name.toLowerCase());
|
|
15
|
+
if (!o) {
|
|
16
|
+
return { why: j.others?.length
|
|
17
|
+
? `There is no "${name}" in your card's folder. It holds: ${[own, ...j.others.map((x) => x.name)].join(', ')}.`
|
|
18
|
+
: `This card has one repository, so there is nothing to name — leave \`repository\` out.` };
|
|
19
|
+
}
|
|
20
|
+
return { ...j, cwd: o.cwd, branch: o.branch, base: o.base };
|
|
21
|
+
}
|
|
5
22
|
function run(command, args, cwd, token) {
|
|
6
23
|
return new Promise((resolve) => {
|
|
7
24
|
const child = spawn(command, args, {
|
|
@@ -191,6 +208,8 @@ export async function publishBranch(j) {
|
|
|
191
208
|
? { ok: true, text: `Pushed ${branch}.\n${safe}${heads}` }
|
|
192
209
|
: { ok: false, text: `Could not push ${branch}:\n${safe}` };
|
|
193
210
|
}
|
|
211
|
+
/** Which repository of a card folder a tool acts on. */
|
|
212
|
+
const REPOSITORY = z.string().optional().describe('In a card folder: the folder name of the repository (the card\'s own needs none).');
|
|
194
213
|
export function githubTools(job,
|
|
195
214
|
/**
|
|
196
215
|
* Present only where a project declares a merge command AND this agent may merge. `config` is
|
|
@@ -199,6 +218,7 @@ export function githubTools(job,
|
|
|
199
218
|
* project's branch. Null means this job's repo declares none, so there is nothing to run.
|
|
200
219
|
*/
|
|
201
220
|
merge) {
|
|
221
|
+
const pick = (j, repository) => jobFor(j, repository);
|
|
202
222
|
const needJob = () => {
|
|
203
223
|
const j = job();
|
|
204
224
|
if (!j)
|
|
@@ -212,8 +232,10 @@ merge) {
|
|
|
212
232
|
tool('submit_work', 'Save and publish everything you have changed for this card, in one step: it stages your ' +
|
|
213
233
|
'changes, commits them, and pushes the branch. Use this when the work is done — you do ' +
|
|
214
234
|
'not need git for any of it. Takes one argument: a short summary of what you changed, ' +
|
|
215
|
-
'written for whoever reviews it.', { summary: z.string().describe('What you changed, in a line or two. Becomes the commit message.') }, async (args) => {
|
|
216
|
-
const j = needJob();
|
|
235
|
+
'written for whoever reviews it.', { summary: z.string().describe('What you changed, in a line or two. Becomes the commit message.'), repository: REPOSITORY }, async (args) => {
|
|
236
|
+
const j = pick(needJob(), args.repository);
|
|
237
|
+
if ('why' in j)
|
|
238
|
+
return say(j.why, true);
|
|
217
239
|
const summary = String(args.summary ?? '').trim();
|
|
218
240
|
if (!summary)
|
|
219
241
|
return say('Say what you changed — it becomes the commit message.', true);
|
|
@@ -221,16 +243,22 @@ merge) {
|
|
|
221
243
|
return say(result.text, !result.ok);
|
|
222
244
|
}),
|
|
223
245
|
tool('push_branch', 'Publish this job\'s branch to GitHub. Takes no arguments: it pushes the branch this job ' +
|
|
224
|
-
'created, which is the only branch you may publish.', {}, async () => {
|
|
225
|
-
const
|
|
246
|
+
'created, which is the only branch you may publish. In a card folder, name the repository.', { repository: REPOSITORY }, async (args) => {
|
|
247
|
+
const j = pick(needJob(), args.repository);
|
|
248
|
+
if ('why' in j)
|
|
249
|
+
return say(j.why, true);
|
|
250
|
+
const result = await publishBranch(j);
|
|
226
251
|
return say(result.text, !result.ok);
|
|
227
252
|
}),
|
|
228
253
|
tool('open_pull_request', 'Open a pull request from this job\'s branch. The source and target branches are fixed by ' +
|
|
229
254
|
'the job and the board, so you choose only the title and the description.', {
|
|
230
255
|
title: z.string().describe('One line. What the change does, not which card it came from.'),
|
|
231
256
|
body: z.string().describe('What changed and why, for whoever reviews it.'),
|
|
232
|
-
|
|
233
|
-
|
|
257
|
+
repository: REPOSITORY,
|
|
258
|
+
}, async ({ title, body, repository }) => {
|
|
259
|
+
const j = pick(needJob(), repository);
|
|
260
|
+
if ('why' in j)
|
|
261
|
+
return say(j.why, true);
|
|
234
262
|
const { code, out } = await run('gh', ['pr', 'create', '--base', j.base, '--head', j.branch,
|
|
235
263
|
'--title', title, '--body', `${body}\n\n---\nFlareDeck card: ${j.card}`], j.cwd, await j.token());
|
|
236
264
|
return code === 0 ? say(out) : say(`Could not open a pull request:\n${out}`, true);
|
|
@@ -275,10 +303,13 @@ merge) {
|
|
|
275
303
|
'checks, reviews, whether it can merge. With no `number`, this job\'s own; with one, any ' +
|
|
276
304
|
'pull request in the same repository (a report\'s, when you review or release it). ' +
|
|
277
305
|
'It only reads.', {
|
|
306
|
+
repository: REPOSITORY,
|
|
278
307
|
number: z.number().int().positive().optional().describe('A pull request number in this repository, e.g. 3095. Leave out for your own branch\'s.'),
|
|
279
308
|
}, async (args) => {
|
|
280
|
-
const { number } = args;
|
|
281
|
-
const j = needJob();
|
|
309
|
+
const { repository, number } = args;
|
|
310
|
+
const j = pick(needJob(), repository);
|
|
311
|
+
if ('why' in j)
|
|
312
|
+
return say(j.why, true);
|
|
282
313
|
const which = number ? String(number) : j.branch;
|
|
283
314
|
const token = await j.token();
|
|
284
315
|
const { code, out } = await run('gh', ['pr', 'view', which, '--json',
|
package/dist/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an event or a FlareDeck answer means for this agent, before any turn runs.
|
|
3
|
+
* Split out of serve.ts (docs/spec-harness-profiles.md, step 2).
|
|
4
|
+
*/
|
|
5
|
+
import type { StreamEvent } from '../stream.js';
|
|
6
|
+
/**
|
|
7
|
+
* Whether a get-outstanding answer says there is nothing at all: no cards and no unactioned
|
|
8
|
+
* comments, and nothing hidden by a filter. Anything else, including an answer that could not be
|
|
9
|
+
* read, means the sweep turn runs as before.
|
|
10
|
+
*/
|
|
11
|
+
export declare function nothingOutstanding(text: string): boolean;
|
|
12
|
+
/** How long after a card's turn the harness leaves it alone, unless an event brings it back. */
|
|
13
|
+
export declare const RESUME_COOLDOWN_MS: number;
|
|
14
|
+
/** Whether any of these ids had a turn within the cooldown. */
|
|
15
|
+
export declare function workedRecently(last: Map<string, number>, ids: (string | undefined)[], now: number): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* What a lead's sweep must achieve, as a `/goal` condition (under 4000 characters). Judged by a
|
|
18
|
+
* small model from the transcript alone, so the proof has to be IN the transcript: a final
|
|
19
|
+
* get-portfolio, quoted. Bounded, because a column that cannot be emptied (no free worker, every
|
|
20
|
+
* card blocked) must end in reasons, not in a loop.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* The cards in a compact get-portfolio listing that nobody holds — what a lead can actually hand
|
|
24
|
+
* out. A card already assigned to a person or an agent is theirs: counting those made every
|
|
25
|
+
* sweep a dispatch job with nothing to dispatch (HR Goat's pool held eight cards, six of them
|
|
26
|
+
* Cobus's and two the lead's own, and JARVIS was set a goal about them every ten minutes).
|
|
27
|
+
*/
|
|
28
|
+
export declare function unownedCards(listing: string): string[];
|
|
29
|
+
/** A "moved to X" event when the card now sits somewhere else. Unknown either way: not stale. */
|
|
30
|
+
/**
|
|
31
|
+
* Something written on a card by a harness, for the record — not by anyone, to anyone.
|
|
32
|
+
*
|
|
33
|
+
* A manager asking a person to approve a merge puts three things on the card within a minute: the
|
|
34
|
+
* flag, the "Approval needed" comment, and later the "Production run … ran" output. Each reached
|
|
35
|
+
* the card's builder as an event and cost it a turn to say "nothing for me to do until qa has it"
|
|
36
|
+
* — HR-0801 woke HAL seven times that way in an afternoon. None of them asks the builder for
|
|
37
|
+
* anything; whoever must act is told through the approval itself.
|
|
38
|
+
*
|
|
39
|
+
* Being NAMED still wakes an agent, whatever the comment is.
|
|
40
|
+
*/
|
|
41
|
+
export declare function isBookkeeping(event: Pick<StreamEvent, 'event' | 'message' | 'line' | 'mentioned' | 'actor'>, agents?: ReadonlySet<string>): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* One agent addressing ANOTHER on a card this agent holds: the comment opens with an @name, and
|
|
44
|
+
* the name is not this agent's. "@Norm please merge this now" from the lead woke the card's
|
|
45
|
+
* builder, which spent a turn establishing that it was not Norm (HR-0814, HR-0801). An agent that
|
|
46
|
+
* wants the builder names the builder — and being named always wakes it.
|
|
47
|
+
*
|
|
48
|
+
* Only agents' comments. A person who writes "@Darren, thoughts?" on a card may well want the
|
|
49
|
+
* builder to hear it, and people are not expected to know the rule.
|
|
50
|
+
*/
|
|
51
|
+
export declare function forSomeoneElse(event: Pick<StreamEvent, 'event' | 'message' | 'line' | 'mentioned' | 'actor'>, agents: ReadonlySet<string>, me: string): boolean;
|
|
52
|
+
export declare function moveIsStale(event: Pick<StreamEvent, 'event' | 'laneName'>, laneNow: string | undefined): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* What a person reading the pane wants to know: WHICH card, with its title, not a code you have to
|
|
55
|
+
* go and look up — and for anything else, who it is from. "a message" did not even say from whom,
|
|
56
|
+
* on a line that sits there for minutes.
|
|
57
|
+
*/
|
|
58
|
+
export declare function workingLabel(event: Pick<StreamEvent, 'event' | 'cardCode' | 'cardKey' | 'cardName' | 'scheduleName' | 'actor'>): string;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a get-outstanding answer says there is nothing at all: no cards and no unactioned
|
|
3
|
+
* comments, and nothing hidden by a filter. Anything else, including an answer that could not be
|
|
4
|
+
* read, means the sweep turn runs as before.
|
|
5
|
+
*/
|
|
6
|
+
export function nothingOutstanding(text) {
|
|
7
|
+
if (!text)
|
|
8
|
+
return false;
|
|
9
|
+
return text.includes('*Nothing to do here. 🎉*') && text.includes('*No unactioned comments or mentions. 🎉*') && !/^### \d+\./m.test(text);
|
|
10
|
+
}
|
|
11
|
+
/** How long after a card's turn the harness leaves it alone, unless an event brings it back. */
|
|
12
|
+
export const RESUME_COOLDOWN_MS = 15 * 60_000;
|
|
13
|
+
/** Whether any of these ids had a turn within the cooldown. */
|
|
14
|
+
export function workedRecently(last, ids, now) {
|
|
15
|
+
return ids.some((id) => !!id && now - (last.get(id) ?? 0) < RESUME_COOLDOWN_MS);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* What a lead's sweep must achieve, as a `/goal` condition (under 4000 characters). Judged by a
|
|
19
|
+
* small model from the transcript alone, so the proof has to be IN the transcript: a final
|
|
20
|
+
* get-portfolio, quoted. Bounded, because a column that cannot be emptied (no free worker, every
|
|
21
|
+
* card blocked) must end in reasons, not in a loop.
|
|
22
|
+
*/
|
|
23
|
+
// One list, named once: what get-portfolio (state todo) returns. It said "the Ready For Dev lane"
|
|
24
|
+
// and then judged by get-portfolio's todo list, which also holds cards in other todo-type lanes;
|
|
25
|
+
// JARVIS reported "0 in Ready For Dev" turn after turn, never matching, to the 8-turn limit.
|
|
26
|
+
/**
|
|
27
|
+
* The cards in a compact get-portfolio listing that nobody holds — what a lead can actually hand
|
|
28
|
+
* out. A card already assigned to a person or an agent is theirs: counting those made every
|
|
29
|
+
* sweep a dispatch job with nothing to dispatch (HR Goat's pool held eight cards, six of them
|
|
30
|
+
* Cobus's and two the lead's own, and JARVIS was set a goal about them every ten minutes).
|
|
31
|
+
*/
|
|
32
|
+
export function unownedCards(listing) {
|
|
33
|
+
const out = new Set();
|
|
34
|
+
for (const line of listing.split('\n')) {
|
|
35
|
+
const m = /^- \[[a-z_]+\] ([A-Z][A-Z0-9]*-\d+)\b.* — owner=(\S+)/.exec(line);
|
|
36
|
+
if (m && m[2] === '\u2014')
|
|
37
|
+
out.add(m[1]);
|
|
38
|
+
}
|
|
39
|
+
return [...out];
|
|
40
|
+
}
|
|
41
|
+
/** A "moved to X" event when the card now sits somewhere else. Unknown either way: not stale. */
|
|
42
|
+
/**
|
|
43
|
+
* Something written on a card by a harness, for the record — not by anyone, to anyone.
|
|
44
|
+
*
|
|
45
|
+
* A manager asking a person to approve a merge puts three things on the card within a minute: the
|
|
46
|
+
* flag, the "Approval needed" comment, and later the "Production run … ran" output. Each reached
|
|
47
|
+
* the card's builder as an event and cost it a turn to say "nothing for me to do until qa has it"
|
|
48
|
+
* — HR-0801 woke HAL seven times that way in an afternoon. None of them asks the builder for
|
|
49
|
+
* anything; whoever must act is told through the approval itself.
|
|
50
|
+
*
|
|
51
|
+
* Being NAMED still wakes an agent, whatever the comment is.
|
|
52
|
+
*/
|
|
53
|
+
export function isBookkeeping(event, agents = new Set()) {
|
|
54
|
+
// "X needs your approval" is for a person: an agent cannot approve, and its lead is asked
|
|
55
|
+
// through a review, which is its own event. TARS was sent JARVIS's and spent a turn saying so.
|
|
56
|
+
// Before the check for being named: the event addresses whoever it reaches as "you", so it
|
|
57
|
+
// arrives marked as naming them, and the first version of this rule let every one through.
|
|
58
|
+
if (event.event === 'approval')
|
|
59
|
+
return true;
|
|
60
|
+
if (event.mentioned)
|
|
61
|
+
return false;
|
|
62
|
+
if (event.event === 'needs_human_set')
|
|
63
|
+
return true;
|
|
64
|
+
// A card's fields changing under a flag or a claim, by nobody in particular or by an agent.
|
|
65
|
+
// What a PERSON changes on a card is still news.
|
|
66
|
+
if (event.event === 'updated') {
|
|
67
|
+
const actor = (event.actor ?? '').trim().toLowerCase();
|
|
68
|
+
return !actor || actor === 'someone' || agents.has(actor);
|
|
69
|
+
}
|
|
70
|
+
if (event.event !== 'commented')
|
|
71
|
+
return false;
|
|
72
|
+
const said = `${event.message ?? ''}`.trim() || /— [^:]{1,60}: "(.*)$/s.exec(event.line ?? '')?.[1] || '';
|
|
73
|
+
return /^\**(Approval needed\b|Production run\b|No answer in \d+ minutes?, so\b)/.test(said.trim());
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* One agent addressing ANOTHER on a card this agent holds: the comment opens with an @name, and
|
|
77
|
+
* the name is not this agent's. "@Norm please merge this now" from the lead woke the card's
|
|
78
|
+
* builder, which spent a turn establishing that it was not Norm (HR-0814, HR-0801). An agent that
|
|
79
|
+
* wants the builder names the builder — and being named always wakes it.
|
|
80
|
+
*
|
|
81
|
+
* Only agents' comments. A person who writes "@Darren, thoughts?" on a card may well want the
|
|
82
|
+
* builder to hear it, and people are not expected to know the rule.
|
|
83
|
+
*/
|
|
84
|
+
export function forSomeoneElse(event, agents, me) {
|
|
85
|
+
if (event.event !== 'commented' || event.mentioned)
|
|
86
|
+
return false;
|
|
87
|
+
// Who said it and what, from the event's own fields or, where a producer leaves them out, from
|
|
88
|
+
// its line: `commented: HR-1 "title" — JARVIS: "@Norm please…`. The last such pair, since a
|
|
89
|
+
// card's title can hold a dash and a colon of its own.
|
|
90
|
+
const fromLine = [...(event.line ?? '').matchAll(/— ([^:"—]{1,60}): "/g)].pop();
|
|
91
|
+
const actor = ((event.actor ?? '').trim() || fromLine?.[1] || '').trim().toLowerCase();
|
|
92
|
+
if (!agents.has(actor))
|
|
93
|
+
return false;
|
|
94
|
+
const tail = fromLine ? (event.line ?? '').slice((fromLine.index ?? 0) + fromLine[0].length) : '';
|
|
95
|
+
// Markup around the first word must not hide it: "<p>@Norm" opens with a name too.
|
|
96
|
+
const said = (`${event.message ?? ''}`.trim() || tail).replace(/<[^>]+>/g, ' ').trim();
|
|
97
|
+
if (!/^@\S/.test(said))
|
|
98
|
+
return false;
|
|
99
|
+
// Its own name anywhere in it, whatever the event's flag says: without a name to check, stay awake.
|
|
100
|
+
const name = me.trim().toLowerCase();
|
|
101
|
+
return !!name && !said.toLowerCase().includes(`@${name}`);
|
|
102
|
+
}
|
|
103
|
+
export function moveIsStale(event, laneNow) {
|
|
104
|
+
if (event.event !== 'moved' || !event.laneName || !laneNow)
|
|
105
|
+
return false;
|
|
106
|
+
return event.laneName.trim().toLowerCase() !== laneNow.trim().toLowerCase();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* What a person reading the pane wants to know: WHICH card, with its title, not a code you have to
|
|
110
|
+
* go and look up — and for anything else, who it is from. "a message" did not even say from whom,
|
|
111
|
+
* on a line that sits there for minutes.
|
|
112
|
+
*/
|
|
113
|
+
export function workingLabel(event) {
|
|
114
|
+
const cardLabel = event.cardCode || event.cardKey || '';
|
|
115
|
+
const title = (event.cardName || '').trim();
|
|
116
|
+
if (event.event === 'ask')
|
|
117
|
+
return 'your question';
|
|
118
|
+
if (event.event === 'sweep')
|
|
119
|
+
return 'your outstanding work';
|
|
120
|
+
if (event.event === 'scheduled')
|
|
121
|
+
return event.scheduleName || 'a scheduled task';
|
|
122
|
+
if (cardLabel)
|
|
123
|
+
return `${cardLabel}${title ? ` · ${title.length > 58 ? `${title.slice(0, 57)}…` : title}` : ''}`;
|
|
124
|
+
return `a message${event.actor ? ` from ${event.actor}` : ''}`;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/harness/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* When a card session ends, whether it writes a handover note to the card, and on which plan.
|
|
3
|
+
* Split out of serve.ts (docs/spec-harness-profiles.md, step 2).
|
|
4
|
+
*/
|
|
5
|
+
export type HandoverLog = {
|
|
6
|
+
notesAt?: number;
|
|
7
|
+
changedAt?: number;
|
|
8
|
+
};
|
|
9
|
+
/** Tools that only look: reading files, searching, asking FlareDeck or a service what is there. */
|
|
10
|
+
export declare function onlyLooks(tool: string): boolean;
|
|
11
|
+
/** Record a tool call against the session it ran in. */
|
|
12
|
+
export declare function noteHandoverTool(logs: Map<string, HandoverLog>, key: string, tool: string, at: number): void;
|
|
13
|
+
/**
|
|
14
|
+
* Whether a session ending needs a handover note: it changed something, after its last notes.
|
|
15
|
+
* Unknown (no record) is treated as needed, as before.
|
|
16
|
+
*/
|
|
17
|
+
export declare function handoverNeeded(l: HandoverLog | undefined): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Whether a worker's card has gone to someone else, so its notes are no longer the worker's to
|
|
20
|
+
* write. FlareDeck refuses them (set-card-notes: "not assigned to you"), and the handover turn
|
|
21
|
+
* reopened a whole session only to be told so — CASE on HR-1128, TARS on HR-1141 (20 Oct).
|
|
22
|
+
* Unknown (no card, no assignee, no id) is not "someone else": the handover runs as before.
|
|
23
|
+
*/
|
|
24
|
+
export declare function cardWentElsewhere(card: {
|
|
25
|
+
assigned_to?: {
|
|
26
|
+
uid?: string;
|
|
27
|
+
} | null;
|
|
28
|
+
} | null | undefined, selfId: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Which Claude token a handover runs on: a fresh pick from FlareDeck, because the plan the turn
|
|
31
|
+
* used may have run out since; the turn's own plan when FlareDeck cannot be asked; 'none' when
|
|
32
|
+
* every plan is spent; null to fall back to this machine's own login (no subscriptions set up).
|
|
33
|
+
*/
|
|
34
|
+
export declare function handoverSubscription(subs: () => Promise<{
|
|
35
|
+
choose: (avoid: string[]) => Promise<{
|
|
36
|
+
use: string;
|
|
37
|
+
token?: string;
|
|
38
|
+
}>;
|
|
39
|
+
} | null>, lastUsed: string | undefined): Promise<string | 'none' | null>;
|