@ai-sdk/harness 1.0.156 → 1.0.158
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/CHANGELOG.md +20 -0
- package/dist/utils/index.d.ts +36 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +84 -2
- package/dist/utils/index.js.map +1 -1
- package/package.json +5 -5
- package/src/utils/extract-harness-prompt-content.ts +162 -0
- package/src/utils/index.ts +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @ai-sdk/harness
|
|
2
2
|
|
|
3
|
+
## 1.0.158
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [66e74dc]
|
|
8
|
+
- ai@7.0.147
|
|
9
|
+
|
|
10
|
+
## 1.0.157
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- ca2a9f7: feat(harness): add `extractHarnessPromptContent()` helper and use it for image prompt support
|
|
15
|
+
- Updated dependencies [0c2a9de]
|
|
16
|
+
- Updated dependencies [200c47f]
|
|
17
|
+
- Updated dependencies [3785b2e]
|
|
18
|
+
- Updated dependencies [ab8eb61]
|
|
19
|
+
- ai@7.0.146
|
|
20
|
+
- @ai-sdk/provider@4.0.31
|
|
21
|
+
- @ai-sdk/provider-utils@5.0.64
|
|
22
|
+
|
|
3
23
|
## 1.0.156
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Experimental_SandboxProcess, Experimental_SandboxSession, FlexibleSchema, ToolResultOutput } from "@ai-sdk/provider-utils";
|
|
1
|
+
import { Experimental_SandboxProcess, Experimental_SandboxSession, FlexibleSchema, ToolResultOutput, UserModelMessage } from "@ai-sdk/provider-utils";
|
|
2
2
|
import { z } from "zod/v4";
|
|
3
3
|
import "@ai-sdk/provider";
|
|
4
4
|
import { WebSocket } from "ws";
|
|
@@ -534,6 +534,17 @@ type HarnessV1RequestTransformation = {
|
|
|
534
534
|
};
|
|
535
535
|
};
|
|
536
536
|
//#endregion
|
|
537
|
+
//#region src/v1/harness-v1-prompt.d.ts
|
|
538
|
+
/**
|
|
539
|
+
* Prompt shape passed to `HarnessV1Session.doPromptTurn`.
|
|
540
|
+
*
|
|
541
|
+
* A harness session represents an ongoing third-party agent runtime that
|
|
542
|
+
* owns its own conversation history. Each prompt turn carries only the
|
|
543
|
+
* fresh user input for that turn, either as a plain string or as a single
|
|
544
|
+
* `UserModelMessage`.
|
|
545
|
+
*/
|
|
546
|
+
type HarnessV1Prompt = string | UserModelMessage;
|
|
547
|
+
//#endregion
|
|
537
548
|
//#region src/v1/harness-v1-skill.d.ts
|
|
538
549
|
/**
|
|
539
550
|
* A self-contained instruction bundle the underlying runtime can load into
|
|
@@ -792,6 +803,29 @@ export declare function normalizeHarnessToolModelOutput({ output }: {
|
|
|
792
803
|
output: ToolResultOutput;
|
|
793
804
|
}): ToolResultOutput;
|
|
794
805
|
//#endregion
|
|
806
|
+
//#region src/utils/extract-harness-prompt-content.d.ts
|
|
807
|
+
declare const harnessPromptContentPartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
808
|
+
type: z.ZodLiteral<"text">;
|
|
809
|
+
text: z.ZodString;
|
|
810
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
811
|
+
type: z.ZodLiteral<"image">;
|
|
812
|
+
data: z.ZodString;
|
|
813
|
+
mediaType: z.ZodString;
|
|
814
|
+
}, z.core.$strip>]>;
|
|
815
|
+
export declare const harnessPromptContentSchema: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
816
|
+
type: z.ZodLiteral<"text">;
|
|
817
|
+
text: z.ZodString;
|
|
818
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
819
|
+
type: z.ZodLiteral<"image">;
|
|
820
|
+
data: z.ZodString;
|
|
821
|
+
mediaType: z.ZodString;
|
|
822
|
+
}, z.core.$strip>]>>]>;
|
|
823
|
+
type HarnessPromptContentPart = z.infer<typeof harnessPromptContentPartSchema>;
|
|
824
|
+
type HarnessPromptContent = z.infer<typeof harnessPromptContentSchema>;
|
|
825
|
+
export declare function extractHarnessPromptContent({ prompt }: {
|
|
826
|
+
prompt: HarnessV1Prompt;
|
|
827
|
+
}): HarnessPromptContent;
|
|
828
|
+
//#endregion
|
|
795
829
|
//#region src/utils/convert-harness-tool-model-output.d.ts
|
|
796
830
|
type HarnessToolModelOutputContent = {
|
|
797
831
|
type: 'text';
|
|
@@ -808,5 +842,5 @@ export declare function convertHarnessToolModelOutput({ output }: {
|
|
|
808
842
|
isError: boolean;
|
|
809
843
|
};
|
|
810
844
|
//#endregion
|
|
811
|
-
export type { BridgeReadyErrorContext, BridgeReadySource, DiskLogRecoveryMode, Experimental_BridgeUserMessageRequest, Experimental_BridgeUserMessageResponse, Experimental_BridgeUserMessageSubmitter, HarnessToolModelOutputContent, OAuthCredential, RefreshOAuthAccessTokenResult, SandboxChannelConnectOptions, SandboxChannelDebugEvent, SandboxChannelOptions, SandboxChannelReconnectOptions, SkillFilePathMode, WaitForBridgeReadyOptions, WaitForBridgeReadyResult, WriteInstructionsOptions, WriteInstructionsResult, WriteSkillsOptions, WriteSkillsResult };
|
|
845
|
+
export type { BridgeReadyErrorContext, BridgeReadySource, DiskLogRecoveryMode, Experimental_BridgeUserMessageRequest, Experimental_BridgeUserMessageResponse, Experimental_BridgeUserMessageSubmitter, HarnessPromptContent, HarnessPromptContentPart, HarnessToolModelOutputContent, OAuthCredential, RefreshOAuthAccessTokenResult, SandboxChannelConnectOptions, SandboxChannelDebugEvent, SandboxChannelOptions, SandboxChannelReconnectOptions, SkillFilePathMode, WaitForBridgeReadyOptions, WaitForBridgeReadyResult, WriteInstructionsOptions, WriteInstructionsResult, WriteSkillsOptions, WriteSkillsResult };
|
|
812
846
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["SandboxSession","SandboxSession","SandboxSession"],"sources":["../../src/utils/sandbox-channel.ts","../../src/utils/bridge-user-message-submitter.ts","../../src/utils/classify-disk-log.ts","../../src/utils/ai-gateway-auth.ts","../../src/v1/harness-authentication.ts","../../src/utils/authentication-environment.ts","../../src/utils/native-subscription/jwt.ts","../../src/utils/native-subscription/linux-secret-service.ts","../../src/utils/native-subscription/macos-keychain.ts","../../src/utils/native-subscription/should-resolve-native.ts","../../src/utils/native-subscription/windows-credential-manager.ts","../../src/utils/oauth-access-token.ts","../../src/utils/os.ts","../../src/v1/harness-v1-network-sandbox-session.ts","../../src/v1/harness-v1-skill.ts","../../src/v1/harness-v1-call-warning.ts","../../src/v1/harness-v1-credential-forwarding.ts","../../src/utils/credential-forwarding.ts","../../src/utils/sandbox-credential-brokering.ts","../../src/utils/sandbox-home-dir.ts","../../src/utils/shell-quote.ts","../../src/utils/write-instructions.ts","../../src/utils/write-skills.ts","../../src/utils/bridge-ready.ts","../../src/utils/bridge-token.ts","../../src/utils/bridge-asset.ts","../../src/utils/bridge-diagnostics.ts","../../src/utils/resolve-sandbox-default-working-directory.ts","../../src/utils/get-restricted-sandbox-session.ts","../../src/utils/sleep.ts","../../src/utils/normalize-harness-tool-model-output.ts","../../src/utils/convert-harness-tool-model-output.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["SandboxSession","SandboxSession","SandboxSession"],"sources":["../../src/utils/sandbox-channel.ts","../../src/utils/bridge-user-message-submitter.ts","../../src/utils/classify-disk-log.ts","../../src/utils/ai-gateway-auth.ts","../../src/v1/harness-authentication.ts","../../src/utils/authentication-environment.ts","../../src/utils/native-subscription/jwt.ts","../../src/utils/native-subscription/linux-secret-service.ts","../../src/utils/native-subscription/macos-keychain.ts","../../src/utils/native-subscription/should-resolve-native.ts","../../src/utils/native-subscription/windows-credential-manager.ts","../../src/utils/oauth-access-token.ts","../../src/utils/os.ts","../../src/v1/harness-v1-network-sandbox-session.ts","../../src/v1/harness-v1-prompt.ts","../../src/v1/harness-v1-skill.ts","../../src/v1/harness-v1-call-warning.ts","../../src/v1/harness-v1-credential-forwarding.ts","../../src/utils/credential-forwarding.ts","../../src/utils/sandbox-credential-brokering.ts","../../src/utils/sandbox-home-dir.ts","../../src/utils/shell-quote.ts","../../src/utils/write-instructions.ts","../../src/utils/write-skills.ts","../../src/utils/bridge-ready.ts","../../src/utils/bridge-token.ts","../../src/utils/bridge-asset.ts","../../src/utils/bridge-diagnostics.ts","../../src/utils/resolve-sandbox-default-working-directory.ts","../../src/utils/get-restricted-sandbox-session.ts","../../src/utils/sleep.ts","../../src/utils/normalize-harness-tool-model-output.ts","../../src/utils/extract-harness-prompt-content.ts","../../src/utils/convert-harness-tool-model-output.ts"],"mappings":"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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { convertInlineFileDataToUint8Array, convertUint8ArrayToBase64, detectMediaType, getTopLevelMediaType, isFullMediaType, isRecord, safeParseJSON, safeValidateTypes } from "@ai-sdk/provider-utils";
|
|
1
|
+
import { convertInlineFileDataToUint8Array, convertUint8ArrayToBase64, detectMediaType, getTopLevelMediaType, isFullMediaType, isProviderReference, isRecord, safeParseJSON, safeValidateTypes } from "@ai-sdk/provider-utils";
|
|
2
2
|
import { execFile } from "node:child_process";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
4
|
import { createHash, randomBytes } from "node:crypto";
|
|
@@ -2108,6 +2108,88 @@ function normalizeHarnessToolModelOutput({ output }) {
|
|
|
2108
2108
|
}
|
|
2109
2109
|
}
|
|
2110
2110
|
//#endregion
|
|
2111
|
+
//#region src/utils/extract-harness-prompt-content.ts
|
|
2112
|
+
const harnessPromptContentPartSchema = z.discriminatedUnion("type", [z.object({
|
|
2113
|
+
type: z.literal("text"),
|
|
2114
|
+
text: z.string()
|
|
2115
|
+
}), z.object({
|
|
2116
|
+
type: z.literal("image"),
|
|
2117
|
+
data: z.string(),
|
|
2118
|
+
mediaType: z.string()
|
|
2119
|
+
})]);
|
|
2120
|
+
const harnessPromptContentSchema = z.union([z.string(), z.array(harnessPromptContentPartSchema)]);
|
|
2121
|
+
function extractHarnessPromptContent({ prompt }) {
|
|
2122
|
+
if (typeof prompt === "string") return prompt;
|
|
2123
|
+
const { content } = prompt;
|
|
2124
|
+
if (typeof content === "string") return content;
|
|
2125
|
+
if (content.every((part) => part.type === "text")) return content.map((part) => part.text).join("\n\n");
|
|
2126
|
+
return content.flatMap((part) => {
|
|
2127
|
+
switch (part.type) {
|
|
2128
|
+
case "text": return [{
|
|
2129
|
+
type: "text",
|
|
2130
|
+
text: part.text
|
|
2131
|
+
}];
|
|
2132
|
+
case "image": return [convertUserImage({
|
|
2133
|
+
data: part.image,
|
|
2134
|
+
mediaType: part.mediaType ?? "image"
|
|
2135
|
+
})];
|
|
2136
|
+
case "file":
|
|
2137
|
+
if (getTopLevelMediaType(part.mediaType) !== "image") throw unsupportedUserContent({ description: `files of media type '${part.mediaType}'` });
|
|
2138
|
+
return [convertUserImage(part)];
|
|
2139
|
+
default: throw unsupportedUserContent({ description: "content parts other than text, image, or file parts" });
|
|
2140
|
+
}
|
|
2141
|
+
});
|
|
2142
|
+
}
|
|
2143
|
+
function convertUserImage({ data, mediaType }) {
|
|
2144
|
+
const image = getInlineImage({ data });
|
|
2145
|
+
const resolvedMediaType = isFullMediaType(mediaType) ? mediaType : image.mediaType ?? detectMediaType({
|
|
2146
|
+
data: image.data,
|
|
2147
|
+
topLevelType: "image"
|
|
2148
|
+
});
|
|
2149
|
+
if (resolvedMediaType == null) throw unsupportedUserContent({ description: "images whose media type cannot be detected" });
|
|
2150
|
+
return {
|
|
2151
|
+
type: "image",
|
|
2152
|
+
data: image.data,
|
|
2153
|
+
mediaType: resolvedMediaType
|
|
2154
|
+
};
|
|
2155
|
+
}
|
|
2156
|
+
function getInlineImage({ data }) {
|
|
2157
|
+
if (data instanceof URL) return getDataUrlImage({ url: data });
|
|
2158
|
+
if (typeof data === "string") {
|
|
2159
|
+
let url;
|
|
2160
|
+
try {
|
|
2161
|
+
url = new URL(data);
|
|
2162
|
+
} catch {
|
|
2163
|
+
return { data };
|
|
2164
|
+
}
|
|
2165
|
+
return getDataUrlImage({ url });
|
|
2166
|
+
}
|
|
2167
|
+
if (data instanceof Uint8Array || data instanceof ArrayBuffer) return { data: convertUint8ArrayToBase64(convertInlineFileDataToUint8Array({
|
|
2168
|
+
type: "data",
|
|
2169
|
+
data
|
|
2170
|
+
})) };
|
|
2171
|
+
if (isProviderReference(data)) throw unsupportedUserContent({ description: "provider references" });
|
|
2172
|
+
switch (data.type) {
|
|
2173
|
+
case "data": return typeof data.data === "string" ? { data: data.data } : getInlineImage({ data: data.data });
|
|
2174
|
+
case "url": return getDataUrlImage({ url: data.url });
|
|
2175
|
+
case "reference": throw unsupportedUserContent({ description: "provider references" });
|
|
2176
|
+
case "text": throw unsupportedUserContent({ description: "text data for images" });
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
2179
|
+
function getDataUrlImage({ url }) {
|
|
2180
|
+
if (url.protocol !== "data:") throw unsupportedUserContent({ description: "remote image URLs" });
|
|
2181
|
+
const [header, data] = url.href.split(",", 2);
|
|
2182
|
+
if (!header?.endsWith(";base64") || data == null) throw unsupportedUserContent({ description: "data URLs that are not base64 encoded" });
|
|
2183
|
+
const mediaType = header.slice(5).split(";")[0];
|
|
2184
|
+
return {
|
|
2185
|
+
data,
|
|
2186
|
+
...mediaType ? { mediaType } : {}
|
|
2187
|
+
};
|
|
2188
|
+
}
|
|
2189
|
+
function unsupportedUserContent({ description }) {
|
|
2190
|
+
return new HarnessCapabilityUnsupportedError({ message: `The harness layer does not support ${description} in user messages. Pass text parts and inline images as bytes, base64 strings, or data URLs.` });
|
|
2191
|
+
}
|
|
2192
|
+
//#endregion
|
|
2111
2193
|
//#region src/bridge/harness-bridge-capability-unsupported-error.ts
|
|
2112
2194
|
const name = "AI_HarnessBridgeCapabilityUnsupportedError";
|
|
2113
2195
|
/**
|
|
@@ -2177,6 +2259,6 @@ function convertHarnessToolModelOutput({ output }) {
|
|
|
2177
2259
|
}
|
|
2178
2260
|
}
|
|
2179
2261
|
//#endregion
|
|
2180
|
-
export { SandboxChannel, applyCredentialForwarding, classifyDiskLog, convertHarnessToolModelOutput, createBridgeErrorHandler, createBridgeStartupError, createBridgeToken, createCredentialRequestTransformation, createReadBridgeAsset, drainBridgeProcessStream, experimental_createBridgeUserMessageSubmitter, formatBridgeError, forwardBridgeProcessStream, generateSandboxCredentialPlaceholder, getAiGatewayAuthFromEnv, getJwtExpiresAt, getRestrictedSandboxSession, isAccessTokenExpiringSoon, isHarnessAuthenticationEnvironment, isLinux, isMacOS, isSandboxCredentialPlaceholder, isWindows, logBridgeError, markBridgeStarting, maskSandboxCredentials, normalizeHarnessToolModelOutput, parseJwtPayload, readLinuxSecretServicePassword, readMacOSKeychainPassword, readWindowsCredentialManagerPassword, refreshOAuthAccessToken, resolveSandboxCredentialEnvironment, resolveSandboxDefaultWorkingDirectory, resolveSandboxHomeDir, shellQuote, shouldResolveNativeSubscription, sleep, waitForBridgeReady, warnCredentialBrokeringUnavailable, withBridgeToken, writeInstructions, writeSkills };
|
|
2262
|
+
export { SandboxChannel, applyCredentialForwarding, classifyDiskLog, convertHarnessToolModelOutput, createBridgeErrorHandler, createBridgeStartupError, createBridgeToken, createCredentialRequestTransformation, createReadBridgeAsset, drainBridgeProcessStream, experimental_createBridgeUserMessageSubmitter, extractHarnessPromptContent, formatBridgeError, forwardBridgeProcessStream, generateSandboxCredentialPlaceholder, getAiGatewayAuthFromEnv, getJwtExpiresAt, getRestrictedSandboxSession, harnessPromptContentSchema, isAccessTokenExpiringSoon, isHarnessAuthenticationEnvironment, isLinux, isMacOS, isSandboxCredentialPlaceholder, isWindows, logBridgeError, markBridgeStarting, maskSandboxCredentials, normalizeHarnessToolModelOutput, parseJwtPayload, readLinuxSecretServicePassword, readMacOSKeychainPassword, readWindowsCredentialManagerPassword, refreshOAuthAccessToken, resolveSandboxCredentialEnvironment, resolveSandboxDefaultWorkingDirectory, resolveSandboxHomeDir, shellQuote, shouldResolveNativeSubscription, sleep, waitForBridgeReady, warnCredentialBrokeringUnavailable, withBridgeToken, writeInstructions, writeSkills };
|
|
2181
2263
|
|
|
2182
2264
|
//# sourceMappingURL=index.js.map
|