@arjunkhera/atlas 0.4.57 → 0.4.58
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/door/lib/runner.mjs
CHANGED
|
@@ -234,10 +234,12 @@ export function runnerClaim({ repo, issue, holder, gh = ghApi, now = Date.now()
|
|
|
234
234
|
export const YOU = Object.freeze([/^sign #[1-9][0-9]{0,8}$/, /^read #[1-9][0-9]{0,8}$/, /^read item [0-9a-f]{8}$/, /^the merge door is off in the runner$/, /^start stopped$/]);
|
|
235
235
|
const PR_NUMBER = /^[1-9][0-9]{0,8}$/;
|
|
236
236
|
const RELEASE = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
237
|
+
// A date alone read as midnight on 10 Nov 2026, so the line said 00:00 UTC.
|
|
238
|
+
const UTC_TIME = /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(:[0-9]{2}(\.[0-9]{1,3})?)?Z$/;
|
|
237
239
|
const refuseLine = (why) => { throw usage(`the run file ${why}`); };
|
|
238
240
|
export function runLine({ repo, at, you = [], landed = [], opened = [], open_jobs = 0, release = null }) {
|
|
239
241
|
if (!repoOk(repo)) refuseLine('needs repo as owner/name');
|
|
240
|
-
if (!Number.isFinite(new Date(at).getTime())) refuseLine('needs at as a time');
|
|
242
|
+
if (!(typeof at === 'number' || UTC_TIME.test(String(at))) || !Number.isFinite(new Date(at).getTime())) refuseLine('needs at as a full UTC time, such as 2026-11-10T03:48:00Z');
|
|
241
243
|
for (const one of you) if (!YOU.some((form) => form.test(String(one)))) refuseLine(`holds a "you" entry that is not a known form: ${JSON.stringify(String(one).slice(0, 40))}`);
|
|
242
244
|
for (const pull of [...landed, ...opened]) if (!PR_NUMBER.test(String(pull?.number))) refuseLine('holds a pull request with no number');
|
|
243
245
|
for (const pull of landed) {
|
package/package.json
CHANGED
package/skills/runner/SKILL.md
CHANGED
|
@@ -67,7 +67,8 @@ its environment come from `trigger.yaml` beside this file.
|
|
|
67
67
|
from this session starts the checks again. A push from an Actions job
|
|
68
68
|
would not.
|
|
69
69
|
7. Write the run facts to a file as JSON: `repo`, `at`, `you`, `landed`,
|
|
70
|
-
`opened`, `open_jobs` and `release`. Ids and counts only, no prose.
|
|
70
|
+
`opened`, `open_jobs` and `release`. Ids and counts only, no prose. Take
|
|
71
|
+
`at` from `date -u +%Y-%m-%dT%H:%M:%SZ`; a date with no time is refused. Each
|
|
71
72
|
`you` entry is one of: `sign #<pr>`, `read #<issue>`, `read item <id>`,
|
|
72
73
|
`the merge door is off in the runner`, `start stopped`. A landed pull
|
|
73
74
|
request carries its `number`, its `release`, and the id of its proof
|
|
@@ -76,8 +77,9 @@ its environment come from `trigger.yaml` beside this file.
|
|
|
76
77
|
word, as one comment on the repo's notice issue (label `atlas-notice`).
|
|
77
78
|
The notice workflow reads the facts and posts the run line as the bot,
|
|
78
79
|
so GitHub tells the owner.
|
|
79
|
-
9. Run `atlas runner line --from <file>`.
|
|
80
|
-
the run
|
|
80
|
+
9. Run `atlas runner line --from <file>`. Copy its output, word for word,
|
|
81
|
+
as the last message of the run. Do not type the line again from memory,
|
|
82
|
+
and do not change a version or a time in it.
|
|
81
83
|
|
|
82
84
|
## Until the exit test
|
|
83
85
|
|