@open-tomato/rafa 0.14.0 → 0.15.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.
@@ -4,10 +4,10 @@ import {
4
4
  openNdjsonStore,
5
5
  openSqliteStore,
6
6
  selectEffortStore
7
- } from "../../index-g9kvby04.js";
7
+ } from "../../index-1x5t4t9r.js";
8
8
  import {
9
9
  STORE_BACKENDS
10
- } from "../../index-96pz9023.js";
10
+ } from "../../index-2256nwj0.js";
11
11
  export {
12
12
  selectEffortStore,
13
13
  openSqliteStore,
@@ -8,7 +8,7 @@ import {
8
8
  isMapping,
9
9
  messageOf,
10
10
  readRafaBlocks
11
- } from "./index-96pz9023.js";
11
+ } from "./index-2256nwj0.js";
12
12
 
13
13
  // src/effort/store.ts
14
14
  import {
@@ -286,6 +286,7 @@ var usdAmount = (raw, at) => {
286
286
  return usd === null ? refused(at, raw, "a number of US dollars above zero, at most six digits either side of the point") : accepted(usd);
287
287
  };
288
288
  var issueNumber = (raw, at) => typeof raw === "number" && Number.isSafeInteger(raw) && raw > 0 ? accepted(raw) : refused(at, raw, "an issue number, a whole number above zero");
289
+ var dayCount = (raw, at) => typeof raw === "number" && Number.isSafeInteger(raw) && raw > 0 ? accepted(raw) : refused(at, raw, "a number of days, a whole number above zero");
289
290
  var releaseEnabled = (raw, at) => typeof raw === "boolean" || raw === RELEASE_AUTO ? accepted(raw) : refused(at, raw, `true, false or ${RELEASE_AUTO}`);
290
291
  var GITHUB_LOGIN = /^[A-Za-z0-9][A-Za-z0-9-]*(?:\[bot\])?$/;
291
292
  function isGitHubLogin(value) {
@@ -421,7 +422,10 @@ var CONFIG_DEFAULTS = Object.freeze({
421
422
  releaseEnabled: RELEASE_AUTO,
422
423
  releaseVersionFile: "package.json",
423
424
  releaseChangelog: "CHANGELOG.md",
424
- releaseHeading: "## {version} \u2014 {date}, {title}"
425
+ releaseHeading: "## {version} \u2014 {date}, {title}",
426
+ cleanupStaleDays: 30,
427
+ cleanupWorktreeIdleDays: 7,
428
+ cleanupKeep: Object.freeze([])
425
429
  });
426
430
  var directory = text("a directory path");
427
431
  var trackerKind = text("a tracker kind name");
@@ -496,6 +500,17 @@ var SETTINGS = {
496
500
  key: "release.heading",
497
501
  read: text("a changelog heading template"),
498
502
  cli: false
503
+ },
504
+ cleanupStaleDays: { key: "cleanup.staleDays", read: dayCount, cli: false },
505
+ cleanupWorktreeIdleDays: {
506
+ key: "cleanup.worktreeIdleDays",
507
+ read: dayCount,
508
+ cli: false
509
+ },
510
+ cleanupKeep: {
511
+ key: "cleanup.keep",
512
+ read: listOf(text("a glob pattern"), "glob patterns"),
513
+ cli: false
499
514
  }
500
515
  };
501
516
  var SETTING_NAMES = Object.keys(SETTINGS);
@@ -590,7 +605,10 @@ function readLayer(rawOf, atOf) {
590
605
  releaseEnabled: read("releaseEnabled"),
591
606
  releaseVersionFile: read("releaseVersionFile"),
592
607
  releaseChangelog: read("releaseChangelog"),
593
- releaseHeading: read("releaseHeading")
608
+ releaseHeading: read("releaseHeading"),
609
+ cleanupStaleDays: read("cleanupStaleDays"),
610
+ cleanupWorktreeIdleDays: read("cleanupWorktreeIdleDays"),
611
+ cleanupKeep: read("cleanupKeep")
594
612
  };
595
613
  return { layer, problems, extras };
596
614
  }
@@ -4,7 +4,7 @@ import {
4
4
  messageOf,
5
5
  parseTaskDeclaration,
6
6
  readRafaBlocks
7
- } from "./index-96pz9023.js";
7
+ } from "./index-2256nwj0.js";
8
8
  // src/preflight/prerequisites-md.ts
9
9
  import { basename, dirname, join } from "path";
10
10
  var SECTION_AUTO_RE = /\[auto\]/i;
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ import {
26
26
  trackerPathFor,
27
27
  updateTrackerLine,
28
28
  writeTrackerBlocker
29
- } from "./index-p96zrptw.js";
29
+ } from "./index-p572cxex.js";
30
30
  import {
31
31
  CORE_ADAPTER_REGISTRY,
32
32
  ClaudePlannerError,
@@ -50,7 +50,7 @@ import {
50
50
  sqliteStorePath,
51
51
  withSqliteStore,
52
52
  writeSqliteStore
53
- } from "./index-g9kvby04.js";
53
+ } from "./index-1x5t4t9r.js";
54
54
  import {
55
55
  BUDGET_FLAG,
56
56
  CLAUDE_SETTING_SOURCES,
@@ -86,7 +86,7 @@ import {
86
86
  resolveConfig,
87
87
  resolveDeclarationFlags,
88
88
  stripTaskDeclaration
89
- } from "./index-96pz9023.js";
89
+ } from "./index-2256nwj0.js";
90
90
  // src/config-load.ts
91
91
  import { existsSync, readFileSync, realpathSync } from "fs";
92
92
  import { isAbsolute } from "path";
@@ -1902,7 +1902,7 @@ async function report(args, repoRoot) {
1902
1902
  }
1903
1903
  }
1904
1904
  // package.json
1905
- var version = "0.14.0";
1905
+ var version = "0.15.0";
1906
1906
 
1907
1907
  // src/modules/manifest.ts
1908
1908
  var MANIFEST_VERSION = 1;
@@ -5017,8 +5017,10 @@ var REPO_PATH3 = "{owner}/{repo}";
5017
5017
  var SUMMARY_FIELDS = "author,baseRefName,headRefName,isCrossRepository,number,state,title,updatedAt,url";
5018
5018
  var DETAIL_FIELDS = `${SUMMARY_FIELDS},body,headRefOid,labels,mergeStateStatus,mergeable`;
5019
5019
  var CHECK_FIELDS = "name,state,link";
5020
+ var MERGED_FIELDS = "headRefName,headRefOid,mergedAt,number";
5020
5021
  var WORKFLOWS_PATH = `repos/${REPO_PATH3}/actions/workflows`;
5021
5022
  var LIST_LIMIT = 30;
5023
+ var MERGED_LIMIT = 100;
5022
5024
  var FIND_LIMIT = 1;
5023
5025
  var MISSING_PULL = "Could not resolve to a PullRequest";
5024
5026
  var NO_CHECKS = "no checks reported on the";
@@ -5127,6 +5129,15 @@ function readDetail(value, command, where) {
5127
5129
  labels: readLabels(pull["labels"], command, `${where}.labels`)
5128
5130
  };
5129
5131
  }
5132
+ function readMerged(value, command, where) {
5133
+ const pull = readMapping(value, command, where);
5134
+ return {
5135
+ number: readWholeNumber(pull["number"], command, `${where}.number`),
5136
+ headRefName: readString2(pull["headRefName"], command, `${where}.headRefName`),
5137
+ headRefOid: readString2(pull["headRefOid"], command, `${where}.headRefOid`),
5138
+ mergedAt: readString2(pull["mergedAt"], command, `${where}.mergedAt`)
5139
+ };
5140
+ }
5130
5141
  function readComment2(value, command, where) {
5131
5142
  const comment = readMapping(value, command, where);
5132
5143
  const user = readMapping(comment["user"], command, `${where}.user`);
@@ -5207,6 +5218,12 @@ function createGhPullRequests(options) {
5207
5218
  const rows = readList(parseJson2(stdout, command), command, "its output");
5208
5219
  return rows.map((row, index) => readSummary(row, command, `row ${index}`));
5209
5220
  },
5221
+ listMerged: async () => {
5222
+ const command = "gh pr list --state merged";
5223
+ const stdout = await succeed(["pr", "list", "--state", "merged", "--limit", String(MERGED_LIMIT), "--json", MERGED_FIELDS], command);
5224
+ const rows = readList(parseJson2(stdout, command), command, "its output");
5225
+ return rows.map((row, index) => readMerged(row, command, `row ${index}`));
5226
+ },
5210
5227
  get: async (number) => {
5211
5228
  const target = pullNumber(number, "get");
5212
5229
  const command = `gh pr view ${target}`;
@@ -16,13 +16,13 @@ import {
16
16
  renderInjection,
17
17
  runPreflight,
18
18
  runShellProbe
19
- } from "../index-p96zrptw.js";
19
+ } from "../index-p572cxex.js";
20
20
  import {
21
21
  INJECT_MODES,
22
22
  RAFA_BLOCK_KINDS,
23
23
  isRafaBlockKind,
24
24
  readRafaBlocks
25
- } from "../index-96pz9023.js";
25
+ } from "../index-2256nwj0.js";
26
26
  export {
27
27
  runShellProbe,
28
28
  runPreflight,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tomato/rafa",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "Alpha. Runs a plan through the ralph loop: one Claude Code session per task, one commit per task, then a pull request and a CI wait.",
5
5
  "private": false,
6
6
  "publishConfig": {