@loompad/cli 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/README.md +10 -0
- package/dist/cli/index.js +59 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/core/crew.d.ts +16 -1
- package/dist/core/crew.js +26 -2
- package/dist/core/crew.js.map +1 -1
- package/dist/core/orchestra.d.ts +36 -0
- package/dist/core/orchestra.js +154 -82
- package/dist/core/orchestra.js.map +1 -1
- package/dist/core/team-hub.d.ts +2 -1
- package/dist/core/team-hub.js +1 -1
- package/dist/core/team-hub.js.map +1 -1
- package/dist/core/team-leases.d.ts +7 -0
- package/dist/core/team-leases.js +19 -0
- package/dist/core/team-leases.js.map +1 -1
- package/dist/daemon/client.d.ts +12 -1
- package/dist/daemon/client.js +5 -2
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/routes/brain.js +2 -2
- package/dist/daemon/routes/brain.js.map +1 -1
- package/dist/daemon/routes/orchestra.js +1 -0
- package/dist/daemon/routes/orchestra.js.map +1 -1
- package/dist/daemon/routes/project-team.js +17 -0
- package/dist/daemon/routes/project-team.js.map +1 -1
- package/dist/daemon/runner.d.ts +11 -0
- package/dist/daemon/runner.js +111 -5
- package/dist/daemon/runner.js.map +1 -1
- package/dist/daemon/runtime/briefings.js +12 -1
- package/dist/daemon/runtime/briefings.js.map +1 -1
- package/dist/daemon/runtime.d.ts +9 -2
- package/dist/daemon/runtime.js +8 -4
- package/dist/daemon/runtime.js.map +1 -1
- package/dist/daemon/team-coordinator.d.ts +27 -3
- package/dist/daemon/team-coordinator.js +54 -2
- package/dist/daemon/team-coordinator.js.map +1 -1
- package/dist/daemon/team.d.ts +42 -1
- package/dist/daemon/team.js +92 -1
- package/dist/daemon/team.js.map +1 -1
- package/dist/hub/supabase-client.d.ts +4 -2
- package/dist/hub/supabase-client.js +21 -12
- package/dist/hub/supabase-client.js.map +1 -1
- package/dist/web/app.css +12 -0
- package/dist/web/app.js +140 -28
- package/dist/web/app.js.map +3 -3
- package/docs/release-notes/v1.2.3.md +29 -0
- package/docs/release-notes/v1.2.4.md +13 -0
- package/docs/teams.md +31 -0
- package/package.json +1 -1
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* owners and orchestrators · D35 WIP refs + merge-tree on task merge and every
|
|
12
12
|
* 5 min · D36 leases release when the goal lands · D37–D39 team policy.
|
|
13
13
|
*/
|
|
14
|
-
import { type Admission, type OrchestraCoordinator, type OrchestraRun, type OrchestraTask } from "../core/orchestra.js";
|
|
14
|
+
import { type Admission, type OrchestraCoordinator, type OrchestraRun, type OrchestraTask, type RemoteTaskResult } from "../core/orchestra.js";
|
|
15
15
|
import { type TeamKey } from "../core/team-crypto.js";
|
|
16
|
-
import type { FeedEvent, HubClient, Presence } from "../core/team-hub.js";
|
|
16
|
+
import type { FeedEvent, HubClient, Job, Presence } from "../core/team-hub.js";
|
|
17
17
|
import { type TeamPolicy } from "../core/team-policy.js";
|
|
18
18
|
import type { ProjectRuntime } from "./runtime.js";
|
|
19
19
|
/** What the coordinator needs from Team Link. */
|
|
@@ -28,7 +28,23 @@ export interface CoordinatorContext {
|
|
|
28
28
|
keys(teamId: string): TeamKey[];
|
|
29
29
|
feed(teamId: string): FeedEvent[];
|
|
30
30
|
presence(teamId: string): Presence[];
|
|
31
|
+
/** Team auto-orchestration: post a `task` job for teammates' runners and wait for it to settle. */
|
|
32
|
+
runTask?(rt: ProjectRuntime, payload: TeamTaskPayload): Promise<Job>;
|
|
31
33
|
}
|
|
34
|
+
/** What a teammate's runner needs to run one task of this machine's goal. */
|
|
35
|
+
export interface TeamTaskPayload {
|
|
36
|
+
runId: string;
|
|
37
|
+
taskId: string;
|
|
38
|
+
title: string;
|
|
39
|
+
prompt: string;
|
|
40
|
+
kind: string;
|
|
41
|
+
touches: string[];
|
|
42
|
+
/** The ref on origin the task starts from. */
|
|
43
|
+
baseRef: string;
|
|
44
|
+
goal: string;
|
|
45
|
+
}
|
|
46
|
+
/** A task's commits come back on this ref; its starting point sits beside it. */
|
|
47
|
+
export declare const teamTaskRef: (runId: string, taskId: string) => string;
|
|
32
48
|
export declare const wipRef: (member: string, runId: string) => string;
|
|
33
49
|
export declare class TeamCoordinator implements OrchestraCoordinator {
|
|
34
50
|
private rt;
|
|
@@ -53,7 +69,7 @@ export declare class TeamCoordinator implements OrchestraCoordinator {
|
|
|
53
69
|
admit(run: OrchestraRun, task: OrchestraTask): Promise<Admission>;
|
|
54
70
|
/** D30/D32: where the goal we're waiting on stands. */
|
|
55
71
|
private waitState;
|
|
56
|
-
onEdit(run: OrchestraRun, task: OrchestraTask,
|
|
72
|
+
onEdit(run: OrchestraRun, task: OrchestraTask, edited: string): void;
|
|
57
73
|
private flushDrift;
|
|
58
74
|
onTaskDone(): void;
|
|
59
75
|
/** Runs whose leases still stand: running, or finished but not yet landed. */
|
|
@@ -66,6 +82,14 @@ export declare class TeamCoordinator implements OrchestraCoordinator {
|
|
|
66
82
|
/** D34, the other half: a teammate's daemon predicted a conflict with one of our runs. */
|
|
67
83
|
onTeamEvent(e: FeedEvent): void;
|
|
68
84
|
private tellOwner;
|
|
85
|
+
/**
|
|
86
|
+
* The agent kinds teammates' shared runners offer right now — online, shared, not
|
|
87
|
+
* this machine, and only when the repo's reviewed policy lets runners take others'
|
|
88
|
+
* work (runners.shared). Each becomes a team:<kind> worker of a new goal.
|
|
89
|
+
*/
|
|
90
|
+
remoteWorkers(): Promise<string[]>;
|
|
91
|
+
/** Run one task on a teammate's machine: push its starting commit, post the job, wait. */
|
|
92
|
+
runRemote(run: OrchestraRun, task: OrchestraTask, base: string, prompt?: string): Promise<RemoteTaskResult>;
|
|
69
93
|
onRunEnd(run: OrchestraRun): void;
|
|
70
94
|
/** The goal landed (or was abandoned): drop its leases and its WIP ref. */
|
|
71
95
|
release(runId: string, reason: string): Promise<void>;
|
|
@@ -17,8 +17,12 @@ import { notify } from "../core/notify.js";
|
|
|
17
17
|
import { isTerminal } from "../core/orchestra.js";
|
|
18
18
|
import { openFromTeam, sealForTeam } from "../core/team-crypto.js";
|
|
19
19
|
import { spentToday } from "../core/team-landing.js";
|
|
20
|
-
import { covered, overlap, scopeOf, zoneOf } from "../core/team-leases.js";
|
|
20
|
+
import { covered, overlap, repoRelative, scopeOf, zoneOf } from "../core/team-leases.js";
|
|
21
21
|
import { agentAllowed, isProtected, loadPolicy } from "../core/team-policy.js";
|
|
22
|
+
/** A task's commits come back on this ref; its starting point sits beside it. */
|
|
23
|
+
export const teamTaskRef = (runId, taskId) => `refs/loom/run/${runId}/${taskId}`;
|
|
24
|
+
/** How long a teammate's machine has before a task counts as lost. */
|
|
25
|
+
const TEAM_TASK_MS = 2 * 60 * 60_000;
|
|
22
26
|
const POLICY_TTL_MS = 60_000;
|
|
23
27
|
const WIP_EVERY_MS = 5 * 60_000;
|
|
24
28
|
const STUCK_WAIT_MS = 24 * 60 * 60_000;
|
|
@@ -207,7 +211,9 @@ export class TeamCoordinator {
|
|
|
207
211
|
return { state: "waiting", detail: hasPr ? "its PR is open" : fin ? "it finished; no PR yet" : "it's still running" };
|
|
208
212
|
}
|
|
209
213
|
// ── drift (D33) ──
|
|
210
|
-
onEdit(run, task,
|
|
214
|
+
onEdit(run, task, edited) {
|
|
215
|
+
// leases are repo-relative; the agent may have said where in its worktree (#327)
|
|
216
|
+
const path = repoRelative(edited, [task.dir, this.rt.info.dir]);
|
|
211
217
|
if (!task.touches?.length || covered(path, task.touches))
|
|
212
218
|
return;
|
|
213
219
|
if (run.id.startsWith("crew-")) {
|
|
@@ -347,6 +353,52 @@ export class TeamCoordinator {
|
|
|
347
353
|
notify({ title: `Loom · ${this.rt.info.name}`, body: text });
|
|
348
354
|
}
|
|
349
355
|
// ── lease lifecycle (D36) ──
|
|
356
|
+
// ── team auto-orchestration ──
|
|
357
|
+
/**
|
|
358
|
+
* The agent kinds teammates' shared runners offer right now — online, shared, not
|
|
359
|
+
* this machine, and only when the repo's reviewed policy lets runners take others'
|
|
360
|
+
* work (runners.shared). Each becomes a team:<kind> worker of a new goal.
|
|
361
|
+
*/
|
|
362
|
+
async remoteWorkers() {
|
|
363
|
+
const hub = this.ctx.hub(), share = await this.ctx.share(this.rt), me = this.ctx.deviceId();
|
|
364
|
+
if (!hub || !share || !this.ctx.runTask)
|
|
365
|
+
return [];
|
|
366
|
+
const policy = await this.teamPolicy();
|
|
367
|
+
if (!policy?.runners.shared)
|
|
368
|
+
return [];
|
|
369
|
+
const runners = await hub.runners(share.teamId);
|
|
370
|
+
const fresh = Date.now() - 2 * 60_000;
|
|
371
|
+
const kinds = new Set();
|
|
372
|
+
for (const r of runners)
|
|
373
|
+
if (r.deviceId !== me && r.shared && r.lastSeen > fresh)
|
|
374
|
+
for (const k of r.kinds)
|
|
375
|
+
kinds.add(k);
|
|
376
|
+
return [...kinds].sort();
|
|
377
|
+
}
|
|
378
|
+
/** Run one task on a teammate's machine: push its starting commit, post the job, wait. */
|
|
379
|
+
async runRemote(run, task, base, prompt = task.prompt) {
|
|
380
|
+
const share = await this.ctx.share(this.rt);
|
|
381
|
+
if (!share || !this.ctx.runTask)
|
|
382
|
+
throw new Error("this project isn't shared with a team");
|
|
383
|
+
const baseRef = `${teamTaskRef(run.id, task.id)}-base`;
|
|
384
|
+
const pushed = await git(["push", "-q", "-f", "origin", `${base}:${baseRef}`], this.rt.info.dir);
|
|
385
|
+
if (pushed.code !== 0)
|
|
386
|
+
throw new Error(`couldn't push the task's starting point to origin: ${pushed.out.trim().slice(0, 300)}`);
|
|
387
|
+
const job = await Promise.race([
|
|
388
|
+
this.ctx.runTask(this.rt, { runId: run.id, taskId: task.id, title: task.title, prompt, kind: task.kind,
|
|
389
|
+
touches: task.touches ?? [], baseRef, goal: run.goal.split("\n")[0].slice(0, 300) }),
|
|
390
|
+
new Promise((_, reject) => { const t = setTimeout(() => reject(new Error("no teammate's machine finished this task within 2 hours")), TEAM_TASK_MS); t.unref?.(); }),
|
|
391
|
+
]);
|
|
392
|
+
if (job.state !== "done")
|
|
393
|
+
throw new Error(job.error?.startsWith("no teammate") ? job.error : `a teammate's machine couldn't do it: ${job.error ?? job.state}`);
|
|
394
|
+
const res = openFromTeam(this.ctx.keys(share.teamId), job.result);
|
|
395
|
+
if (!res?.ref)
|
|
396
|
+
throw new Error("the teammate's machine finished without handing back its work");
|
|
397
|
+
// drift: what it changed against what the task declared
|
|
398
|
+
for (const f of res.files ?? [])
|
|
399
|
+
this.onEdit(run, task, f);
|
|
400
|
+
return { ref: res.ref, summary: res.summary ?? "", files: res.files ?? [], ...(res.costUsd !== undefined ? { costUsd: res.costUsd } : {}), by: job.runnerGithub ?? res.by };
|
|
401
|
+
}
|
|
350
402
|
onRunEnd(run) {
|
|
351
403
|
void (async () => {
|
|
352
404
|
const share = await this.ctx.share(this.rt);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team-coordinator.js","sourceRoot":"","sources":["../../src/daemon/team-coordinator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"team-coordinator.js","sourceRoot":"","sources":["../../src/daemon/team-coordinator.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/team.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ import type { ProjectRuntime } from "./runtime.js";
|
|
|
21
21
|
import { Deploys } from "./deploys.js";
|
|
22
22
|
import { Landing, type Exec } from "./landing.js";
|
|
23
23
|
import { TeamBrain } from "./team-brain.js";
|
|
24
|
-
import { TeamCoordinator } from "./team-coordinator.js";
|
|
24
|
+
import { TeamCoordinator, type TeamTaskPayload } from "./team-coordinator.js";
|
|
25
25
|
import { Runner, type JobPayload, type RunnerConfig } from "./runner.js";
|
|
26
26
|
/**
|
|
27
27
|
* The project's GitHub repo ("owner/name"): `git config loom.repo` when set (a
|
|
@@ -60,6 +60,24 @@ export interface TeamLinkHost {
|
|
|
60
60
|
done(ok: boolean): void;
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
+
/** What `loom team auto` reports. */
|
|
64
|
+
export interface TeamAutoStatus {
|
|
65
|
+
shared: boolean;
|
|
66
|
+
policyShared: boolean;
|
|
67
|
+
myRunner: {
|
|
68
|
+
running: boolean;
|
|
69
|
+
shared: boolean;
|
|
70
|
+
};
|
|
71
|
+
teammates: Array<{
|
|
72
|
+
github: string;
|
|
73
|
+
kinds: string[];
|
|
74
|
+
online: boolean;
|
|
75
|
+
}>;
|
|
76
|
+
/** team:<kind> workers a goal started now would get. */
|
|
77
|
+
workers: string[];
|
|
78
|
+
ready: boolean;
|
|
79
|
+
missing: string[];
|
|
80
|
+
}
|
|
63
81
|
export declare class TeamLink {
|
|
64
82
|
private host;
|
|
65
83
|
private file;
|
|
@@ -78,6 +96,8 @@ export declare class TeamLink {
|
|
|
78
96
|
runner: Runner | null;
|
|
79
97
|
/** Return jobs we asked for → the project whose goal comes home (D76). */
|
|
80
98
|
private pendingReturns;
|
|
99
|
+
/** Team tasks this machine posted, waiting for a teammate's runner to settle them. */
|
|
100
|
+
private pendingTasks;
|
|
81
101
|
private started;
|
|
82
102
|
constructor(host: TeamLinkHost);
|
|
83
103
|
start(): Promise<void>;
|
|
@@ -264,6 +284,27 @@ export declare class TeamLink {
|
|
|
264
284
|
}): Promise<{
|
|
265
285
|
jobId: string;
|
|
266
286
|
}>;
|
|
287
|
+
/**
|
|
288
|
+
* Team auto-orchestration: one task of this machine's goal, posted for any teammate's
|
|
289
|
+
* shared runner to claim (no target) — it settles when that runner finishes or fails it.
|
|
290
|
+
* Hub events settle it at once; a poll covers a missed event.
|
|
291
|
+
*/
|
|
292
|
+
runTeamTask(rt: ProjectRuntime, task: TeamTaskPayload): Promise<import("../core/team-hub.js").Job>;
|
|
293
|
+
/**
|
|
294
|
+
* Is team auto-orchestration ready for this project, and what's missing? Three things
|
|
295
|
+
* have to be true: the repo's policy allows shared runners, a teammate's shared runner
|
|
296
|
+
* is online (their agents become team:<kind> workers), and — for teammates to get
|
|
297
|
+
* *your* agents in return — your own runner is on and shared.
|
|
298
|
+
*/
|
|
299
|
+
teamAutoStatus(rt: ProjectRuntime): Promise<TeamAutoStatus>;
|
|
300
|
+
/**
|
|
301
|
+
* One step to take part: share the project, write the policy file when the repo has
|
|
302
|
+
* none (it still needs merging — policy is reviewed like code), and start this
|
|
303
|
+
* machine's runner, shared. Returns the status after.
|
|
304
|
+
*/
|
|
305
|
+
teamAutoOn(rt: ProjectRuntime): Promise<TeamAutoStatus & {
|
|
306
|
+
wrotePolicy: boolean;
|
|
307
|
+
}>;
|
|
267
308
|
/** Move a running goal to a runner at a safe point (D75). */
|
|
268
309
|
continueOnRunner(rt: ProjectRuntime, runId: string, opts?: {
|
|
269
310
|
runner?: string;
|
package/dist/daemon/team.js
CHANGED
|
@@ -32,6 +32,7 @@ import { DEPLOY_POLL_MS, Deploys } from "./deploys.js";
|
|
|
32
32
|
import { defaultExec, Landing } from "./landing.js";
|
|
33
33
|
import { TeamBrain } from "./team-brain.js";
|
|
34
34
|
import { TeamCoordinator } from "./team-coordinator.js";
|
|
35
|
+
import { loadPolicy } from "../core/team-policy.js";
|
|
35
36
|
import { Runner, readRunnerConfig, writeRunnerConfig } from "./runner.js";
|
|
36
37
|
import { rollupCosts } from "../core/team-landing.js";
|
|
37
38
|
import { inviteFragment, inviteLink } from "../core/invite-link.js";
|
|
@@ -82,6 +83,8 @@ export async function repoOf(dir) {
|
|
|
82
83
|
const HEARTBEAT_MS = 15_000;
|
|
83
84
|
const GH_POLL_MS = 60_000;
|
|
84
85
|
const BRAIN_SYNC_MS = 60_000;
|
|
86
|
+
/** A team task no teammate's runner has claimed by then goes back to the orchestrator (LOOM_TEAM_TASK_UNCLAIMED_MS in tests). */
|
|
87
|
+
const teamTaskUnclaimedMs = () => Number(process.env.LOOM_TEAM_TASK_UNCLAIMED_MS) || 10 * 60_000;
|
|
85
88
|
export class TeamLink {
|
|
86
89
|
host;
|
|
87
90
|
file;
|
|
@@ -100,6 +103,8 @@ export class TeamLink {
|
|
|
100
103
|
runner = null;
|
|
101
104
|
/** Return jobs we asked for → the project whose goal comes home (D76). */
|
|
102
105
|
pendingReturns = new Map();
|
|
106
|
+
/** Team tasks this machine posted, waiting for a teammate's runner to settle them. */
|
|
107
|
+
pendingTasks = new Map();
|
|
103
108
|
started = false;
|
|
104
109
|
constructor(host) {
|
|
105
110
|
this.host = host;
|
|
@@ -820,6 +825,7 @@ export class TeamLink {
|
|
|
820
825
|
}
|
|
821
826
|
onJob(teamId, job) {
|
|
822
827
|
this.runner?.onJob(teamId, job);
|
|
828
|
+
this.pendingTasks.get(job.id)?.(job);
|
|
823
829
|
// Bring back (D76): the runner handed the goal over; rebuild it here.
|
|
824
830
|
const projectId = this.pendingReturns.get(job.id);
|
|
825
831
|
if (!projectId || (job.state !== "done" && job.state !== "failed"))
|
|
@@ -901,7 +907,7 @@ export class TeamLink {
|
|
|
901
907
|
const p = openFromTeam(keys, sealed);
|
|
902
908
|
return {
|
|
903
909
|
...rest,
|
|
904
|
-
goal: (p?.goal ?? p?.record?.goal ?? "").split("\n")[0].slice(0, 200),
|
|
910
|
+
goal: (p?.goal ?? p?.record?.goal ?? (p?.task ? `${p.task.title} — part of “${p.task.goal}”` : "")).split("\n")[0].slice(0, 200),
|
|
905
911
|
runId: p?.runId ?? p?.record?.id ?? null,
|
|
906
912
|
progress: openFromTeam(keys, progress) ?? null,
|
|
907
913
|
mine: j.userId === me,
|
|
@@ -998,6 +1004,90 @@ export class TeamLink {
|
|
|
998
1004
|
const job = await this.hub().createJob(s.teamId, { repo: s.repo, kind: "start", ...(target ? { target } : {}), sealed: sealForTeam(s.key, payload), deviceId: s.device });
|
|
999
1005
|
return { jobId: job.id };
|
|
1000
1006
|
}
|
|
1007
|
+
/**
|
|
1008
|
+
* Team auto-orchestration: one task of this machine's goal, posted for any teammate's
|
|
1009
|
+
* shared runner to claim (no target) — it settles when that runner finishes or fails it.
|
|
1010
|
+
* Hub events settle it at once; a poll covers a missed event.
|
|
1011
|
+
*/
|
|
1012
|
+
async runTeamTask(rt, task) {
|
|
1013
|
+
const s = await this.jobShare(rt);
|
|
1014
|
+
const job = await this.hub().createJob(s.teamId, { repo: s.repo, kind: "task", sealed: sealForTeam(s.key, { task, from: os.hostname() }), deviceId: s.device });
|
|
1015
|
+
const posted = Date.now(), unclaimed = teamTaskUnclaimedMs();
|
|
1016
|
+
return new Promise((resolve) => {
|
|
1017
|
+
const settle = (j) => {
|
|
1018
|
+
if (j.state !== "done" && j.state !== "failed" && j.state !== "cancelled")
|
|
1019
|
+
return;
|
|
1020
|
+
this.pendingTasks.delete(job.id);
|
|
1021
|
+
clearInterval(poll);
|
|
1022
|
+
resolve(j);
|
|
1023
|
+
};
|
|
1024
|
+
this.pendingTasks.set(job.id, settle);
|
|
1025
|
+
const poll = setInterval(() => {
|
|
1026
|
+
void this.hub().jobs(s.teamId).then(async (js) => {
|
|
1027
|
+
const j = js.find((x) => x.id === job.id);
|
|
1028
|
+
if (!j)
|
|
1029
|
+
return;
|
|
1030
|
+
// nobody took it (the teammate went offline after the goal started): give it back to the
|
|
1031
|
+
// orchestrator now rather than hours later, so it can hand the task to someone else
|
|
1032
|
+
if (j.state === "queued" && Date.now() - posted > unclaimed) {
|
|
1033
|
+
// settle first: cancelling makes the hub push a bare "cancelled", which must not win
|
|
1034
|
+
settle({ ...j, state: "failed", error: `no teammate's machine took it within ${unclaimed >= 60_000 ? `${Math.round(unclaimed / 60_000)} minutes` : `${Math.round(unclaimed / 1000)}s`} — give it to another worker` });
|
|
1035
|
+
await this.hub().cancelJob(s.teamId, job.id).catch(() => { });
|
|
1036
|
+
return;
|
|
1037
|
+
}
|
|
1038
|
+
settle(j);
|
|
1039
|
+
}).catch(() => { });
|
|
1040
|
+
}, Math.min(15_000, Math.max(250, unclaimed / 2)));
|
|
1041
|
+
poll.unref?.();
|
|
1042
|
+
});
|
|
1043
|
+
}
|
|
1044
|
+
/**
|
|
1045
|
+
* Is team auto-orchestration ready for this project, and what's missing? Three things
|
|
1046
|
+
* have to be true: the repo's policy allows shared runners, a teammate's shared runner
|
|
1047
|
+
* is online (their agents become team:<kind> workers), and — for teammates to get
|
|
1048
|
+
* *your* agents in return — your own runner is on and shared.
|
|
1049
|
+
*/
|
|
1050
|
+
async teamAutoStatus(rt) {
|
|
1051
|
+
const share = await this.teamFor(rt);
|
|
1052
|
+
const policyFile = fs.existsSync(path.join(rt.info.dir, "loom.team.json"));
|
|
1053
|
+
const policyShared = (await loadPolicy(rt.info.dir)).runners.shared;
|
|
1054
|
+
const cfg = this.runnerConfig();
|
|
1055
|
+
const me = this.state.device?.id;
|
|
1056
|
+
const runners = share ? await this.hub().runners(share.teamId).catch(() => []) : [];
|
|
1057
|
+
const fresh = Date.now() - 2 * 60_000;
|
|
1058
|
+
const teammates = runners.filter((r) => r.deviceId !== me && r.shared).map((r) => ({ github: r.github, kinds: r.kinds, online: r.lastSeen > fresh }));
|
|
1059
|
+
const workers = (share ? await this.coordinatorFor(rt).remoteWorkers().catch(() => []) : []).map((k) => `team:${k}`);
|
|
1060
|
+
const missing = [];
|
|
1061
|
+
if (!share)
|
|
1062
|
+
missing.push("share this project with your team (loom team share)");
|
|
1063
|
+
if (!policyShared)
|
|
1064
|
+
missing.push(policyFile ? 'set "runners": { "shared": true } in loom.team.json and merge it' : "add loom.team.json with { \"runners\": { \"shared\": true } } and merge it");
|
|
1065
|
+
if (!(this.runner?.running && cfg.shared))
|
|
1066
|
+
missing.push("turn on your shared runner so teammates' goals can use your agents (loom team auto on)");
|
|
1067
|
+
if (!teammates.some((t) => t.online))
|
|
1068
|
+
missing.push("a teammate turns on theirs (loom team auto on, on their machine)");
|
|
1069
|
+
return { shared: Boolean(share), policyShared, myRunner: { running: Boolean(this.runner?.running), shared: cfg.shared }, teammates, workers, ready: workers.length > 0, missing };
|
|
1070
|
+
}
|
|
1071
|
+
/**
|
|
1072
|
+
* One step to take part: share the project, write the policy file when the repo has
|
|
1073
|
+
* none (it still needs merging — policy is reviewed like code), and start this
|
|
1074
|
+
* machine's runner, shared. Returns the status after.
|
|
1075
|
+
*/
|
|
1076
|
+
async teamAutoOn(rt) {
|
|
1077
|
+
if (!(await this.teamFor(rt)))
|
|
1078
|
+
await this.share(rt);
|
|
1079
|
+
let wrotePolicy = false;
|
|
1080
|
+
const file = path.join(rt.info.dir, "loom.team.json");
|
|
1081
|
+
if (!fs.existsSync(file)) {
|
|
1082
|
+
fs.writeFileSync(file, JSON.stringify({ runners: { shared: true } }, null, 2) + "\n");
|
|
1083
|
+
wrotePolicy = true;
|
|
1084
|
+
}
|
|
1085
|
+
if (this.runner?.running)
|
|
1086
|
+
await this.runner.stop();
|
|
1087
|
+
await this.startRunner({ shared: true });
|
|
1088
|
+
await this.runner?.register(); // the hub learns it's shared now, not at some later re-register
|
|
1089
|
+
return { ...(await this.teamAutoStatus(rt)), wrotePolicy };
|
|
1090
|
+
}
|
|
1001
1091
|
/** Move a running goal to a runner at a safe point (D75). */
|
|
1002
1092
|
async continueOnRunner(rt, runId, opts = {}) {
|
|
1003
1093
|
const s = await this.jobShare(rt);
|
|
@@ -1119,6 +1209,7 @@ export class TeamLink {
|
|
|
1119
1209
|
keys: (teamId) => this.state.teams[teamId]?.keys ?? [],
|
|
1120
1210
|
feed: (teamId) => this.views.get(teamId)?.feed ?? [],
|
|
1121
1211
|
presence: (teamId) => [...(this.views.get(teamId)?.presence.values() ?? [])],
|
|
1212
|
+
runTask: (r, payload) => this.runTeamTask(r, payload),
|
|
1122
1213
|
});
|
|
1123
1214
|
this.coordinators.set(rt.info.id, c);
|
|
1124
1215
|
rt.coordinator = c;
|