@joshuafolkken/kit 1.1387.0 → 1.1453.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/.claude/skills/epic-commands/SKILL.md +1 -1
- package/.claude/skills/epic-commands/epic-bundle.md +5 -0
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +5 -3
- package/.claude/skills/workflow-commands/backlogrun-park.md +2 -0
- package/.claude/skills/workflow-commands/backlogrun-steps.md +13 -10
- package/.claude/skills/workflow-commands/backlogrun.md +3 -2
- package/.claude/skills/workflow-commands/chain-rule.md +4 -2
- package/.claude/skills/workflow-commands/fullrun-steps.md +1 -1
- package/.claude/skills/workflow-commands/halfrun.md +1 -1
- package/.claude/skills/workflow-commands/issue-comments.md +6 -0
- package/.claude/skills/workflow-commands/kickoff.md +12 -13
- package/.claude/skills/workflow-commands/observation-filing.md +1 -1
- package/.claude/skills/workflow-commands/observation-ledger.md +3 -2
- package/.claude/skills/workflow-commands/pre-gate-cut.md +5 -3
- package/.claude/skills/workflow-commands/prerequisite.md +6 -0
- package/.claude/skills/workflow-commands/retrospective.md +5 -5
- package/.claude/skills/workflow-commands/split-assessment.md +2 -2
- package/README.md +27 -4
- package/dist/hooks/audit-provision.js +2 -2
- package/dist/hooks/batch-guard.js +7 -7
- package/dist/hooks/{chunk-2YSW3CXH.js → chunk-3C4XRYG6.js} +35 -11
- package/dist/hooks/{chunk-GJ7JPIHN.js → chunk-5C7L6FRC.js} +2704 -190
- package/dist/hooks/{chunk-FZ6FUSBM.js → chunk-723HKZO5.js} +1 -1
- package/dist/hooks/{chunk-STDSEPWU.js → chunk-D3NJXN5M.js} +4 -4
- package/dist/hooks/{chunk-NEC4AT4Z.js → chunk-DGT54IH5.js} +4 -0
- package/dist/hooks/{chunk-LMWBRJIP.js → chunk-EF5GQ6WS.js} +3 -3
- package/dist/hooks/{chunk-JBBMAPC4.js → chunk-IX6TTTI6.js} +4 -0
- package/dist/hooks/{chunk-IYVOLN6A.js → chunk-LBFYEOXJ.js} +3 -3
- package/dist/hooks/{chunk-SL4GQ2XP.js → chunk-MBJYQPEK.js} +106 -23
- package/dist/hooks/{chunk-WNFJLBXI.js → chunk-NO4AALP5.js} +3 -3
- package/dist/hooks/{chunk-J3KSS7II.js → chunk-OLMO72ON.js} +1 -1
- package/dist/hooks/{chunk-DCY2GWHC.js → chunk-SHYUQOIS.js} +5 -5
- package/dist/hooks/{chunk-EAQEGME7.js → chunk-UT7YC3N2.js} +1 -1
- package/dist/hooks/{chunk-EBSHN25W.js → chunk-W5ZKGTSY.js} +4 -4
- package/dist/hooks/{chunk-GNDJ7NJ7.js → chunk-Y3GKIKGW.js} +209 -56
- package/dist/hooks/{chunk-U32VSRNG.js → chunk-Z4XI7CZS.js} +89 -34
- package/dist/hooks/codex-hook-adapter.js +15 -15
- package/dist/hooks/duplicate-read-guard.js +8 -8
- package/dist/hooks/format-edited.js +5 -5
- package/dist/hooks/inputs.json +261 -201
- package/dist/hooks/investigation-guard.js +8 -8
- package/dist/hooks/pretool-guard.js +14 -14
- package/dist/hooks/session-lang.js +69 -16
- package/dist/hooks/stop-guard.js +13 -38
- package/dist/josh.js +95 -19
- package/package.json +4 -3
- package/prompts/collaboration-workflow/issue-template.md +10 -8
- package/prompts/review.md +30 -4
- package/scripts/agent/claude-agent-argv.ts +13 -1
- package/scripts/auth/auth-setup-cli.ts +101 -0
- package/scripts/auth/claude-token-output.ts +78 -0
- package/scripts/auth/claude-token.ts +68 -0
- package/scripts/auto-ok/auto-ok-judge-cli.ts +125 -0
- package/scripts/auto-ok/auto-ok-judge-read.ts +95 -0
- package/scripts/auto-ok/auto-ok-judge-write.ts +109 -0
- package/scripts/auto-ok/auto-ok-judge.ts +67 -0
- package/scripts/backlog/backlog-drive-cli.ts +14 -0
- package/scripts/backlog/backlog-drive-epic.ts +24 -8
- package/scripts/backlog/backlog-drive-launch.ts +3 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +7 -2
- package/scripts/backlog/backlog-drive-named.ts +4 -2
- package/scripts/backlog/backlog-drive-unread.ts +56 -0
- package/scripts/backlog/backlog-drive.ts +38 -11
- package/scripts/backlog/backlog-overlap.ts +22 -5
- package/scripts/backlog/backlog-ready.ts +1 -3
- package/scripts/backlog/backlogrun-args.ts +13 -2
- package/scripts/backlog/backlogrun-cli.ts +91 -19
- package/scripts/backlog/backlogrun-launch.ts +24 -0
- package/scripts/backlog/backlogrun-replace.ts +166 -0
- package/scripts/backlog/backlogrun-stop.ts +178 -0
- package/scripts/behavior/behavior-cli.ts +6 -1
- package/scripts/doctor/doctor-io.ts +60 -9
- package/scripts/doctor/doctor.ts +20 -1
- package/scripts/document/document-byte-budget.ts +3 -3
- package/scripts/epic/epic-bundle-cli.ts +8 -8
- package/scripts/epic/epic-bundle-referenced.ts +2 -5
- package/scripts/epic/epic-bundle.ts +39 -4
- package/scripts/exports/unused-members-cli.ts +2 -1
- package/scripts/followup/followup-checks-event.ts +82 -0
- package/scripts/followup/git-followup-finish.ts +16 -2
- package/scripts/followup/git-followup-workflow.ts +5 -2
- package/scripts/followup/git-pr-followup-checks.ts +18 -4
- package/scripts/followup/git-pr-followup-wrapup.ts +5 -0
- package/scripts/followup/git-pr-followup.ts +4 -1
- package/scripts/fresh-machine/fresh-machine-cli.ts +204 -0
- package/scripts/fresh-machine/fresh-machine-docker.ts +65 -0
- package/scripts/fresh-machine/fresh-machine-image.ts +62 -0
- package/scripts/fresh-machine/fresh-machine-log.ts +61 -0
- package/scripts/fresh-machine/fresh-machine-patterns.ts +175 -0
- package/scripts/fresh-machine/fresh-machine-run.ts +215 -0
- package/scripts/fresh-machine/fresh-machine-script.ts +45 -0
- package/scripts/fresh-machine/fresh-machine-spec.ts +57 -0
- package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +34 -0
- package/scripts/fresh-machine/specs/kit-test-backlogrun.json +31 -0
- package/scripts/gate/gate-report.ts +70 -15
- package/scripts/gate/project-checks.ts +18 -4
- package/scripts/gate/scoped-green.ts +2 -1
- package/scripts/gate/verification-gate.ts +4 -3
- package/scripts/gh/gh-author-association.ts +14 -0
- package/scripts/gh/git-gh-conditional.ts +66 -0
- package/scripts/gh/git-gh-exec.ts +1 -1
- package/scripts/gh/git-gh-issue-read.ts +6 -3
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +5 -1
- package/scripts/gh/git-gh-issue.ts +13 -1
- package/scripts/gh/git-pr-checks-eval.ts +13 -0
- package/scripts/gh/git-pr-checks-parse.ts +8 -1
- package/scripts/gh/git-pr-checks-watch.ts +11 -4
- package/scripts/gh/git-pr-checks.ts +36 -2
- package/scripts/git/git-command.ts +16 -4
- package/scripts/git/git-schemas.ts +1 -0
- package/scripts/git/git-spawn-sync.ts +1 -1
- package/scripts/hooks/pretool-guard.ts +3 -1
- package/scripts/init/hook-command-rewrite.ts +31 -0
- package/scripts/init/init-actions.ts +7 -4
- package/scripts/init/init-ai-copy.ts +34 -11
- package/scripts/init/init-basic.ts +9 -4
- package/scripts/init/init-bootstrap.ts +6 -2
- package/scripts/init/init-dry-run-report.ts +150 -0
- package/scripts/init/init-dry-run.ts +189 -0
- package/scripts/init/init-install.ts +8 -1
- package/scripts/init/init-logic-toolchain.ts +76 -0
- package/scripts/init/init-logic.ts +2 -0
- package/scripts/init/init.ts +62 -42
- package/scripts/init/kit-setup-state.ts +11 -17
- package/scripts/init/own-formatter.ts +21 -0
- package/scripts/init/project-profile.ts +60 -12
- package/scripts/init/start-dry-run.ts +70 -0
- package/scripts/init/start-exec.ts +27 -1
- package/scripts/init/start-plan.ts +23 -3
- package/scripts/init/start-setup-pr.ts +13 -24
- package/scripts/init/start-steps.ts +62 -1
- package/scripts/init/start.ts +38 -17
- package/scripts/init/workflow-mark.ts +35 -0
- package/scripts/init/working-tree.ts +116 -0
- package/scripts/issue/issue-ack-cli.ts +84 -0
- package/scripts/issue/issue-auto-ok.ts +68 -99
- package/scripts/issue/issue-file-cli.ts +17 -17
- package/scripts/issue/issue-file.ts +1 -6
- package/scripts/issue/issue-labels.ts +46 -10
- package/scripts/issue/issue-release-cli.ts +69 -23
- package/scripts/issue/issue-release.ts +3 -1
- package/scripts/issue/issue-state-cli.ts +14 -4
- package/scripts/issue/issue-watch-diff.ts +152 -0
- package/scripts/issue/issue-watch-gate.ts +81 -0
- package/scripts/issue/issue-watch-hook.ts +54 -0
- package/scripts/issue/issue-watch.ts +240 -0
- package/scripts/issue/measure-rerun-cli.ts +3 -4
- package/scripts/josh/josh-command-map.ts +4 -0
- package/scripts/josh/josh-commands-ai.ts +11 -0
- package/scripts/josh/josh-commands-backlog.ts +2 -2
- package/scripts/josh/josh-commands-development.ts +1 -1
- package/scripts/josh/josh-commands-issue.ts +10 -3
- package/scripts/josh/josh-commands-lane.ts +11 -2
- package/scripts/josh/josh-commands-project.ts +26 -2
- package/scripts/josh/josh-verdict.ts +33 -4
- package/scripts/josh/process-identity.ts +32 -6
- package/scripts/lane/claude-lane-broker.ts +142 -0
- package/scripts/lane/lane-await.ts +6 -2
- package/scripts/lane/lane-broker-server.ts +69 -0
- package/scripts/lane/lane-cache.ts +37 -7
- package/scripts/lane/lane-capacity.ts +8 -6
- package/scripts/lane/lane-child-invocation.ts +1 -0
- package/scripts/lane/lane-cli.ts +15 -1
- package/scripts/lane/lane-close.ts +15 -6
- package/scripts/lane/lane-dispatch.ts +36 -10
- package/scripts/lane/lane-environment.ts +1 -1
- package/scripts/lane/lane-launch-cli.ts +13 -4
- package/scripts/lane/lane-ledger.ts +21 -3
- package/scripts/lane/lane-measure-cli.ts +10 -2
- package/scripts/lane/lane-open.ts +9 -1
- package/scripts/lane/lane-preserve.ts +49 -0
- package/scripts/lane/lane-reap.ts +20 -5
- package/scripts/lane/lane-registry.ts +6 -0
- package/scripts/lane/lane-restart-cli.ts +51 -0
- package/scripts/lane/lane-restart.ts +175 -0
- package/scripts/lane/lane-session-broker.ts +363 -0
- package/scripts/lane/lane-spent.ts +195 -0
- package/scripts/lane/lane-stage-stats.ts +27 -3
- package/scripts/lane/lane-stop-stats.ts +96 -0
- package/scripts/lane/openai-lane-supervisor.ts +2 -2
- package/scripts/lane/process-tools.ts +31 -0
- package/scripts/lib/buffered-process.ts +36 -2
- package/scripts/lib/pnpm-reach.ts +27 -0
- package/scripts/lib/status-icons.ts +5 -1
- package/scripts/lint/lint-parallel.ts +19 -2
- package/scripts/observations/observation-ledger-home.ts +1 -0
- package/scripts/observations/observation-ledger-migrate.ts +3 -15
- package/scripts/release/release-issue-close.ts +133 -0
- package/scripts/release/release-publish.ts +12 -1
- package/scripts/repo/repository-labels.ts +11 -1
- package/scripts/review/comment-ranges.ts +199 -0
- package/scripts/review/review-attest-cli.ts +21 -6
- package/scripts/review/review-brief-cli.ts +24 -7
- package/scripts/review/review-code-tree.ts +119 -0
- package/scripts/review/review-comment-round.ts +114 -0
- package/scripts/review/review-record-cli.ts +39 -17
- package/scripts/review/review-round2-cli.ts +16 -5
- package/scripts/review/review-round2.ts +30 -10
- package/scripts/review/review-stamps.ts +22 -1
- package/scripts/rules/implementation-cut.ts +3 -3
- package/scripts/rules/pre-gate-cut.ts +1 -1
- package/scripts/run/board/run-board-checks.ts +42 -0
- package/scripts/run/board/run-board-cli.ts +2 -0
- package/scripts/run/board/run-board-every.ts +3 -1
- package/scripts/run/board/run-board-fit.ts +16 -5
- package/scripts/run/board/run-board-fresh.ts +64 -0
- package/scripts/run/board/run-board-header.ts +129 -53
- package/scripts/run/board/run-board-labels.ts +47 -4
- package/scripts/run/board/run-board-lane-event.ts +66 -0
- package/scripts/run/board/run-board-layout.ts +57 -9
- package/scripts/run/board/run-board-now.ts +234 -0
- package/scripts/run/board/run-board-operation-read.ts +75 -0
- package/scripts/run/board/run-board-operation.ts +150 -0
- package/scripts/run/board/run-board-phase.ts +26 -1
- package/scripts/run/board/run-board-plan.ts +4 -6
- package/scripts/run/board/run-board-read.ts +49 -3
- package/scripts/run/board/run-board-reason.ts +124 -0
- package/scripts/run/board/run-board-render-checks.ts +55 -0
- package/scripts/run/board/run-board-render-legend.ts +12 -3
- package/scripts/run/board/run-board-render-slot.ts +2 -2
- package/scripts/run/board/run-board-render-tail.ts +128 -0
- package/scripts/run/board/run-board-render-thanks.ts +50 -0
- package/scripts/run/board/run-board-render-title.ts +58 -0
- package/scripts/run/board/run-board-render.ts +96 -80
- package/scripts/run/board/run-board-row-yield.ts +32 -0
- package/scripts/run/board/run-board-setup.ts +61 -13
- package/scripts/run/board/run-board-state.ts +10 -0
- package/scripts/run/board/run-board-status.ts +66 -7
- package/scripts/run/board/run-board-thanks-csv.ts +71 -0
- package/scripts/run/board/run-board-thanks-read.ts +112 -0
- package/scripts/run/board/run-board-thanks.ts +53 -0
- package/scripts/run/board/run-board-tick.ts +50 -21
- package/scripts/run/board/run-board-usual.ts +44 -0
- package/scripts/run/carry/run-carry-args.ts +9 -1
- package/scripts/run/carry/run-carry-cli.ts +2 -45
- package/scripts/run/carry/run-carry-end.ts +73 -0
- package/scripts/run/carry/run-carry.ts +8 -1
- package/scripts/run/entry/run-entry-cli.ts +5 -0
- package/scripts/run/event/run-event-checks.ts +54 -0
- package/scripts/run/event/run-event-render.ts +2 -0
- package/scripts/run/event/run-event-scope.ts +1 -0
- package/scripts/run/event/run-event-setup.ts +55 -11
- package/scripts/run/event/run-event-stream.ts +27 -11
- package/scripts/run/merge/run-merge-cli.ts +7 -4
- package/scripts/run/merge/run-merge-ship.ts +61 -0
- package/scripts/run/merge/run-merge-steps.ts +7 -14
- package/scripts/run/merge/run-merge-token.ts +16 -2
- package/scripts/run/run-headless.ts +1 -0
- package/scripts/run/run-step.ts +2 -0
- package/scripts/run/ship/run-ship-cli.ts +22 -2
- package/scripts/run/ship/run-ship-return.ts +31 -13
- package/scripts/run/ship/run-ship-review-steps.ts +17 -4
- package/scripts/run/ship/run-ship-stage.ts +1 -0
- package/scripts/run/wake/run-wake-await.ts +130 -0
- package/scripts/run/wake/run-wake-cli.ts +60 -71
- package/scripts/run/wake/run-wake-describe.ts +34 -2
- package/scripts/run/wake/run-wake-driver.ts +11 -4
- package/scripts/run/wake/run-wake-session.ts +20 -3
- package/scripts/run/wake/run-wake-stop.ts +37 -0
- package/scripts/run/wake/run-wake-supervise.ts +44 -0
- package/scripts/sync/claude-settings-merge.ts +144 -0
- package/scripts/sync/sync-ai-files.ts +28 -3
- package/scripts/sync/sync.ts +15 -0
- package/scripts/test/project-test-script.ts +73 -0
- package/scripts/test/skip-marker.ts +14 -1
- package/scripts/test/test-related.ts +3 -2
- package/scripts/test/test-unit-guard.ts +78 -14
- package/scripts/time-runtime/time-reported-failure.ts +11 -3
- package/scripts/uninstall/distributed-files.ts +92 -0
- package/scripts/uninstall/uninstall-plan.ts +119 -0
- package/scripts/uninstall/uninstall-report.ts +61 -0
- package/scripts/uninstall/uninstall.ts +206 -0
- package/templates/AGENTS.basic.md +4 -0
- package/templates/GEMINI.basic.md +6 -0
- package/dist/hooks/chunk-6V5OPIUU.js +0 -13
- package/scripts/lane/openai-review-broker.ts +0 -262
- package/scripts/run/board/run-board-track.ts +0 -22
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
repo_origin,
|
|
9
9
|
run_event_stream,
|
|
10
10
|
run_event_stream_emit
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-Z4XI7CZS.js";
|
|
12
12
|
import {
|
|
13
13
|
error_text
|
|
14
14
|
} from "./chunk-CDY4NFQG.js";
|
|
@@ -30,10 +30,10 @@ import {
|
|
|
30
30
|
time_density_hook,
|
|
31
31
|
time_shell,
|
|
32
32
|
time_transcript_line
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-MBJYQPEK.js";
|
|
34
34
|
import {
|
|
35
35
|
lane_child_marker
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-OLMO72ON.js";
|
|
37
37
|
import {
|
|
38
38
|
agent_session_environment,
|
|
39
39
|
backlog_budget,
|
|
@@ -42,11 +42,12 @@ import {
|
|
|
42
42
|
has_timed_out,
|
|
43
43
|
json_value,
|
|
44
44
|
process_identity
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-3C4XRYG6.js";
|
|
46
46
|
import {
|
|
47
47
|
COMMAND_TIMEOUT_MS,
|
|
48
|
+
PROJECT_ROOT,
|
|
48
49
|
stamp_file
|
|
49
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-DGT54IH5.js";
|
|
50
51
|
|
|
51
52
|
// scripts/lib/bounded-pool.ts
|
|
52
53
|
function pool_width(limit, total) {
|
|
@@ -1301,6 +1302,7 @@ var lane_handoff = { is_handed_off, is_ship_running };
|
|
|
1301
1302
|
|
|
1302
1303
|
// scripts/issue/issue-labels.ts
|
|
1303
1304
|
var EPIC_LABEL = "epic";
|
|
1305
|
+
var BUG_LABEL = "bug";
|
|
1304
1306
|
var ENHANCEMENT_LABEL = "enhancement";
|
|
1305
1307
|
var BREAKING_CHANGE_LABEL = "breaking-change";
|
|
1306
1308
|
var IN_PROGRESS_LABEL = "in-progress";
|
|
@@ -1309,9 +1311,11 @@ var NEEDS_DECISION_LABEL = "needs-decision";
|
|
|
1309
1311
|
var RUN_SOLO_LABEL = "run:solo";
|
|
1310
1312
|
var RUN_LANE_LABEL = "run:lane";
|
|
1311
1313
|
var PRIORITY_HIGH_LABEL = "priority:high";
|
|
1314
|
+
var AUTO_OK_LABEL = "auto-ok";
|
|
1312
1315
|
var NEEDS_HUMAN_REVIEW_LABEL = "needs-human-review";
|
|
1313
1316
|
var ALREADY_DONE_LABEL = "already-done";
|
|
1314
1317
|
var RELEASE_LABEL = "release";
|
|
1318
|
+
var REVIEW_ROUND2_SKIPPED_LABEL = "review-round2-skipped";
|
|
1315
1319
|
var INTERRUPT_ROUTE_LABEL = "route:interrupt";
|
|
1316
1320
|
var REVIEW_CAP_ROUTE_LABEL = "route:review-cap";
|
|
1317
1321
|
var SPLIT_ROUTE_LABEL = "route:split";
|
|
@@ -1390,6 +1394,32 @@ var WORKFLOW_LABELS = [
|
|
|
1390
1394
|
color: "fef2c0",
|
|
1391
1395
|
description: "Tracks the next release; its blockers are the merged work it publishes"
|
|
1392
1396
|
},
|
|
1397
|
+
{
|
|
1398
|
+
name: AUTO_OK_LABEL,
|
|
1399
|
+
color: "0e8a16",
|
|
1400
|
+
description: "Opted in to unattended execution outside an epic"
|
|
1401
|
+
},
|
|
1402
|
+
{
|
|
1403
|
+
name: NEEDS_DECISION_LABEL,
|
|
1404
|
+
color: "d93f0b",
|
|
1405
|
+
description: "Parked: needs a decision before it can run"
|
|
1406
|
+
},
|
|
1407
|
+
{
|
|
1408
|
+
name: NEEDS_HUMAN_REVIEW_LABEL,
|
|
1409
|
+
color: "d93f0b",
|
|
1410
|
+
description: "Implement and verify, but stop before committing so a person can look"
|
|
1411
|
+
},
|
|
1412
|
+
{
|
|
1413
|
+
name: ALREADY_DONE_LABEL,
|
|
1414
|
+
color: "6f42c1",
|
|
1415
|
+
description: "Verified already merged \u2014 a person closes it"
|
|
1416
|
+
},
|
|
1417
|
+
{
|
|
1418
|
+
name: REVIEW_ROUND2_SKIPPED_LABEL,
|
|
1419
|
+
color: "c5def5",
|
|
1420
|
+
description: "Review round 2 was skipped under the condition in prompts/review.md"
|
|
1421
|
+
},
|
|
1422
|
+
{ name: BUG_LABEL, color: "d73a4a", description: "Something isn't working" },
|
|
1393
1423
|
...FILING_ROUTE_LABELS,
|
|
1394
1424
|
...DEPTH_LABELS
|
|
1395
1425
|
];
|
|
@@ -1851,7 +1881,8 @@ var EMPTY_BODY = "";
|
|
|
1851
1881
|
var REST_FIELD_NAMES = /* @__PURE__ */ new Map([
|
|
1852
1882
|
["url", "html_url"],
|
|
1853
1883
|
["createdAt", "created_at"],
|
|
1854
|
-
["closedAt", "closed_at"]
|
|
1884
|
+
["closedAt", "closed_at"],
|
|
1885
|
+
["updatedAt", "updated_at"]
|
|
1855
1886
|
]);
|
|
1856
1887
|
var NOT_AN_ISSUE_MESSAGE = "gh api answered something other than an issue object";
|
|
1857
1888
|
var NOT_AN_ISSUE_LISTING_MESSAGE = "gh api answered something other than an issue listing";
|
|
@@ -2051,10 +2082,10 @@ async function issue_get_plan_fields_classified(issue_number) {
|
|
|
2051
2082
|
async function issue_get_labels_and_body(issue_number) {
|
|
2052
2083
|
return await issue_view_json(issue_number, "number,state,labels,body");
|
|
2053
2084
|
}
|
|
2054
|
-
async function issue_list_comments(issue_number) {
|
|
2085
|
+
async function issue_list_comments(issue_number, timeout_ms) {
|
|
2055
2086
|
const path = `${git_gh_api_path.issue_comments_api_path(issue_number)}${git_gh_api_path.FULL_PAGE_QUERY}`;
|
|
2056
2087
|
try {
|
|
2057
|
-
return await git_gh_exec.exec_gh_api({ path, should_paginate: true });
|
|
2088
|
+
return await git_gh_exec.exec_gh_api({ path, should_paginate: true, timeout_ms });
|
|
2058
2089
|
} catch {
|
|
2059
2090
|
return void 0;
|
|
2060
2091
|
}
|
|
@@ -2181,6 +2212,89 @@ var git_gh_issue_list = {
|
|
|
2181
2212
|
issue_list
|
|
2182
2213
|
};
|
|
2183
2214
|
|
|
2215
|
+
// scripts/issue/issue-watch-diff.ts
|
|
2216
|
+
import { z as z7 } from "zod";
|
|
2217
|
+
var RUN_MARKER = "<!-- josh:run -->";
|
|
2218
|
+
var BOT_TYPE = "Bot";
|
|
2219
|
+
var BOT_SUFFIX = "[bot]";
|
|
2220
|
+
var NO_COMMENT_ID = 0;
|
|
2221
|
+
var UNKNOWN_AUTHOR = "(unknown)";
|
|
2222
|
+
var UNKNOWN_TIME = "(undated)";
|
|
2223
|
+
var BODY_HEADING = "Body edited:";
|
|
2224
|
+
var REMOVED_PREFIX = "- ";
|
|
2225
|
+
var ADDED_PREFIX = "+ ";
|
|
2226
|
+
var COMMENT_HEADING = "New comment by ";
|
|
2227
|
+
var AT = " at ";
|
|
2228
|
+
var SECTION_SEPARATOR = "\n\n";
|
|
2229
|
+
var LINE_SEPARATOR = "\n";
|
|
2230
|
+
var CRLF = "\r\n";
|
|
2231
|
+
var comment_schema = z7.looseObject({
|
|
2232
|
+
id: z7.number(),
|
|
2233
|
+
user: z7.looseObject({ login: z7.string(), type: z7.string().optional() }).nullish(),
|
|
2234
|
+
created_at: z7.string().optional(),
|
|
2235
|
+
body: z7.string().nullish()
|
|
2236
|
+
});
|
|
2237
|
+
function is_bot(user) {
|
|
2238
|
+
return user?.type === BOT_TYPE || (user?.login.endsWith(BOT_SUFFIX) ?? false);
|
|
2239
|
+
}
|
|
2240
|
+
function is_automated(user, body) {
|
|
2241
|
+
return is_bot(user) || body.includes(RUN_MARKER);
|
|
2242
|
+
}
|
|
2243
|
+
function to_comment(raw) {
|
|
2244
|
+
const body = raw.body ?? "";
|
|
2245
|
+
const author = raw.user?.login ?? UNKNOWN_AUTHOR;
|
|
2246
|
+
const created_at = raw.created_at ?? UNKNOWN_TIME;
|
|
2247
|
+
return { id: raw.id, author, is_automated: is_automated(raw.user, body), created_at, body };
|
|
2248
|
+
}
|
|
2249
|
+
function parse_comments(json) {
|
|
2250
|
+
if (json === void 0) return void 0;
|
|
2251
|
+
const listing = read_json_listing(json, comment_schema);
|
|
2252
|
+
return listing.kind === "read" ? listing.rows.map((row) => to_comment(row)) : void 0;
|
|
2253
|
+
}
|
|
2254
|
+
function last_comment_id(comments) {
|
|
2255
|
+
return Math.max(NO_COMMENT_ID, ...comments.map((comment) => comment.id));
|
|
2256
|
+
}
|
|
2257
|
+
function baseline_of(snapshot) {
|
|
2258
|
+
return { body: snapshot.body, last_comment_id: last_comment_id(snapshot.comments) };
|
|
2259
|
+
}
|
|
2260
|
+
function lines_missing_from(source, other) {
|
|
2261
|
+
const present = new Set(other.split(LINE_SEPARATOR));
|
|
2262
|
+
return source.split(LINE_SEPARATOR).filter((line) => line.trim() !== "" && !present.has(line));
|
|
2263
|
+
}
|
|
2264
|
+
function to_lf(body) {
|
|
2265
|
+
return body.split(CRLF).join(LINE_SEPARATOR);
|
|
2266
|
+
}
|
|
2267
|
+
function body_section(previous_raw, current_raw) {
|
|
2268
|
+
const previous = to_lf(previous_raw);
|
|
2269
|
+
const current = to_lf(current_raw);
|
|
2270
|
+
if (previous === current) return void 0;
|
|
2271
|
+
const removed = lines_missing_from(previous, current).map((line) => `${REMOVED_PREFIX}${line}`);
|
|
2272
|
+
const added = lines_missing_from(current, previous).map((line) => `${ADDED_PREFIX}${line}`);
|
|
2273
|
+
return [BODY_HEADING, ...removed, ...added].join(LINE_SEPARATOR);
|
|
2274
|
+
}
|
|
2275
|
+
function comment_section(comment) {
|
|
2276
|
+
return `${COMMENT_HEADING}${comment.author}${AT}${comment.created_at}${LINE_SEPARATOR}${comment.body}`;
|
|
2277
|
+
}
|
|
2278
|
+
function new_person_comments(baseline, snapshot) {
|
|
2279
|
+
return snapshot.comments.filter(
|
|
2280
|
+
(comment) => comment.id > baseline.last_comment_id && !comment.is_automated
|
|
2281
|
+
);
|
|
2282
|
+
}
|
|
2283
|
+
function unread_diff(baseline, snapshot) {
|
|
2284
|
+
const body = body_section(baseline.body, snapshot.body);
|
|
2285
|
+
const comments = new_person_comments(baseline, snapshot).map(
|
|
2286
|
+
(comment) => comment_section(comment)
|
|
2287
|
+
);
|
|
2288
|
+
const sections = [...body === void 0 ? [] : [body], ...comments];
|
|
2289
|
+
return sections.length === 0 ? void 0 : sections.join(SECTION_SEPARATOR);
|
|
2290
|
+
}
|
|
2291
|
+
var issue_watch_diff = {
|
|
2292
|
+
RUN_MARKER,
|
|
2293
|
+
baseline_of,
|
|
2294
|
+
parse_comments,
|
|
2295
|
+
unread_diff
|
|
2296
|
+
};
|
|
2297
|
+
|
|
2184
2298
|
// scripts/gh/git-gh-issue-write.ts
|
|
2185
2299
|
var PATCH_METHOD = "PATCH";
|
|
2186
2300
|
var DELETE_METHOD = "DELETE";
|
|
@@ -2213,7 +2327,9 @@ async function issue_edit_body(issue_number, body) {
|
|
|
2213
2327
|
async function issue_comment(issue_number, body) {
|
|
2214
2328
|
return await git_gh_exec.exec_gh_api({
|
|
2215
2329
|
path: `${git_gh_api_path.issue_api_path(issue_number)}${COMMENTS_SEGMENT}`,
|
|
2216
|
-
body: JSON.stringify({ body }
|
|
2330
|
+
body: JSON.stringify({ body: `${body}
|
|
2331
|
+
|
|
2332
|
+
${issue_watch_diff.RUN_MARKER}` }),
|
|
2217
2333
|
jq_filter: HTML_URL_FILTER
|
|
2218
2334
|
});
|
|
2219
2335
|
}
|
|
@@ -2354,7 +2470,7 @@ var git_gh_issue_write = {
|
|
|
2354
2470
|
|
|
2355
2471
|
// scripts/gh/git-gh-issue.ts
|
|
2356
2472
|
var NUMBER_AND_BODY_FIELDS = "number,body";
|
|
2357
|
-
var BACKLOG_SCAN_FIELDS = `number,title,body,${BLOCKED_BY_COUNT_FIELD}`;
|
|
2473
|
+
var BACKLOG_SCAN_FIELDS = `number,title,body,labels,${BLOCKED_BY_COUNT_FIELD}`;
|
|
2358
2474
|
var NUMBER_TITLE_AND_LABELS_FIELDS = "number,title,labels";
|
|
2359
2475
|
var SUMMARY_FIELDS = "number,title,labels,createdAt";
|
|
2360
2476
|
var PICKUP_FIELDS = `${SUMMARY_FIELDS},blockedBy,body`;
|
|
@@ -2393,6 +2509,10 @@ async function issue_list_by_label_summary(label, limit, options) {
|
|
|
2393
2509
|
async function issue_list_by_label_in_repo(label, limit, repo) {
|
|
2394
2510
|
return await issue_list2({ json_fields: SUMMARY_FIELDS, limit, label, repo });
|
|
2395
2511
|
}
|
|
2512
|
+
var JUDGEMENT_FIELDS = "number,title,body,labels,updatedAt";
|
|
2513
|
+
async function issue_list_open_for_judgement(limit) {
|
|
2514
|
+
return await issue_list2({ json_fields: JUDGEMENT_FIELDS, limit });
|
|
2515
|
+
}
|
|
2396
2516
|
var git_gh_issue = {
|
|
2397
2517
|
...git_gh_issue_read,
|
|
2398
2518
|
...git_gh_issue_write,
|
|
@@ -2402,24 +2522,25 @@ var git_gh_issue = {
|
|
|
2402
2522
|
issue_list_by_label_summary,
|
|
2403
2523
|
issue_search_body,
|
|
2404
2524
|
issue_list_open_bodies,
|
|
2525
|
+
issue_list_open_for_judgement,
|
|
2405
2526
|
issue_list_recently_closed
|
|
2406
2527
|
};
|
|
2407
2528
|
|
|
2408
2529
|
// scripts/ci/pr-classification.ts
|
|
2409
2530
|
import { readFileSync as readFileSync2 } from "node:fs";
|
|
2410
2531
|
import { fileURLToPath } from "node:url";
|
|
2411
|
-
import { z as
|
|
2532
|
+
import { z as z8 } from "zod";
|
|
2412
2533
|
var CLASSIFICATION_SET = new Set(RELEASE_CLASSIFICATION_NAMES);
|
|
2413
2534
|
var ISSUE_BUG_LABEL = "bug";
|
|
2414
2535
|
var DECLARATION_PREFIX = "- \u30EA\u30EA\u30FC\u30B9\u5206\u985E: ";
|
|
2415
2536
|
var DECLARATION = new RegExp(`^${DECLARATION_PREFIX}(.+)$`, "gmu");
|
|
2416
2537
|
var LEGACY_LABELS = /* @__PURE__ */ new Set(["semver-major", "semver-minor"]);
|
|
2417
|
-
var LABEL =
|
|
2418
|
-
var USER =
|
|
2419
|
-
var PULL_REQUEST =
|
|
2420
|
-
var EVENT =
|
|
2538
|
+
var LABEL = z8.object({ name: z8.string() });
|
|
2539
|
+
var USER = z8.object({ login: z8.string() });
|
|
2540
|
+
var PULL_REQUEST = z8.object({ number: z8.number(), user: USER });
|
|
2541
|
+
var EVENT = z8.object({
|
|
2421
2542
|
pull_request: PULL_REQUEST,
|
|
2422
|
-
repository:
|
|
2543
|
+
repository: z8.object({ full_name: z8.string() })
|
|
2423
2544
|
});
|
|
2424
2545
|
function classification_error(labels, author) {
|
|
2425
2546
|
const legacy = labels.filter((label) => LEGACY_LABELS.has(label.toLowerCase()));
|
|
@@ -2442,7 +2563,7 @@ function release_candidates(candidates) {
|
|
|
2442
2563
|
return candidates.filter((candidate) => candidate !== ENHANCEMENT_LABEL);
|
|
2443
2564
|
}
|
|
2444
2565
|
function issue_candidates(issue_json) {
|
|
2445
|
-
const issue2 =
|
|
2566
|
+
const issue2 = z8.object({ labels: z8.array(LABEL), body: z8.string().nullable() }).parse(JSON.parse(issue_json));
|
|
2446
2567
|
const names = issue2.labels.map((label) => label.name.toLowerCase());
|
|
2447
2568
|
const declared = [...(issue2.body ?? "").matchAll(DECLARATION)].map((match) => match[1] ?? "");
|
|
2448
2569
|
const candidates = [...release_candidates([...names, ...declared].filter(is_classification))];
|
|
@@ -2517,30 +2638,30 @@ async function poll_until(is_done, options) {
|
|
|
2517
2638
|
var poll = { poll_until, sleep: sleep2 };
|
|
2518
2639
|
|
|
2519
2640
|
// scripts/gh/git-gh-pr.ts
|
|
2520
|
-
import { z as
|
|
2641
|
+
import { z as z12 } from "zod";
|
|
2521
2642
|
|
|
2522
2643
|
// scripts/gh/git-gh-pr-rest.ts
|
|
2523
|
-
import { z as
|
|
2524
|
-
var rest_repo_schema =
|
|
2525
|
-
var rest_pull_side_schema =
|
|
2526
|
-
var rest_pull_schema =
|
|
2527
|
-
number:
|
|
2528
|
-
html_url:
|
|
2529
|
-
body:
|
|
2530
|
-
state:
|
|
2531
|
-
merged:
|
|
2532
|
-
merged_at:
|
|
2533
|
-
mergeable:
|
|
2534
|
-
mergeable_state:
|
|
2644
|
+
import { z as z9 } from "zod";
|
|
2645
|
+
var rest_repo_schema = z9.looseObject({ full_name: z9.string().optional() }).nullish();
|
|
2646
|
+
var rest_pull_side_schema = z9.looseObject({ repo: rest_repo_schema });
|
|
2647
|
+
var rest_pull_schema = z9.looseObject({
|
|
2648
|
+
number: z9.number(),
|
|
2649
|
+
html_url: z9.string().optional(),
|
|
2650
|
+
body: z9.string().nullish(),
|
|
2651
|
+
state: z9.string().optional(),
|
|
2652
|
+
merged: z9.boolean().nullish(),
|
|
2653
|
+
merged_at: z9.string().nullish(),
|
|
2654
|
+
mergeable: z9.boolean().nullish(),
|
|
2655
|
+
mergeable_state: z9.string().optional(),
|
|
2535
2656
|
// `sha` is the head commit, which is what both halves of the merge-gate rollup are keyed by —
|
|
2536
2657
|
// REST hangs the check runs and the status contexts off the commit rather than off the pull
|
|
2537
2658
|
// request.
|
|
2538
|
-
head:
|
|
2659
|
+
head: z9.looseObject({ ref: z9.string().optional(), sha: z9.string().optional(), repo: rest_repo_schema }).nullish(),
|
|
2539
2660
|
base: rest_pull_side_schema.nullish(),
|
|
2540
2661
|
// `node_id` is what the GraphQL auto-merge mutation addresses a pull request by, and `auto_merge`
|
|
2541
2662
|
// is `null` until auto-merge is enabled — both read by `git-gh-pr-auto-merge.ts`.
|
|
2542
|
-
node_id:
|
|
2543
|
-
auto_merge:
|
|
2663
|
+
node_id: z9.string().optional(),
|
|
2664
|
+
auto_merge: z9.looseObject({}).nullish()
|
|
2544
2665
|
});
|
|
2545
2666
|
var NOT_A_PULL_MESSAGE = "gh api answered something other than a pull request object";
|
|
2546
2667
|
var NOT_A_PULL_LISTING_MESSAGE = "gh api answered something other than a pull request listing";
|
|
@@ -2759,14 +2880,14 @@ var git_gh_pr_read = {
|
|
|
2759
2880
|
};
|
|
2760
2881
|
|
|
2761
2882
|
// scripts/gh/git-gh-pr-review.ts
|
|
2762
|
-
import { z as
|
|
2883
|
+
import { z as z10 } from "zod";
|
|
2763
2884
|
var REVIEW_APPROVED = "APPROVED";
|
|
2764
2885
|
var REVIEW_CHANGES_REQUESTED = "CHANGES_REQUESTED";
|
|
2765
2886
|
var REVIEW_NONE = "";
|
|
2766
2887
|
var STATE_CHANGING_REVIEWS = /* @__PURE__ */ new Set([REVIEW_APPROVED, REVIEW_CHANGES_REQUESTED]);
|
|
2767
|
-
var rest_review_schema =
|
|
2768
|
-
state:
|
|
2769
|
-
user:
|
|
2888
|
+
var rest_review_schema = z10.looseObject({
|
|
2889
|
+
state: z10.string().optional(),
|
|
2890
|
+
user: z10.looseObject({ login: z10.string().optional() }).nullish()
|
|
2770
2891
|
});
|
|
2771
2892
|
var NOT_A_REVIEW_LISTING = "gh api answered something other than a review listing";
|
|
2772
2893
|
function parse_rest_reviews(reviews_json) {
|
|
@@ -2799,18 +2920,18 @@ function to_review_decision(reviews_json) {
|
|
|
2799
2920
|
var git_gh_pr_review = { to_review_decision };
|
|
2800
2921
|
|
|
2801
2922
|
// scripts/gh/git-gh-pr-rollup.ts
|
|
2802
|
-
import { z as
|
|
2923
|
+
import { z as z11 } from "zod";
|
|
2803
2924
|
var STATUS_CONTEXT_TYPE_NAME = "StatusContext";
|
|
2804
2925
|
var TYPE_NAME_KEY = "__typename";
|
|
2805
|
-
var rollup_element_schema =
|
|
2806
|
-
var check_runs_page_schema =
|
|
2926
|
+
var rollup_element_schema = z11.looseObject({});
|
|
2927
|
+
var check_runs_page_schema = z11.looseObject({
|
|
2807
2928
|
// Required, not optional: GitHub always names the key, and accepting a page without one would
|
|
2808
2929
|
// answer an empty rollup — which `git-pr-followup.ts` reports as "this branch has no checks".
|
|
2809
|
-
check_runs:
|
|
2930
|
+
check_runs: z11.array(rollup_element_schema)
|
|
2810
2931
|
});
|
|
2811
|
-
var id_holder_schema =
|
|
2812
|
-
var status_page_schema =
|
|
2813
|
-
statuses:
|
|
2932
|
+
var id_holder_schema = z11.object({ id: z11.number() });
|
|
2933
|
+
var status_page_schema = z11.looseObject({
|
|
2934
|
+
statuses: z11.array(rollup_element_schema)
|
|
2814
2935
|
});
|
|
2815
2936
|
var NOT_A_CHECK_RUNS_LISTING = "gh api answered something other than a check run listing";
|
|
2816
2937
|
var NOT_A_STATUS_LISTING = "gh api answered something other than a commit status listing";
|
|
@@ -2944,7 +3065,7 @@ var MERGE_READ_BACK_ATTEMPTS = 3;
|
|
|
2944
3065
|
var MERGE_READ_BACK_INTERVAL_MS = 1e3;
|
|
2945
3066
|
var PR_NUMBER_PATTERN = /\/pull\/([1-9]\d*)$/u;
|
|
2946
3067
|
var LABELS_SEGMENT2 = "/labels";
|
|
2947
|
-
var PR_LABELS =
|
|
3068
|
+
var PR_LABELS = z12.array(z12.object({ name: z12.string() }));
|
|
2948
3069
|
async function add_pr_classification(number, label) {
|
|
2949
3070
|
await git_gh_exec.exec_gh_api({
|
|
2950
3071
|
path: `${git_gh_api_path.issue_api_path(number)}${LABELS_SEGMENT2}`,
|
|
@@ -3206,6 +3327,7 @@ async function wait_for_pr_success(options) {
|
|
|
3206
3327
|
let carried = { next_stable_count: 0, next_failure_count: 0 };
|
|
3207
3328
|
for (let attempt = 0; attempt < options.max_attempts; attempt += 1) {
|
|
3208
3329
|
console.info(`Checking PR status\u2026 (${String(attempt + 1)}/${String(options.max_attempts)})`);
|
|
3330
|
+
await options.before_poll?.();
|
|
3209
3331
|
carried = await attempt_pr_success_poll({
|
|
3210
3332
|
options,
|
|
3211
3333
|
stable_count: carried.next_stable_count,
|
|
@@ -3223,6 +3345,14 @@ async function default_fetch_pr_state(branch_name, should_read_review_decision =
|
|
|
3223
3345
|
const decision = await git_gh_pr_snapshot.pr_get_review_decision(checks.pr_number);
|
|
3224
3346
|
return { ...snapshot, review_decision: read_string(decision) };
|
|
3225
3347
|
}
|
|
3348
|
+
function observed_fetcher(observe) {
|
|
3349
|
+
if (observe === void 0) return default_fetch_pr_state;
|
|
3350
|
+
return async function fetch_observed(branch_name, should_read_review_decision) {
|
|
3351
|
+
const snapshot = await default_fetch_pr_state(branch_name, should_read_review_decision);
|
|
3352
|
+
await observe(snapshot);
|
|
3353
|
+
return snapshot;
|
|
3354
|
+
};
|
|
3355
|
+
}
|
|
3226
3356
|
|
|
3227
3357
|
// scripts/gh/git-pr-checks-watch.ts
|
|
3228
3358
|
var PR_CHECKS_WATCH_TIMEOUT_MS = 12e4;
|
|
@@ -3252,10 +3382,10 @@ var CHECKS_SETTLED_EVALUATOR = {
|
|
|
3252
3382
|
describe: describe_checks_failure,
|
|
3253
3383
|
should_read_review_decision: should_never_read_review_decision
|
|
3254
3384
|
};
|
|
3255
|
-
async function watch_until_settled(branch_name) {
|
|
3385
|
+
async function watch_until_settled(branch_name, observe) {
|
|
3256
3386
|
await wait_for_pr_success({
|
|
3257
3387
|
branch_name,
|
|
3258
|
-
fetcher:
|
|
3388
|
+
fetcher: observed_fetcher(observe),
|
|
3259
3389
|
interval_ms: CHECK_WAIT_INTERVAL_MS,
|
|
3260
3390
|
max_attempts: compute_max_attempts(
|
|
3261
3391
|
PR_CHECKS_WATCH_TIMEOUT_MS / SECONDS_TO_MS,
|
|
@@ -3269,9 +3399,9 @@ async function fail_when_no_checks(branch_name) {
|
|
|
3269
3399
|
const snapshot = await default_fetch_pr_state(branch_name, should_never_read_review_decision);
|
|
3270
3400
|
if (snapshot.rollup.length === 0) throw new Error(NO_CHECKS_MESSAGE);
|
|
3271
3401
|
}
|
|
3272
|
-
async function pr_checks_watch(branch_name) {
|
|
3402
|
+
async function pr_checks_watch(branch_name, observe) {
|
|
3273
3403
|
try {
|
|
3274
|
-
await watch_until_settled(branch_name);
|
|
3404
|
+
await watch_until_settled(branch_name, observe);
|
|
3275
3405
|
return { timed_out: false };
|
|
3276
3406
|
} catch (error) {
|
|
3277
3407
|
if (!is_pr_checks_timeout(error)) throw error;
|
|
@@ -3291,15 +3421,42 @@ var git_gh_command = {
|
|
|
3291
3421
|
...git_gh_repo
|
|
3292
3422
|
};
|
|
3293
3423
|
|
|
3424
|
+
// scripts/gh/gh-spawn.ts
|
|
3425
|
+
var NO_BUDGET = 0;
|
|
3426
|
+
function fetch_repo_name(timeout_ms) {
|
|
3427
|
+
const stdout = git_gh_exec.read_gh_api_sync({
|
|
3428
|
+
path: git_gh_api_path.repo_api_path(),
|
|
3429
|
+
jq_filter: ".full_name",
|
|
3430
|
+
cwd: PROJECT_ROOT,
|
|
3431
|
+
timeout_ms: timeout_ms ?? NO_BUDGET
|
|
3432
|
+
});
|
|
3433
|
+
const name = stdout?.trim();
|
|
3434
|
+
return name === "" ? void 0 : name;
|
|
3435
|
+
}
|
|
3436
|
+
function get_repo_name_with_owner() {
|
|
3437
|
+
return fetch_repo_name(void 0);
|
|
3438
|
+
}
|
|
3439
|
+
function get_repo_name_with_owner_within(timeout_ms) {
|
|
3440
|
+
return fetch_repo_name(timeout_ms);
|
|
3441
|
+
}
|
|
3442
|
+
var gh_spawn = { get_repo_name_with_owner, get_repo_name_with_owner_within };
|
|
3443
|
+
|
|
3294
3444
|
export {
|
|
3295
3445
|
bounded_pool,
|
|
3446
|
+
git_gh_api_path,
|
|
3447
|
+
read_json_listing,
|
|
3448
|
+
parse_json_object_or_undefined,
|
|
3449
|
+
has_stdout_field,
|
|
3450
|
+
git_gh_exec,
|
|
3451
|
+
git_gh_issue_read,
|
|
3452
|
+
issue_watch_diff,
|
|
3453
|
+
issue_citation,
|
|
3454
|
+
session_cite,
|
|
3296
3455
|
shell_segments,
|
|
3297
3456
|
bash_triggers,
|
|
3298
3457
|
tail_commands,
|
|
3299
3458
|
filing_cap,
|
|
3300
3459
|
CONTEXT_CUT_THRESHOLD,
|
|
3301
|
-
issue_citation,
|
|
3302
|
-
session_cite,
|
|
3303
3460
|
run_hold,
|
|
3304
3461
|
run_cut_handoff,
|
|
3305
3462
|
run_cut,
|
|
@@ -3315,12 +3472,8 @@ export {
|
|
|
3315
3472
|
has_label_name,
|
|
3316
3473
|
lane_handoff,
|
|
3317
3474
|
lane_park,
|
|
3475
|
+
gh_spawn,
|
|
3318
3476
|
repo_party,
|
|
3319
|
-
git_gh_api_path,
|
|
3320
|
-
read_json_listing,
|
|
3321
|
-
parse_json_object_or_undefined,
|
|
3322
|
-
git_gh_exec,
|
|
3323
|
-
git_gh_issue_read,
|
|
3324
3477
|
git_gh_pr_read,
|
|
3325
3478
|
git_gh_command
|
|
3326
3479
|
};
|