flowviant 0.60.0 → 0.61.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.
- package/bin/lib/fleet.mjs +5 -0
- package/bin/lib/work.mjs +20 -0
- package/package.json +1 -1
package/bin/lib/fleet.mjs
CHANGED
|
@@ -824,6 +824,7 @@ export async function runFleetDaemon() {
|
|
|
824
824
|
// retirement — lives in work.mjs; this hands it the loop's mutable state.
|
|
825
825
|
const {
|
|
826
826
|
flushWorkReports,
|
|
827
|
+
learnPlaces,
|
|
827
828
|
processWorkTurns,
|
|
828
829
|
processShipJobs,
|
|
829
830
|
processDiffJobs,
|
|
@@ -1549,6 +1550,10 @@ export async function runFleetDaemon() {
|
|
|
1549
1550
|
void flushWorkReports();
|
|
1550
1551
|
processMergeJobs(roster.mergeJobs);
|
|
1551
1552
|
processPatchRevertJobs(roster.patchRevertJobs);
|
|
1553
|
+
// WHERE each live tab works, BEFORE anything measures one: the sweep below
|
|
1554
|
+
// and every preview check ask `placeOf`, and a tab nobody has typed into
|
|
1555
|
+
// yet has taught it nothing.
|
|
1556
|
+
learnPlaces(roster.sessionPlaces);
|
|
1552
1557
|
processWorkTurns(roster.workTurnJobs);
|
|
1553
1558
|
// The roster's live-session list rides along: an ENDED session's ship
|
|
1554
1559
|
// must not be refused by checks whose remedies need a live tab.
|
package/bin/lib/work.mjs
CHANGED
|
@@ -355,6 +355,25 @@ export function createWorkManager({ repoRoot, baseDir, baseRef, getMcpUrl, getLe
|
|
|
355
355
|
*/
|
|
356
356
|
const sessionPlaces = new Map();
|
|
357
357
|
const placeOf = (sessionId) => sessionPlaces.get(sessionId) ?? sessionId;
|
|
358
|
+
/**
|
|
359
|
+
* Places straight off the roster, so a tab is measured the moment it EXISTS
|
|
360
|
+
* rather than after somebody types into it.
|
|
361
|
+
*
|
|
362
|
+
* Learning only from turn jobs meant a tab nobody had spoken to yet was
|
|
363
|
+
* measured at `sessions/<id>` — a directory that does not exist for a tab
|
|
364
|
+
* working in the checkout — so it reported no branch, no diffstat and no
|
|
365
|
+
* ports, and every control reading those had nothing to render.
|
|
366
|
+
*
|
|
367
|
+
* The roster is authoritative and turn jobs still agree with it; a session
|
|
368
|
+
* the server does not name keeps whatever a turn taught, and failing that its
|
|
369
|
+
* own id, which is the pre-places default.
|
|
370
|
+
*/
|
|
371
|
+
const learnPlaces = (map) => {
|
|
372
|
+
if (!map || typeof map !== 'object') return;
|
|
373
|
+
for (const [sid, place] of Object.entries(map)) {
|
|
374
|
+
if (typeof place === 'string' && place) sessionPlaces.set(sid, place);
|
|
375
|
+
}
|
|
376
|
+
};
|
|
358
377
|
/** The DIRECTORY a session works in. Every path that used to build
|
|
359
378
|
* `sessions/<id>` by hand goes through here, or a tab in the checkout gets
|
|
360
379
|
* measured against a directory that does not exist. */
|
|
@@ -2617,6 +2636,7 @@ export function createWorkManager({ repoRoot, baseDir, baseRef, getMcpUrl, getLe
|
|
|
2617
2636
|
|
|
2618
2637
|
return {
|
|
2619
2638
|
flushWorkReports,
|
|
2639
|
+
learnPlaces,
|
|
2620
2640
|
processWorkTurns,
|
|
2621
2641
|
processShipJobs,
|
|
2622
2642
|
processDiffJobs,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flowviant",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.61.0",
|
|
4
4
|
"description": "Run your own coding CLIs as build agents for Flowviant — Claude Code, Codex or Antigravity, on your own credentials. Holds your sessions, keeps a worktree per tab, and ships branches on your word.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|