@joshuafolkken/kit 1.978.0 → 1.998.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 +6 -5
- package/.claude/skills/workflow-commands/SKILL.md +9 -9
- package/.claude/skills/workflow-commands/background-commands.md +1 -1
- package/.claude/skills/workflow-commands/backlogrun-child.md +1 -1
- package/.claude/skills/workflow-commands/backlogrun-steps.md +1 -1
- package/.claude/skills/workflow-commands/fullrun-steps.md +8 -8
- package/.claude/skills/workflow-commands/halfrun.md +4 -5
- package/.claude/skills/workflow-commands/issue-comments.md +1 -1
- package/.claude/skills/workflow-commands/issue-scout.md +21 -22
- package/.claude/skills/workflow-commands/kickoff.md +8 -9
- package/.claude/skills/workflow-commands/observation-filing.md +9 -10
- package/.claude/skills/workflow-commands/prerequisite.md +7 -6
- package/.claude/skills/workflow-commands/retrospective.md +5 -5
- package/.claude/skills/workflow-commands/rule-residency.md +2 -2
- package/.claude/skills/workflow-commands/split-assessment.md +4 -3
- package/.claude/skills/workflow-commands/target-repository.md +7 -6
- package/.github/workflows/sonar-qube.yml +12 -2
- package/CLAUDE.md +2 -2
- package/README.md +30 -21
- package/dist/CLAUDE.md +2 -2
- package/dist/hooks/batch-guard.js +4 -4
- package/dist/hooks/{chunk-ZYYSBNR6.js → chunk-4GDR2YTV.js} +4 -4
- package/dist/hooks/{chunk-2K52BRWV.js → chunk-56LGMJJV.js} +2 -2
- package/dist/hooks/{chunk-BNGGEY3Z.js → chunk-762BDXDU.js} +266 -327
- package/dist/hooks/{chunk-Q7LE77CO.js → chunk-7WAOP42A.js} +34 -30
- package/dist/hooks/{chunk-NXL3SBXY.js → chunk-A2H5I2VD.js} +2 -2
- package/dist/hooks/{chunk-CRGJTD6E.js → chunk-AWTFKKFW.js} +1 -1
- package/dist/hooks/{chunk-KQG4776P.js → chunk-GBJUERYK.js} +1 -1
- package/dist/hooks/{chunk-BVMSPG3M.js → chunk-KPZN42RT.js} +3 -3
- package/dist/hooks/{chunk-ZPLXLJ7O.js → chunk-PAXMLGSS.js} +42 -8
- package/dist/hooks/{chunk-F6OM6SIG.js → chunk-WMIR5SNX.js} +12 -12
- package/dist/hooks/codex-hook-adapter.js +10 -10
- package/dist/hooks/duplicate-read-guard.js +5 -5
- package/dist/hooks/format-edited.js +2 -2
- package/dist/hooks/investigation-guard.js +5 -5
- package/dist/hooks/pretool-guard.js +9 -9
- package/dist/hooks/stop-guard.js +99 -27
- package/dist/josh.js +21 -6
- package/package.json +5 -1
- package/prettier/basic.d.ts +3 -0
- package/prettier/basic.js +10 -0
- package/prettier/index.js +2 -2
- package/prettier/static.js +3 -10
- package/prompts/collaboration-workflow/epic-bundle.md +8 -8
- package/prompts/collaboration-workflow/issue-template.md +5 -5
- package/prompts/collaboration-workflow/rule-delivery.md +43 -30
- package/prompts/collaboration-workflow/upstream-interrupt.md +1 -1
- package/prompts/collaboration-workflow/wip-cap.md +3 -3
- package/prompts/review.md +11 -9
- package/prompts/sonar-hotspot-handling.md +6 -0
- package/prompts/testing-guide.md +1 -1
- package/scripts/agent/agent-diagnostics.ts +1 -0
- package/scripts/agent/agent-role-profile.ts +1 -1
- package/scripts/behavior/behavior-rules.ts +8 -1
- package/scripts/build/build-claude-md.ts +13 -4
- package/scripts/delegation/delegation-policy.ts +9 -9
- package/scripts/document/document-byte-budget.ts +1 -1
- package/scripts/gate/gate-steps.ts +1 -1
- package/scripts/gate/project-checks.ts +12 -11
- package/scripts/gate/type-check-command.ts +1 -1
- package/scripts/git/git-branch.ts +14 -3
- package/scripts/git/git-issue.ts +13 -5
- package/scripts/git/git-pr.ts +16 -10
- package/scripts/git/git-preflight.ts +138 -0
- package/scripts/git/telegram-notify.ts +21 -0
- package/scripts/hooks/stop-guard.ts +2 -0
- package/scripts/init/basic-path-migration.ts +24 -0
- package/scripts/init/distributed-paths.ts +22 -0
- package/scripts/init/init-actions.ts +27 -19
- package/scripts/init/init-ai-copy.ts +86 -28
- package/scripts/init/{init-static.ts → init-basic.ts} +6 -6
- package/scripts/init/init-bootstrap.ts +4 -3
- package/scripts/init/init-install.ts +1 -1
- package/scripts/init/init-logic-templates.ts +1 -1
- package/scripts/init/init-logic.ts +1 -1
- package/scripts/init/init.ts +41 -19
- package/scripts/init/kit-setup-state.ts +30 -0
- package/scripts/init/kit-written-paths.ts +33 -0
- package/scripts/init/project-profile-cli.ts +15 -1
- package/scripts/init/project-profile.ts +41 -12
- package/scripts/init/session-language-environment.ts +83 -0
- package/scripts/init/start-exec.ts +28 -0
- package/scripts/init/start-plan.ts +35 -13
- package/scripts/init/start-prompt.ts +22 -8
- package/scripts/init/start-setup-pr.ts +138 -0
- package/scripts/init/start-steps.ts +30 -30
- package/scripts/init/start.ts +7 -3
- package/scripts/issue/issue-file-cli.ts +188 -0
- package/scripts/issue/issue-file.ts +192 -0
- package/scripts/issue/issue-lint-cli.ts +1 -1
- package/scripts/issue/issue-scout-cli.ts +41 -97
- package/scripts/issue/issue-scout-closed.ts +102 -0
- package/scripts/josh/__snapshots__/josh-command-map.test.ts.snap +12 -4
- package/scripts/josh/josh-command-map.ts +1 -0
- package/scripts/josh/josh-commands-development.ts +3 -3
- package/scripts/josh/josh-commands-issue.ts +11 -0
- package/scripts/josh/josh-commands-project.ts +7 -3
- package/scripts/lint/cspell-cached.ts +3 -3
- package/scripts/lint/format.ts +1 -1
- package/scripts/lint/lint-parallel.ts +2 -2
- package/scripts/propagate/propagate-run.ts +1 -0
- package/scripts/propagate/propagate-select.ts +72 -0
- package/scripts/propagate/propagate-targets.ts +5 -3
- package/scripts/propagate/propagate.ts +86 -24
- package/scripts/rules/bash-triggers.ts +19 -6
- package/scripts/rules/delivered-rules.ts +28 -32
- package/scripts/rules/direct-filing.ts +38 -0
- package/scripts/rules/filing-cap.ts +12 -8
- package/scripts/rules/issue-citation.ts +30 -1
- package/scripts/rules/issue-fold.ts +4 -4
- package/scripts/rules/last-prompt.ts +79 -0
- package/scripts/rules/oracle-consulted.ts +4 -4
- package/scripts/rules/oracle-firing.ts +13 -16
- package/scripts/rules/rule-body-guard.ts +6 -9
- package/scripts/rules/stop-rules.ts +8 -5
- package/scripts/safe-chain/ci-installer-pin.ts +19 -12
- package/scripts/safe-chain/project-config.ts +1 -1
- package/scripts/sync/sync-ai-files.ts +204 -0
- package/scripts/sync/sync.ts +48 -184
- package/scripts/test/josh-harness-environment.ts +1 -1
- package/scripts/test/pilot-files.ts +0 -2
- package/scripts/test/test-declared-changed.ts +1 -1
- package/scripts/test/test-declared-logic.ts +55 -14
- package/scripts/test/test-declared.ts +23 -11
- package/scripts/test/test-unit-guard.ts +6 -6
- package/scripts/time-runtime/time-shell.ts +36 -2
- package/scripts/version/fresh-metadata-cache.ts +36 -0
- package/scripts/version/latest-update.ts +2 -1
- package/scripts-ai/git-workflow.ts +10 -0
- package/templates/CLAUDE.basic.md +8 -0
- package/templates/workflows/ci.yml +27 -0
- package/scripts/rules/issue-bug-label.ts +0 -85
- package/scripts/rules/issue-filing-args.ts +0 -50
- package/scripts/rules/issue-scout.ts +0 -64
- /package/{templates/CLAUDE.static.md → dist/CLAUDE.basic.md} +0 -0
- /package/templates/{cursorrules.static → cursorrules.basic} +0 -0
- /package/templates/{pnpm-workspace.static.yaml → pnpm-workspace.basic.yaml} +0 -0
- /package/templates/{prettierignore.static → prettierignore.basic} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
lane_child_marker,
|
|
3
3
|
run_issue_number
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GBJUERYK.js";
|
|
5
5
|
import {
|
|
6
6
|
PLATFORM_TEMP_ROOT,
|
|
7
7
|
cost_blocks,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
time_density_hook,
|
|
13
13
|
time_shell,
|
|
14
14
|
time_transcript_line
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PAXMLGSS.js";
|
|
16
16
|
import {
|
|
17
17
|
ENV_FILE_NAME,
|
|
18
18
|
LANE_SEAT_KEY,
|
|
@@ -20,6 +20,22 @@ import {
|
|
|
20
20
|
ports
|
|
21
21
|
} from "./chunk-RKUAD3I6.js";
|
|
22
22
|
|
|
23
|
+
// scripts/rules/shell-segments.ts
|
|
24
|
+
var SEGMENT_SEPARATOR = /&&|\|\||;|\n/u;
|
|
25
|
+
function segments_of(command) {
|
|
26
|
+
return command.split(SEGMENT_SEPARATOR).map((segment) => segment.trim());
|
|
27
|
+
}
|
|
28
|
+
function is_josh_command(segment, names) {
|
|
29
|
+
const named = time_shell.josh_command_of(segment);
|
|
30
|
+
if (!named.startsWith(time_shell.JOSH_PREFIX)) return false;
|
|
31
|
+
return names.has(named.slice(time_shell.JOSH_PREFIX.length));
|
|
32
|
+
}
|
|
33
|
+
var shell_segments = {
|
|
34
|
+
SEGMENT_SEPARATOR,
|
|
35
|
+
is_josh_command,
|
|
36
|
+
segments_of
|
|
37
|
+
};
|
|
38
|
+
|
|
23
39
|
// scripts/rules/bash-triggers.ts
|
|
24
40
|
function on_bash_command(is_match) {
|
|
25
41
|
return function is_trigger(call) {
|
|
@@ -30,11 +46,15 @@ function on_bash_command(is_match) {
|
|
|
30
46
|
var ISSUE_CREATE_COMMAND = /\bgh\s+(?:\S+\s+)*?issue\s+create\b/u;
|
|
31
47
|
var ISSUES_ENDPOINT = /repos\/[^\s'"]*\/issues(?=$|["'\s])/u;
|
|
32
48
|
var TITLE_FIELD = /(?:-f|-F|--field|--raw-field)\s*'?title=/u;
|
|
33
|
-
function
|
|
49
|
+
function is_direct_filing(command) {
|
|
34
50
|
if (ISSUE_CREATE_COMMAND.test(command)) return true;
|
|
35
51
|
return ISSUES_ENDPOINT.test(command) && TITLE_FIELD.test(command);
|
|
36
52
|
}
|
|
37
|
-
var
|
|
53
|
+
var FILING_NAMES = /* @__PURE__ */ new Set(["issue:file"]);
|
|
54
|
+
function is_issue_filing(command) {
|
|
55
|
+
return shell_segments.segments_of(command).some((segment) => shell_segments.is_josh_command(segment, FILING_NAMES));
|
|
56
|
+
}
|
|
57
|
+
var bash_triggers = { is_direct_filing, is_issue_filing, on_bash_command };
|
|
38
58
|
|
|
39
59
|
// scripts/rules/tail-commands.ts
|
|
40
60
|
function is_bash_use(block) {
|
|
@@ -58,7 +78,7 @@ function is_filing_use(block) {
|
|
|
58
78
|
return bash_triggers.is_issue_filing(time_shell.bash_command(block.input));
|
|
59
79
|
}
|
|
60
80
|
function collect_block(block, found) {
|
|
61
|
-
if (block.result_id !== "") found.
|
|
81
|
+
if (block.result_id !== "" && block.is_error === true) found.failures.add(block.result_id);
|
|
62
82
|
if (is_filing_use(block)) found.filing_ids.push(block.id);
|
|
63
83
|
}
|
|
64
84
|
function collect_line(line, found) {
|
|
@@ -67,13 +87,13 @@ function collect_line(line, found) {
|
|
|
67
87
|
for (const block of parsed.blocks) collect_block(block, found);
|
|
68
88
|
}
|
|
69
89
|
function scan_tail(tail) {
|
|
70
|
-
const found = { filing_ids: [],
|
|
90
|
+
const found = { filing_ids: [], failures: /* @__PURE__ */ new Set() };
|
|
71
91
|
for (const line of tail.split("\n")) collect_line(line, found);
|
|
72
92
|
return found;
|
|
73
93
|
}
|
|
74
94
|
function prior_filing_count(tail) {
|
|
75
|
-
const { filing_ids,
|
|
76
|
-
return filing_ids.filter((id) =>
|
|
95
|
+
const { filing_ids, failures } = scan_tail(tail);
|
|
96
|
+
return filing_ids.filter((id) => !failures.has(id)).length;
|
|
77
97
|
}
|
|
78
98
|
function is_prompt_line(line) {
|
|
79
99
|
const parsed = time_transcript_line.parse_line(line);
|
|
@@ -104,6 +124,7 @@ var filing_cap = {
|
|
|
104
124
|
ROW,
|
|
105
125
|
current_turn,
|
|
106
126
|
decide,
|
|
127
|
+
is_prompt_line,
|
|
107
128
|
prior_filing_count,
|
|
108
129
|
turn_filing_count
|
|
109
130
|
};
|
|
@@ -770,7 +791,7 @@ var IMPLEMENTATION_PHASE = "implementation";
|
|
|
770
791
|
var PRE_GATE_PHASE = "pre-gate";
|
|
771
792
|
var ANTHROPIC_PROVIDER = "anthropic";
|
|
772
793
|
var OPENAI_PROVIDER = "openai";
|
|
773
|
-
var OPENAI_MODEL = "gpt-6-sol";
|
|
794
|
+
var OPENAI_MODEL = "gpt-6.1-sol";
|
|
774
795
|
var ANTHROPIC_MODEL = "claude-opus-5-5";
|
|
775
796
|
var CODEX_SESSION_KEY = "CODEX_THREAD_ID";
|
|
776
797
|
var DEFAULT_PROFILES = {
|
|
@@ -1542,22 +1563,6 @@ var run_cut = {
|
|
|
1542
1563
|
worktree_git_directory_sync
|
|
1543
1564
|
};
|
|
1544
1565
|
|
|
1545
|
-
// scripts/rules/shell-segments.ts
|
|
1546
|
-
var SEGMENT_SEPARATOR = /&&|\|\||;|\n/u;
|
|
1547
|
-
function segments_of(command) {
|
|
1548
|
-
return command.split(SEGMENT_SEPARATOR).map((segment) => segment.trim());
|
|
1549
|
-
}
|
|
1550
|
-
function is_josh_command(segment, names) {
|
|
1551
|
-
const named = time_shell.josh_command_of(segment);
|
|
1552
|
-
if (!named.startsWith(time_shell.JOSH_PREFIX)) return false;
|
|
1553
|
-
return names.has(named.slice(time_shell.JOSH_PREFIX.length));
|
|
1554
|
-
}
|
|
1555
|
-
var shell_segments = {
|
|
1556
|
-
SEGMENT_SEPARATOR,
|
|
1557
|
-
is_josh_command,
|
|
1558
|
-
segments_of
|
|
1559
|
-
};
|
|
1560
|
-
|
|
1561
1566
|
// scripts/rules/run-tail.ts
|
|
1562
1567
|
var SEGMENT_PREFIX = String.raw`(?:\(\s*)?(?:[A-Za-z_][A-Za-z0-9_]*=\S*\s+)*(?:npx\s+|pnpm\s+(?:exec\s+|run\s+)?)?`;
|
|
1563
1568
|
var WORD_END = String.raw`(?=\s|$|\))`;
|
|
@@ -1658,7 +1663,6 @@ var lane_background = {
|
|
|
1658
1663
|
|
|
1659
1664
|
// scripts/git/issue-labels.ts
|
|
1660
1665
|
var EPIC_LABEL = "epic";
|
|
1661
|
-
var BUG_LABEL = "bug";
|
|
1662
1666
|
var ENHANCEMENT_LABEL = "enhancement";
|
|
1663
1667
|
var BREAKING_CHANGE_LABEL = "breaking-change";
|
|
1664
1668
|
var IN_PROGRESS_LABEL = "in-progress";
|
|
@@ -3628,9 +3632,9 @@ var git_gh_exec = {
|
|
|
3628
3632
|
};
|
|
3629
3633
|
|
|
3630
3634
|
export {
|
|
3635
|
+
shell_segments,
|
|
3631
3636
|
bash_triggers,
|
|
3632
3637
|
run_progress_clock,
|
|
3633
|
-
shell_segments,
|
|
3634
3638
|
tail_commands,
|
|
3635
3639
|
filing_cap,
|
|
3636
3640
|
CONTEXT_CUT_THRESHOLD,
|
|
@@ -3642,7 +3646,8 @@ export {
|
|
|
3642
3646
|
lane_child_invocation,
|
|
3643
3647
|
run_hold,
|
|
3644
3648
|
run_cut,
|
|
3645
|
-
|
|
3649
|
+
run_tail,
|
|
3650
|
+
lane_background,
|
|
3646
3651
|
ENHANCEMENT_LABEL,
|
|
3647
3652
|
BREAKING_CHANGE_LABEL,
|
|
3648
3653
|
IN_PROGRESS_LABEL,
|
|
@@ -3655,9 +3660,8 @@ export {
|
|
|
3655
3660
|
RELEASE_CLASSIFICATION_NAMES,
|
|
3656
3661
|
has_any_label,
|
|
3657
3662
|
has_label_name,
|
|
3658
|
-
run_tail,
|
|
3659
|
-
lane_background,
|
|
3660
3663
|
lane_park,
|
|
3664
|
+
repo_origin,
|
|
3661
3665
|
repo_party,
|
|
3662
3666
|
FULL_PAGE_QUERY,
|
|
3663
3667
|
git_gh_api_path,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
lane_guard_policy,
|
|
3
3
|
time_batch_guard
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-56LGMJJV.js";
|
|
5
5
|
import {
|
|
6
6
|
hook_decision
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GBJUERYK.js";
|
|
8
8
|
|
|
9
9
|
// scripts/hooks/batch-guard.ts
|
|
10
10
|
import { text } from "node:stream/consumers";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
investigation_reads
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WMIR5SNX.js";
|
|
4
4
|
import {
|
|
5
5
|
lane_guard_policy
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-56LGMJJV.js";
|
|
7
7
|
import {
|
|
8
8
|
hook_decision
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GBJUERYK.js";
|
|
10
10
|
|
|
11
11
|
// scripts/delegation/investigation-guard.ts
|
|
12
12
|
import { text } from "node:stream/consumers";
|
|
@@ -290,6 +290,16 @@ var ISSUE_COMMANDS = {
|
|
|
290
290
|
description: "Post one comment to an issue from a file, so no shell expands the body",
|
|
291
291
|
category: "AI tools",
|
|
292
292
|
reference: ["<issue> --body <text> | --body-file <path>", "automation", ["network"]]
|
|
293
|
+
},
|
|
294
|
+
"issue:file": {
|
|
295
|
+
script: "scripts/issue/issue-file-cli.ts",
|
|
296
|
+
description: "File an Issue with every filing step: lint, Origin, duplicate scout, labels, then epic:bundle",
|
|
297
|
+
category: "AI tools",
|
|
298
|
+
reference: [
|
|
299
|
+
"<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,\u2026>]",
|
|
300
|
+
"automation",
|
|
301
|
+
["network"]
|
|
302
|
+
]
|
|
293
303
|
}
|
|
294
304
|
};
|
|
295
305
|
|
|
@@ -702,7 +712,7 @@ var DEV_COMMANDS = {
|
|
|
702
712
|
},
|
|
703
713
|
lint: {
|
|
704
714
|
script: "scripts/lint/lint-parallel.ts",
|
|
705
|
-
description: "Check code with prettier and eslint (skips a tool a
|
|
715
|
+
description: "Check code with prettier and eslint (skips a tool a basic project lacks)",
|
|
706
716
|
category: "Development",
|
|
707
717
|
reference: ["", "developer", ["processes"]]
|
|
708
718
|
},
|
|
@@ -738,7 +748,7 @@ var DEV_COMMANDS = {
|
|
|
738
748
|
},
|
|
739
749
|
format: {
|
|
740
750
|
script: "scripts/lint/format.ts",
|
|
741
|
-
description: "Format code with prettier and eslint (skips a tool a
|
|
751
|
+
description: "Format code with prettier and eslint (skips a tool a basic project lacks)",
|
|
742
752
|
category: "Development",
|
|
743
753
|
reference: ["", "developer", ["files", "processes"]]
|
|
744
754
|
},
|
|
@@ -851,7 +861,7 @@ var DEV_COMMANDS = {
|
|
|
851
861
|
},
|
|
852
862
|
check: {
|
|
853
863
|
script: "scripts/gate/type-check-command.ts",
|
|
854
|
-
description: "Type-check with tsc (skips a
|
|
864
|
+
description: "Type-check with tsc (skips a basic project with no TypeScript to check)",
|
|
855
865
|
category: "Development",
|
|
856
866
|
reference: ["[arguments...]", "developer", ["processes"]]
|
|
857
867
|
},
|
|
@@ -1006,7 +1016,7 @@ var MAINTENANCE_COMMANDS = {
|
|
|
1006
1016
|
};
|
|
1007
1017
|
|
|
1008
1018
|
// scripts/josh/josh-commands-project.ts
|
|
1009
|
-
var PROFILE_ARGUMENTS = "[--profile
|
|
1019
|
+
var PROFILE_ARGUMENTS = "[--profile basic|full]";
|
|
1010
1020
|
var PROJECT_COMMANDS = {
|
|
1011
1021
|
profile: {
|
|
1012
1022
|
script: "scripts/init/project-profile-cli.ts",
|
|
@@ -1016,7 +1026,7 @@ var PROJECT_COMMANDS = {
|
|
|
1016
1026
|
},
|
|
1017
1027
|
start: {
|
|
1018
1028
|
script: "scripts/init/start.ts",
|
|
1019
|
-
description: "
|
|
1029
|
+
description: "Set a project up for the GitHub Issue workflow, from git init to the setup PR",
|
|
1020
1030
|
category: "Project",
|
|
1021
1031
|
reference: [
|
|
1022
1032
|
`${PROFILE_ARGUMENTS} [--yes] [--github] [--public]`,
|
|
@@ -1068,7 +1078,11 @@ var PROJECT_COMMANDS = {
|
|
|
1068
1078
|
script: "scripts/propagate/propagate.ts",
|
|
1069
1079
|
description: "Carry the published release into every consumer repository next to this one",
|
|
1070
1080
|
category: "Project",
|
|
1071
|
-
reference: [
|
|
1081
|
+
reference: [
|
|
1082
|
+
"[--dry-run] [--skip-publish-wait] [--target <repo>]",
|
|
1083
|
+
"maintainer",
|
|
1084
|
+
["files", "network"]
|
|
1085
|
+
]
|
|
1072
1086
|
},
|
|
1073
1087
|
adopt: {
|
|
1074
1088
|
script: "scripts/adopt/adopt.ts",
|
|
@@ -1306,6 +1320,7 @@ var ALIASES = {
|
|
|
1306
1320
|
ird: "issue:read",
|
|
1307
1321
|
ist: "issue:state",
|
|
1308
1322
|
isc: "issue:scout",
|
|
1323
|
+
ifl: "issue:file",
|
|
1309
1324
|
isf: "issue:fold",
|
|
1310
1325
|
isfe: "issue:fold-existing",
|
|
1311
1326
|
dfr: "defect:rate",
|
|
@@ -1402,7 +1417,10 @@ var WHITESPACE_PATTERN = /\s+/u;
|
|
|
1402
1417
|
var SEGMENT_PATTERN = /&&|\|\||;|\|/u;
|
|
1403
1418
|
var PIPE_PATTERN = /(?<!\|)\|(?!\|)/u;
|
|
1404
1419
|
var CHAIN_PATTERN = /&&|\|\||;/u;
|
|
1405
|
-
var QUOTED_SPAN_PATTERN =
|
|
1420
|
+
var QUOTED_SPAN_PATTERN = /\\[\s\S]|'[^']*'|"(?:\\[\s\S]|[^"\\])*"/gu;
|
|
1421
|
+
var HEREDOC_MARKER = /(?<!<)<<-?\s*(['"]?)(\w+)\1/u;
|
|
1422
|
+
var HEREDOC_DELIMITER_GROUP = 2;
|
|
1423
|
+
var LINE_BREAK = "\n";
|
|
1406
1424
|
var PIPEFAIL_PATTERN = /\bset\s+-[a-z]*o\s+pipefail\b/u;
|
|
1407
1425
|
var COMMAND_WORD_PATTERN = /^[\w./@:+][\w./@:+-]*$/u;
|
|
1408
1426
|
var ASSIGNMENT_PATTERN = /^\w+=/u;
|
|
@@ -1438,8 +1456,23 @@ function command_segment(command) {
|
|
|
1438
1456
|
function leading_word(command) {
|
|
1439
1457
|
return segment_command(command_segment(command));
|
|
1440
1458
|
}
|
|
1459
|
+
function open_heredoc(line, kept) {
|
|
1460
|
+
kept.push(line.replace(HEREDOC_MARKER, " "));
|
|
1461
|
+
return HEREDOC_MARKER.exec(line)?.[HEREDOC_DELIMITER_GROUP];
|
|
1462
|
+
}
|
|
1463
|
+
function close_heredoc(line, delimiter) {
|
|
1464
|
+
return line.trim() === delimiter ? void 0 : delimiter;
|
|
1465
|
+
}
|
|
1466
|
+
function without_heredoc_bodies(command) {
|
|
1467
|
+
const kept = [];
|
|
1468
|
+
const body = {};
|
|
1469
|
+
for (const line of command.split(LINE_BREAK)) {
|
|
1470
|
+
body.delimiter = body.delimiter === void 0 ? open_heredoc(line, kept) : close_heredoc(line, body.delimiter);
|
|
1471
|
+
}
|
|
1472
|
+
return kept.join(LINE_BREAK);
|
|
1473
|
+
}
|
|
1441
1474
|
function unquoted(command) {
|
|
1442
|
-
return command.replaceAll(QUOTED_SPAN_PATTERN, " ");
|
|
1475
|
+
return without_heredoc_bodies(command).replaceAll(QUOTED_SPAN_PATTERN, " ");
|
|
1443
1476
|
}
|
|
1444
1477
|
function discarded_commands(command) {
|
|
1445
1478
|
const plain = unquoted(command);
|
|
@@ -3490,6 +3523,7 @@ export {
|
|
|
3490
3523
|
time_bundle_call,
|
|
3491
3524
|
time_format,
|
|
3492
3525
|
cost_attribute,
|
|
3526
|
+
time_reported_failure,
|
|
3493
3527
|
time_transcript_line,
|
|
3494
3528
|
time_spans,
|
|
3495
3529
|
time_round_trips,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
time_batch_guard
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-56LGMJJV.js";
|
|
4
4
|
import {
|
|
5
5
|
hook_decision
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GBJUERYK.js";
|
|
7
7
|
import {
|
|
8
8
|
cost_blocks,
|
|
9
9
|
cost_transcript,
|
|
10
10
|
time_bundle_call,
|
|
11
11
|
time_shell,
|
|
12
12
|
time_spans
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PAXMLGSS.js";
|
|
14
14
|
|
|
15
15
|
// scripts/delegation/investigation-reads.ts
|
|
16
16
|
import path from "node:path";
|
|
@@ -36,15 +36,15 @@ var DELEGATABLE_STEPS = [
|
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
name: "followup-filing",
|
|
39
|
-
// The late-run follow-up filing chain — issue:
|
|
40
|
-
// — is a dependency chain `batch:guard`
|
|
41
|
-
//
|
|
42
|
-
// (joshuafolkken/kit#1892). A fresh unit runs the same
|
|
43
|
-
// round cap already composed the finding text, so what
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
does: "run the late-run follow-up filing chain in an isolated unit \u2014 issue:scout,
|
|
47
|
-
verifier: "the parent reads the filed Issue from GitHub with `pnpm josh issue:state <new>`, not the unit's summary; a follow-up reported filed but not created is still absent, the way `epic-child`'s reported-done-but-not-merged child is still open. The finding text came from the parent and `issue:
|
|
39
|
+
// The late-run follow-up filing chain — `issue:file` (which scouts, lints, labels and runs
|
|
40
|
+
// epic:bundle itself, joshuafolkken/kit#2808) → epic --add — is a dependency chain `batch:guard`
|
|
41
|
+
// correctly keeps one call per step, and what makes it expensive is the ~340k context it runs in
|
|
42
|
+
// at the tail of a run, not the step count (joshuafolkken/kit#1892). A fresh unit runs the same
|
|
43
|
+
// chain at a small context, and the review round cap already composed the finding text, so what
|
|
44
|
+
// the unit is handed is mechanical: run the commands and act on their deterministic answers. This
|
|
45
|
+
// is not `batch:guard`'s business — delegation only moves the chain to a cheaper context.
|
|
46
|
+
does: "run the late-run follow-up filing chain in an isolated unit \u2014 issue:file (scout, lint, labels, epic:bundle), then epic --add \u2014 given the finding text the parent already composed, and return the new Issue number and the epic:bundle answer",
|
|
47
|
+
verifier: "the parent reads the filed Issue from GitHub with `pnpm josh issue:state <new>`, not the unit's summary; a follow-up reported filed but not created is still absent, the way `epic-child`'s reported-done-but-not-merged child is still open. The finding text came from the parent and `issue:file`'s steps are deterministic, so the unit's work is the mechanical execution `issue:state` confirms"
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
name: "implementation-unit",
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
import {
|
|
3
3
|
pretool_guard
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-762BDXDU.js";
|
|
5
|
+
import "./chunk-7WAOP42A.js";
|
|
6
6
|
import {
|
|
7
7
|
build_envelope,
|
|
8
8
|
compose_context,
|
|
9
9
|
format_edited_payload
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AWTFKKFW.js";
|
|
11
11
|
import "./chunk-3V37IID6.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-A2H5I2VD.js";
|
|
13
|
+
import "./chunk-KPZN42RT.js";
|
|
14
|
+
import "./chunk-4GDR2YTV.js";
|
|
15
|
+
import "./chunk-WMIR5SNX.js";
|
|
16
|
+
import "./chunk-56LGMJJV.js";
|
|
17
17
|
import {
|
|
18
18
|
hook_decision
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-GBJUERYK.js";
|
|
20
20
|
import {
|
|
21
21
|
time_density_hook
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-PAXMLGSS.js";
|
|
23
23
|
import "./chunk-WPALEIRX.js";
|
|
24
24
|
import "./chunk-RKUAD3I6.js";
|
|
25
25
|
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
is_enabled,
|
|
10
10
|
notice_refusal_path,
|
|
11
11
|
refusal_path
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-4GDR2YTV.js";
|
|
13
|
+
import "./chunk-WMIR5SNX.js";
|
|
14
|
+
import "./chunk-56LGMJJV.js";
|
|
15
|
+
import "./chunk-GBJUERYK.js";
|
|
16
|
+
import "./chunk-PAXMLGSS.js";
|
|
17
17
|
import "./chunk-WPALEIRX.js";
|
|
18
18
|
import "./chunk-RKUAD3I6.js";
|
|
19
19
|
export {
|
|
@@ -15,9 +15,9 @@ import {
|
|
|
15
15
|
relative_to_root,
|
|
16
16
|
resolve_invocations,
|
|
17
17
|
select_invocation
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-AWTFKKFW.js";
|
|
19
19
|
import "./chunk-3V37IID6.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-PAXMLGSS.js";
|
|
21
21
|
import "./chunk-RKUAD3I6.js";
|
|
22
22
|
export {
|
|
23
23
|
ESLINT_DAEMON,
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
is_enabled,
|
|
11
11
|
load_environment_file,
|
|
12
12
|
refusal_path
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-KPZN42RT.js";
|
|
14
|
+
import "./chunk-WMIR5SNX.js";
|
|
15
|
+
import "./chunk-56LGMJJV.js";
|
|
16
|
+
import "./chunk-GBJUERYK.js";
|
|
17
|
+
import "./chunk-PAXMLGSS.js";
|
|
18
18
|
import "./chunk-WPALEIRX.js";
|
|
19
19
|
import "./chunk-RKUAD3I6.js";
|
|
20
20
|
export {
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
pretool_guard,
|
|
4
4
|
pretool_outcome,
|
|
5
5
|
pretool_outcome_async
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-762BDXDU.js";
|
|
7
|
+
import "./chunk-7WAOP42A.js";
|
|
8
8
|
import "./chunk-3V37IID6.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-A2H5I2VD.js";
|
|
10
|
+
import "./chunk-KPZN42RT.js";
|
|
11
|
+
import "./chunk-4GDR2YTV.js";
|
|
12
|
+
import "./chunk-WMIR5SNX.js";
|
|
13
|
+
import "./chunk-56LGMJJV.js";
|
|
14
|
+
import "./chunk-GBJUERYK.js";
|
|
15
|
+
import "./chunk-PAXMLGSS.js";
|
|
16
16
|
import "./chunk-WPALEIRX.js";
|
|
17
17
|
import "./chunk-RKUAD3I6.js";
|
|
18
18
|
export {
|