@tangle-network/agent-app 0.44.24 → 0.44.26
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/README.md +7 -7
- package/dist/chat-routes/index.d.ts +3 -3
- package/dist/chat-routes/index.js +5 -2
- package/dist/chat-routes/index.js.map +1 -1
- package/dist/{chunk-ALGZJBW2.js → chunk-Q74BS43G.js} +89 -27
- package/dist/chunk-Q74BS43G.js.map +1 -0
- package/dist/sandbox/index.d.ts +181 -23
- package/dist/sandbox/index.js +7 -1
- package/package.json +15 -13
- package/dist/chunk-ALGZJBW2.js.map +0 -1
package/dist/sandbox/index.d.ts
CHANGED
|
@@ -16,6 +16,186 @@ type Outcome<T> = {
|
|
|
16
16
|
error: Error;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
/** Define configuration options for resolving a provider and its model with optional API keys and routing details */
|
|
20
|
+
interface ProviderResolutionConfig {
|
|
21
|
+
routerBaseUrl?: string;
|
|
22
|
+
apiKey?: string;
|
|
23
|
+
providerName?: string;
|
|
24
|
+
modelName?: string;
|
|
25
|
+
defaultModel?: string;
|
|
26
|
+
openaiApiKey?: string;
|
|
27
|
+
allowKeylessModel?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/** Represent a fully configured model with optional API key and base URL for sandbox platform integration */
|
|
30
|
+
interface ResolvedModel {
|
|
31
|
+
model: string;
|
|
32
|
+
provider: string;
|
|
33
|
+
apiKey?: string;
|
|
34
|
+
baseUrl?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Why a model failed to resolve into something transportable to the sandbox
|
|
38
|
+
* platform. `no_provider` — a model id exists but no provider name could be
|
|
39
|
+
* derived (no explicit `providerName`, and no key present to infer one from).
|
|
40
|
+
* `no_api_key` — a provider AND model both resolved, but no credential is
|
|
41
|
+
* configured and the caller did not opt into `allowKeylessModel`.
|
|
42
|
+
*/
|
|
43
|
+
type ModelSelectionError = 'no_provider' | 'no_api_key';
|
|
44
|
+
/**
|
|
45
|
+
* Which precedence slot supplied the failed/succeeded model id:
|
|
46
|
+
* `override` — the caller's per-turn `{ model }` argument.
|
|
47
|
+
* `config` — `provider.modelName`.
|
|
48
|
+
* `default` — `provider.defaultModel` (only ever consulted for an
|
|
49
|
+
* openai/openai-compat provider shape).
|
|
50
|
+
*/
|
|
51
|
+
type ModelSelectionSource = 'override' | 'config' | 'default';
|
|
52
|
+
/**
|
|
53
|
+
* A model id was named (by override, config, or default) but is not
|
|
54
|
+
* transportable to the sandbox platform. Carries enough to explain WHY
|
|
55
|
+
* without the caller re-deriving the override/config/default precedence
|
|
56
|
+
* chain itself (that re-derivation is how gtm-agent#665 happened — a caller
|
|
57
|
+
* guessed loudness from the wrong slot and dropped a user-selected model).
|
|
58
|
+
*/
|
|
59
|
+
type ModelSelectionFailure = {
|
|
60
|
+
succeeded: false;
|
|
61
|
+
error: 'no_provider';
|
|
62
|
+
model: string;
|
|
63
|
+
source: ModelSelectionSource;
|
|
64
|
+
} | {
|
|
65
|
+
succeeded: false;
|
|
66
|
+
error: 'no_api_key';
|
|
67
|
+
model: string;
|
|
68
|
+
provider: string;
|
|
69
|
+
source: ModelSelectionSource;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* The three-state outcome of resolving a model: `{ succeeded: true, value:
|
|
73
|
+
* undefined }` means NOTHING was requested (the legitimate box-default
|
|
74
|
+
* configuration — not an error); `{ succeeded: true, value: ResolvedModel }`
|
|
75
|
+
* means a fully transportable model resolved; anything else is a
|
|
76
|
+
* {@link ModelSelectionFailure} — a model WAS named but can't be sent.
|
|
77
|
+
*/
|
|
78
|
+
type ModelSelection = {
|
|
79
|
+
succeeded: true;
|
|
80
|
+
value: ResolvedModel | undefined;
|
|
81
|
+
} | ModelSelectionFailure;
|
|
82
|
+
/**
|
|
83
|
+
* Resolve a provider + model configuration into a typed three-state outcome
|
|
84
|
+
* that separates "nothing requested" from "something requested but
|
|
85
|
+
* untransportable" — the distinction {@link resolveModel} collapses and the
|
|
86
|
+
* one that caused gtm-agent#665 (a validated user-selected model silently
|
|
87
|
+
* dropped, box default substituted, durable row still recording the user's
|
|
88
|
+
* choice).
|
|
89
|
+
*
|
|
90
|
+
* Precedence (identical to the legacy `resolveModel`, byte-for-byte):
|
|
91
|
+
* provider is computed first (`providerName`, else inferred `openai-compat`
|
|
92
|
+
* from a present key, else inferred `openai` from a present
|
|
93
|
+
* `openaiApiKey`, else unresolved); the model id is `override.model` else
|
|
94
|
+
* `config.modelName` else — ONLY when the provider is `openai` or
|
|
95
|
+
* `openai-compat` — `config.defaultModel`; the api key is
|
|
96
|
+
* `override.modelApiKey` else `config.apiKey` else — only for provider
|
|
97
|
+
* `openai` — `config.openaiApiKey`.
|
|
98
|
+
*
|
|
99
|
+
* Two behavioral deltas from the legacy function:
|
|
100
|
+
* 1. Every string field (`routerBaseUrl`, `apiKey`, `providerName`,
|
|
101
|
+
* `modelName`, `defaultModel`, `openaiApiKey`, `override.model`,
|
|
102
|
+
* `override.modelApiKey`) is normalized through {@link trimOrNull} first,
|
|
103
|
+
* so `''` (and whitespace-only strings) are treated as absent instead of
|
|
104
|
+
* poisoning the `??` precedence chain — the issue's second stated defect.
|
|
105
|
+
* This also means a value is trimmed (`' gpt-5 '` resolves to `'gpt-5'`).
|
|
106
|
+
* 2. The outcome is three-state instead of collapsing to `undefined`: no
|
|
107
|
+
* model derivable from any slot → `{ succeeded: true, value: undefined }`
|
|
108
|
+
* (still the legitimate "let the box pick its own default" case, NOT an
|
|
109
|
+
* error); a model id resolved but no provider could be derived → a
|
|
110
|
+
* `no_provider` failure; a model + provider resolved but no api key (and
|
|
111
|
+
* `allowKeylessModel` was not set) → a `no_api_key` failure. Both failure
|
|
112
|
+
* arms carry `source` so a caller can apply a loudness policy without
|
|
113
|
+
* re-deriving which precedence slot supplied the model.
|
|
114
|
+
*/
|
|
115
|
+
declare function resolveModelSelection(config: ProviderResolutionConfig | undefined, override?: {
|
|
116
|
+
model?: string;
|
|
117
|
+
modelApiKey?: string;
|
|
118
|
+
}): ModelSelection;
|
|
119
|
+
/**
|
|
120
|
+
* Resolve and return the appropriate model configuration based on provider
|
|
121
|
+
* settings and optional overrides.
|
|
122
|
+
*
|
|
123
|
+
* Migration note (intentionally NOT tagged `@deprecated`): this is a thin,
|
|
124
|
+
* source-compatible wrapper over {@link resolveModelSelection} that collapses
|
|
125
|
+
* its three-state outcome back down to `ResolvedModel | undefined`, exactly
|
|
126
|
+
* as before. It stays correct for the common case (no explicit model requested, or a
|
|
127
|
+
* fully-transportable one), but it CANNOT distinguish "nothing was
|
|
128
|
+
* requested" from "a named model could not be transported" — the ambiguity
|
|
129
|
+
* that caused gtm-agent#665. Prefer {@link resolveModelSelection} directly,
|
|
130
|
+
* or {@link requireTransportableModel} for the fail-loud-on-explicit-model
|
|
131
|
+
* policy the internal sandbox callers use. Not tagged `@deprecated`: it
|
|
132
|
+
* remains the correct call for a caller that never sets an explicit
|
|
133
|
+
* override and only wants "the box's default is fine" semantics; a hard
|
|
134
|
+
* deprecation is a later-major decision, not this fix's.
|
|
135
|
+
*
|
|
136
|
+
* The only behavior change on this entry point versus before is the
|
|
137
|
+
* empty-string bugfix that comes free through delegation (issue #302's
|
|
138
|
+
* second defect) — every signature and the `undefined` return semantics are
|
|
139
|
+
* unchanged.
|
|
140
|
+
*/
|
|
141
|
+
declare function resolveModel(config: ProviderResolutionConfig | undefined, override?: {
|
|
142
|
+
model?: string;
|
|
143
|
+
modelApiKey?: string;
|
|
144
|
+
}): ResolvedModel | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* Thrown by {@link requireTransportableModel} when a model that was
|
|
147
|
+
* EXPLICITLY requested via a per-turn `{ model }` override cannot be
|
|
148
|
+
* transported to the sandbox platform. The message names the model, which
|
|
149
|
+
* precedence slot supplied it, what's missing, and the fix, and states
|
|
150
|
+
* plainly that the requested model was NOT sent to the box (the failure mode
|
|
151
|
+
* this error exists to make impossible to miss — gtm-agent#665 silently
|
|
152
|
+
* substituted the box default instead of a user-selected model).
|
|
153
|
+
*
|
|
154
|
+
* The error class itself carries no opinion about *when* it should be
|
|
155
|
+
* thrown — it is constructed from any {@link ModelSelectionFailure},
|
|
156
|
+
* regardless of `source`. A caller wanting a stricter policy (e.g. also
|
|
157
|
+
* fail-loud on an untransportable configured `provider.modelName`) can call
|
|
158
|
+
* {@link resolveModelSelection} directly and throw this itself.
|
|
159
|
+
*/
|
|
160
|
+
declare class SandboxModelResolutionError extends Error {
|
|
161
|
+
readonly code: ModelSelectionError;
|
|
162
|
+
readonly model: string;
|
|
163
|
+
readonly provider?: string;
|
|
164
|
+
readonly source: ModelSelectionSource;
|
|
165
|
+
constructor(failure: ModelSelectionFailure, context: string);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Shared fail-loud policy for the sandbox platform's three internal model
|
|
169
|
+
* callers (`ensureWorkspaceSandbox`'s `backendModelAtCreate`,
|
|
170
|
+
* `streamSandboxPrompt`, `driveSandboxTurn`): a `ModelSelection` in, a plain
|
|
171
|
+
* `ResolvedModel | undefined` out, so downstream code is unchanged from
|
|
172
|
+
* before this fix.
|
|
173
|
+
*
|
|
174
|
+
* The policy: success delegates straight through. A failure whose `source`
|
|
175
|
+
* is `'override'` means a PER-TURN model was explicitly selected THIS turn
|
|
176
|
+
* (a live, user-driven choice — passed as `{ model }`) and could not be
|
|
177
|
+
* sent; substituting the box default there is exactly the gtm-agent#665
|
|
178
|
+
* defect, so it throws {@link SandboxModelResolutionError} rather than
|
|
179
|
+
* silently falling back.
|
|
180
|
+
*
|
|
181
|
+
* A failure whose `source` is `'config'` or `'default'` means a
|
|
182
|
+
* *configured* `provider.modelName` / `provider.defaultModel` couldn't
|
|
183
|
+
* resolve — nobody made a choice this turn; the value came from board
|
|
184
|
+
* config that may simply describe "the platform supplies the credential."
|
|
185
|
+
* Shipped consumers rely on exactly that: tax-agent ships a shell with
|
|
186
|
+
* `provider: { providerName: 'openai-compat', modelName, routerBaseUrl }`
|
|
187
|
+
* and no `apiKey`/`allowKeylessModel`, with a contract test asserting
|
|
188
|
+
* `ensureWorkspaceSandbox` creation SUCCEEDS with the model silently
|
|
189
|
+
* dropped so the sandbox platform mints its own in-container credential
|
|
190
|
+
* (`apps/web/tests/sandbox-service-contract.test.ts`). A config-loud policy
|
|
191
|
+
* here would break every fresh tax sandbox provisioning and every tax turn.
|
|
192
|
+
* So both `'config'` and `'default'` keep the pre-#302 logged-skip
|
|
193
|
+
* behavior: `console.error` and drop, letting the box use its own default.
|
|
194
|
+
* A product wanting strict enforcement of a configured `provider.modelName`
|
|
195
|
+
* can call {@link resolveModelSelection} directly and apply its own policy.
|
|
196
|
+
*/
|
|
197
|
+
declare function requireTransportableModel(selection: ModelSelection, context: string): ResolvedModel | undefined;
|
|
198
|
+
|
|
19
199
|
/**
|
|
20
200
|
* Reading arbitrary bytes out of a sandbox over an exec channel that only
|
|
21
201
|
* speaks text.
|
|
@@ -358,16 +538,6 @@ interface SandboxResourceConfig {
|
|
|
358
538
|
maxLifetimeSeconds: number;
|
|
359
539
|
idleTimeoutSeconds: number;
|
|
360
540
|
}
|
|
361
|
-
/** Define configuration options for resolving a provider and its model with optional API keys and routing details */
|
|
362
|
-
interface ProviderResolutionConfig {
|
|
363
|
-
routerBaseUrl?: string;
|
|
364
|
-
apiKey?: string;
|
|
365
|
-
providerName?: string;
|
|
366
|
-
modelName?: string;
|
|
367
|
-
defaultModel?: string;
|
|
368
|
-
openaiApiKey?: string;
|
|
369
|
-
allowKeylessModel?: boolean;
|
|
370
|
-
}
|
|
371
541
|
/** Define the context for building a sandbox including workspace, integrations, and optional user ID */
|
|
372
542
|
interface SandboxBuildContext {
|
|
373
543
|
workspaceId: string;
|
|
@@ -646,18 +816,6 @@ declare function peekWorkspaceSandbox(shell: SandboxRuntimeConfig, options: {
|
|
|
646
816
|
}): Promise<PeekWorkspaceSandboxOutcome>;
|
|
647
817
|
/** Resolve or create a workspace sandbox instance with optional reuse and progress tracking */
|
|
648
818
|
declare function ensureWorkspaceSandbox(shell: SandboxRuntimeConfig, options: EnsureWorkspaceSandboxOptions): Promise<SandboxInstance>;
|
|
649
|
-
/** Represent a fully configured model with optional API key and base URL for sandbox platform integration */
|
|
650
|
-
interface ResolvedModel {
|
|
651
|
-
model: string;
|
|
652
|
-
provider: string;
|
|
653
|
-
apiKey?: string;
|
|
654
|
-
baseUrl?: string;
|
|
655
|
-
}
|
|
656
|
-
/** Resolve and return the appropriate model configuration based on provider settings and optional overrides */
|
|
657
|
-
declare function resolveModel(config: ProviderResolutionConfig | undefined, override?: {
|
|
658
|
-
model?: string;
|
|
659
|
-
modelApiKey?: string;
|
|
660
|
-
}): ResolvedModel | undefined;
|
|
661
819
|
/** Extract a single element type from the array parameter of SandboxInstance's streamPrompt method */
|
|
662
820
|
type PromptInputPart = Extract<Parameters<SandboxInstance['streamPrompt']>[0], readonly unknown[]>[number];
|
|
663
821
|
/** Build a single string combining conversation history and the current user message */
|
|
@@ -818,4 +976,4 @@ declare function isTerminalPromptEvent(event: unknown): boolean;
|
|
|
818
976
|
/** Resolve the interactive question text from a structured event or return null if none found */
|
|
819
977
|
declare function detectInteractiveQuestion(event: unknown): string | null;
|
|
820
978
|
|
|
821
|
-
export { type AppToolDescriptor, type AuthenticatedSandboxUser, type BuildAppToolMcpServersOptions, type BuildSandboxToolFileMountsOptions, DEFAULT_SANDBOX_RESOURCES, type DriveSandboxTurnOptions, ENV_TOTAL_MAX_BYTES, ENV_VALUE_MAX_BYTES, type EnsureWorkspaceSandboxOptions, type LivenessProbeConfig, type MemberSyncSeam, type Outcome, PROVISION_PAYLOAD_MAX_BYTES, type PeekWorkspaceSandboxOutcome, type ProfileComposeOptions, type PromptInputPart, type ProviderResolutionConfig, type ProvisionPayloadSections, type ProvisionProfileSection, type ResolveSandboxClientCredentialsOptions, type ResolvedModel, type SandboxApiCredentials, type SandboxBuildContext, type SandboxClientCredentials, type SandboxCredentialEnvironment, type SandboxExecChannel, type SandboxExecOptions, type SandboxFileBytesOutcome, type SandboxFileSizeOutcome, type SandboxPermissionLevel, SandboxRecoveryFailedError, type SandboxRecoveryPhase, type SandboxResourceConfig, type SandboxRestoreSpec, SandboxRuntimeAuthRefreshError, type SandboxRuntimeConfig, type SandboxRuntimeConnection, type SandboxScope, type SandboxStepTransition, type SandboxTerminalTokenOptions, type SandboxTerminalTokenResult, type SandboxTerminalTokenSubject, type SandboxTerminalWsMatch, type SandboxToolPathOptions, type SandboxToolSpec, type ScopedTokenResult, type SecretStore, type StoppedSandboxResumeFailure, type StoppedSandboxResumeRecovery, type StreamSandboxPromptOptions, type TerminalProxyIdentity, type WorkspaceSandboxConnectionArgs, type WorkspaceSandboxConnectionHandlerOptions, type WorkspaceSandboxEnsureContext, type WorkspaceSandboxInstanceLike, type WorkspaceSandboxManager, type WorkspaceSandboxManagerOptions, type WorkspaceSandboxRuntimeProxyArgs, type WorkspaceSandboxRuntimeProxyHandlerOptions, type WorkspaceSandboxTerminalUpgradeHandlerOptions, type WriteProfileFilesOptions, assertEnvWithinLimits, assertProvisionPayloadWithinCap, attachReasoningEffort, bearerSubprotocolToken, bearerToken, buildAppToolMcpServers, buildSandboxRuntimeProxyHeaders, buildSandboxToolFileMounts, buildSandboxToolPathSetupScript, classifySeveredStream, collectSandboxPromptText, createSandboxTerminalToken, createWorkspaceSandboxConnectionHandler, createWorkspaceSandboxManager, createWorkspaceSandboxRuntimeProxyHandler, createWorkspaceSandboxTerminalUpgradeHandler, deferredCorpusHash, deleteSecret, detectInteractiveQuestion, driveSandboxTurn, encodeSandboxRuntimePath, ensureWorkspaceSandbox, flattenHistory, getClient, isSandboxTerminalWsUpgrade, isTerminalPromptEvent, matchSandboxTerminalWsPath, mergeExtraMcp, mergeHistoryIntoParts, mintSandboxScopedToken, mintTerminalProxyToken, peekWorkspaceSandbox, readSandboxBinaryBytes, readSecret, resetClientCache, resolveModel, resolveSandboxClientCredentials, runSandboxPrompt, runSandboxToolPathSetup, sandboxToolBinDir, sandboxToolPath, sandboxToolRootDir, secretStoreFromClient, shellQuote, splitDeferredProfileFiles, statSandboxFileSize, storeSecret, streamSandboxPrompt, syncSandboxMemberAdd, syncSandboxMemberRemove, syncSandboxMemberRole, terminalTokenFromRequest, verifySandboxTerminalToken, verifyTerminalProxyToken, writeProfileFilesToBox };
|
|
979
|
+
export { type AppToolDescriptor, type AuthenticatedSandboxUser, type BuildAppToolMcpServersOptions, type BuildSandboxToolFileMountsOptions, DEFAULT_SANDBOX_RESOURCES, type DriveSandboxTurnOptions, ENV_TOTAL_MAX_BYTES, ENV_VALUE_MAX_BYTES, type EnsureWorkspaceSandboxOptions, type LivenessProbeConfig, type MemberSyncSeam, type ModelSelection, type ModelSelectionError, type ModelSelectionFailure, type ModelSelectionSource, type Outcome, PROVISION_PAYLOAD_MAX_BYTES, type PeekWorkspaceSandboxOutcome, type ProfileComposeOptions, type PromptInputPart, type ProviderResolutionConfig, type ProvisionPayloadSections, type ProvisionProfileSection, type ResolveSandboxClientCredentialsOptions, type ResolvedModel, type SandboxApiCredentials, type SandboxBuildContext, type SandboxClientCredentials, type SandboxCredentialEnvironment, type SandboxExecChannel, type SandboxExecOptions, type SandboxFileBytesOutcome, type SandboxFileSizeOutcome, SandboxModelResolutionError, type SandboxPermissionLevel, SandboxRecoveryFailedError, type SandboxRecoveryPhase, type SandboxResourceConfig, type SandboxRestoreSpec, SandboxRuntimeAuthRefreshError, type SandboxRuntimeConfig, type SandboxRuntimeConnection, type SandboxScope, type SandboxStepTransition, type SandboxTerminalTokenOptions, type SandboxTerminalTokenResult, type SandboxTerminalTokenSubject, type SandboxTerminalWsMatch, type SandboxToolPathOptions, type SandboxToolSpec, type ScopedTokenResult, type SecretStore, type StoppedSandboxResumeFailure, type StoppedSandboxResumeRecovery, type StreamSandboxPromptOptions, type TerminalProxyIdentity, type WorkspaceSandboxConnectionArgs, type WorkspaceSandboxConnectionHandlerOptions, type WorkspaceSandboxEnsureContext, type WorkspaceSandboxInstanceLike, type WorkspaceSandboxManager, type WorkspaceSandboxManagerOptions, type WorkspaceSandboxRuntimeProxyArgs, type WorkspaceSandboxRuntimeProxyHandlerOptions, type WorkspaceSandboxTerminalUpgradeHandlerOptions, type WriteProfileFilesOptions, assertEnvWithinLimits, assertProvisionPayloadWithinCap, attachReasoningEffort, bearerSubprotocolToken, bearerToken, buildAppToolMcpServers, buildSandboxRuntimeProxyHeaders, buildSandboxToolFileMounts, buildSandboxToolPathSetupScript, classifySeveredStream, collectSandboxPromptText, createSandboxTerminalToken, createWorkspaceSandboxConnectionHandler, createWorkspaceSandboxManager, createWorkspaceSandboxRuntimeProxyHandler, createWorkspaceSandboxTerminalUpgradeHandler, deferredCorpusHash, deleteSecret, detectInteractiveQuestion, driveSandboxTurn, encodeSandboxRuntimePath, ensureWorkspaceSandbox, flattenHistory, getClient, isSandboxTerminalWsUpgrade, isTerminalPromptEvent, matchSandboxTerminalWsPath, mergeExtraMcp, mergeHistoryIntoParts, mintSandboxScopedToken, mintTerminalProxyToken, peekWorkspaceSandbox, readSandboxBinaryBytes, readSecret, requireTransportableModel, resetClientCache, resolveModel, resolveModelSelection, resolveSandboxClientCredentials, runSandboxPrompt, runSandboxToolPathSetup, sandboxToolBinDir, sandboxToolPath, sandboxToolRootDir, secretStoreFromClient, shellQuote, splitDeferredProfileFiles, statSandboxFileSize, storeSecret, streamSandboxPrompt, syncSandboxMemberAdd, syncSandboxMemberRemove, syncSandboxMemberRole, terminalTokenFromRequest, verifySandboxTerminalToken, verifyTerminalProxyToken, writeProfileFilesToBox };
|
package/dist/sandbox/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
ENV_TOTAL_MAX_BYTES,
|
|
4
4
|
ENV_VALUE_MAX_BYTES,
|
|
5
5
|
PROVISION_PAYLOAD_MAX_BYTES,
|
|
6
|
+
SandboxModelResolutionError,
|
|
6
7
|
SandboxRecoveryFailedError,
|
|
7
8
|
SandboxRuntimeAuthRefreshError,
|
|
8
9
|
assertEnvWithinLimits,
|
|
@@ -39,8 +40,10 @@ import {
|
|
|
39
40
|
peekWorkspaceSandbox,
|
|
40
41
|
readSandboxBinaryBytes,
|
|
41
42
|
readSecret,
|
|
43
|
+
requireTransportableModel,
|
|
42
44
|
resetClientCache,
|
|
43
45
|
resolveModel,
|
|
46
|
+
resolveModelSelection,
|
|
44
47
|
resolveSandboxClientCredentials,
|
|
45
48
|
runSandboxPrompt,
|
|
46
49
|
runSandboxToolPathSetup,
|
|
@@ -60,7 +63,7 @@ import {
|
|
|
60
63
|
verifySandboxTerminalToken,
|
|
61
64
|
verifyTerminalProxyToken,
|
|
62
65
|
writeProfileFilesToBox
|
|
63
|
-
} from "../chunk-
|
|
66
|
+
} from "../chunk-Q74BS43G.js";
|
|
64
67
|
import "../chunk-LWSJK546.js";
|
|
65
68
|
import "../chunk-CQZSAR77.js";
|
|
66
69
|
import "../chunk-ICOHEZK6.js";
|
|
@@ -73,6 +76,7 @@ export {
|
|
|
73
76
|
ENV_TOTAL_MAX_BYTES,
|
|
74
77
|
ENV_VALUE_MAX_BYTES,
|
|
75
78
|
PROVISION_PAYLOAD_MAX_BYTES,
|
|
79
|
+
SandboxModelResolutionError,
|
|
76
80
|
SandboxRecoveryFailedError,
|
|
77
81
|
SandboxRuntimeAuthRefreshError,
|
|
78
82
|
assertEnvWithinLimits,
|
|
@@ -109,8 +113,10 @@ export {
|
|
|
109
113
|
peekWorkspaceSandbox,
|
|
110
114
|
readSandboxBinaryBytes,
|
|
111
115
|
readSecret,
|
|
116
|
+
requireTransportableModel,
|
|
112
117
|
resetClientCache,
|
|
113
118
|
resolveModel,
|
|
119
|
+
resolveModelSelection,
|
|
114
120
|
resolveSandboxClientCredentials,
|
|
115
121
|
runSandboxPrompt,
|
|
116
122
|
runSandboxToolPathSetup,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/agent-app",
|
|
3
|
-
"version": "0.44.
|
|
3
|
+
"version": "0.44.26",
|
|
4
4
|
"packageManager": "pnpm@10.33.4",
|
|
5
5
|
"description": "Application-shell framework for Tangle agent products: a bounded tool loop, the structured agent→app tool side channel, integration-hub client, per-workspace billing, and crypto — composed over the Tangle agent substrate through typed seams.",
|
|
6
6
|
"keywords": [
|
|
@@ -420,15 +420,15 @@
|
|
|
420
420
|
"@cloudflare/workers-types": "^4.20250620.0",
|
|
421
421
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
422
422
|
"@tangle-network/agent-docs": "0.2.0",
|
|
423
|
-
"@tangle-network/agent-eval": "0.
|
|
423
|
+
"@tangle-network/agent-eval": "0.134.1",
|
|
424
424
|
"@tangle-network/agent-integrations": "^0.44.0",
|
|
425
425
|
"@tangle-network/agent-interface": "0.36.0",
|
|
426
|
-
"@tangle-network/agent-knowledge": "6.1.
|
|
427
|
-
"@tangle-network/agent-profile-materialize": "0.9.
|
|
428
|
-
"@tangle-network/agent-runtime": "0.
|
|
426
|
+
"@tangle-network/agent-knowledge": "6.1.7",
|
|
427
|
+
"@tangle-network/agent-profile-materialize": "0.9.2",
|
|
428
|
+
"@tangle-network/agent-runtime": "0.108.0",
|
|
429
429
|
"@tangle-network/brand": "1.1.0",
|
|
430
|
-
"@tangle-network/sandbox": "0.15.
|
|
431
|
-
"@tangle-network/sandbox-ui": "0.90.
|
|
430
|
+
"@tangle-network/sandbox": "0.15.2",
|
|
431
|
+
"@tangle-network/sandbox-ui": "0.90.3",
|
|
432
432
|
"@tangle-network/ui": "^11.0.0",
|
|
433
433
|
"@testing-library/dom": "^10.4.1",
|
|
434
434
|
"@testing-library/react": "^16.3.2",
|
|
@@ -436,6 +436,7 @@
|
|
|
436
436
|
"@types/node": "^25.6.0",
|
|
437
437
|
"@types/react": "^19.0.0",
|
|
438
438
|
"@types/react-dom": "19.2.3",
|
|
439
|
+
"@types/semver": "^7.7.1",
|
|
439
440
|
"@xterm/addon-fit": "^0.11.0",
|
|
440
441
|
"@xterm/addon-web-links": "^0.12.0",
|
|
441
442
|
"@xterm/addon-webgl": "^0.19.0",
|
|
@@ -455,6 +456,7 @@
|
|
|
455
456
|
"react-konva": "^19.2.5",
|
|
456
457
|
"react-router": "^7.15.1",
|
|
457
458
|
"resend": "^6.12.4",
|
|
459
|
+
"semver": "^7.8.5",
|
|
458
460
|
"tsup": "^8.0.0",
|
|
459
461
|
"typescript": "^5.7.0",
|
|
460
462
|
"vitest": "^3.0.0"
|
|
@@ -462,15 +464,15 @@
|
|
|
462
464
|
"peerDependencies": {
|
|
463
465
|
"@huggingface/transformers": ">=3",
|
|
464
466
|
"@radix-ui/react-dialog": ">=1.1",
|
|
465
|
-
"@tangle-network/agent-eval": ">=0.
|
|
467
|
+
"@tangle-network/agent-eval": ">=0.134.1",
|
|
466
468
|
"@tangle-network/agent-integrations": ">=0.44.0",
|
|
467
469
|
"@tangle-network/agent-interface": ">=0.36.0",
|
|
468
|
-
"@tangle-network/agent-knowledge": ">=6.1.
|
|
469
|
-
"@tangle-network/agent-profile-materialize": ">=0.9.
|
|
470
|
-
"@tangle-network/agent-runtime": ">=0.
|
|
470
|
+
"@tangle-network/agent-knowledge": ">=6.1.7",
|
|
471
|
+
"@tangle-network/agent-profile-materialize": ">=0.9.2",
|
|
472
|
+
"@tangle-network/agent-runtime": ">=0.108.0",
|
|
471
473
|
"@tangle-network/brand": ">=1.1.0",
|
|
472
|
-
"@tangle-network/sandbox": ">=0.15.
|
|
473
|
-
"@tangle-network/sandbox-ui": ">=0.90.
|
|
474
|
+
"@tangle-network/sandbox": ">=0.15.2",
|
|
475
|
+
"@tangle-network/sandbox-ui": ">=0.90.3",
|
|
474
476
|
"@xyflow/react": ">=12.0.0",
|
|
475
477
|
"better-auth": ">=1.6.16",
|
|
476
478
|
"drizzle-orm": ">=0.36",
|