mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-14 18:58:43 +02:00
Trois défauts sans rapport entre eux, tous visibles à l'écran. Jauge de contexte bloquée à « 0 / N (0 %) » : le comptage exact vient de usage.prompt_tokens (include_usage), qu'un llama-server récent a cessé de renvoyer. On note désormais si l'usage est arrivé ; sinon la fin de tour publie l'estimation qui pilote déjà la compaction — approximative, mais jamais absente. Et la souscription envoie la valeur courante juste après le rattrapage : une page rechargée affichait zéro sur une discussion pourtant pleine, faute d'événement ctx_used dans la fenêtre rejouée. Espace disque : « il ne reste que 11,9 Go » sur un partage Unraid qui en a des centaines. /mnt/user est servi par shfs, un FUSE qui agrège plusieurs disques — statfs y renvoie l'espace d'un seul, et ce chiffre REFUSAIT l'installation du modèle. Les systèmes de fichiers qui approximent (FUSE, overlay, NFS, CIFS, Ceph, Gluster) sont reconnus par leur magie : leur chiffre reste affiché, précédé d'un « ~ », mais ne bloque plus rien. Panneau Fichiers : le panneau entier défilait, emportant vers le haut l'en-tête, le fil d'Ariane et le pied (occupation disque, bouton .zip) dès qu'il y avait quelques fichiers. Seule la liste défile maintenant ; le pied reste en bas et l'état vide se centre. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
93 lines
2.1 KiB
JavaScript
93 lines
2.1 KiB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _types = require('../parser/tokenizer/types');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* Determine information about this named import or named export specifier.
|
|
*
|
|
* This syntax is the `a` from statements like these:
|
|
* import {A} from "./foo";
|
|
* export {A};
|
|
* export {A} from "./foo";
|
|
*
|
|
* As it turns out, we can exactly characterize the syntax meaning by simply
|
|
* counting the number of tokens, which can be from 1 to 4:
|
|
* {A}
|
|
* {type A}
|
|
* {A as B}
|
|
* {type A as B}
|
|
*
|
|
* In the type case, we never actually need the names in practice, so don't get
|
|
* them.
|
|
*
|
|
* TODO: There's some redundancy with the type detection here and the isType
|
|
* flag that's already present on tokens in TS mode. This function could
|
|
* potentially be simplified and/or pushed to the call sites to avoid the object
|
|
* allocation.
|
|
*/
|
|
function getImportExportSpecifierInfo(
|
|
tokens,
|
|
index = tokens.currentIndex(),
|
|
) {
|
|
let endIndex = index + 1;
|
|
if (isSpecifierEnd(tokens, endIndex)) {
|
|
// import {A}
|
|
const name = tokens.identifierNameAtIndex(index);
|
|
return {
|
|
isType: false,
|
|
leftName: name,
|
|
rightName: name,
|
|
endIndex,
|
|
};
|
|
}
|
|
endIndex++;
|
|
if (isSpecifierEnd(tokens, endIndex)) {
|
|
// import {type A}
|
|
return {
|
|
isType: true,
|
|
leftName: null,
|
|
rightName: null,
|
|
endIndex,
|
|
};
|
|
}
|
|
endIndex++;
|
|
if (isSpecifierEnd(tokens, endIndex)) {
|
|
// import {A as B}
|
|
return {
|
|
isType: false,
|
|
leftName: tokens.identifierNameAtIndex(index),
|
|
rightName: tokens.identifierNameAtIndex(index + 2),
|
|
endIndex,
|
|
};
|
|
}
|
|
endIndex++;
|
|
if (isSpecifierEnd(tokens, endIndex)) {
|
|
// import {type A as B}
|
|
return {
|
|
isType: true,
|
|
leftName: null,
|
|
rightName: null,
|
|
endIndex,
|
|
};
|
|
}
|
|
throw new Error(`Unexpected import/export specifier at ${index}`);
|
|
} exports.default = getImportExportSpecifierInfo;
|
|
|
|
function isSpecifierEnd(tokens, index) {
|
|
const token = tokens.tokens[index];
|
|
return token.type === _types.TokenType.braceR || token.type === _types.TokenType.comma;
|
|
}
|