genshin-mods 4.3.3 → 4.5.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 (78) hide show
  1. package/.claude-plugin/plugin.json +10 -2
  2. package/README.md +47 -37
  3. package/package.json +2 -2
  4. package/src/models/CommandRefusal.ts +3 -0
  5. package/src/models/ModName.ts +9 -0
  6. package/src/models/SinFigures.ts +4 -0
  7. package/src/models/SinName.ts +12 -0
  8. package/src/models/SinPosterior.ts +4 -0
  9. package/src/models/SinScore.ts +7 -0
  10. package/src/models/SinStatusKind.ts +8 -0
  11. package/src/models/SinsResult.ts +6 -0
  12. package/src/models/TaskCall.ts +1 -7
  13. package/src/models/TaskStatus.ts +6 -0
  14. package/src/models/UsageWindow.ts +1 -3
  15. package/src/register.ts +7 -3
  16. package/src/services/InitialState.ts +7 -2
  17. package/src/services/ModDescriptionMap.ts +10 -6
  18. package/src/services/band/getCommissionSummary.ts +2 -1
  19. package/src/services/band/registerBand.ts +51 -4
  20. package/src/services/commission/foldTaskCall.ts +2 -1
  21. package/src/services/constants.ts +3 -8
  22. package/src/services/delegation/checkIsLookupCommand.ts +2 -8
  23. package/src/services/delegation/stripLeadingSegments.ts +8 -0
  24. package/src/services/diskScan/getDenyReason.ts +7 -0
  25. package/src/services/diskScan/getDiskScanRefusal.ts +2 -78
  26. package/src/services/diskScan/getScanCommandRefusal.ts +8 -0
  27. package/src/services/diskScan/getScanRefusal.ts +21 -0
  28. package/src/services/diskScan/isRecursiveFlag.ts +4 -0
  29. package/src/services/diskScan/isRecursiveLongFlag.ts +3 -0
  30. package/src/services/diskScan/isRoot.ts +8 -0
  31. package/src/services/diskScan/normalizePath.ts +7 -0
  32. package/src/services/diskScan/readGrepArguments.ts +25 -0
  33. package/src/services/diskScan/registerDiskScan.ts +2 -1
  34. package/src/services/readHome.ts +7 -0
  35. package/src/services/registerLifecycle.ts +93 -25
  36. package/src/services/resin/RateLimitKindUsageWindowMap.ts +2 -10
  37. package/src/services/resin/formatResetsAt.ts +1 -1
  38. package/src/services/resin/getReserveSummary.ts +4 -4
  39. package/src/services/resin/getReserveWindow.ts +8 -13
  40. package/src/services/resin/reserveText.ts +4 -4
  41. package/src/services/shell/getDollarSubstitutionBodies.ts +25 -0
  42. package/src/services/shell/getShellRefusal.ts +4 -38
  43. package/src/services/shell/tokenize.ts +8 -0
  44. package/src/services/sins/SinColorMap.ts +12 -0
  45. package/src/services/sins/SinStatusTextMap.ts +10 -0
  46. package/src/services/sins/appendSinEvidence.ts +18 -0
  47. package/src/services/sins/constants.ts +33 -0
  48. package/src/services/sins/getBarCells.ts +8 -0
  49. package/src/services/sins/getPosteriorTrail.ts +21 -0
  50. package/src/services/sins/getScoreAndSpread.ts +8 -0
  51. package/src/services/sins/getSinQuestions.ts +28 -0
  52. package/src/services/sins/getSinScores.ts +17 -0
  53. package/src/services/sins/getTrend.ts +13 -0
  54. package/src/services/sins/parseSinsResult.ts +5 -0
  55. package/src/services/sins/pickTypeSafeKey.ts +4 -0
  56. package/src/services/sins/readIsLightTheme.ts +8 -0
  57. package/src/services/sins/readSinStatus.ts +20 -0
  58. package/src/services/sins/readTypeSafeKey.ts +10 -0
  59. package/src/services/sins/registerSins.ts +56 -0
  60. package/src/services/sins/sinsScript.ts +47 -0
  61. package/src/services/ward/getAddRefusal.ts +14 -0
  62. package/src/services/ward/getCheckoutPeer.ts +1 -3
  63. package/src/services/ward/getCheckoutRefusal.ts +6 -0
  64. package/src/services/ward/getCleanRefusal.ts +8 -0
  65. package/src/services/ward/getComparablePath.ts +2 -0
  66. package/src/services/ward/getGitRefusal.ts +32 -0
  67. package/src/services/ward/getResetRefusal.ts +19 -0
  68. package/src/services/ward/getRestoreRefusal.ts +10 -0
  69. package/src/services/ward/getStashRefusal.ts +2 -0
  70. package/src/services/ward/getSubcommand.ts +16 -0
  71. package/src/services/ward/getWholeIndexDenyReason.ts +9 -0
  72. package/src/services/ward/getWholeIndexRefusal.ts +1 -121
  73. package/src/services/ward/isFlag.ts +1 -0
  74. package/src/services/ward/isWholeCheckout.ts +5 -0
  75. package/src/services/ward/registerWholeIndex.ts +2 -1
  76. package/src/services/ward/resolveRecordsPath.ts +2 -1
  77. package/src/services/ward/splitArguments.ts +14 -0
  78. package/types/index.d.ts +11 -5
@@ -1,9 +1,10 @@
1
1
  import type { EngineInterface } from "claude-code";
2
2
 
3
+ import { readHome } from "../readHome";
3
4
  import { getRecordsPath } from "./getRecordsPath";
4
5
 
5
6
  // The records file under the person's home folder, the home read from the engine's environment lookup
6
7
  // oxlint-disable-next-line func-style -- A declaration, not an arrow: the hooks module's bundle follows an imported helper that takes `$` only into a function declaration
7
8
  export async function resolveRecordsPath($: EngineInterface): Promise<string> {
8
- return getRecordsPath((await $.env.get("HOME")) ?? (await $.env.get("USERPROFILE")) ?? "");
9
+ return getRecordsPath(await readHome($));
9
10
  }
@@ -0,0 +1,14 @@
1
+ import { isFlag } from "./isFlag";
2
+
3
+ // The flags, the words before a `--` and the words after it, so a path is read whether or not git was given a separator
4
+ export const splitArguments = (args: string[]) => {
5
+ const separator = args.indexOf("--");
6
+ const before = separator === -1 ? args : args.slice(0, separator);
7
+ const after = separator === -1 ? [] : args.slice(separator + 1);
8
+ return {
9
+ after,
10
+ flags: before.filter((arg) => isFlag(arg)),
11
+ hasSeparator: separator !== -1,
12
+ operands: [...before.filter((arg) => !isFlag(arg)), ...after],
13
+ };
14
+ };
package/types/index.d.ts CHANGED
@@ -8,7 +8,6 @@ export interface Commission {
8
8
 
9
9
  export interface CommissionTask {
10
10
  id: string;
11
- // oxlint-disable-next-line literal-union/no-string-literal-union -- The engine's own task statuses, as its task tools spell them
12
11
  status: "completed" | "in_progress" | "pending";
13
12
  subject: string;
14
13
  }
@@ -18,22 +17,25 @@ export interface EnabledMods {
18
17
  commission: boolean;
19
18
  pulse: boolean;
20
19
  resin: boolean;
20
+ sins: boolean;
21
21
  veil: boolean;
22
22
  ward: boolean;
23
23
  waypoints: boolean;
24
24
  }
25
25
 
26
- // The rate-limit window past a usage line, named as its section spells it, the line it has passed, whether that line is
27
- // The wind-down rather than the maintenance tier, whether the tier was entered by spending ahead of an even pace rather
28
- // Than by the window's maintenance line, and when it resets; `""` in the name is the absent reserve
26
+ // The rate-limit window past a usage line, named as its section spells it, the line it has passed, whether the reserve
27
+ // Was entered by spending ahead of an even pace rather than by the window's maintenance line, and when it resets; `""`
28
+ // In the name is the absent reserve
29
29
  export interface ReserveWindow {
30
30
  isAheadOfPace: boolean;
31
- isWindDown: boolean;
32
31
  name: string;
33
32
  percentage: number;
34
33
  resetsAt: string;
35
34
  }
36
35
 
36
+ // What the sins mod last found: its scores when the call answered, or why it could not score the last prompt
37
+ export type SinStatus = "answered" | "failed" | "no-key" | "node-too-old" | "unchecked";
38
+
37
39
  export interface WardRecord {
38
40
  editedAt: number;
39
41
  sessionId: string;
@@ -51,6 +53,10 @@ declare module "claude-code" {
51
53
  lookupStreak: number;
52
54
  now: number;
53
55
  reserveWindow: ReserveWindow;
56
+ // Keyed by sin name, the last evidence values of each sin in order
57
+ sinHistory: Record<string, number[]>;
58
+ sinSession: number;
59
+ sinStatus: SinStatus;
54
60
  waypoints: string[];
55
61
  };
56
62
  }