import "./node-require-shim.js"; import type { ObjectSchema, Static } from "toolcraft-schema"; import type { Group, HandlerFs, LogLevel, RuntimeLoggerInput, Scope } from "./index.js"; import { type ErrorReportsOption } from "./error-report.js"; import type { HumanInLoopPending, HumanInLoopRuntime } from "./human-in-loop/types.js"; import { type ValidationError } from "./validation-errors.js"; import type { StreamConsumerOptions, ToolcraftStream } from "./stream.js"; type ScopeInput = readonly Scope[] | undefined; type HumanInLoopMode = "sync" | "async"; type HumanInLoopModeInput = HumanInLoopMode | null | undefined; type Primitive = string | number | boolean | bigint | symbol | null | undefined; type EmptyRecord = Record; type EffectiveCommandScope = TOwnScope extends readonly Scope[] ? TOwnScope : TInheritedScope extends readonly Scope[] ? TInheritedScope : readonly ["cli", "sdk"]; type EffectiveGroupScope = TOwnScope extends readonly Scope[] ? TOwnScope : TInheritedScope extends readonly Scope[] ? TInheritedScope : undefined; type IncludesSDK = TScope extends readonly Scope[] ? "sdk" extends TScope[number] ? true : false : false; type EffectiveCommandHumanInLoopMode = TOwnHumanInLoopMode extends HumanInLoopMode ? TOwnHumanInLoopMode : TOwnHumanInLoopMode extends null ? undefined : TInheritedHumanInLoopMode; type EffectiveGroupHumanInLoopMode = TOwnHumanInLoopMode extends HumanInLoopMode ? TOwnHumanInLoopMode : TOwnHumanInLoopMode extends null ? undefined : TInheritedHumanInLoopMode; type Separator = "-" | "_" | " " | "."; type IsUppercase = TValue extends Uppercase ? (TValue extends Lowercase ? false : true) : false; type IsLowercase = TValue extends Lowercase ? (TValue extends Uppercase ? false : true) : false; type LastCharacter = TValue extends `${infer THead}${infer TTail}` ? TTail extends "" ? THead : LastCharacter : never; type PushCurrentWord = TCurrent extends "" ? TWords : [...TWords, Lowercase]; type SplitCamelWords = TValue extends `${infer TChar}${infer TRest}` ? TChar extends Separator ? SplitCamelWords> : IsUppercase extends true ? TCurrent extends "" ? SplitCamelWords : TRest extends `${infer TNext}${string}` ? IsLowercase> extends true ? SplitCamelWords> : IsLowercase extends true ? SplitCamelWords> : SplitCamelWords : SplitCamelWords : SplitCamelWords : PushCurrentWord; type JoinCamelWords = TWords extends readonly [ infer THead extends string, ...infer TTail extends readonly string[] ] ? `${THead}${CapitalizeJoinCamelWords}` : ""; type CapitalizeJoinCamelWords = TWords extends readonly [ infer THead extends string, ...infer TTail extends readonly string[] ] ? `${Capitalize}${CapitalizeJoinCamelWords}` : ""; type CamelCase = JoinCamelWords>; type Camelize = TValue extends Primitive ? TValue : TValue extends readonly (infer TItem)[] ? Array> : TValue extends object ? string extends keyof TValue ? { [TKey in keyof TValue]: Camelize; } : { [TKey in keyof TValue as TKey extends string ? CamelCase : TKey]: Camelize; } : TValue; type SDKResult = [THumanInLoopMode] extends ["async"] ? ["async"] extends [THumanInLoopMode] ? HumanInLoopPending : TResult : TResult; type SDKMethod, TResult> = TResult extends ToolcraftStream ? (params: Camelize>, options?: StreamConsumerOptions) => ToolcraftStream : (params: Camelize>) => Promise; type UnionToIntersection = (TValue extends unknown ? (value: TValue) => void : never) extends (value: infer TResult) => void ? TResult : never; type Simplify = { [TKey in keyof TValue]: TValue[TKey]; }; type RawChildrenValue = TChildren extends readonly unknown[] ? TChildren[number] : never; type SDKNodeShape = TNode extends { kind: "command"; readonly __agentKitCommandTypeInfo: { name: infer TName extends string; params: infer TParamsSchema extends ObjectSchema; result: infer TResult; ownScope: infer TOwnScope extends ScopeInput; ownHumanInLoopMode: infer TOwnHumanInLoopMode extends HumanInLoopModeInput; }; } ? IncludesSDK> extends true ? { [TKey in CamelCase]: SDKMethod>>; } : EmptyRecord : TNode extends { kind: "group"; readonly __agentKitGroupTypeInfo: { name: infer TName extends string; children: infer TChildren extends readonly unknown[]; ownScope: infer TOwnScope extends ScopeInput; ownHumanInLoopMode: infer TOwnHumanInLoopMode extends HumanInLoopModeInput; }; } ? SDKChildrenShape, EffectiveGroupHumanInLoopMode> extends infer TChildShape extends object ? keyof TChildShape extends never ? EmptyRecord : { [TKey in CamelCase]: TChildShape; } : never : EmptyRecord; type SDKChildrenShape = Simplify, TInheritedScope, TInheritedHumanInLoopMode>>>; export interface CreateSDKOptions> { approvals?: boolean; env?: Record; fetch?: typeof globalThis.fetch; fs?: HandlerFs; services?: TServices; casing?: "camel"; humanInLoop?: HumanInLoopRuntime; apiVersion?: string; projectRoot?: string; errorReports?: ErrorReportsOption; logLevel?: LogLevel; logger?: RuntimeLoggerInput; } export declare function validateObjectSchema(schema: ObjectSchema, value: unknown, label: string, errors: ValidationError[]): Record; type SDKRootShape = TRoot extends { readonly __agentKitGroupTypeInfo: { children: infer TChildren extends readonly unknown[]; }; } ? SDKChildrenShape : Record; export declare function createSDK, TServices extends object = Record>(root: TRoot, options?: CreateSDKOptions): SDKRootShape; export {};