flowviant 0.107.0 → 0.108.1
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/commandSpecs.mjs
CHANGED
|
@@ -25,7 +25,7 @@ export const COMMANDS = [
|
|
|
25
25
|
name: 'start',
|
|
26
26
|
usesCheckout: true,
|
|
27
27
|
usage: 'flowviant [start] [--project <name|id>]',
|
|
28
|
-
summary: "Serve this repo's project: run agents and
|
|
28
|
+
summary: "Serve this repo's project: run agents and Terminal tabs here. Plain `flowviant` does the same.",
|
|
29
29
|
details: [
|
|
30
30
|
'Run it inside the repository you connected. The first run in a new repo asks you to approve this computer.',
|
|
31
31
|
'--project <name|id> serve that stored project instead of the one this repo is bound to',
|
package/bin/lib/fleet.mjs
CHANGED
|
@@ -628,7 +628,7 @@ export async function runFleetDaemon({ afterLock = null } = {}) {
|
|
|
628
628
|
// polling, and saying "machine online" over a daemon the server hands
|
|
629
629
|
// nothing would contradict the standby line printed a moment earlier.
|
|
630
630
|
if (holderState !== 'standby')
|
|
631
|
-
info('Machine online. Open a tab in Flowviant →
|
|
631
|
+
info('Machine online. Open a tab in Flowviant → Terminal to start working.');
|
|
632
632
|
}
|
|
633
633
|
// Heartbeat so a quiet daemon visibly stays alive. Gated on REAL work —
|
|
634
634
|
// it was once gated on `roster.agents`, which the server sends permanently
|
package/bin/lib/mcp-cli.mjs
CHANGED
|
@@ -83,6 +83,6 @@ export async function runMcpCommand(args = []) {
|
|
|
83
83
|
console.log('');
|
|
84
84
|
console.log('Then, in any Claude session: "file a task in Flowviant for …".');
|
|
85
85
|
console.log('Tasks land as drafts on the board — nothing runs until you open');
|
|
86
|
-
console.log('a session tab in the
|
|
86
|
+
console.log('a session tab in the Terminal and type in it.');
|
|
87
87
|
console.log('');
|
|
88
88
|
}
|
package/bin/lib/shipMerge.mjs
CHANGED
|
@@ -61,7 +61,13 @@ export function mergeOutward({
|
|
|
61
61
|
if (current === base) {
|
|
62
62
|
const dirty = String(git(['status', '--porcelain', '--untracked-files=no'], repoRoot)).trim();
|
|
63
63
|
if (dirty) {
|
|
64
|
-
|
|
64
|
+
// THE PERSON'S FIX (0.108.0): nothing on the branch is wrong, so the
|
|
65
|
+
// agent merge path reports `fix: 'person'` and the server queues no
|
|
66
|
+
// resolve turn — the agent cannot commit somebody's checkout.
|
|
67
|
+
throw Object.assign(
|
|
68
|
+
new Error(`this repository has no remote, so the merge lands on ${base} in ${repoRoot} itself, and that checkout has uncommitted changes. Commit or stash them, then approve again.`),
|
|
69
|
+
{ fix: 'person' }
|
|
70
|
+
);
|
|
65
71
|
}
|
|
66
72
|
git(['merge', '--ff-only', merged], repoRoot);
|
|
67
73
|
} else {
|
|
@@ -214,6 +214,7 @@ export function createWorkAgentMerges({
|
|
|
214
214
|
await report({
|
|
215
215
|
agentId,
|
|
216
216
|
ok: false,
|
|
217
|
+
fix: 'person',
|
|
217
218
|
detail: ghDown.missing
|
|
218
219
|
? 'this project merges through pull requests, and the GitHub CLI (gh) is not installed on this machine'
|
|
219
220
|
: `this project merges through pull requests, and gh is not signed in here: ${ghDown.error}`,
|
|
@@ -225,6 +226,7 @@ export function createWorkAgentMerges({
|
|
|
225
226
|
await report({
|
|
226
227
|
agentId,
|
|
227
228
|
ok: false,
|
|
229
|
+
fix: 'person',
|
|
228
230
|
detail: `this agent is on the base branch (${prBase}) — there is nothing to open a pull request from`,
|
|
229
231
|
});
|
|
230
232
|
return;
|
|
@@ -271,7 +273,9 @@ export function createWorkAgentMerges({
|
|
|
271
273
|
// token in its userinfo — so this one line is the only place on the
|
|
272
274
|
// agent merge path that can leak a credential into a stored,
|
|
273
275
|
// team-visible `mergeError`.
|
|
274
|
-
|
|
276
|
+
// A refused push is the remote or its login (no `origin`, a
|
|
277
|
+
// credential, a protected ref) — the person's to fix, not the branch.
|
|
278
|
+
await report({ agentId, ok: false, fix: 'person', detail: envScrub(ghFirstLine(e)) });
|
|
275
279
|
return;
|
|
276
280
|
}
|
|
277
281
|
const pr = ensureOpenPr(head, prBase, { cwd: repoRoot });
|
|
@@ -279,6 +283,7 @@ export function createWorkAgentMerges({
|
|
|
279
283
|
await report({
|
|
280
284
|
agentId,
|
|
281
285
|
ok: false,
|
|
286
|
+
fix: 'person',
|
|
282
287
|
detail: `the open pull request for ${head} targets ${pr.wrongBase}, not ${prBase} — retarget or close it, then approve again`,
|
|
283
288
|
});
|
|
284
289
|
return;
|
|
@@ -344,6 +349,11 @@ export function createWorkAgentMerges({
|
|
|
344
349
|
await report({
|
|
345
350
|
agentId,
|
|
346
351
|
ok: false,
|
|
352
|
+
// WHOSE FIX IT IS (0.108.0), when the merge said: a refusal about
|
|
353
|
+
// the person's side (`shipMerge.mjs`'s dirty checkout) queues no
|
|
354
|
+
// resolve turn on the server. A conflict says nothing, and the
|
|
355
|
+
// agent resolves it in its worktree as before.
|
|
356
|
+
...(e?.fix === 'person' ? { fix: 'person' } : {}),
|
|
347
357
|
detail: envScrub(String(e?.message || e)).slice(0, 2000),
|
|
348
358
|
});
|
|
349
359
|
return;
|
|
@@ -329,7 +329,7 @@ export function createWorkSessionTurns({
|
|
|
329
329
|
// mcpFor throw this used to crash into every turn.
|
|
330
330
|
await settleWorkTurn(job.id, {
|
|
331
331
|
ok: false,
|
|
332
|
-
answer: `this session runs on ${rt.unsupported}, which cannot drive a
|
|
332
|
+
answer: `this session runs on ${rt.unsupported}, which cannot drive a Terminal tab on this machine — open a new tab`,
|
|
333
333
|
});
|
|
334
334
|
return;
|
|
335
335
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flowviant",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.108.1",
|
|
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": {
|