@kenkaiiii/ggcoder 5.35.1 → 5.36.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/dist/core/progress/ranks.d.ts +14 -3
- package/dist/core/progress/ranks.d.ts.map +1 -1
- package/dist/core/progress/ranks.js +181 -12
- package/dist/core/progress/ranks.js.map +1 -1
- package/dist/core/progress/ranks.test.js +48 -7
- package/dist/core/progress/ranks.test.js.map +1 -1
- package/dist/core/progress/types.d.ts +2 -1
- package/dist/core/progress/types.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { ProgressFile, ProgressSnapshot, RankLadderEntry } from "./types.js";
|
|
2
|
-
export declare const MAX_LEVEL =
|
|
3
|
-
/**
|
|
2
|
+
export declare const MAX_LEVEL = 1000;
|
|
3
|
+
/**
|
|
4
|
+
* Cumulative XP required to reach level n (level 1 = 0).
|
|
5
|
+
*
|
|
6
|
+
* Levels 2–50 keep the original 100 × N^1.6 curve untouched. Past the knee the
|
|
7
|
+
* exponential would balloon to millions per level, so the cost switches to a linear
|
|
8
|
+
* ramp that starts exactly at the knee step (~1.7k) and grows to ~3.6k at level 1000
|
|
9
|
+
* — roughly 2.53M XP for the full climb, steady instead of a wall.
|
|
10
|
+
*/
|
|
4
11
|
export declare function xpForLevel(n: number): number;
|
|
5
12
|
/** Level for a cumulative XP total (1..MAX_LEVEL). */
|
|
6
13
|
export declare function levelForXp(xp: number): number;
|
|
@@ -16,6 +23,10 @@ export interface RankInfo {
|
|
|
16
23
|
export declare function rankForLevel(level: number): RankInfo;
|
|
17
24
|
/** Build the broadcast snapshot the webview renders verbatim. */
|
|
18
25
|
export declare function buildSnapshot(file: ProgressFile): ProgressSnapshot;
|
|
19
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* One entry per named rank (145 of them), not per level — above the knee a rank spans
|
|
28
|
+
* 10 levels, so a per-level ladder would ship 1000 near-duplicate rungs on every frame.
|
|
29
|
+
* `level` is the first level at which the rank is earned.
|
|
30
|
+
*/
|
|
20
31
|
export declare function rankLadder(): RankLadderEntry[];
|
|
21
32
|
//# sourceMappingURL=ranks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranks.d.ts","sourceRoot":"","sources":["../../../src/core/progress/ranks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ranks.d.ts","sourceRoot":"","sources":["../../../src/core/progress/ranks.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElF,eAAO,MAAM,SAAS,OAAO,CAAC;AAwM9B;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAU7C;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkBD,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAYpD;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,CA+BlE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,eAAe,EAAE,CAc9C"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
// The
|
|
2
|
-
|
|
1
|
+
// The 1000-level rank ladder: 145 named ranks across 29 tiers, with CSS effect ids
|
|
2
|
+
// and tier glyphs.
|
|
3
|
+
//
|
|
4
|
+
// Two paces, so nobody is ever re-ranked by an update:
|
|
5
|
+
// • Levels 1–50 (the original ladder) — 10 tiers × 5 ranks, one rank per level.
|
|
6
|
+
// • Levels 51–1000 (the long game) — 19 tiers × 5 ranks, one rank per 10 levels.
|
|
7
|
+
// Names, tiers and XP costs below level 51 are byte-identical to the old 50-level
|
|
8
|
+
// ladder, so an existing Deity stays a Deity and simply keeps climbing.
|
|
9
|
+
export const MAX_LEVEL = 1000;
|
|
10
|
+
/** Last level of the original one-rank-per-level ladder. */
|
|
11
|
+
const KNEE_LEVEL = 50;
|
|
12
|
+
/** Levels each rank spans above the knee. */
|
|
13
|
+
const LEVELS_PER_RANK = 10;
|
|
14
|
+
const RANKS_PER_TIER = 5;
|
|
3
15
|
const TIERS = [
|
|
4
16
|
{
|
|
5
17
|
name: "Boot",
|
|
@@ -61,28 +73,181 @@ const TIERS = [
|
|
|
61
73
|
effectId: "iridescent",
|
|
62
74
|
ranks: ["Anomaly", "Entity", "Overmind", "Deity", "Singularity"],
|
|
63
75
|
},
|
|
76
|
+
// ── Past the Singularity: levels 51–1000, one rank per 10 levels. ──
|
|
77
|
+
{
|
|
78
|
+
name: "Supernova",
|
|
79
|
+
glyph: "✶",
|
|
80
|
+
effectId: "ember",
|
|
81
|
+
ranks: ["Starforge", "Cataclysm", "Hypergiant", "Hypernova", "Supernova"],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "Quasar",
|
|
85
|
+
glyph: "✷",
|
|
86
|
+
effectId: "ember",
|
|
87
|
+
ranks: ["Blazecore", "Jetstream", "Starflare", "Radiance", "Quasar"],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "Nebula",
|
|
91
|
+
glyph: "❂",
|
|
92
|
+
effectId: "nebula",
|
|
93
|
+
ranks: ["Stardust", "Starbirth", "Veilspinner", "Auroral", "Nebulon"],
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "Horizon",
|
|
97
|
+
glyph: "✺",
|
|
98
|
+
effectId: "nebula",
|
|
99
|
+
ranks: ["Accretion", "Gravwell", "Lightcage", "Eventline", "Horizon"],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "Vortex",
|
|
103
|
+
glyph: "✸",
|
|
104
|
+
effectId: "rift",
|
|
105
|
+
ranks: ["Maelstrom", "Spiralbound", "Whirlcore", "Cyclonic", "Vortex"],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: "Rift",
|
|
109
|
+
glyph: "⬡",
|
|
110
|
+
effectId: "rift",
|
|
111
|
+
ranks: ["Fracture", "Seamripper", "Riftwalker", "Breachlord", "Worldrift"],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "Void",
|
|
115
|
+
glyph: "⬣",
|
|
116
|
+
effectId: "void",
|
|
117
|
+
ranks: ["Hollow", "Nullpointer", "Voidwalker", "Abyssal", "Voidcrown"],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "Aether",
|
|
121
|
+
glyph: "⧫",
|
|
122
|
+
effectId: "aether",
|
|
123
|
+
ranks: ["Etherborn", "Luminant", "Skyforge", "Aetherlord", "Empyrean"],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: "Eidolon",
|
|
127
|
+
glyph: "⬟",
|
|
128
|
+
effectId: "aether",
|
|
129
|
+
ranks: ["Revenant", "Wraithcode", "Phantasm", "Soulforge", "Eidolon"],
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: "Paradox",
|
|
133
|
+
glyph: "✳",
|
|
134
|
+
effectId: "prism",
|
|
135
|
+
ranks: ["Recursor", "Loopbreaker", "Strangeloop", "Antilogic", "Paradox"],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "Infinite",
|
|
139
|
+
glyph: "∞",
|
|
140
|
+
effectId: "prism",
|
|
141
|
+
ranks: ["Unbounded", "Limitless", "Aleph", "Transfinite", "Infinitum"],
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: "Eternal",
|
|
145
|
+
glyph: "✴",
|
|
146
|
+
effectId: "eternal",
|
|
147
|
+
ranks: ["Ageless", "Timeless", "Eonkeeper", "Perpetual", "Eternal"],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: "Genesis",
|
|
151
|
+
glyph: "✱",
|
|
152
|
+
effectId: "eternal",
|
|
153
|
+
ranks: ["Firstlight", "Sparkbearer", "Worldsmith", "Lifegiver", "Genesis"],
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: "Zenith",
|
|
157
|
+
glyph: "▲",
|
|
158
|
+
effectId: "platinum",
|
|
159
|
+
ranks: ["Summit", "Crestline", "Apex", "Pinnacle", "Zenith"],
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: "Absolute",
|
|
163
|
+
glyph: "◉",
|
|
164
|
+
effectId: "platinum",
|
|
165
|
+
ranks: ["Invariant", "Immutable", "Axiom", "Sovereign", "Absolute"],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: "Immortal",
|
|
169
|
+
glyph: "❈",
|
|
170
|
+
effectId: "radiant",
|
|
171
|
+
ranks: ["Undying", "Deathless", "Phoenix", "Everflame", "Immortal"],
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
name: "Transcendent",
|
|
175
|
+
glyph: "❋",
|
|
176
|
+
effectId: "radiant",
|
|
177
|
+
ranks: ["Ethereal", "Sublime", "Numinous", "Apotheosis", "Transcendent"],
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: "Omega",
|
|
181
|
+
glyph: "Ω",
|
|
182
|
+
effectId: "omega",
|
|
183
|
+
ranks: ["Terminus", "Lastlight", "Endbringer", "Omegacore", "Omega"],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: "Origin",
|
|
187
|
+
glyph: "✵",
|
|
188
|
+
effectId: "origin",
|
|
189
|
+
ranks: ["Firstcause", "Primemover", "Demiurge", "Worldseed", "Origin"],
|
|
190
|
+
},
|
|
64
191
|
];
|
|
65
|
-
/** Cumulative XP
|
|
192
|
+
/** Cumulative XP to reach the knee — the last level of the original curve. */
|
|
193
|
+
const KNEE_XP = Math.round(100 * Math.pow(KNEE_LEVEL, 1.6));
|
|
194
|
+
/** Cost of the knee level itself (level 49 → 50), the step the long game inherits. */
|
|
195
|
+
const KNEE_STEP = KNEE_XP - Math.round(100 * Math.pow(KNEE_LEVEL - 1, 1.6));
|
|
196
|
+
/** Each level past the knee costs this much more than the one before it. */
|
|
197
|
+
const STEP_GROWTH = 2;
|
|
198
|
+
/**
|
|
199
|
+
* Cumulative XP required to reach level n (level 1 = 0).
|
|
200
|
+
*
|
|
201
|
+
* Levels 2–50 keep the original 100 × N^1.6 curve untouched. Past the knee the
|
|
202
|
+
* exponential would balloon to millions per level, so the cost switches to a linear
|
|
203
|
+
* ramp that starts exactly at the knee step (~1.7k) and grows to ~3.6k at level 1000
|
|
204
|
+
* — roughly 2.53M XP for the full climb, steady instead of a wall.
|
|
205
|
+
*/
|
|
66
206
|
export function xpForLevel(n) {
|
|
67
207
|
if (n <= 1)
|
|
68
208
|
return 0;
|
|
69
|
-
|
|
209
|
+
if (n <= KNEE_LEVEL)
|
|
210
|
+
return Math.round(100 * Math.pow(n, 1.6));
|
|
211
|
+
const past = n - KNEE_LEVEL;
|
|
212
|
+
return KNEE_XP + KNEE_STEP * past + (STEP_GROWTH * past * (past - 1)) / 2;
|
|
70
213
|
}
|
|
71
214
|
/** Level for a cumulative XP total (1..MAX_LEVEL). */
|
|
72
215
|
export function levelForXp(xp) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
216
|
+
// Binary search — the ladder is 1000 rungs deep and this runs on every award.
|
|
217
|
+
let low = 1;
|
|
218
|
+
let high = MAX_LEVEL;
|
|
219
|
+
while (low < high) {
|
|
220
|
+
const mid = Math.ceil((low + high) / 2);
|
|
221
|
+
if (xp >= xpForLevel(mid))
|
|
222
|
+
low = mid;
|
|
223
|
+
else
|
|
224
|
+
high = mid - 1;
|
|
225
|
+
}
|
|
226
|
+
return low;
|
|
227
|
+
}
|
|
228
|
+
/** Tier + rank slot for a level: one rank per level to the knee, then one per 10. */
|
|
229
|
+
function slotForLevel(level) {
|
|
230
|
+
if (level <= KNEE_LEVEL) {
|
|
231
|
+
return {
|
|
232
|
+
tierIndex: Math.floor((level - 1) / RANKS_PER_TIER),
|
|
233
|
+
rankIndex: (level - 1) % RANKS_PER_TIER,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
const past = level - KNEE_LEVEL - 1;
|
|
237
|
+
const rankSlot = Math.floor(past / LEVELS_PER_RANK);
|
|
238
|
+
return {
|
|
239
|
+
tierIndex: KNEE_LEVEL / RANKS_PER_TIER + Math.floor(rankSlot / RANKS_PER_TIER),
|
|
240
|
+
rankIndex: rankSlot % RANKS_PER_TIER,
|
|
241
|
+
};
|
|
77
242
|
}
|
|
78
243
|
/** Rank metadata for a level (clamped to 1..MAX_LEVEL). */
|
|
79
244
|
export function rankForLevel(level) {
|
|
80
245
|
const l = Math.min(Math.max(1, Math.floor(level)), MAX_LEVEL);
|
|
81
|
-
const tierIndex =
|
|
246
|
+
const { tierIndex, rankIndex } = slotForLevel(l);
|
|
82
247
|
const tier = TIERS[tierIndex];
|
|
83
248
|
return {
|
|
84
249
|
level: l,
|
|
85
|
-
name: tier.ranks[
|
|
250
|
+
name: tier.ranks[rankIndex],
|
|
86
251
|
tier: tierIndex + 1,
|
|
87
252
|
tierName: tier.name,
|
|
88
253
|
tierGlyph: tier.glyph,
|
|
@@ -122,10 +287,14 @@ export function buildSnapshot(file) {
|
|
|
122
287
|
eventNonce: file.lastEvent?.nonce ?? null,
|
|
123
288
|
};
|
|
124
289
|
}
|
|
125
|
-
/**
|
|
290
|
+
/**
|
|
291
|
+
* One entry per named rank (145 of them), not per level — above the knee a rank spans
|
|
292
|
+
* 10 levels, so a per-level ladder would ship 1000 near-duplicate rungs on every frame.
|
|
293
|
+
* `level` is the first level at which the rank is earned.
|
|
294
|
+
*/
|
|
126
295
|
export function rankLadder() {
|
|
127
296
|
const ladder = [];
|
|
128
|
-
for (let level = 1; level <= MAX_LEVEL; level
|
|
297
|
+
for (let level = 1; level <= MAX_LEVEL; level += level <= KNEE_LEVEL ? 1 : LEVELS_PER_RANK) {
|
|
129
298
|
const rank = rankForLevel(level);
|
|
130
299
|
ladder.push({
|
|
131
300
|
level,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranks.js","sourceRoot":"","sources":["../../../src/core/progress/ranks.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ranks.js","sourceRoot":"","sources":["../../../src/core/progress/ranks.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,mBAAmB;AACnB,EAAE;AACF,uDAAuD;AACvD,kFAAkF;AAClF,sFAAsF;AACtF,kFAAkF;AAClF,wEAAwE;AAIxE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B,4DAA4D;AAC5D,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,6CAA6C;AAC7C,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,cAAc,GAAG,CAAC,CAAC;AASzB,MAAM,KAAK,GAAc;IACvB;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;KAChE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;KAC7D;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;KACjE;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;KACzE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC;KAC9E;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC5D;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;KACvE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;KACtE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,cAAc;QACxB,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC;KACnE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC;KACjE;IACD,sEAAsE;IACtE;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC;KAC1E;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;KACrE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;KACtE;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;KACtE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;KACvE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC;KAC3E;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC;KACvE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC;KACvE;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC;KACtE;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC;KAC1E;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC;KACvE;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;KACpE;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC;KAC3E;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC;KAC7D;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;KACpE;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;KACpE;IACD;QACE,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,CAAC;KACzE;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC;KACrE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;KACvE;CACF,CAAC;AAEF,8EAA8E;AAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,sFAAsF;AACtF,MAAM,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5E,4EAA4E;AAC5E,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACrB,IAAI,CAAC,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC;IAC5B,OAAO,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,8EAA8E;IAC9E,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,SAAS,CAAC;IACrB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC;;YAChC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAWD,qFAAqF;AACrF,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;QACxB,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;YACnD,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,cAAc;SACxC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;IACpD,OAAO;QACL,SAAS,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;QAC9E,SAAS,EAAE,QAAQ,GAAG,cAAc;KACrC,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9D,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3B,IAAI,EAAE,SAAS,GAAG,CAAC;QACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,IAAkB;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IAC1C,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAClF,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAChE,MAAM,EAAE;YACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;SACtC;QACD,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;QAClC,WAAW,EAAE,IAAI,CAAC,SAAS;QAC3B,MAAM,EAAE,UAAU,EAAE;QACpB,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI;QACxC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI;KAC1C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAC3F,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { MAX_LEVEL, levelForXp, rankForLevel, rankLadder, xpForLevel } from "./ranks.js";
|
|
3
3
|
describe("xpForLevel", () => {
|
|
4
|
-
it("matches the 100 × N^1.6 curve", () => {
|
|
4
|
+
it("matches the 100 × N^1.6 curve up to the level-50 knee", () => {
|
|
5
5
|
expect(xpForLevel(1)).toBe(0);
|
|
6
6
|
expect(xpForLevel(2)).toBe(303);
|
|
7
7
|
expect(xpForLevel(10)).toBe(3981);
|
|
8
8
|
expect(xpForLevel(50)).toBe(52282);
|
|
9
9
|
});
|
|
10
|
-
it("
|
|
10
|
+
it("continues past the knee at the knee's own step, then ramps", () => {
|
|
11
|
+
// No cliff and no cheap level at the seam: level 51 costs what level 50 did.
|
|
12
|
+
expect(xpForLevel(51) - xpForLevel(50)).toBe(xpForLevel(50) - xpForLevel(49));
|
|
13
|
+
expect(xpForLevel(1000) - xpForLevel(999)).toBe(3561);
|
|
14
|
+
// The full climb stays in reach: ~2.5M XP rather than the exponential's 6.3M.
|
|
15
|
+
expect(xpForLevel(MAX_LEVEL)).toBe(2533682);
|
|
16
|
+
});
|
|
17
|
+
it("is strictly increasing with a monotonically growing step", () => {
|
|
11
18
|
for (let n = 2; n <= MAX_LEVEL; n++) {
|
|
12
19
|
expect(xpForLevel(n)).toBeGreaterThan(xpForLevel(n - 1));
|
|
13
20
|
}
|
|
21
|
+
for (let n = 52; n <= MAX_LEVEL; n++) {
|
|
22
|
+
const step = xpForLevel(n) - xpForLevel(n - 1);
|
|
23
|
+
const prevStep = xpForLevel(n - 1) - xpForLevel(n - 2);
|
|
24
|
+
expect(step).toBeGreaterThan(prevStep);
|
|
25
|
+
}
|
|
14
26
|
});
|
|
15
27
|
});
|
|
16
28
|
describe("levelForXp", () => {
|
|
@@ -22,7 +34,14 @@ describe("levelForXp", () => {
|
|
|
22
34
|
expect(levelForXp(303)).toBe(2);
|
|
23
35
|
expect(levelForXp(3981)).toBe(10);
|
|
24
36
|
});
|
|
37
|
+
it("crosses boundaries above the knee too", () => {
|
|
38
|
+
for (const level of [50, 51, 52, 137, 500, 999, 1000]) {
|
|
39
|
+
expect(levelForXp(xpForLevel(level))).toBe(level);
|
|
40
|
+
expect(levelForXp(xpForLevel(level) - 1)).toBe(level - 1);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
25
43
|
it("caps at MAX_LEVEL", () => {
|
|
44
|
+
expect(MAX_LEVEL).toBe(1000);
|
|
26
45
|
expect(levelForXp(10_000_000)).toBe(MAX_LEVEL);
|
|
27
46
|
});
|
|
28
47
|
});
|
|
@@ -35,25 +54,47 @@ describe("rankForLevel", () => {
|
|
|
35
54
|
expect(rankForLevel(25).name).toBe("Netrunner");
|
|
36
55
|
expect(rankForLevel(50).name).toBe("Singularity");
|
|
37
56
|
});
|
|
38
|
-
it("
|
|
57
|
+
it("holds one rank per 10 levels above the knee", () => {
|
|
58
|
+
expect(rankForLevel(51).name).toBe("Starforge");
|
|
59
|
+
expect(rankForLevel(60).name).toBe("Starforge");
|
|
60
|
+
expect(rankForLevel(61).name).toBe("Cataclysm");
|
|
61
|
+
expect(rankForLevel(100).name).toBe("Supernova");
|
|
62
|
+
expect(rankForLevel(101).name).toBe("Blazecore");
|
|
63
|
+
expect(rankForLevel(1000).name).toBe("Origin");
|
|
64
|
+
});
|
|
65
|
+
it("assigns tiers 1–29", () => {
|
|
39
66
|
expect(rankForLevel(1).tier).toBe(1);
|
|
40
67
|
expect(rankForLevel(5).tier).toBe(1);
|
|
41
68
|
expect(rankForLevel(6).tier).toBe(2);
|
|
42
69
|
expect(rankForLevel(50).tier).toBe(10);
|
|
70
|
+
expect(rankForLevel(51).tier).toBe(11);
|
|
71
|
+
expect(rankForLevel(100).tier).toBe(11);
|
|
72
|
+
expect(rankForLevel(101).tier).toBe(12);
|
|
73
|
+
expect(rankForLevel(1000).tier).toBe(29);
|
|
43
74
|
});
|
|
44
75
|
it("clamps out-of-range levels", () => {
|
|
45
76
|
expect(rankForLevel(0).level).toBe(1);
|
|
46
|
-
expect(rankForLevel(
|
|
77
|
+
expect(rankForLevel(9999).level).toBe(1000);
|
|
47
78
|
});
|
|
48
79
|
});
|
|
49
80
|
describe("rankLadder", () => {
|
|
50
|
-
it("has
|
|
81
|
+
it("has 145 unique names with increasing xpRequired", () => {
|
|
51
82
|
const ladder = rankLadder();
|
|
52
|
-
expect(ladder).toHaveLength(
|
|
53
|
-
expect(new Set(ladder.map((r) => r.name)).size).toBe(
|
|
83
|
+
expect(ladder).toHaveLength(145);
|
|
84
|
+
expect(new Set(ladder.map((r) => r.name)).size).toBe(145);
|
|
54
85
|
for (let i = 1; i < ladder.length; i++) {
|
|
55
86
|
expect(ladder[i].xpRequired).toBeGreaterThan(ladder[i - 1].xpRequired);
|
|
56
87
|
}
|
|
57
88
|
});
|
|
89
|
+
it("lists the first level of every rank, covering the whole ladder", () => {
|
|
90
|
+
const ladder = rankLadder();
|
|
91
|
+
expect(ladder[0].level).toBe(1);
|
|
92
|
+
expect(ladder[49].level).toBe(50);
|
|
93
|
+
expect(ladder[50].level).toBe(51);
|
|
94
|
+
expect(ladder[ladder.length - 1].level).toBe(991);
|
|
95
|
+
for (const entry of ladder) {
|
|
96
|
+
expect(rankForLevel(entry.level).name).toBe(entry.name);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
58
99
|
});
|
|
59
100
|
//# sourceMappingURL=ranks.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranks.test.js","sourceRoot":"","sources":["../../../src/core/progress/ranks.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"ranks.test.js","sourceRoot":"","sources":["../../../src/core/progress/ranks.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,8 +52,9 @@ export interface ProgressFile {
|
|
|
52
52
|
/** HMAC-SHA256 of canonical JSON minus this field. */
|
|
53
53
|
sig: string;
|
|
54
54
|
}
|
|
55
|
-
/** One
|
|
55
|
+
/** One named rank of the 1000-level ladder, as sent to the webview. */
|
|
56
56
|
export interface RankLadderEntry {
|
|
57
|
+
/** First level at which this rank is earned (ranks span 10 levels above level 50). */
|
|
57
58
|
level: number;
|
|
58
59
|
name: string;
|
|
59
60
|
tier: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/progress/types.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,CAAC,CAAC;IACL,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,qDAAqD;QACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,4DAA4D;QAC5D,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,OAAO,EAAE;QACP,6DAA6D;QAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,kEAAkE;QAClE,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,uDAAuD;QACvD,KAAK,EAAE,MAAM,CAAC;QACd,wDAAwD;QACxD,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/progress/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenkaiiii/ggcoder",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.36.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI coding agent with OAuth authentication for Anthropic, OpenAI, and Gemini",
|
|
6
6
|
"license": "MIT",
|
|
@@ -115,9 +115,9 @@
|
|
|
115
115
|
"typescript-language-server": "^5.3.0",
|
|
116
116
|
"wrap-ansi": "^10.0.0",
|
|
117
117
|
"zod": "^4.4.3",
|
|
118
|
-
"@kenkaiiii/gg-agent": "5.
|
|
119
|
-
"@kenkaiiii/gg-
|
|
120
|
-
"@kenkaiiii/gg-
|
|
118
|
+
"@kenkaiiii/gg-agent": "5.36.0",
|
|
119
|
+
"@kenkaiiii/gg-core": "5.36.0",
|
|
120
|
+
"@kenkaiiii/gg-ai": "5.36.0"
|
|
121
121
|
},
|
|
122
122
|
"optionalDependencies": {
|
|
123
123
|
"@huggingface/transformers": "^3.6.0",
|