@joshuafolkken/kit 1.1166.0 → 1.1178.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.
Files changed (61) hide show
  1. package/.claude/skills/workflow-commands/backlogrun-lanes.md +3 -3
  2. package/.claude/skills/workflow-commands/backlogrun-park.md +6 -7
  3. package/.claude/skills/workflow-commands/backlogrun-steps.md +3 -2
  4. package/.claude/skills/workflow-commands/pre-gate-cut.md +4 -4
  5. package/.github/workflows/ci.yml +15 -2
  6. package/dist/hooks/batch-guard.js +4 -4
  7. package/dist/hooks/{chunk-5KTCMCOT.js → chunk-32GQTL4F.js} +1 -1
  8. package/dist/hooks/{chunk-URJA6XY4.js → chunk-DO6NWWHU.js} +4 -4
  9. package/dist/hooks/{chunk-GU5MATVE.js → chunk-G6KRCKEC.js} +11 -19
  10. package/dist/hooks/{chunk-ZDZ555YH.js → chunk-GDS5N2KB.js} +88 -291
  11. package/dist/hooks/{chunk-GYNGP7HI.js → chunk-I4XSL4TT.js} +1 -1
  12. package/dist/hooks/{chunk-DYAVAM6S.js → chunk-S6X6WYKR.js} +324 -49
  13. package/dist/hooks/{chunk-ANJ2WGFD.js → chunk-UAGLLIGZ.js} +1 -1
  14. package/dist/hooks/{chunk-ENA7P5FB.js → chunk-VESKRQOF.js} +3 -3
  15. package/dist/hooks/{chunk-V2BTOZHT.js → chunk-VQLLNFNT.js} +3 -3
  16. package/dist/hooks/{chunk-A6P7PN7P.js → chunk-ZAL3NRGL.js} +2 -2
  17. package/dist/hooks/codex-hook-adapter.js +10 -10
  18. package/dist/hooks/duplicate-read-guard.js +5 -5
  19. package/dist/hooks/format-edited.js +2 -2
  20. package/dist/hooks/inputs.json +192 -192
  21. package/dist/hooks/investigation-guard.js +5 -5
  22. package/dist/hooks/pretool-guard.js +9 -9
  23. package/dist/hooks/stop-guard.js +18 -4
  24. package/dist/josh.js +4 -1
  25. package/package.json +1 -1
  26. package/scripts/backlog/backlog-next.ts +15 -4
  27. package/scripts/backlog/backlog-plan-cli.ts +6 -5
  28. package/scripts/backlog/backlog-rank.ts +18 -9
  29. package/scripts/backlog/backlog-restructure.ts +152 -0
  30. package/scripts/backlog/backlog-waves.ts +15 -17
  31. package/scripts/cost-runtime/context-cut-threshold.ts +1 -9
  32. package/scripts/cost-runtime/cost-verdict.ts +15 -28
  33. package/scripts/followup/git-followup-stages.ts +9 -0
  34. package/scripts/followup/git-pr-followup.ts +1 -1
  35. package/scripts/gh/git-gh-issue.ts +5 -3
  36. package/scripts/gh/git-gh-pr-read.ts +4 -0
  37. package/scripts/gh/git-pr-checks-eval.ts +8 -0
  38. package/scripts/gh/git-pr-checks.ts +11 -1
  39. package/scripts/git/constants.ts +10 -0
  40. package/scripts/git/main-merge.ts +57 -21
  41. package/scripts/git/schemas.ts +2 -0
  42. package/scripts/josh/josh-commands-development.ts +1 -1
  43. package/scripts/lane/lane-launch-cli.ts +21 -3
  44. package/scripts/notify/telegram-notify.ts +26 -1
  45. package/scripts/rules/pre-gate-cut.ts +2 -2
  46. package/scripts/run/run-carry.ts +11 -5
  47. package/scripts/run/run-cut-cli.ts +1 -1
  48. package/scripts/run/run-cut-report.ts +2 -2
  49. package/scripts/run/run-ship-cli.ts +27 -6
  50. package/scripts/run/run-ship-next.ts +13 -0
  51. package/scripts/run/run-ship-pre-detach.ts +66 -0
  52. package/scripts/run/run-ship-return.ts +7 -4
  53. package/scripts/run/run-ship-stage.ts +13 -0
  54. package/scripts/run/run-ship-steps.ts +10 -2
  55. package/scripts/run/run-ship-sync.ts +114 -0
  56. package/scripts/run/run-ship.ts +6 -0
  57. package/scripts/run/run-wake-cli.ts +8 -1
  58. package/scripts/run/run-wake-driver.ts +42 -11
  59. package/scripts/test/test-red-logic.ts +17 -2
  60. package/scripts/test/test-red.ts +8 -7
  61. package/scripts/time-runtime/time-transcript-line.ts +27 -1
@@ -1,146 +1,81 @@
1
1
  {
2
- "digest": "21839bc6976455e7eedaca79fdd63c376c1462e848b7b24ce8a7bfe0a82e2407",
2
+ "digest": "453b32f9c45e751dfb3614a3b10fe11182791e9a065c2c239e7580cd30e0884c",
3
3
  "inputs": [
4
- "scripts/hooks/stop-guard.ts",
5
- "scripts/hooks/pretool-guard-cli.ts",
6
4
  "scripts/hooks/codex-hook-adapter.ts",
5
+ "scripts/hooks/pretool-guard-cli.ts",
6
+ "scripts/hooks/stop-guard.ts",
7
7
  "scripts/hooks/format-edited-cli.ts",
8
+ "scripts/hooks/batch-guard.ts",
8
9
  "scripts/josh/session-language-cli.ts",
9
10
  "scripts/delegation/investigation-guard.ts",
10
11
  "scripts/delegation/duplicate-read-guard.ts",
11
- "scripts/hooks/batch-guard.ts",
12
- "scripts/rules/last-prompt.ts",
13
- "scripts/run/run-stranded-detect.ts",
14
- "scripts/run/run-hold.ts",
12
+ "scripts/josh/hook-decision.ts",
13
+ "scripts/hooks/pretool-guard.ts",
14
+ "scripts/hooks/format-edited-file.ts",
15
+ "scripts/josh/session-language.ts",
16
+ "scripts/josh/josh-environment-file.ts",
17
+ "scripts/lane/lane-guard-policy.ts",
18
+ "scripts/backlog/backlog-ready.ts",
19
+ "scripts/backlog/backlog-stalled-detect.ts",
15
20
  "scripts/discovery/repo-party.ts",
16
- "scripts/time-runtime/time-density-hook.ts",
21
+ "scripts/lane/lane-child-marker.ts",
22
+ "scripts/lane/lane-handoff.ts",
23
+ "scripts/rules/filing-cap.ts",
24
+ "scripts/rules/lane-background.ts",
25
+ "scripts/rules/lane-park.ts",
26
+ "scripts/rules/last-prompt.ts",
17
27
  "scripts/rules/stop-rules.ts",
18
- "scripts/time-runtime/time-hook-transcript.ts",
19
28
  "scripts/run/run-carry.ts",
20
- "scripts/lane/lane-child-marker.ts",
21
- "scripts/run/run-cut.ts",
22
- "scripts/backlog/backlog-stalled-detect.ts",
29
+ "ports/index.js",
30
+ "scripts/lib/json-value.ts",
31
+ "scripts/time-runtime/time-spans.ts",
32
+ "scripts/delegation/investigation-reads.ts",
33
+ "scripts/rules/delivered-rules.ts",
34
+ "scripts/run/run-parent-cut-hook.ts",
35
+ "scripts/run/run-watcher-hook.ts",
36
+ "scripts/hooks/step-zero-notice.ts",
37
+ "scripts/josh/josh-command-types.ts",
38
+ "scripts/lib/bounded-pool.ts",
39
+ "scripts/build/local-bin.ts",
40
+ "scripts/run/run-stranded-detect.ts",
23
41
  "scripts/run/run-halfrun-resume.ts",
24
- "scripts/josh/session-language.ts",
25
42
  "scripts/run/run-headless.ts",
26
- "scripts/josh/hook-decision.ts",
27
- "scripts/rules/lane-background.ts",
28
- "scripts/rules/filing-cap.ts",
29
- "scripts/lane/lane-handoff.ts",
30
- "scripts/rules/lane-park.ts",
31
- "scripts/lane/lane-guard-policy.ts",
43
+ "scripts/run/run-hold.ts",
44
+ "scripts/time-runtime/time-hook-transcript.ts",
45
+ "scripts/time-runtime/time-density-hook.ts",
46
+ "scripts/hooks/edited-cspell.ts",
47
+ "scripts/hooks/format-rewrite-notice.ts",
32
48
  "scripts/time-runtime/time-batch-guard.ts",
33
- "scripts/backlog/backlog-ready.ts",
34
- "scripts/hooks/pretool-guard.ts",
35
- "scripts/josh/josh-environment-file.ts",
36
- "scripts/lib/bounded-pool.ts",
37
- "scripts/hooks/format-edited-file.ts",
38
- "scripts/delegation/investigation-reads.ts",
39
- "scripts/time-runtime/time-spans.ts",
40
- "scripts/lib/json-value.ts",
41
- "scripts/lane/lane-paths.ts",
42
- "scripts/discovery/repo-origin.ts",
43
- "scripts/discovery/repo-discovery.ts",
44
- "scripts/time-runtime/time-density.ts",
45
49
  "scripts/josh/stamp-file.ts",
50
+ "scripts/run/run-cut.ts",
51
+ "scripts/gh/git-gh-command.ts",
52
+ "scripts/josh/josh-run.ts",
53
+ "scripts/issue/issue-cite.ts",
46
54
  "scripts/lane/lane-registry.ts",
47
- "scripts/lane/lane-reap.ts",
48
- "scripts/rules/tail-commands.ts",
49
- "scripts/run/run-ship-detach.ts",
50
- "scripts/time-runtime/time-shell.ts",
51
- "scripts/time-runtime/time-transcript-line.ts",
52
- "scripts/rules/bash-triggers.ts",
53
- "scripts/rules/run-tail.ts",
54
- "scripts/cost-runtime/cost-blocks.ts",
55
- "scripts/git/git-common-directory.ts",
56
- "scripts/rules/shell-segments.ts",
57
- "scripts/issue/issue-labels.ts",
55
+ "scripts/lane/lane-capacity.ts",
56
+ "scripts/run/run-invocation.ts",
58
57
  "scripts/backlog/backlog-stalled.ts",
59
- "scripts/run/run-cut-handoff.ts",
60
- "scripts/run/run-event-stream.ts",
58
+ "scripts/discovery/repo-origin.ts",
59
+ "scripts/discovery/repo-discovery.ts",
61
60
  "scripts/notify/telegram-notify.ts",
62
- "scripts/cost-runtime/context-cut-threshold.ts",
63
- "scripts/time-runtime/time-call-identity.ts",
64
- "scripts/agent/agent-role-profile.ts",
65
- "scripts/git/git-command.ts",
66
- "scripts/backlog/backlog-budget.ts",
67
- "scripts/lane/lane-child-invocation.ts",
61
+ "scripts/time-runtime/time-shell.ts",
62
+ "scripts/issue/issue-labels.ts",
63
+ "scripts/delegation/delegation-policy.ts",
68
64
  "scripts/cost-runtime/cost-transcript.ts",
69
- "scripts/rules/reply-language.ts",
70
- "scripts/rules/filing-offer.ts",
71
- "scripts/rules/issue-citation.ts",
72
- "scripts/run/run-event-stream-emit.ts",
73
- "scripts/time-runtime/time-bundles.ts",
74
65
  "scripts/time-runtime/time-bundle-call.ts",
75
- "scripts/run/run-invocation.ts",
76
- "scripts/time-runtime/time-reported-failure.ts",
77
- "scripts/hooks/step-zero-notice.ts",
78
- "scripts/run/run-wake.ts",
79
- "ports/index.js",
66
+ "scripts/rules/shell-segments.ts",
67
+ "scripts/run/run-event-stream.ts",
68
+ "scripts/run/run-event-stream-emit.ts",
69
+ "scripts/rules/bash-triggers.ts",
70
+ "scripts/rules/tail-commands.ts",
71
+ "scripts/cost-runtime/cost-blocks.ts",
72
+ "scripts/rules/run-tail.ts",
80
73
  "scripts/run/run-issue-number.ts",
81
- "scripts/run/run-stranded.ts",
82
- "scripts/lib/error-message.ts",
83
- "scripts/gh/git-gh-command.ts",
84
- "scripts/delegation/delegation-policy.ts",
85
- "scripts/issue/issue-cite.ts",
86
- "scripts/josh/josh-run.ts",
87
- "scripts/lane/lane-capacity.ts",
88
- "scripts/rules/delivered-rules.ts",
89
- "scripts/run/run-parent-cut-hook.ts",
90
- "scripts/run/run-watcher-hook.ts",
91
- "scripts/hooks/format-rewrite-notice.ts",
92
- "scripts/build/local-bin.ts",
93
- "scripts/josh/josh-command-types.ts",
94
- "scripts/hooks/edited-cspell.ts",
95
- "scripts/cost-runtime/cost-usage.ts",
96
- "scripts/run/detached-launch.ts",
97
- "scripts/josh/platform-temporary.ts",
98
- "scripts/run/run-ship-next.ts",
99
- "scripts/epic/epic-triage.ts",
100
- "scripts/time-runtime/time-writes.ts",
101
- "scripts/josh/process-identity.ts",
102
- "scripts/init/init-paths.ts",
103
- "scripts/time-runtime/time-background.ts",
104
- "scripts/time-runtime/time-followup-stage.ts",
105
- "scripts/time-runtime/time-markers.ts",
106
- "scripts/time-runtime/time-single-check.ts",
107
- "scripts/discovery/repo-map-logic.ts",
108
- "scripts/test/test-declared-logic.ts",
109
- "scripts/rules/implementation-cut-verdict.ts",
110
- "scripts/time-runtime/time-instant.ts",
111
- "scripts/josh/process-owner.ts",
112
- "scripts/lib/read-file.ts",
113
- "scripts/lane/lane-environment.ts",
114
- "scripts/gh/git-gh-helpers.ts",
115
- "scripts/run/run-carry-conversation.ts",
116
- "scripts/time-runtime/time-round-trips.ts",
117
- "scripts/git/git-worktree.ts",
118
- "scripts/run/run-event-scope.ts",
119
- "scripts/lane/lane-seed.ts",
120
- "scripts/gh/git-gh-issue.ts",
121
- "scripts/gh/git-gh-pr.ts",
122
- "scripts/gh/git-gh-pr-auto-merge.ts",
123
- "scripts/gh/git-gh-repo.ts",
124
- "scripts/gh/git-pr-checks-watch.ts",
125
- "scripts/run/run-carry-change.ts",
126
- "scripts/cost-runtime/cost-format.ts",
127
- "scripts/josh/josh-command-map.ts",
128
- "scripts/cost-runtime/cost-cli.ts",
129
- "scripts/backlog/backlog-budget-cli.ts",
130
- "scripts/lib/status-icons.ts",
131
- "scripts/lib/schemas.ts",
132
- "scripts/josh/josh-verdict.ts",
133
- "scripts/time-runtime/time-command-key.ts",
134
- "scripts/lib/timed-fetch.ts",
135
- "scripts/cost-runtime/context-cut-payback.ts",
136
- "scripts/gh/gh-spawn.ts",
137
- "scripts/josh/agent-session-environment.ts",
138
- "scripts/agent/agent-launch-environment.ts",
139
- "scripts/cost-runtime/cost-verdict.ts",
140
- "scripts/run/run-watcher-guard.ts",
141
- "scripts/run/run-progress-read.ts",
142
- "scripts/time-runtime/time-agent-bundles.ts",
143
- "scripts/time-runtime/time-format.ts",
74
+ "scripts/lane/lane-paths.ts",
75
+ "scripts/git/git-common-directory.ts",
76
+ "scripts/run/run-ship-detach.ts",
77
+ "scripts/time-runtime/time-reported-failure.ts",
78
+ "scripts/time-runtime/time-transcript-line.ts",
144
79
  "scripts/rules/worktree-guard.ts",
145
80
  "scripts/rules/direct-filing.ts",
146
81
  "scripts/rules/early-heartbeat.ts",
@@ -161,121 +96,186 @@
161
96
  "scripts/rules/prior-comment-read.ts",
162
97
  "scripts/rules/raw-field-body.ts",
163
98
  "scripts/rules/rule-body-guard.ts",
164
- "scripts/git/git-location-environment.ts",
165
- "scripts/git/constants.ts",
166
- "scripts/rules/third-party-write.ts",
167
- "scripts/run/run-ship-stage.ts",
168
- "scripts/followup/git-followup-stages.ts",
169
- "scripts/time-runtime/time-phase-names.ts",
170
- "scripts/cost-runtime/cost-attribute.ts",
171
- "scripts/gh/git-gh-exec.ts",
172
- "scripts/cost-runtime/own-session.ts",
173
99
  "scripts/rules/shell-body-trigger.ts",
174
100
  "scripts/rules/test-declared-commit.ts",
175
- "scripts/gh/git-gh-api-path.ts",
176
- "scripts/git/repository-lock.ts",
177
- "scripts/gh/git-gh-issue-write.ts",
178
- "scripts/git/git-ls-remote.ts",
179
- "scripts/git/git-spawn-sync.ts",
180
- "scripts/git/git-execa-error.ts",
181
- "scripts/git/git-push-transport.ts",
182
- "scripts/git/git-spawn.ts",
183
- "scripts/gh/git-gh-issue-list.ts",
184
- "scripts/gh/git-gh-issue-read.ts",
185
- "scripts/gh/git-gh-issue-rest.ts",
186
- "scripts/lib/timeouts.ts",
187
- "scripts/cost-runtime/cost-pricing.ts",
188
- "scripts/agent/codex-home-source.ts",
189
- "scripts/gh/git-gh-failure.ts",
101
+ "scripts/rules/third-party-write.ts",
102
+ "scripts/lib/read-file.ts",
103
+ "scripts/rules/implementation-cut-verdict.ts",
104
+ "scripts/rules/reply-language.ts",
105
+ "scripts/lib/schemas.ts",
106
+ "scripts/rules/filing-offer.ts",
107
+ "scripts/rules/issue-citation.ts",
108
+ "scripts/run/run-wake.ts",
109
+ "scripts/lane/lane-reap.ts",
110
+ "scripts/time-runtime/time-writes.ts",
111
+ "scripts/cost-runtime/context-cut-threshold.ts",
112
+ "scripts/lane/lane-seed.ts",
113
+ "scripts/time-runtime/time-background.ts",
114
+ "scripts/time-runtime/time-followup-stage.ts",
115
+ "scripts/time-runtime/time-markers.ts",
116
+ "scripts/time-runtime/time-single-check.ts",
117
+ "scripts/cost-runtime/cost-cli.ts",
118
+ "scripts/cost-runtime/cost-format.ts",
119
+ "scripts/cost-runtime/cost-verdict.ts",
120
+ "scripts/lib/error-message.ts",
121
+ "scripts/run/run-stranded.ts",
122
+ "scripts/josh/process-owner.ts",
123
+ "scripts/run/run-carry-conversation.ts",
124
+ "scripts/backlog/backlog-budget-cli.ts",
125
+ "scripts/run/run-cut-handoff.ts",
126
+ "scripts/epic/epic-triage.ts",
127
+ "scripts/time-runtime/time-call-identity.ts",
128
+ "scripts/discovery/repo-map-logic.ts",
129
+ "scripts/gh/git-gh-helpers.ts",
130
+ "scripts/time-runtime/time-density.ts",
131
+ "scripts/git/git-location-environment.ts",
132
+ "scripts/lib/timed-fetch.ts",
133
+ "scripts/run/detached-launch.ts",
134
+ "scripts/run/run-watcher-guard.ts",
135
+ "scripts/run/run-carry-change.ts",
136
+ "scripts/agent/agent-role-profile.ts",
137
+ "scripts/backlog/backlog-budget.ts",
138
+ "scripts/josh/process-identity.ts",
139
+ "scripts/git/git-command.ts",
140
+ "scripts/gh/git-gh-pr-auto-merge.ts",
141
+ "scripts/lane/lane-child-invocation.ts",
142
+ "scripts/time-runtime/time-bundles.ts",
143
+ "scripts/gh/git-gh-issue.ts",
144
+ "scripts/gh/git-gh-pr.ts",
145
+ "scripts/git/constants.ts",
146
+ "scripts/gh/git-gh-repo.ts",
147
+ "scripts/gh/git-pr-checks-watch.ts",
148
+ "scripts/gh/gh-spawn.ts",
149
+ "scripts/run/run-progress-read.ts",
150
+ "scripts/test/test-declared-logic.ts",
151
+ "scripts/josh/josh-command-map.ts",
152
+ "scripts/git/git-worktree.ts",
153
+ "scripts/lane/lane-environment.ts",
154
+ "scripts/agent/interactive-ask.ts",
155
+ "scripts/josh/platform-temporary.ts",
156
+ "scripts/init/init-paths.ts",
190
157
  "scripts/test/test-declared-changed.ts",
158
+ "scripts/run/run-event-scope.ts",
159
+ "scripts/cost-runtime/cost-usage.ts",
160
+ "scripts/lib/status-icons.ts",
161
+ "scripts/josh/josh-verdict.ts",
162
+ "scripts/time-runtime/time-instant.ts",
191
163
  "scripts/rules/git-argv.ts",
192
- "scripts/gh/git-gh-pr-snapshot.ts",
193
164
  "scripts/rules/oracle-firing.ts",
194
- "scripts/gh/gh-cli-token.ts",
195
- "scripts/ci/pr-classification.ts",
196
- "scripts/lib/poll.ts",
197
- "scripts/gh/git-gh-pr-read.ts",
198
- "scripts/gh/git-gh-pr-rest.ts",
199
- "scripts/gh/git-pr-checks-parse.ts",
200
165
  "scripts/rules/decision-oracle.ts",
201
- "scripts/run/run-carry-streak.ts",
202
- "scripts/rules/protected-files.ts",
203
- "scripts/gh/git-pr-checks.ts",
204
- "scripts/gh/git-pr-checks-eval.ts",
205
166
  "scripts/run/run-progress-config.ts",
167
+ "scripts/run/run-progress.ts",
168
+ "scripts/run/run-progress-clock.ts",
169
+ "scripts/cost-runtime/context-cut-payback.ts",
170
+ "scripts/rules/protected-files.ts",
171
+ "scripts/lib/cli-flags.ts",
206
172
  "scripts/rules/destructive-command.ts",
207
173
  "scripts/rules/direct-pr-create.ts",
208
174
  "scripts/rules/index-guard.ts",
209
- "scripts/run/run-progress.ts",
210
- "scripts/run/run-progress-clock.ts",
175
+ "scripts/josh/path-decision.ts",
176
+ "scripts/time-runtime/time-phase-names.ts",
177
+ "scripts/followup/git-followup-stages.ts",
178
+ "scripts/cost-runtime/cost-attribute.ts",
211
179
  "scripts/cost-runtime/transcript-cwd.ts",
212
- "scripts/lib/cli-flags.ts",
213
180
  "scripts/cost-runtime/codex-usage.ts",
214
181
  "scripts/cost-runtime/cost-corpus.ts",
215
- "scripts/josh/path-decision.ts",
216
- "scripts/git/git-ssh-keepalive.ts",
217
- "scripts/lib/spawn-exit.ts",
218
- "scripts/gh/git-gh-check.ts",
219
- "scripts/agent/interactive-ask.ts",
182
+ "scripts/cost-runtime/own-session.ts",
183
+ "scripts/time-runtime/time-command-key.ts",
184
+ "scripts/gh/git-gh-exec.ts",
185
+ "scripts/time-runtime/time-round-trips.ts",
186
+ "scripts/gh/git-pr-checks-parse.ts",
187
+ "scripts/gh/git-gh-api-path.ts",
188
+ "scripts/run/run-ship-next.ts",
189
+ "scripts/lib/timeouts.ts",
220
190
  "scripts/run/run-preflight.ts",
221
- "scripts/epic/epic-busy.ts",
191
+ "scripts/gh/git-gh-issue-write.ts",
222
192
  "scripts/lane/lane-report.ts",
223
193
  "scripts/run/run-liveness.ts",
224
- "scripts/gh/git-gh-reachability.ts",
225
- "scripts/gh/git-gh-rest-state.ts",
226
- "scripts/git/parse-json-array.ts",
227
- "scripts/git/schemas.ts",
194
+ "scripts/gh/git-gh-pr-rest.ts",
195
+ "scripts/epic/epic-busy.ts",
196
+ "scripts/gh/git-gh-pr-read.ts",
197
+ "scripts/josh/agent-session-environment.ts",
198
+ "scripts/run/run-carry-streak.ts",
199
+ "scripts/git/git-spawn-sync.ts",
200
+ "scripts/agent/agent-launch-environment.ts",
228
201
  "scripts/josh/josh-commands-workflow.ts",
202
+ "scripts/gate/project-checks.ts",
203
+ "scripts/git/repository-lock.ts",
229
204
  "scripts/josh/josh-commands-ai.ts",
205
+ "scripts/time-runtime/time-format.ts",
230
206
  "scripts/josh/josh-commands-clone.ts",
207
+ "scripts/time-runtime/time-agent-bundles.ts",
231
208
  "scripts/josh/josh-commands-development.ts",
232
209
  "scripts/josh/josh-commands-hooks.ts",
233
210
  "scripts/josh/josh-commands-lint.ts",
234
211
  "scripts/josh/josh-commands-maintenance.ts",
212
+ "scripts/git/git-ls-remote.ts",
213
+ "scripts/rules/decision-oracle-stage.ts",
235
214
  "scripts/josh/josh-commands-project.ts",
236
215
  "scripts/josh/josh-commands-versioning.ts",
237
- "scripts/gate/project-checks.ts",
238
- "scripts/gh/git-gh-pr-rollup.ts",
239
- "scripts/gh/git-gh-pr-review.ts",
240
- "scripts/doctor/doctor-consumer.ts",
241
- "scripts/rules/decision-oracle-stage.ts",
242
- "scripts/test/skip-marker.ts",
243
- "scripts/init/project-profile.ts",
216
+ "scripts/git/git-spawn.ts",
217
+ "scripts/git/git-push-transport.ts",
218
+ "scripts/gh/git-pr-checks-eval.ts",
219
+ "scripts/gh/git-gh-pr-snapshot.ts",
220
+ "scripts/gh/git-gh-issue-read.ts",
221
+ "scripts/gh/git-gh-issue-list.ts",
222
+ "scripts/ci/pr-classification.ts",
223
+ "scripts/lib/poll.ts",
224
+ "scripts/git/git-execa-error.ts",
225
+ "scripts/gh/git-gh-failure.ts",
226
+ "scripts/git/schemas.ts",
227
+ "scripts/run/run-ship-stage.ts",
244
228
  "scripts/git/changed-paths.ts",
245
229
  "scripts/issue/issue-state.ts",
230
+ "scripts/gh/git-gh-check.ts",
231
+ "scripts/doctor/doctor-consumer.ts",
232
+ "scripts/gh/git-gh-issue-rest.ts",
233
+ "scripts/gh/git-pr-checks.ts",
234
+ "scripts/git/parse-json-array.ts",
235
+ "scripts/gh/git-gh-rest-state.ts",
246
236
  "scripts/agent/agent-event.ts",
247
- "scripts/run/run-stage.ts",
237
+ "scripts/git/git-ssh-keepalive.ts",
238
+ "scripts/cost-runtime/cost-pricing.ts",
239
+ "scripts/test/skip-marker.ts",
248
240
  "scripts/josh/josh-commands-split.ts",
249
- "scripts/version/kit-descriptor.ts",
241
+ "scripts/josh/josh-commands-guard.ts",
250
242
  "scripts/josh/josh-commands-backlog.ts",
251
243
  "scripts/josh/josh-commands-document.ts",
252
- "scripts/josh/josh-commands-guard.ts",
253
- "scripts/josh/josh-commands-issue.ts",
254
244
  "scripts/josh/josh-commands-lane.ts",
245
+ "scripts/josh/josh-commands-issue.ts",
246
+ "scripts/run/run-stage.ts",
255
247
  "scripts/josh/josh-commands-run.ts",
248
+ "scripts/lib/spawn-exit.ts",
249
+ "scripts/agent/codex-home-source.ts",
250
+ "scripts/gh/git-gh-reachability.ts",
251
+ "scripts/gh/gh-cli-token.ts",
252
+ "scripts/gh/git-gh-pr-rollup.ts",
253
+ "scripts/gh/git-gh-pr-review.ts",
254
+ "scripts/init/project-profile.ts",
255
+ "scripts/version/kit-descriptor.ts",
256
256
  "scripts/agent/claude-result-event.ts"
257
257
  ],
258
258
  "outputs": [
259
259
  "codex-hook-adapter.js",
260
260
  "pretool-guard.js",
261
- "chunk-GU5MATVE.js",
261
+ "chunk-G6KRCKEC.js",
262
262
  "stop-guard.js",
263
- "chunk-ZDZ555YH.js",
263
+ "chunk-GDS5N2KB.js",
264
264
  "format-edited.js",
265
- "chunk-ANJ2WGFD.js",
265
+ "chunk-UAGLLIGZ.js",
266
266
  "chunk-3V37IID6.js",
267
267
  "session-lang.js",
268
268
  "chunk-6V5OPIUU.js",
269
269
  "batch-guard.js",
270
- "chunk-V2BTOZHT.js",
270
+ "chunk-VQLLNFNT.js",
271
271
  "investigation-guard.js",
272
- "chunk-ENA7P5FB.js",
272
+ "chunk-VESKRQOF.js",
273
273
  "duplicate-read-guard.js",
274
- "chunk-URJA6XY4.js",
275
- "chunk-A6P7PN7P.js",
276
- "chunk-GYNGP7HI.js",
277
- "chunk-5KTCMCOT.js",
278
- "chunk-DYAVAM6S.js",
274
+ "chunk-DO6NWWHU.js",
275
+ "chunk-ZAL3NRGL.js",
276
+ "chunk-I4XSL4TT.js",
277
+ "chunk-32GQTL4F.js",
278
+ "chunk-S6X6WYKR.js",
279
279
  "chunk-WPALEIRX.js",
280
280
  "chunk-RKUAD3I6.js"
281
281
  ]
@@ -10,11 +10,11 @@ import {
10
10
  is_enabled,
11
11
  load_environment_file,
12
12
  refusal_path
13
- } from "./chunk-ENA7P5FB.js";
14
- import "./chunk-A6P7PN7P.js";
15
- import "./chunk-GYNGP7HI.js";
16
- import "./chunk-5KTCMCOT.js";
17
- import "./chunk-DYAVAM6S.js";
13
+ } from "./chunk-VESKRQOF.js";
14
+ import "./chunk-ZAL3NRGL.js";
15
+ import "./chunk-I4XSL4TT.js";
16
+ import "./chunk-32GQTL4F.js";
17
+ import "./chunk-S6X6WYKR.js";
18
18
  import "./chunk-WPALEIRX.js";
19
19
  import "./chunk-RKUAD3I6.js";
20
20
  export {
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  pretool_guard,
4
4
  pretool_outcome_async
5
- } from "./chunk-GU5MATVE.js";
6
- import "./chunk-ZDZ555YH.js";
5
+ } from "./chunk-G6KRCKEC.js";
6
+ import "./chunk-GDS5N2KB.js";
7
7
  import "./chunk-3V37IID6.js";
8
- import "./chunk-V2BTOZHT.js";
9
- import "./chunk-ENA7P5FB.js";
10
- import "./chunk-URJA6XY4.js";
11
- import "./chunk-A6P7PN7P.js";
12
- import "./chunk-GYNGP7HI.js";
8
+ import "./chunk-VQLLNFNT.js";
9
+ import "./chunk-VESKRQOF.js";
10
+ import "./chunk-DO6NWWHU.js";
11
+ import "./chunk-ZAL3NRGL.js";
12
+ import "./chunk-I4XSL4TT.js";
13
13
  import {
14
14
  hook_decision
15
- } from "./chunk-5KTCMCOT.js";
16
- import "./chunk-DYAVAM6S.js";
15
+ } from "./chunk-32GQTL4F.js";
16
+ import "./chunk-S6X6WYKR.js";
17
17
  import "./chunk-WPALEIRX.js";
18
18
  import "./chunk-RKUAD3I6.js";
19
19
 
@@ -25,14 +25,14 @@ import {
25
25
  run_headless,
26
26
  run_hold,
27
27
  run_invocation
28
- } from "./chunk-ZDZ555YH.js";
28
+ } from "./chunk-GDS5N2KB.js";
29
29
  import {
30
30
  session_language
31
31
  } from "./chunk-6V5OPIUU.js";
32
32
  import {
33
33
  hook_decision,
34
34
  lane_child_marker
35
- } from "./chunk-5KTCMCOT.js";
35
+ } from "./chunk-32GQTL4F.js";
36
36
  import {
37
37
  PROJECT_ROOT,
38
38
  json_value,
@@ -40,7 +40,7 @@ import {
40
40
  time_density_hook,
41
41
  time_hook_transcript,
42
42
  time_reported_failure
43
- } from "./chunk-DYAVAM6S.js";
43
+ } from "./chunk-S6X6WYKR.js";
44
44
  import "./chunk-WPALEIRX.js";
45
45
  import "./chunk-RKUAD3I6.js";
46
46
 
@@ -419,6 +419,9 @@ async function timed_fetch(url, init = {}, timeout_ms = FETCH_TIMEOUT_MS) {
419
419
  // scripts/notify/telegram-notify.ts
420
420
  import { z } from "zod";
421
421
  var TELEGRAM_API_BASE = "https://api.telegram.org";
422
+ var TELEGRAM_TEXT_LIMIT = 4096;
423
+ var BODY_TRUNCATION_MARK = "\n...";
424
+ var TRAILING_HIGH_SURROGATE = /[\uD800-\uDBFF]$/u;
422
425
  var telegram_environment_schema = z.object({
423
426
  telegram_bot_token: z.string().min(1, { message: "TELEGRAM_BOT_TOKEN is required" }),
424
427
  telegram_chat_id: z.string().min(1, { message: "TELEGRAM_CHAT_ID is required" })
@@ -502,9 +505,20 @@ function build_blocks(input) {
502
505
  blocks.push(...build_url_parts(input));
503
506
  return blocks;
504
507
  }
505
- function build_text(input) {
508
+ function join_blocks(input) {
506
509
  return build_blocks(input).join("\n\n");
507
510
  }
511
+ function head_of(body, kept) {
512
+ const head = body.slice(0, kept);
513
+ return TRAILING_HIGH_SURROGATE.test(head) ? head.slice(0, -1) : head;
514
+ }
515
+ function build_text(input) {
516
+ const text2 = join_blocks(input);
517
+ const overflow = text2.length - TELEGRAM_TEXT_LIMIT;
518
+ if (overflow <= 0 || input.body === void 0) return text2;
519
+ const kept = Math.max(0, input.body.length - overflow - BODY_TRUNCATION_MARK.length);
520
+ return join_blocks({ ...input, body: `${head_of(input.body, kept)}${BODY_TRUNCATION_MARK}` });
521
+ }
508
522
  async function post_message(config, text2) {
509
523
  const url = `${TELEGRAM_API_BASE}/bot${config.bot_token}/sendMessage`;
510
524
  const response = await timed_fetch(url, {
package/dist/josh.js CHANGED
@@ -26,6 +26,7 @@ import { execaSync } from "execa";
26
26
  // scripts/git/constants.ts
27
27
  import { platform } from "node:os";
28
28
  var GIT_COMMAND_UNIX = "/usr/bin/git";
29
+ var GIT_BINARY_KEY = "JOSH_GIT_BINARY";
29
30
  function get_git_command() {
30
31
  if (platform() === "win32") {
31
32
  return String.raw`"C:\Program Files\Git\cmd\git.exe"`;
@@ -33,6 +34,8 @@ function get_git_command() {
33
34
  return GIT_COMMAND_UNIX;
34
35
  }
35
36
  function get_git_command_for_spawn() {
37
+ const binary = process.env[GIT_BINARY_KEY];
38
+ if (binary !== void 0 && binary !== "") return binary;
36
39
  if (platform() === "win32") {
37
40
  return String.raw`C:\Program Files\Git\cmd\git.exe`;
38
41
  }
@@ -1089,7 +1092,7 @@ var DEV_COMMANDS = {
1089
1092
  },
1090
1093
  "test:red": {
1091
1094
  script: "scripts/test/test-red.ts",
1092
- description: "Run the changed unit tests against the pre-fix tree (merge-base worktree) and report red/green/no-test",
1095
+ description: "Run the changed unit tests against the pre-fix tree (merge-base worktree) and report red/green/no-test/test-only",
1093
1096
  category: "Development",
1094
1097
  reference: ["", "developer", ["git", "processes"]]
1095
1098
  },
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1166.0",
2
+ "version": "1.1178.0",
3
3
  "name": "@joshuafolkken/kit",
4
4
  "description": "Development toolkit for AI-assisted projects: formatting, AI assistant rules and a Git/GitHub Issue workflow for any repository, plus lint, type check, tests and hooks for Node projects",
5
5
  "keywords": [
@@ -16,7 +16,8 @@ import { PROJECT_ROOT } from '#scripts/init/init-paths'
16
16
  import { issue_citation } from '#scripts/rules/issue-citation'
17
17
  import { backlog_defect_priority } from './backlog-defect-priority'
18
18
  import { backlog_pool } from './backlog-pool'
19
- import { backlog_rank } from './backlog-rank'
19
+ import { backlog_rank, type GateScope } from './backlog-rank'
20
+ import { backlog_restructure } from './backlog-restructure'
20
21
 
21
22
  // `josh backlog:next` — what the whole opted-in backlog may run next (joshuafolkken/kit#1630).
22
23
  //
@@ -278,7 +279,7 @@ function report_retry(context: PoolContext): number {
278
279
  return SUCCESS_EXIT_CODE
279
280
  }
280
281
 
281
- // The rows the offer's cap bounds — the standalone half, which `backlog:plan --waves` reads too.
282
+ // The rows the offer's cap bounds — the standalone half.
282
283
  function standalone_keys(context: PoolContext): ReadonlySet<string> {
283
284
  return backlog_pool.standalone_keys(context.opted_in.issues, {
284
285
  tracked: epic_index.withheld_children(context.tracking.index, context.opted_in.issues),
@@ -287,6 +288,16 @@ function standalone_keys(context: PoolContext): ReadonlySet<string> {
287
288
  })
288
289
  }
289
290
 
291
+ // The running lanes still carry the pickup label, so the opted-in listing holds their bodies too —
292
+ // which is what lets a candidate be held back from a restructure a running lane already makes
293
+ // (joshuafolkken/kit#3221). `backlog:plan --waves` reads the same scope, so its first wave is this offer.
294
+ function gate_scope(context: PoolContext): GateScope {
295
+ return {
296
+ standalone: standalone_keys(context),
297
+ declared: backlog_restructure.declared_of(context.opted_in.issues),
298
+ }
299
+ }
300
+
290
301
  // The `run:solo` gate is applied here rather than in `resolve`, because `backlog:plan` shares
291
302
  // `resolve` and a plan made before the run lists everything (joshuafolkken/kit#2776). The holders are
292
303
  // read only on a `run` answer — the one answer the gate can change. The cap follows the gate
@@ -302,7 +313,7 @@ async function gate_solo(result: EpicNextResult, context: PoolContext): Promise<
302
313
 
303
314
  if (notice !== undefined) console.error(notice)
304
315
 
305
- const gated = backlog_rank.gate(result, read, repo, standalone_keys(context))
316
+ const gated = backlog_rank.gate(result, read, repo, gate_scope(context))
306
317
 
307
318
  if (gated.notice !== undefined) console.error(gated.notice)
308
319
 
@@ -418,7 +429,7 @@ const backlog_next = {
418
429
  READ_FAILURES,
419
430
  VERDICT_TOKENS,
420
431
  resolve,
421
- standalone_keys,
432
+ gate_scope,
422
433
  context_of,
423
434
  run,
424
435
  }