@joshuafolkken/kit 1.1373.0 → 1.1379.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 (46) hide show
  1. package/.claude/skills/dependency-update/SKILL.md +6 -3
  2. package/dist/hooks/batch-guard.js +6 -6
  3. package/dist/hooks/{chunk-BZMPVFDY.js → chunk-4RWRP3FF.js} +5 -5
  4. package/dist/hooks/{chunk-V4TKZHER.js → chunk-546X4PX3.js} +3 -3
  5. package/dist/hooks/{chunk-JGW24KKM.js → chunk-7ZM464OW.js} +3 -3
  6. package/dist/hooks/{chunk-GG72ANKI.js → chunk-DHSKBAQ2.js} +1 -1
  7. package/dist/hooks/{chunk-7WKYHEGU.js → chunk-E7LZL5AN.js} +3 -3
  8. package/dist/hooks/{chunk-AKGCP4LX.js → chunk-HGA4EG5S.js} +11 -11
  9. package/dist/hooks/{chunk-Z5TMJIPW.js → chunk-NBEAGPS4.js} +1 -1
  10. package/dist/hooks/{chunk-7UBFU3CL.js → chunk-PV3FWDSQ.js} +2 -2
  11. package/dist/hooks/{chunk-JCRDBQXB.js → chunk-QARPP36N.js} +3 -3
  12. package/dist/hooks/{chunk-NZN2UFI6.js → chunk-RW4XMF47.js} +37 -1
  13. package/dist/hooks/{chunk-YLBBSSTF.js → chunk-TG2AB3W6.js} +50 -16
  14. package/dist/hooks/{chunk-SLSFIWTX.js → chunk-TORRSNDJ.js} +7 -4
  15. package/dist/hooks/{chunk-UTHMB4O2.js → chunk-YSDAH73S.js} +4 -33
  16. package/dist/hooks/codex-hook-adapter.js +13 -13
  17. package/dist/hooks/duplicate-read-guard.js +7 -7
  18. package/dist/hooks/format-edited.js +3 -3
  19. package/dist/hooks/inputs.json +209 -209
  20. package/dist/hooks/investigation-guard.js +7 -7
  21. package/dist/hooks/pretool-guard.js +12 -12
  22. package/dist/hooks/session-lang.js +3 -3
  23. package/dist/hooks/stop-guard.js +6 -6
  24. package/dist/josh.js +39 -4
  25. package/package.json +4 -4
  26. package/scripts/adopt/adopt-logic.ts +4 -1
  27. package/scripts/adopt/adopt.ts +7 -4
  28. package/scripts/cost-runtime/context-cut-payback.ts +9 -4
  29. package/scripts/cost-runtime/cost-pricing.ts +94 -33
  30. package/scripts/document/document-byte-budget.ts +1 -1
  31. package/scripts/document/read-set-pricing.ts +7 -5
  32. package/scripts/git/git-spawn-sync.ts +9 -1
  33. package/scripts/init/init-ai-copy.ts +10 -3
  34. package/scripts/init/init-copy-content.ts +8 -1
  35. package/scripts/init/security-policy.ts +79 -0
  36. package/scripts/josh/josh-commands-maintenance.ts +3 -0
  37. package/scripts/josh/josh-commands-project.ts +1 -1
  38. package/scripts/josh/josh-commands-versioning.ts +2 -1
  39. package/scripts/propagate/propagate-run.ts +17 -1
  40. package/scripts/propagate/propagate-steps.ts +9 -1
  41. package/scripts/sync/sync-ai-files.ts +2 -0
  42. package/scripts/version/latest-update.ts +20 -6
  43. package/scripts/version/peer-floor.ts +99 -0
  44. package/scripts/version/playwright-browsers.ts +109 -0
  45. package/scripts/version/publishable-range-check.ts +41 -4
  46. package/templates/SECURITY.md +23 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: dependency-update
3
- description: Checks after `pnpm update`, `josh latest`, `pnpm josh overrides` or any dependency update — the `overrides` survived, the one expected `devEngines` change. Read it before reporting the pins intact or pinning a bump back.
3
+ description: Checks after `pnpm update`, `josh latest`, `josh adopt`, `pnpm josh overrides` or any dependency update — the `overrides` survived, the one expected `devEngines` change. Read it before reporting the pins intact or pinning a bump back.
4
4
  ---
5
5
 
6
6
  # After a dependency-update command
@@ -8,8 +8,9 @@ description: Checks after `pnpm update`, `josh latest`, `pnpm josh overrides` or
8
8
  `CLAUDE.md` → "Decision autonomy" keeps both prohibitions resident as Tier C — never touch `overrides`
9
9
  in either file, never touch `devEngines`, without explicit user approval. This skill is the other
10
10
  half: what you actually run to find out whether a command already touched them, and how to read the
11
- one change that is expected. It applies after `pnpm update`, `josh latest`, `pnpm josh overrides`,
12
- a Dependabot merge, or any other command that can rewrite dependency versions.
11
+ one change that is expected. It applies after `pnpm update`, `josh latest`, `josh adopt` (which runs
12
+ `josh latest` as one of its steps), `pnpm josh overrides`, a Dependabot merge, or any other command
13
+ that can rewrite dependency versions.
13
14
 
14
15
  This skill is the single source of the overrides protection's procedure;
15
16
  `prompts/collaboration-workflow/operating-rules.md` only points here. Overrides were added on
@@ -34,6 +35,8 @@ or any dependency-update command, verify the overrides in both `pnpm-workspace.y
34
35
  git diff -- pnpm-workspace.yaml package.json
35
36
  ```
36
37
 
38
+ (after `josh adopt`, which has already committed and returned to the default branch, compare the
39
+ pull-request branch instead: `git diff <default>...<branch> -- pnpm-workspace.yaml package.json`)
37
40
  and confirm the effective `overrides:` block in `pnpm-workspace.yaml` and any historical
38
41
  `pnpm.overrides` declarations in `package.json` are untouched, **and** that `devDependencies`
39
42
  versions still respect the effective overrides. If any entry was removed, modified, or bumped past
@@ -9,12 +9,12 @@ import {
9
9
  load_environment_file,
10
10
  notice_refusal_path,
11
11
  refusal_path
12
- } from "./chunk-JGW24KKM.js";
13
- import "./chunk-GG72ANKI.js";
14
- import "./chunk-7WKYHEGU.js";
15
- import "./chunk-SLSFIWTX.js";
16
- import "./chunk-Z5TMJIPW.js";
17
- import "./chunk-NZN2UFI6.js";
12
+ } from "./chunk-7ZM464OW.js";
13
+ import "./chunk-DHSKBAQ2.js";
14
+ import "./chunk-E7LZL5AN.js";
15
+ import "./chunk-TORRSNDJ.js";
16
+ import "./chunk-NBEAGPS4.js";
17
+ import "./chunk-RW4XMF47.js";
18
18
  import "./chunk-NEC4AT4Z.js";
19
19
  export {
20
20
  DISABLED_VALUES,
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-JCRDBQXB.js";
3
+ } from "./chunk-QARPP36N.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-GG72ANKI.js";
6
+ } from "./chunk-DHSKBAQ2.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-7WKYHEGU.js";
9
+ } from "./chunk-E7LZL5AN.js";
10
10
  import {
11
11
  time_spans
12
- } from "./chunk-SLSFIWTX.js";
12
+ } from "./chunk-TORRSNDJ.js";
13
13
  import {
14
14
  json_value
15
- } from "./chunk-NZN2UFI6.js";
15
+ } from "./chunk-RW4XMF47.js";
16
16
 
17
17
  // scripts/delegation/duplicate-read-guard.ts
18
18
  import { statSync } from "node:fs";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-JCRDBQXB.js";
3
+ } from "./chunk-QARPP36N.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-GG72ANKI.js";
6
+ } from "./chunk-DHSKBAQ2.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-7WKYHEGU.js";
9
+ } from "./chunk-E7LZL5AN.js";
10
10
 
11
11
  // scripts/delegation/investigation-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  lane_guard_policy
3
- } from "./chunk-GG72ANKI.js";
3
+ } from "./chunk-DHSKBAQ2.js";
4
4
  import {
5
5
  hook_decision
6
- } from "./chunk-7WKYHEGU.js";
6
+ } from "./chunk-E7LZL5AN.js";
7
7
  import {
8
8
  time_batch_guard
9
- } from "./chunk-SLSFIWTX.js";
9
+ } from "./chunk-TORRSNDJ.js";
10
10
 
11
11
  // scripts/hooks/batch-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  lane_child_marker
3
- } from "./chunk-Z5TMJIPW.js";
3
+ } from "./chunk-NBEAGPS4.js";
4
4
 
5
5
  // scripts/lane/lane-guard-policy.ts
6
6
  var DEFAULT_MODE = "refuse";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  time_density_hook,
3
3
  time_hook_transcript
4
- } from "./chunk-SLSFIWTX.js";
4
+ } from "./chunk-TORRSNDJ.js";
5
5
  import {
6
6
  josh_environment_file
7
- } from "./chunk-Z5TMJIPW.js";
7
+ } from "./chunk-NBEAGPS4.js";
8
8
  import {
9
9
  json_value
10
- } from "./chunk-NZN2UFI6.js";
10
+ } from "./chunk-RW4XMF47.js";
11
11
  import {
12
12
  stamp_file
13
13
  } from "./chunk-NEC4AT4Z.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  duplicate_read_outcome
3
- } from "./chunk-BZMPVFDY.js";
3
+ } from "./chunk-4RWRP3FF.js";
4
4
  import {
5
5
  ALREADY_DONE_LABEL,
6
6
  CONTEXT_CUT_THRESHOLD,
@@ -28,7 +28,7 @@ import {
28
28
  session_cite,
29
29
  shell_segments,
30
30
  tail_commands
31
- } from "./chunk-YLBBSSTF.js";
31
+ } from "./chunk-TG2AB3W6.js";
32
32
  import {
33
33
  ancestor_directories,
34
34
  find_local_bin_upwards
@@ -41,25 +41,25 @@ import {
41
41
  lane_registry,
42
42
  repo_origin,
43
43
  run_headless
44
- } from "./chunk-UTHMB4O2.js";
44
+ } from "./chunk-YSDAH73S.js";
45
45
  import {
46
46
  error_text
47
47
  } from "./chunk-CDY4NFQG.js";
48
48
  import {
49
49
  batch_outcome
50
- } from "./chunk-JGW24KKM.js";
50
+ } from "./chunk-7ZM464OW.js";
51
51
  import {
52
52
  investigation_refusal
53
- } from "./chunk-V4TKZHER.js";
53
+ } from "./chunk-546X4PX3.js";
54
54
  import {
55
55
  investigation_reads
56
- } from "./chunk-JCRDBQXB.js";
56
+ } from "./chunk-QARPP36N.js";
57
57
  import {
58
58
  lane_guard_policy
59
- } from "./chunk-GG72ANKI.js";
59
+ } from "./chunk-DHSKBAQ2.js";
60
60
  import {
61
61
  hook_decision
62
- } from "./chunk-7WKYHEGU.js";
62
+ } from "./chunk-E7LZL5AN.js";
63
63
  import {
64
64
  cost_attribute,
65
65
  cost_blocks,
@@ -67,10 +67,10 @@ import {
67
67
  time_batch_guard,
68
68
  time_density_hook,
69
69
  time_shell
70
- } from "./chunk-SLSFIWTX.js";
70
+ } from "./chunk-TORRSNDJ.js";
71
71
  import {
72
72
  lane_child_marker
73
- } from "./chunk-Z5TMJIPW.js";
73
+ } from "./chunk-NBEAGPS4.js";
74
74
  import {
75
75
  PORCELAIN_FLAG,
76
76
  cli_flags,
@@ -84,7 +84,7 @@ import {
84
84
  lane_paths,
85
85
  own_session,
86
86
  run_carry
87
- } from "./chunk-NZN2UFI6.js";
87
+ } from "./chunk-RW4XMF47.js";
88
88
  import {
89
89
  PLATFORM_TEMP_ROOT,
90
90
  PROBE_TIMEOUT_MS,
@@ -2,7 +2,7 @@ import {
2
2
  ENV_FILE_NAME,
3
3
  issue_number_shape,
4
4
  lane_paths
5
- } from "./chunk-NZN2UFI6.js";
5
+ } from "./chunk-RW4XMF47.js";
6
6
 
7
7
  // scripts/josh/josh-environment-file.ts
8
8
  function load_environment_file() {
@@ -5,11 +5,11 @@ import {
5
5
  import {
6
6
  ESLINT_EDIT_CACHE_FLAGS,
7
7
  time_density_hook
8
- } from "./chunk-SLSFIWTX.js";
8
+ } from "./chunk-TORRSNDJ.js";
9
9
  import {
10
10
  file_reader,
11
11
  json_value
12
- } from "./chunk-NZN2UFI6.js";
12
+ } from "./chunk-RW4XMF47.js";
13
13
  import {
14
14
  HOOK_PROCESS_TIMEOUT_MS
15
15
  } from "./chunk-NEC4AT4Z.js";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  hook_decision
3
- } from "./chunk-7WKYHEGU.js";
3
+ } from "./chunk-E7LZL5AN.js";
4
4
  import {
5
5
  cost_blocks,
6
6
  time_batch_guard,
7
7
  time_bundle_call,
8
8
  time_shell,
9
9
  time_spans
10
- } from "./chunk-SLSFIWTX.js";
10
+ } from "./chunk-TORRSNDJ.js";
11
11
  import {
12
12
  cost_transcript
13
- } from "./chunk-NZN2UFI6.js";
13
+ } from "./chunk-RW4XMF47.js";
14
14
 
15
15
  // scripts/delegation/investigation-reads.ts
16
16
  import path2 from "node:path";
@@ -521,6 +521,37 @@ function read_spawn_stderr(result) {
521
521
 
522
522
  // scripts/git/git-spawn-sync.ts
523
523
  import { execaSync } from "execa";
524
+
525
+ // scripts/git/git-location-environment.ts
526
+ var GIT_LOCATION_VARIABLES = [
527
+ "GIT_ALTERNATE_OBJECT_DIRECTORIES",
528
+ "GIT_COMMON_DIR",
529
+ "GIT_DIR",
530
+ "GIT_INDEX_FILE",
531
+ "GIT_NAMESPACE",
532
+ "GIT_OBJECT_DIRECTORY",
533
+ "GIT_WORK_TREE"
534
+ ];
535
+ function location_free_environment() {
536
+ return Object.fromEntries(GIT_LOCATION_VARIABLES.map((name) => [name, void 0]));
537
+ }
538
+ function forget(name) {
539
+ Reflect.deleteProperty(process.env, name);
540
+ }
541
+ function restore_one(name, value) {
542
+ if (value === void 0) forget(name);
543
+ else process.env[name] = value;
544
+ }
545
+ function clear_git_location_variables() {
546
+ const previous = GIT_LOCATION_VARIABLES.map((name) => [name, process.env[name]]);
547
+ for (const [name] of previous) forget(name);
548
+ return () => {
549
+ for (const [name, value] of previous) restore_one(name, value);
550
+ };
551
+ }
552
+ var git_location_environment = { clear_git_location_variables, location_free_environment };
553
+
554
+ // scripts/git/git-spawn-sync.ts
524
555
  var SUCCESS_EXIT_CODE = 0;
525
556
  var C_LOCALE = { LC_ALL: "C", LANGUAGE: "C" };
526
557
  function run2(args, options = {}) {
@@ -541,7 +572,10 @@ function read2(args, options = {}) {
541
572
  return result.exit_code === SUCCESS_EXIT_CODE ? result.stdout.trim() : void 0;
542
573
  }
543
574
  function origin_url(cwd) {
544
- return read2(["config", "--get", "remote.origin.url"], { cwd });
575
+ return read2(["config", "--get", "remote.origin.url"], {
576
+ cwd,
577
+ env: git_location_environment.location_free_environment()
578
+ });
545
579
  }
546
580
  function toplevel(timeout = GIT_TIMEOUT_MS) {
547
581
  return run2(["rev-parse", "--show-toplevel"], { env: C_LOCALE, timeout });
@@ -2392,6 +2426,8 @@ export {
2392
2426
  git_utilities,
2393
2427
  has_timed_out,
2394
2428
  git_spawn,
2429
+ GIT_LOCATION_VARIABLES,
2430
+ git_location_environment,
2395
2431
  git_spawn_sync,
2396
2432
  git_command,
2397
2433
  stamp_record,
@@ -8,7 +8,7 @@ import {
8
8
  repo_origin,
9
9
  repository_lock,
10
10
  run_ship_stage
11
- } from "./chunk-UTHMB4O2.js";
11
+ } from "./chunk-YSDAH73S.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-SLSFIWTX.js";
33
+ } from "./chunk-TORRSNDJ.js";
34
34
  import {
35
35
  lane_child_marker
36
- } from "./chunk-Z5TMJIPW.js";
36
+ } from "./chunk-NBEAGPS4.js";
37
37
  import {
38
38
  agent_session_environment,
39
39
  backlog_budget,
@@ -44,7 +44,7 @@ import {
44
44
  process_identity,
45
45
  run_carry,
46
46
  stamp_record
47
- } from "./chunk-NZN2UFI6.js";
47
+ } from "./chunk-RW4XMF47.js";
48
48
  import {
49
49
  COMMAND_TIMEOUT_MS,
50
50
  stamp_file
@@ -503,29 +503,56 @@ var run_hold = {
503
503
  // scripts/cost-runtime/cost-pricing.ts
504
504
  var CACHE_WRITE_5M_MULTIPLIER = 1.25;
505
505
  var CACHE_WRITE_1H_MULTIPLIER = 2;
506
- var CACHE_READ_MULTIPLIER = 0.1;
506
+ var DEFAULT_CACHE_READ_MULTIPLIER = 0.1;
507
+ var HALVED_CACHE_READ_MULTIPLIER = 0.05;
508
+ var QUARTERED_CACHE_READ_MULTIPLIER = 0.025;
507
509
  var TOKENS_PER_MILLION = 1e6;
510
+ var LONG_PROMPT_SUFFIX = ":long-prompt";
511
+ var LONG_PROMPT_THRESHOLD = 1e5;
508
512
  var MODEL_PRICES = {
513
+ "claude-fable-5-1": {
514
+ input: 10,
515
+ output: 50,
516
+ cache_read_multiplier: QUARTERED_CACHE_READ_MULTIPLIER
517
+ },
518
+ "claude-mythos-5-1": {
519
+ input: 10,
520
+ output: 50,
521
+ cache_read_multiplier: QUARTERED_CACHE_READ_MULTIPLIER
522
+ },
509
523
  "claude-fable-5": { input: 10, output: 50 },
510
524
  "claude-mythos-5": { input: 10, output: 50 },
525
+ "claude-opus-5-5": { input: 4, output: 20, cache_read_multiplier: HALVED_CACHE_READ_MULTIPLIER },
511
526
  "claude-opus-5": { input: 5, output: 25 },
512
527
  "claude-opus-4-8": { input: 5, output: 25 },
513
528
  "claude-opus-4-7": { input: 5, output: 25 },
514
529
  "claude-opus-4-6": { input: 5, output: 25 },
530
+ "claude-sonnet-5-5": {
531
+ input: 2,
532
+ output: 10,
533
+ cache_read_multiplier: HALVED_CACHE_READ_MULTIPLIER
534
+ },
515
535
  "claude-sonnet-5": { input: 2, output: 10 },
516
536
  "claude-sonnet-4-6": { input: 3, output: 15 },
537
+ "claude-haiku-5-5": { input: 0.1, output: 0.5 },
538
+ [`claude-haiku-5-5${LONG_PROMPT_SUFFIX}`]: { input: 0.5, output: 2.5 },
517
539
  "claude-haiku-4-5": { input: 1, output: 5 }
518
540
  };
519
541
  var CONTEXT_MARKER = "[";
520
- function resolve_price(model) {
542
+ var DATE_SUFFIX = /-\d{8}$/u;
543
+ function known_id(model) {
521
544
  const base = model.split(CONTEXT_MARKER)[0] ?? model;
522
- const direct = MODEL_PRICES[base];
523
- if (direct !== void 0) return direct;
524
- const [matched] = Object.keys(MODEL_PRICES).filter((id) => base.startsWith(id)).toSorted((left, right) => right.length - left.length);
525
- return matched === void 0 ? void 0 : MODEL_PRICES[matched];
545
+ return [base, base.replace(DATE_SUFFIX, "")].find((id) => Object.hasOwn(MODEL_PRICES, id));
546
+ }
547
+ function resolve_price(model) {
548
+ const id = known_id(model);
549
+ return id === void 0 ? void 0 : MODEL_PRICES[id];
550
+ }
551
+ function cache_read_multiplier(price) {
552
+ return price.cache_read_multiplier ?? DEFAULT_CACHE_READ_MULTIPLIER;
526
553
  }
527
554
  function estimate_cost(totals, price) {
528
- const weighted_input = totals.input_tokens + totals.cache_write_5m_tokens * CACHE_WRITE_5M_MULTIPLIER + totals.cache_write_1h_tokens * CACHE_WRITE_1H_MULTIPLIER + totals.cache_read_tokens * CACHE_READ_MULTIPLIER;
555
+ const weighted_input = totals.input_tokens + totals.cache_write_5m_tokens * CACHE_WRITE_5M_MULTIPLIER + totals.cache_write_1h_tokens * CACHE_WRITE_1H_MULTIPLIER + totals.cache_read_tokens * cache_read_multiplier(price);
529
556
  return (weighted_input * price.input + totals.output_tokens * price.output) / TOKENS_PER_MILLION;
530
557
  }
531
558
  function priced(tokens, rate) {
@@ -542,7 +569,7 @@ function estimate_composition(totals, price) {
542
569
  totals.cache_write_1h_tokens * CACHE_WRITE_1H_MULTIPLIER,
543
570
  price.input
544
571
  ),
545
- cache_read_usd: priced(totals.cache_read_tokens * CACHE_READ_MULTIPLIER, price.input),
572
+ cache_read_usd: priced(totals.cache_read_tokens * cache_read_multiplier(price), price.input),
546
573
  output_usd: priced(totals.output_tokens, price.output)
547
574
  };
548
575
  }
@@ -551,11 +578,17 @@ function to_model_cost(model, totals) {
551
578
  if (price === void 0) return { model, totals };
552
579
  return { model, totals, cost_usd: estimate_cost(totals, price) };
553
580
  }
581
+ function billed_model(usage) {
582
+ const long_id = `${known_id(usage.model) ?? usage.model}${LONG_PROMPT_SUFFIX}`;
583
+ const is_long = cost_usage.billed_input(usage.totals) > LONG_PROMPT_THRESHOLD;
584
+ return is_long && Object.hasOwn(MODEL_PRICES, long_id) ? long_id : usage.model;
585
+ }
554
586
  function cost_by_model(records) {
555
587
  const grouped = /* @__PURE__ */ new Map();
556
588
  for (const record of records) {
557
- const running = grouped.get(record.model) ?? cost_usage.EMPTY_TOTALS;
558
- grouped.set(record.model, cost_usage.add_totals(running, record.totals));
589
+ const model = billed_model(record);
590
+ const running = grouped.get(model) ?? cost_usage.EMPTY_TOTALS;
591
+ grouped.set(model, cost_usage.add_totals(running, record.totals));
559
592
  }
560
593
  return [...grouped].map(([model, totals]) => to_model_cost(model, totals));
561
594
  }
@@ -571,7 +604,8 @@ function cost_of(records) {
571
604
  var cost_pricing = {
572
605
  CACHE_WRITE_5M_MULTIPLIER,
573
606
  CACHE_WRITE_1H_MULTIPLIER,
574
- CACHE_READ_MULTIPLIER,
607
+ DEFAULT_CACHE_READ_MULTIPLIER,
608
+ LONG_PROMPT_THRESHOLD,
575
609
  resolve_price,
576
610
  estimate_cost,
577
611
  estimate_composition,
@@ -584,7 +618,7 @@ var cost_pricing = {
584
618
  var POST_CUT_CONTEXT = 6e4;
585
619
  var EXPECTED_REMAINING_REQUESTS = 10;
586
620
  function write_over_read() {
587
- return cost_pricing.CACHE_WRITE_5M_MULTIPLIER / cost_pricing.CACHE_READ_MULTIPLIER;
621
+ return cost_pricing.CACHE_WRITE_5M_MULTIPLIER / cost_pricing.DEFAULT_CACHE_READ_MULTIPLIER;
588
622
  }
589
623
  function break_even_context(remaining = EXPECTED_REMAINING_REQUESTS) {
590
624
  if (remaining <= 0) return Infinity;
@@ -6,7 +6,7 @@ import {
6
6
  process_owner_schema,
7
7
  run_carry,
8
8
  time_instant
9
- } from "./chunk-NZN2UFI6.js";
9
+ } from "./chunk-RW4XMF47.js";
10
10
  import {
11
11
  PLATFORM_TEMP_ROOT,
12
12
  PROBE_TIMEOUT_MS,
@@ -1882,7 +1882,10 @@ var MAINTENANCE_COMMANDS = {
1882
1882
  script: "scripts/version/latest-update.ts",
1883
1883
  description: "Update all dependencies to latest",
1884
1884
  category: "Maintenance",
1885
- reference: ["", "developer", ["files", "network"]]
1885
+ reference: ["", "developer", ["files", "network"]],
1886
+ // `JOSH_PLAYWRIGHT_BROWSERS` widens the browsers a Playwright bump installs, and a project
1887
+ // keeps that setting in its `.env`.
1888
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS
1886
1889
  }
1887
1890
  };
1888
1891
 
@@ -1970,7 +1973,7 @@ var PROJECT_COMMANDS = {
1970
1973
  },
1971
1974
  adopt: {
1972
1975
  script: "scripts/adopt/adopt.ts",
1973
- description: "Upgrade every installed @joshuafolkken toolkit here and open the pull request",
1976
+ description: "Upgrade the @joshuafolkken toolkits and other dependencies here, open the PR",
1974
1977
  category: "Project",
1975
1978
  reference: ["[--dry-run]", "developer", ["files", "git", "network", "processes"]]
1976
1979
  }
@@ -1996,7 +1999,7 @@ var VERSIONING_COMMANDS = {
1996
1999
  // before chaining here, exactly as it already does for `latest:update`.
1997
2000
  ranges: {
1998
2001
  script: "scripts/version/publishable-range-check.ts",
1999
- description: "Check that every published dependency range still resolves for a consumer",
2002
+ description: "Check that every published dependency range still resolves for a consumer and no peer range falls below an installed toolkit",
2000
2003
  category: "Versioning",
2001
2004
  reference: ["", "developer", ["network"]]
2002
2005
  },
@@ -1,14 +1,16 @@
1
1
  import {
2
2
  lane_child_marker
3
- } from "./chunk-Z5TMJIPW.js";
3
+ } from "./chunk-NBEAGPS4.js";
4
4
  import {
5
5
  ENV_FILE_NAME,
6
+ GIT_LOCATION_VARIABLES,
6
7
  LANE_SEAT_KEY,
7
8
  PORCELAIN_FLAG,
8
9
  PORT_SEED_KEY,
9
10
  agent_session_environment,
10
11
  file_reader,
11
12
  git_command,
13
+ git_location_environment,
12
14
  git_spawn,
13
15
  git_utilities,
14
16
  issue_number_shape,
@@ -18,7 +20,7 @@ import {
18
20
  process_identity,
19
21
  process_owner_schema,
20
22
  run_carry
21
- } from "./chunk-NZN2UFI6.js";
23
+ } from "./chunk-RW4XMF47.js";
22
24
  import {
23
25
  INSTALL_TIMEOUT_MS,
24
26
  PLATFORM_TEMP_ROOT,
@@ -645,37 +647,6 @@ import { setTimeout as sleep } from "node:timers/promises";
645
647
 
646
648
  // scripts/git/git-common-directory.ts
647
649
  import { execFileSync as execFileSync2 } from "node:child_process";
648
-
649
- // scripts/git/git-location-environment.ts
650
- var GIT_LOCATION_VARIABLES = [
651
- "GIT_ALTERNATE_OBJECT_DIRECTORIES",
652
- "GIT_COMMON_DIR",
653
- "GIT_DIR",
654
- "GIT_INDEX_FILE",
655
- "GIT_NAMESPACE",
656
- "GIT_OBJECT_DIRECTORY",
657
- "GIT_WORK_TREE"
658
- ];
659
- function location_free_environment() {
660
- return Object.fromEntries(GIT_LOCATION_VARIABLES.map((name) => [name, void 0]));
661
- }
662
- function forget(name) {
663
- Reflect.deleteProperty(process.env, name);
664
- }
665
- function restore_one(name, value) {
666
- if (value === void 0) forget(name);
667
- else process.env[name] = value;
668
- }
669
- function clear_git_location_variables() {
670
- const previous = GIT_LOCATION_VARIABLES.map((name) => [name, process.env[name]]);
671
- for (const [name] of previous) forget(name);
672
- return () => {
673
- for (const [name, value] of previous) restore_one(name, value);
674
- };
675
- }
676
- var git_location_environment = { clear_git_location_variables, location_free_environment };
677
-
678
- // scripts/git/git-common-directory.ts
679
650
  var OWN_GIT_DIRECTORY = 0;
680
651
  var COMMON_GIT_DIRECTORY = 1;
681
652
  var PROBE_TIMEOUT_MS2 = 5e3;
@@ -1,33 +1,33 @@
1
1
  #!/usr/bin/env tsx
2
2
  import {
3
3
  pretool_guard
4
- } from "./chunk-AKGCP4LX.js";
5
- import "./chunk-BZMPVFDY.js";
4
+ } from "./chunk-HGA4EG5S.js";
5
+ import "./chunk-4RWRP3FF.js";
6
6
  import {
7
7
  bounded_pool
8
- } from "./chunk-YLBBSSTF.js";
8
+ } from "./chunk-TG2AB3W6.js";
9
9
  import {
10
10
  build_envelope,
11
11
  compose_context,
12
12
  format_edited_payload
13
- } from "./chunk-7UBFU3CL.js";
13
+ } from "./chunk-PV3FWDSQ.js";
14
14
  import "./chunk-JBBMAPC4.js";
15
- import "./chunk-UTHMB4O2.js";
15
+ import "./chunk-YSDAH73S.js";
16
16
  import "./chunk-CDY4NFQG.js";
17
- import "./chunk-JGW24KKM.js";
18
- import "./chunk-V4TKZHER.js";
19
- import "./chunk-JCRDBQXB.js";
20
- import "./chunk-GG72ANKI.js";
17
+ import "./chunk-7ZM464OW.js";
18
+ import "./chunk-546X4PX3.js";
19
+ import "./chunk-QARPP36N.js";
20
+ import "./chunk-DHSKBAQ2.js";
21
21
  import {
22
22
  hook_decision
23
- } from "./chunk-7WKYHEGU.js";
23
+ } from "./chunk-E7LZL5AN.js";
24
24
  import {
25
25
  time_density_hook
26
- } from "./chunk-SLSFIWTX.js";
27
- import "./chunk-Z5TMJIPW.js";
26
+ } from "./chunk-TORRSNDJ.js";
27
+ import "./chunk-NBEAGPS4.js";
28
28
  import {
29
29
  json_value
30
- } from "./chunk-NZN2UFI6.js";
30
+ } from "./chunk-RW4XMF47.js";
31
31
  import "./chunk-NEC4AT4Z.js";
32
32
 
33
33
  // scripts/hooks/codex-hook-adapter.ts
@@ -9,13 +9,13 @@ import {
9
9
  is_enabled,
10
10
  notice_refusal_path,
11
11
  refusal_path
12
- } from "./chunk-BZMPVFDY.js";
13
- import "./chunk-JCRDBQXB.js";
14
- import "./chunk-GG72ANKI.js";
15
- import "./chunk-7WKYHEGU.js";
16
- import "./chunk-SLSFIWTX.js";
17
- import "./chunk-Z5TMJIPW.js";
18
- import "./chunk-NZN2UFI6.js";
12
+ } from "./chunk-4RWRP3FF.js";
13
+ import "./chunk-QARPP36N.js";
14
+ import "./chunk-DHSKBAQ2.js";
15
+ import "./chunk-E7LZL5AN.js";
16
+ import "./chunk-TORRSNDJ.js";
17
+ import "./chunk-NBEAGPS4.js";
18
+ import "./chunk-RW4XMF47.js";
19
19
  import "./chunk-NEC4AT4Z.js";
20
20
  export {
21
21
  DISABLED_VALUES,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  report_no_payload,
4
4
  run_hook
5
- } from "./chunk-7UBFU3CL.js";
5
+ } from "./chunk-PV3FWDSQ.js";
6
6
  import "./chunk-JBBMAPC4.js";
7
- import "./chunk-SLSFIWTX.js";
8
- import "./chunk-NZN2UFI6.js";
7
+ import "./chunk-TORRSNDJ.js";
8
+ import "./chunk-RW4XMF47.js";
9
9
  import "./chunk-NEC4AT4Z.js";
10
10
 
11
11
  // scripts/hooks/format-edited-cli.ts