@theokit/sdk 4.20.0 → 4.21.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.
@@ -86,3 +86,30 @@ export interface CreateSandboxBackendOptions {
86
86
  * MISSING_BWRAP_WARNING. The durable posture lives in `resolveSandboxPosture` for the UI.
87
87
  */
88
88
  export declare function createSandboxBackend(opts: CreateSandboxBackendOptions): SandboxBackend;
89
+ /** Reset para testes — o latch é estado de módulo e testes precisam de isolamento. */
90
+ export declare function resetInteractiveWarnLatch(): void;
91
+ export interface InteractiveWrapOptions {
92
+ mode: SandboxMode;
93
+ /** `true` mantém a rede. Default `false`, igual ao `run_shell` não-interativo. */
94
+ network?: boolean;
95
+ /** Injetável para testes; default é a detecção real memoizada. */
96
+ detect?: () => BwrapDetection;
97
+ /** Injetável para testes; default é `console.warn` com redação. */
98
+ warn?: (message: string) => void;
99
+ }
100
+ /**
101
+ * A composição que o caminho interativo precisa — o par de `createSandboxBackend`.
102
+ *
103
+ * `createSandboxBackend` resolve isto para o caminho não-interativo devolvendo um BACKEND pronto. O
104
+ * 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` —, pronta
106
+ * para `new PtyInteractiveBackend({ wrapCommand: interactiveWrapCommand({ mode }) })`.
107
+ *
108
+ * A detecção é consultada **a cada wrap**, não congelada na construção: uma sessão interativa vive
109
+ * por horas, e uma detecção positiva obsoleta continuaria afirmando confinamento depois de o binário
110
+ * sumir (a revalidação por `existsSync` vive dentro de `detectBwrapMemoizado`).
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.
114
+ */
115
+ export declare function interactiveWrapCommand(opts: InteractiveWrapOptions): (command: string, cwd: string) => string | null;
@@ -86,3 +86,30 @@ export interface CreateSandboxBackendOptions {
86
86
  * MISSING_BWRAP_WARNING. The durable posture lives in `resolveSandboxPosture` for the UI.
87
87
  */
88
88
  export declare function createSandboxBackend(opts: CreateSandboxBackendOptions): SandboxBackend;
89
+ /** Reset para testes — o latch é estado de módulo e testes precisam de isolamento. */
90
+ export declare function resetInteractiveWarnLatch(): void;
91
+ export interface InteractiveWrapOptions {
92
+ mode: SandboxMode;
93
+ /** `true` mantém a rede. Default `false`, igual ao `run_shell` não-interativo. */
94
+ network?: boolean;
95
+ /** Injetável para testes; default é a detecção real memoizada. */
96
+ detect?: () => BwrapDetection;
97
+ /** Injetável para testes; default é `console.warn` com redação. */
98
+ warn?: (message: string) => void;
99
+ }
100
+ /**
101
+ * A composição que o caminho interativo precisa — o par de `createSandboxBackend`.
102
+ *
103
+ * `createSandboxBackend` resolve isto para o caminho não-interativo devolvendo um BACKEND pronto. O
104
+ * 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` —, pronta
106
+ * para `new PtyInteractiveBackend({ wrapCommand: interactiveWrapCommand({ mode }) })`.
107
+ *
108
+ * A detecção é consultada **a cada wrap**, não congelada na construção: uma sessão interativa vive
109
+ * por horas, e uma detecção positiva obsoleta continuaria afirmando confinamento depois de o binário
110
+ * sumir (a revalidação por `existsSync` vive dentro de `detectBwrapMemoizado`).
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.
114
+ */
115
+ export declare function interactiveWrapCommand(opts: InteractiveWrapOptions): (command: string, cwd: string) => string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theokit/sdk",
3
- "version": "4.20.0",
3
+ "version": "4.21.0",
4
4
  "description": "TypeScript SDK for the Theo agent harness \u2014 same surface, local or cloud.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/usetheodev/theokit-sdk#readme",