create-open-autonomy 2.3.9 → 2.3.11
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-open-autonomy",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.11",
|
|
4
4
|
"description": "The default Open Autonomy starter kit: a complete repository that runs its own Hermes agent against the platform, with the SDK wired in. `bun create open-autonomy <dir>` scaffolds one.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
package/src/kit.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
10
10
|
import { dirname, join, relative, resolve } from 'node:path';
|
|
11
11
|
|
|
12
|
-
export const KIT = { name: 'hermes', version: '2.3.
|
|
12
|
+
export const KIT = { name: 'hermes', version: '2.3.11' } as const;
|
|
13
13
|
export const KIT_FILE = '.open-autonomy/kit.json';
|
|
14
14
|
const TEMPLATE = resolve(import.meta.dir, '..', 'template');
|
|
15
15
|
|
|
@@ -25,5 +25,10 @@ jobs:
|
|
|
25
25
|
--body "Opened by the landing workflow for \`$BRANCH\`. It merges on its own when the required checks pass."
|
|
26
26
|
existing=$(gh pr list -R "$REPO" --head "$BRANCH" --state open --json number -q '.[0].number')
|
|
27
27
|
fi
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
# The merge races other landings ("base branch was modified") and GitHub's own mergeability check; try again a
|
|
29
|
+
# few times before giving up, so two branches landing in the same minute both land.
|
|
30
|
+
for attempt in 1 2 3 4 5 6; do
|
|
31
|
+
if gh pr merge -R "$REPO" "$existing" --merge; then echo "pull request #$existing: merged"; exit 0; fi
|
|
32
|
+
echo "merge attempt $attempt did not go through; retrying in 20s"; sleep 20
|
|
33
|
+
done
|
|
34
|
+
echo "pull request #$existing: could not be merged after six attempts"; exit 1
|
|
@@ -25,6 +25,9 @@ const oa = new OpenAutonomy({ baseUrl, key: process.env.OPEN_AUTONOMY_KEY ?? 'va
|
|
|
25
25
|
const stateFile = resolve(cfg.state_file);
|
|
26
26
|
const IDLE_END_MS = Number(process.env.OPEN_AUTONOMY_IDLE_END_MS ?? 5 * 60_000);
|
|
27
27
|
const TURN_END_MS = Number(process.env.OPEN_AUTONOMY_TURN_END_MS ?? 15_000);
|
|
28
|
+
// The board's tasks with an attempt still running, as of its last read: a run session serving one of them is not over,
|
|
29
|
+
// however long its transcript is silent.
|
|
30
|
+
const runningItems = new Set<string>();
|
|
28
31
|
const log = (m: string) => console.log(`reporter: ${m}`);
|
|
29
32
|
// The valve holds the key; its health line says when the key expires. Logged once at start so a reader of
|
|
30
33
|
// either log sees the expiry.
|
|
@@ -192,6 +195,9 @@ class Followed {
|
|
|
192
195
|
}
|
|
193
196
|
async end(why: string): Promise<void> {
|
|
194
197
|
if (this.ended) return;
|
|
198
|
+
// Silence is not the end of a board run while the board still shows its attempt running: a world coming up or a
|
|
199
|
+
// long check is one tool call, minutes without a word. The board's own record says when the attempt is over.
|
|
200
|
+
if (why.startsWith('idle') && kindOf(this.d) === 'run' && this.item && runningItems.has(this.item)) { this.arm(); return; }
|
|
195
201
|
this.ended = true;
|
|
196
202
|
clearTimeout(this.timer);
|
|
197
203
|
await this.sync(true);
|
|
@@ -282,6 +288,8 @@ async function board(): Promise<void> {
|
|
|
282
288
|
const tasks = Object.values(read.workflow?.boards ?? {}).flatMap((b) => Object.values(b.tasks ?? {})).filter((t) => t.lane !== 'archived' && (t.assignee ?? 'default') === 'default').sort((a, b) => (a.created_at ?? '').localeCompare(b.created_at ?? '') || a.id.localeCompare(b.id));
|
|
283
289
|
// A read that found no board at all (the database mid-write) is not an empty board.
|
|
284
290
|
if (!tasks.length) return;
|
|
291
|
+
runningItems.clear();
|
|
292
|
+
for (const t of tasks) if (t.lane === 'running') runningItems.add(t.id);
|
|
285
293
|
const items: RoadmapItem[] = tasks.map((t) => ({ id: t.id, title: t.title ?? t.id, status: statusOf(t.lane), acceptance: (t.body ?? '').split('\n').filter((l) => /^- /.test(l)).map((l) => l.slice(2).trim()) }));
|
|
286
294
|
const digest = JSON.stringify(items);
|
|
287
295
|
if (digest !== roadmapDigest) {
|