@theokit/sdk 4.21.0 → 4.22.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.
|
@@ -33,6 +33,20 @@ export declare class LinuxSandbox extends LocalSandbox {
|
|
|
33
33
|
});
|
|
34
34
|
/** Extracted for test visibility — delegates to the pure `wrapCommandForSandbox` (M57, single wrap SoT). */
|
|
35
35
|
wrapCommand(command: string): string | null;
|
|
36
|
+
/**
|
|
37
|
+
* M75 review (arquitetura, HIGH) — sem este override a classe MENTIA.
|
|
38
|
+
*
|
|
39
|
+
* `LinuxSandbox` se documenta como "kernel-enforced sandbox backend", mas sobrescrevia apenas
|
|
40
|
+
* `execute`. `uploadFile` continuava o herdado de `LocalSandbox`, que escreve direto no host via
|
|
41
|
+
* `fs/promises` e aceita caminho ABSOLUTO — sem bwrap, sem seccomp, sem restrição de caminho. E
|
|
42
|
+
* `SandboxBackend.writeFile` delega a ele. O resultado era uma classe incoerente: ler, buscar e
|
|
43
|
+
* listar passavam pelo confinamento; escrever, não.
|
|
44
|
+
*
|
|
45
|
+
* Rotear pelo `execute` embrulhado resolve na raiz: a escrita passa a viver sob a MESMA política
|
|
46
|
+
* do resto — se o bwrap nega o caminho, a escrita falha, como deve. O conteúdo vai por stdin (não
|
|
47
|
+
* por argv) porque argv tem limite de tamanho e conteúdo de arquivo não tem.
|
|
48
|
+
*/
|
|
49
|
+
uploadFile(caminho: string, conteudo: string | Buffer): Promise<void>;
|
|
36
50
|
execute(command: string, opts?: {
|
|
37
51
|
timeoutMs?: number;
|
|
38
52
|
}): Promise<import("./types.js").ExecuteResult>;
|
|
@@ -102,14 +116,10 @@ export interface InteractiveWrapOptions {
|
|
|
102
116
|
*
|
|
103
117
|
* `createSandboxBackend` resolve isto para o caminho não-interativo devolvendo um BACKEND pronto. O
|
|
104
118
|
* PTY não aceita um backend: ele é dono do spawn e só admite transformar o comando. Esta função
|
|
105
|
-
* entrega a MESMA decisão na forma que o PTY aceita — `(command, cwd) => string | null
|
|
106
|
-
* para `new PtyInteractiveBackend({ wrapCommand: interactiveWrapCommand({ mode }) })`.
|
|
119
|
+
* entrega a MESMA decisão na forma que o PTY aceita — `(command, cwd) => string | null`.
|
|
107
120
|
*
|
|
108
121
|
* A detecção é consultada **a cada wrap**, não congelada na construção: uma sessão interativa vive
|
|
109
122
|
* por horas, e uma detecção positiva obsoleta continuaria afirmando confinamento depois de o binário
|
|
110
|
-
* sumir
|
|
111
|
-
*
|
|
112
|
-
* As duas rotas que devolvem `null` são semanticamente diferentes e o código não as funde:
|
|
113
|
-
* `danger-full-access` é opt-out explícito e NÃO avisa; bwrap indisponível é falha e avisa uma vez.
|
|
123
|
+
* sumir.
|
|
114
124
|
*/
|
|
115
125
|
export declare function interactiveWrapCommand(opts: InteractiveWrapOptions): (command: string, cwd: string) => string | null;
|
package/package.json
CHANGED