@gpzhang2001/sharpkit-team 0.2.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.ts","names":["_0","_0","_0","Schema"],"sources":["../../../node_modules/.pnpm/@deepseek-ai+dsh-typert-protocol@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-typert-protocol/lib/types/types.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-typert-protocol@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-typert-protocol/lib/types/index.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-brand@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-brand/lib/types/index.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-attachment@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2_@deepseek-ai+dsh-brand_72395f0591fece1437c28bb433085d20/node_modules/@deepseek-ai/dsh-attachment/lib/types/brand.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-attachment@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2_@deepseek-ai+dsh-brand_72395f0591fece1437c28bb433085d20/node_modules/@deepseek-ai/dsh-attachment/lib/types/types.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-attachment@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2_@deepseek-ai+dsh-brand_72395f0591fece1437c28bb433085d20/node_modules/@deepseek-ai/dsh-attachment/lib/types/index.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-llm@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-llm/lib/types/brand.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-llm@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-llm/lib/types/message.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-llm@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-llm/lib/types/types.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-llm@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-llm/lib/types/retry-policy.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-llm@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-llm/lib/types/call-config.d.ts","../../../node_modules/.pnpm/@deepseek-ai+dsh-llm@0.1.2-rc.1_@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/dsh-llm/lib/types/index.d.ts","../src/index.d.ts"],"sourcesContent":["/**\n * Compiler-independent Typert protocol shared by business packages, generated\n * Remote artifacts, the Host Gateway, and Client API implementations.\n * @module @deepseek-ai/dsh-typert-protocol/types\n */\nimport type { Context, Events } from '@deepseek-ai/cordis';\ndeclare const LOOKUP_HOST: unique symbol;\ndeclare const LOOKUP_WIRE: unique symbol;\ndeclare const CONTEXT_WIRE: unique symbol;\n/** Type-level association between a Host object and its wire identity. */\nexport interface TypertLookup<Host, Wire> {\n readonly [LOOKUP_HOST]: Host;\n readonly [LOOKUP_WIRE]: Wire;\n}\n/** Extract the Host object associated with one lookup declaration. */\nexport type TypertLookupHost<Lookup> = Lookup extends TypertLookup<infer Host, infer _Wire> ? Host : never;\n/** Extract the wire identity associated with one lookup declaration. */\nexport type TypertLookupWire<Lookup> = Lookup extends TypertLookup<infer _Host, infer Wire> ? Wire : never;\n/** Type-level association between a scoped Context kind and its wire identity. */\nexport interface TypertContext<Wire> {\n readonly [CONTEXT_WIRE]: Wire;\n}\n/** Extract the wire identity associated with one scoped Context declaration. */\nexport type TypertContextWire<ContextType> = ContextType extends TypertContext<infer Wire> ? Wire : never;\n/** Merge-extensible Host object lookup declarations. */\nexport interface TypertLookupMap {\n}\n/** Merge-extensible scoped Context declarations. */\nexport interface TypertContextMap {\n}\n/** Merge-extensible direct Remote method signatures generated for consumers. */\nexport interface TypertRemoteMap {\n}\n/**\n * Merge-extensible Remote failure vocabulary: this package declares the\n * universal carrier codes once; the Gateway merges its infrastructure codes\n * and every owner merges its domain codes next to the throwing code.\n */\nexport interface RemoteErrorDetailsMap {\n /** Owner-side business validation refused the request; `issues` carries codec output when one produced it. */\n 'gateway/bad-request': {\n readonly issues?: readonly object[];\n };\n /** The call was cancelled by the carrier signal or the backend. */\n 'gateway/cancelled': {};\n /** Carrier, dispatch, or unclassified Host failure. */\n 'gateway/internal': {};\n}\n/** Every declared Remote failure code. */\nexport type RemoteErrorCode = keyof RemoteErrorDetailsMap;\n/**\n * One Remote call's failure: the code-discriminated union of RemoteError\n * instances, so a `code` branch narrows `details` with no cast.\n */\nexport type RemoteFailure = {\n [Code in RemoteErrorCode]: import('./remote-error.ts').RemoteError<Code>;\n}[RemoteErrorCode];\n/**\n * What every generated Remote method resolves to. The Remote face itself folds\n * carrier failures into the error branch, so no consumer wraps a call to\n * recover one; only assembly faults (arity, an unmounted method, a missing\n * Context adapter) still reject.\n * @template T - the Host method's business result.\n */\nexport type RemoteResult<T> = {\n readonly ok: true;\n readonly value: T;\n} | {\n readonly ok: false;\n readonly error: RemoteFailure;\n};\n/** Merge-extensible scoped Remote method signatures generated for consumers. */\nexport interface TypertRemoteScopeMap {\n}\ntype TypertEventParameters<Event extends keyof Events> = Events[Event] extends (...args: infer Args) => unknown ? Args : never;\ntype TypertEventResult<Event extends keyof Events> = Events[Event] extends (...args: never[]) => infer Result ? Result : never;\ntype TypertProjectedContextKey = Extract<keyof TypertLookupMap, keyof TypertContextMap>;\ntype TypertProjectedContextSubject = {\n [Key in TypertProjectedContextKey]: TypertLookupHost<TypertLookupMap[Key]>;\n}[TypertProjectedContextKey];\ntype TypertAgentScopedRequest<Request> = Request extends object ? 'agent' extends keyof Request ? Exclude<Request['agent'], undefined> extends TypertProjectedContextSubject ? Request : never : never : never;\ntype TypertWaterfallEvent<Event extends keyof Events> = unknown extends ThisParameterType<Events[Event]> ? never : TypertEventParameters<Event> extends [infer Request, infer Next] ? Next extends () => TypertEventResult<Event> ? TypertEventResult<Event> extends Promise<unknown> ? TypertAgentScopedRequest<Request> extends never ? never : Event : never : never : never;\ntype TypertForwardingMode<Event extends keyof Events> = unknown extends ThisParameterType<Events[Event]> ? TypertEventResult<Event> extends void ? 'emit' : never : TypertWaterfallEvent<Event> extends never ? never : 'waterfall';\n/**\n * Cordis event names the Remote Event carrier can preserve without a second\n * signature declaration: unscoped `void` notifications and scoped async\n * waterfalls whose final parameter is their same-result `next()` callback.\n */\nexport type TypertForwardableEvent = {\n [Event in keyof Events]: TypertForwardingMode<Event> extends never ? never : Event;\n}[keyof Events];\n/** Event and dispatch mode accepted by the Remote Event source. */\nexport type TypertForwardableEventEntry = {\n [Event in keyof Events]: TypertForwardingMode<Event> extends infer Mode ? Mode extends 'emit' | 'waterfall' ? {\n readonly event: Event;\n readonly mode: Mode;\n } : never : never;\n}[keyof Events];\n/** Merge-extensible forwarding selection declared once by the Host assembly. */\nexport interface TypertRemoteEventSelection {\n}\n/** Legal `$on` keys selected from the carrier-compatible Cordis event declarations. */\nexport type TypertRemoteEvent = Extract<TypertForwardableEvent, keyof TypertRemoteEventSelection>;\ntype TypertClientAgent<Value> = Exclude<Value, undefined> extends TypertProjectedContextSubject ? Context | Extract<Value, undefined> : Value;\ntype TypertClientEventRequest<Request> = Request extends object ? {\n [Key in keyof Request]: Key extends 'agent' ? TypertClientAgent<Request[Key]> : Request[Key];\n} : never;\ntype TypertScopedClientEventListener<Event extends TypertRemoteEvent> = Events[Event] extends (request: infer Request, next: infer Next) => infer Result ? (this: Context, request: TypertClientEventRequest<Request>, next: Next) => Result : never;\n/**\n * Listener derived from one selected Cordis event declaration. Scoped Host\n * subjects become the resolved Client `Context`; one-way notifications retain\n * their declaration unchanged.\n * @template Event - selected Remote Event name.\n */\nexport type TypertClientEventListener<Event extends TypertRemoteEvent> = unknown extends ThisParameterType<Events[Event]> ? Events[Event] : TypertScopedClientEventListener<Event>;\n/**\n * Resolve one direct Remote namespace from the generated flat endpoint map.\n * @template Namespace - wire namespace before the endpoint slash.\n */\nexport type TypertRemoteNamespace<Namespace extends string> = {\n [Endpoint in keyof TypertRemoteMap as Endpoint extends `${Namespace}/${infer Method}` ? Method : never]: TypertRemoteMap[Endpoint];\n};\n/**\n * Resolve one scoped Remote namespace across every generated Context kind.\n * The calling Cordis Context supplies the concrete identity at runtime.\n * @template Namespace - wire namespace between the Context prefix and method.\n */\nexport type TypertRemoteScopeNamespace<Namespace extends string, ContextKey extends string = string> = {\n [Endpoint in keyof TypertRemoteScopeMap as Endpoint extends `${ContextKey}:${Namespace}/${infer Method}` ? Method : never]: TypertRemoteScopeMap[Endpoint];\n};\ntype TypertRemoteScopeNamespaceKey<ContextKey extends string, Endpoint = keyof TypertRemoteScopeMap> = Endpoint extends `${ContextKey}:${infer Namespace}/${string}` ? Namespace : never;\n/** Generated scoped Remote namespaces available to one Context kind. */\nexport type TypertRemoteScopeApi<ContextKey extends string> = {\n [Namespace in TypertRemoteScopeNamespaceKey<ContextKey>]: TypertRemoteScopeNamespace<Namespace, ContextKey>;\n};\n/** Merge-extensible direct namespace surface generated for Client Remote services. */\nexport interface TypertRemoteNamespaceMap {\n}\n/** Awaitable disposer returned by Cordis-owned Typert registrations. */\nexport type TypertDisposer = () => Promise<void>;\ntype StringKeyOf<Value> = Extract<keyof Value, string>;\n/** Minimal runtime-schema capability carried by strict generated codecs. */\nexport interface TypertSchema<Output = unknown> {\n /**\n * Parse and validate one boundary value.\n * @param value - untrusted boundary value.\n * @returns the validated value.\n */\n parse(value: unknown): Output;\n}\n/** Codec attached to one invocation parameter or result. */\nexport type TypertCodec = {\n readonly mode: 'strict';\n readonly typeSymbol: string;\n readonly schema: TypertSchema;\n} | {\n readonly mode: 'src-json';\n};\n/** One ordered business parameter in a Remote invocation. */\nexport interface InvocationParameterDescriptor {\n /** Source-level parameter name. */\n readonly name: string;\n /** Required key in the wire `args` object. */\n readonly wire: string;\n /** Whether the value is JSON or requires a registered Host lookup. */\n readonly source: 'json' | 'lookup';\n /** Lookup key when `source` is `lookup`. */\n readonly lookup?: string;\n /** Boundary codec for the wire representation. */\n readonly codec: TypertCodec;\n /** Missing wire fields decode to `undefined` only for an explicitly declared `T | undefined`. */\n readonly acceptsUndefined?: true;\n}\n/** Source position retained for diagnostics from generated definitions. */\nexport interface InvocationSourceLocation {\n readonly file: string;\n readonly line: number;\n readonly column: number;\n}\n/** Carrier-independent description of one exported method invocation. */\nexport interface InvocationDescriptor {\n /** Globally stable generated identity. */\n readonly id: string;\n /** Cordis service key owning the method. */\n readonly service: string;\n /** Wire namespace, defaulting to the service key. */\n readonly namespace: string;\n /** Public instance method name. */\n readonly method: string;\n /** Service member invoked when the exported method name is an alias. */\n readonly implementation?: string;\n /** Absent for unary calls; stream calls validate and deliver every yielded item. */\n readonly mode?: 'stream';\n /** Receiver selection mode. */\n readonly invocation: {\n readonly kind: 'direct';\n } | {\n readonly kind: 'context';\n readonly context: string;\n readonly wire: string;\n readonly codec: TypertCodec;\n };\n /** Optional consuming-Context projection for one direct lookup parameter. */\n readonly scope?: {\n /** Context kind whose Client adapter supplies the identity. */\n readonly context: string;\n /** Lookup parameter wire field replaced by the Context identity. */\n readonly wire: string;\n };\n /** Ordered business parameters. */\n readonly parameters: readonly InvocationParameterDescriptor[];\n /** Transport cancellation injected after business parameters instead of entering wire args. */\n readonly cancellation?: {\n /** Reserved final Host method parameter. */\n readonly parameter: 'signal';\n };\n /** Codec for the unary result or each yielded stream item. */\n readonly result: TypertCodec;\n /** Source declaration used only for diagnostics. */\n readonly sourceLocation?: InvocationSourceLocation;\n}\n/** Generated Host contract selected explicitly by a Client assembly. */\nexport interface TypertRemoteContribution {\n /** npm package that owns the Remote methods. */\n readonly package: string;\n /** Consumer-side invocation descriptors generated from that package. */\n readonly descriptors: readonly InvocationDescriptor[];\n}\n/** Client Remote capability implemented by the Gateway and consumed by Remote assemblies. */\nexport interface TypertClientRemote extends TypertRemoteNamespaceMap {\n /**\n * Mount one generated Host-for-Client contribution in the caller's fiber.\n * @param contribution - explicitly selected Remote package artifact.\n * @returns disposer after namespace services and concrete methods are ready.\n */\n $mount(contribution: TypertRemoteContribution): Promise<TypertDisposer>;\n /**\n * Subscribe to one forwarded Host event. Notifications run in registration\n * order and isolate failures; scoped waterfalls return, delegate through\n * `next()`, or reject the Host dispatch.\n * @template Event - forwarded event name selected by the Host assembly.\n * @param event - forwarded Host event name, unchanged on the wire.\n * @param listener - receives the Client projection of the Cordis `Events` declaration.\n * @returns disposer owned by the calling fiber.\n */\n $on<Event extends TypertRemoteEvent>(event: Event, listener: TypertClientEventListener<Event>): () => void;\n}\n/**\n * Resolve one validated wire identity, synchronously or asynchronously.\n * @param id - validated wire identity.\n * @returns the Host object, or `undefined` when unavailable.\n */\nexport type TypertLookupResolver<Host = unknown, Wire = unknown> = (id: Wire) => Host | undefined | Promise<Host | undefined>;\n/** Runtime provider for one declared Host object lookup. */\nexport interface TypertLookupProvider<Host = unknown, Wire = unknown> {\n /** Source parameter name recognized by the SRC weak parser. */\n readonly parameter: string;\n /** Wire field replacing the Host object parameter. */\n readonly wire: string;\n /** Canonical Host type symbol used by strict generation. */\n readonly hostTypeSymbol: string;\n /** Canonical wire type symbol used by strict generation. */\n readonly wireTypeSymbol: string;\n /**\n * Resolve a wire identity through the provider's default policy.\n * @param id - validated wire identity.\n * @returns the object, `undefined` when unavailable, or either asynchronously.\n */\n resolve(id: Wire): Host | undefined | Promise<Host | undefined>;\n}\n/** Stable wire declaration retained after a lookup provider unloads. */\nexport interface TypertLookupDefinition {\n /** Merge-declared lookup key. */\n readonly key: string;\n /** Source parameter name recognized by the SRC weak parser. */\n readonly parameter: string;\n /** Wire field replacing the Host object parameter. */\n readonly wire: string;\n /** Canonical Host type symbol used by strict generation. */\n readonly hostTypeSymbol: string;\n /** Canonical wire type symbol used by strict generation. */\n readonly wireTypeSymbol: string;\n}\n/** Bidirectional projection between one environment's Context and its wire identity. */\nexport interface TypertContextAdapter<Wire = unknown> {\n /**\n * Read the identity represented by a live Context.\n * @param ctx - Context in this adapter's environment.\n * @returns the wire identity, or `undefined` when the Context has another kind.\n */\n identity(ctx: Context): Wire | undefined;\n /**\n * Resolve a wire identity to a live Context in this adapter's environment.\n * An asynchronous Client resolver may wait for its owner to create the Context.\n * @param id - validated wire identity.\n * @returns the Context, or `undefined` when it is unavailable.\n */\n resolve(id: Wire): Context | undefined | Promise<Context | undefined>;\n}\n/** Host Context adapter plus the wire declaration used by strict Remote methods. */\nexport interface TypertHostContextAdapter<Wire = unknown> extends TypertContextAdapter<Wire> {\n /** Wire field carrying the Context identity. */\n readonly wire: string;\n /** Canonical wire type symbol used by strict generation. */\n readonly wireTypeSymbol: string;\n}\n/** Composition-owned resolver replacing one Host Context adapter's default lookup policy. */\nexport type TypertHostContextResolver<Wire = unknown> = (id: Wire) => Context | undefined | Promise<Context | undefined>;\n/** Client-side bidirectional Context adapter. */\nexport interface TypertClientContextAdapter<Wire = unknown> {\n /**\n * Read the identity represented by a live Client Context.\n * @param ctx - Client Context inspected by a scoped Remote caller.\n * @returns the wire identity, or `undefined` for another Context kind.\n */\n identity(ctx: Context): Wire | undefined;\n /**\n * Resolve a wire identity from the Client's currently materialized Contexts.\n * @param id - validated wire identity.\n * @returns the Client Context, or `undefined` when unavailable.\n */\n resolve(id: Wire): Context | undefined;\n}\n/** Host Context identity selected from the registered adapter set. */\nexport interface TypertHostContextIdentity {\n /** Merge-declared Context kind whose adapter recognized the Context. */\n readonly kind: string;\n /** Wire identity returned by that adapter. */\n readonly identity: unknown;\n}\n/** Notification emitted after a Typert runtime registry changes. */\nexport interface TypertRegistryChange {\n readonly kind: 'local' | 'remote' | 'lookup' | 'host-context' | 'client-context';\n readonly key: string;\n}\n/** Listener for one Typert runtime registry. */\nexport type TypertRegistryListener = (change: TypertRegistryChange) => void;\n/** Current-environment invocation definitions. */\nexport interface TypertLocalRegistry {\n /**\n * Look up one invocation by `<namespace>/<method>`.\n * @param endpoint - canonical endpoint.\n * @returns the live descriptor, or `undefined` when absent.\n */\n get(endpoint: string): InvocationDescriptor | undefined;\n /**\n * Report whether a strict definition has existed during this Typert Service lifetime.\n * @param endpoint - canonical endpoint.\n * @returns `true` after the endpoint has been registered at least once, even if withdrawn.\n */\n hasSeen(endpoint: string): boolean;\n /** @returns a registration-order snapshot of local descriptors. */\n list(): readonly InvocationDescriptor[];\n /**\n * Observe later local-definition changes.\n * @param listener - synchronous contained observer.\n * @returns disposer for this subscription.\n */\n subscribe(listener: TypertRegistryListener): TypertDisposer;\n}\n/** Consumer-selected Remote contribution registry. */\nexport interface TypertRemoteRegistry {\n /**\n * Register one generated contribution for the calling Cordis fiber.\n * @param contribution - generated Remote descriptors.\n * @returns disposer withdrawing the exact contribution.\n */\n register(contribution: TypertRemoteContribution): TypertDisposer;\n /**\n * Look up one Remote descriptor by endpoint.\n * @param endpoint - canonical endpoint.\n * @returns the descriptor, or `undefined` when unmounted.\n */\n get(endpoint: string): InvocationDescriptor | undefined;\n /** @returns a registration-order snapshot of Remote descriptors. */\n list(): readonly InvocationDescriptor[];\n /**\n * Observe later Remote contribution changes.\n * @param listener - synchronous contained observer.\n * @returns disposer for this subscription.\n */\n subscribe(listener: TypertRegistryListener): TypertDisposer;\n}\n/** Runtime registry for Host object lookup providers. */\nexport interface TypertLookupRegistry {\n /**\n * Register one provider under its merge-declared key.\n * @param key - lookup key.\n * @param provider - owning package's live resolver.\n * @returns disposer withdrawing the exact provider.\n */\n register<K extends StringKeyOf<TypertLookupMap>>(key: K, provider: TypertLookupProvider<TypertLookupHost<TypertLookupMap[K]>, TypertLookupWire<TypertLookupMap[K]>>): TypertDisposer;\n /**\n * Replace one provider's default resolution policy while this contribution is active.\n * Configuration may precede provider registration; without a live provider, `get()` remains unavailable.\n * @param key - lookup key whose wire declaration remains provider-owned.\n * @param resolver - composition-owned resolver used by every lookup of this key.\n * @returns disposer restoring the provider's default resolver.\n */\n configure<K extends StringKeyOf<TypertLookupMap>>(key: K, resolver: TypertLookupResolver<TypertLookupHost<TypertLookupMap[K]>, TypertLookupWire<TypertLookupMap[K]>>): TypertDisposer;\n /**\n * Look up one provider by runtime key.\n * @param key - descriptor lookup key.\n * @returns the live provider, or `undefined` when absent.\n */\n get(key: string): TypertLookupProvider | undefined;\n /** @returns lookup declarations observed during this Typert Service lifetime. */\n definitions(): readonly TypertLookupDefinition[];\n /** @returns a snapshot of registered provider keys. */\n keys(): readonly string[];\n /**\n * Observe later lookup changes.\n * @param listener - synchronous contained observer.\n * @returns disposer for this subscription.\n */\n subscribe(listener: TypertRegistryListener): TypertDisposer;\n}\n/** Runtime registry for the Host and Client adapters of each Context kind. */\nexport interface TypertContextRegistry {\n /**\n * Register a Host Context adapter.\n * @param key - merge-declared Context key.\n * @param adapter - owning package's bidirectional Host projection.\n * @returns disposer withdrawing the exact adapter.\n */\n registerHost<K extends StringKeyOf<TypertContextMap>>(key: K, adapter: TypertHostContextAdapter<TypertContextWire<TypertContextMap[K]>>): TypertDisposer;\n /**\n * Override one Host Context key's resolution policy for the calling fiber.\n * Configuration may precede provider registration and restores the provider's default resolver on disposal.\n * @param key - merge-declared Context key.\n * @param resolver - composition-owned resolver used by every Host Context lookup of this key.\n * @returns disposer restoring the provider's default resolver.\n */\n configureHost<K extends StringKeyOf<TypertContextMap>>(key: K, resolver: TypertHostContextResolver<TypertContextWire<TypertContextMap[K]>>): TypertDisposer;\n /**\n * Register a Client Context adapter.\n * @param key - merge-declared Context key.\n * @param adapter - owning package's bidirectional Client projection.\n * @returns disposer withdrawing the exact adapter.\n */\n registerClient<K extends StringKeyOf<TypertContextMap>>(key: K, adapter: TypertClientContextAdapter<TypertContextWire<TypertContextMap[K]>>): TypertDisposer;\n /**\n * Identify a live Host Context through the sole registered adapter set.\n * @param ctx - Context projected by a Host-to-Client scoped event.\n * @returns its kind and wire identity, or `undefined` when no adapter recognizes it.\n * @throws when more than one Context kind recognizes the same Context.\n */\n identifyHost(ctx: Context): TypertHostContextIdentity | undefined;\n /**\n * Look up a Host Context adapter.\n * @param key - descriptor Context key.\n * @returns the adapter, or `undefined` when absent.\n */\n getHost(key: string): TypertHostContextAdapter | undefined;\n /**\n * Look up a Client Context adapter.\n * @param key - descriptor Context key.\n * @returns the adapter, or `undefined` when absent.\n */\n getClient(key: string): TypertClientContextAdapter | undefined;\n /**\n * Observe later Context adapter changes.\n * @param listener - synchronous contained observer.\n * @returns disposer for this subscription.\n */\n subscribe(listener: TypertRegistryListener): TypertDisposer;\n}\n/** Minimal Typert runtime consumed through dependency inversion. */\nexport interface TypertRegistryContract {\n readonly local: TypertLocalRegistry;\n readonly remotes: TypertRemoteRegistry;\n readonly lookups: TypertLookupRegistry;\n readonly contexts: TypertContextRegistry;\n}\ndeclare module '@deepseek-ai/cordis' {\n interface Context {\n typert: TypertRegistryContract;\n }\n}\nexport {};\n//# sourceMappingURL=types.d.ts.map","/**\n * Remote decorators and explicit Gateway bindings backed by versioned\n * descriptors carried on decorated class prototypes. Strict reflection\n * remains a Typert compiler responsibility.\n * @module @deepseek-ai/dsh-typert-protocol\n */\nimport { Service, type Context } from '@deepseek-ai/cordis';\nimport type { TypertContextMap } from './types.ts';\nexport { RemoteError, remoteErrorOf } from './remote-error.ts';\n/**\n * Test one generated Remote name against the Connection endpoint grammar.\n * @param value - namespace, method, lookup, or Context segment.\n * @returns whether the value can cross the shared RPC carrier unchanged.\n */\nexport declare function isTypertRemoteSegment(value: string): boolean;\nexport type { InvocationDescriptor, InvocationParameterDescriptor, InvocationSourceLocation, RemoteErrorCode, RemoteErrorDetailsMap, RemoteFailure, RemoteResult, TypertClientEventListener, TypertClientRemote, TypertClientContextAdapter, TypertCodec, TypertContext, TypertContextAdapter, TypertContextMap, TypertContextRegistry, TypertContextWire, TypertDisposer, TypertForwardableEvent, TypertForwardableEventEntry, TypertHostContextAdapter, TypertHostContextIdentity, TypertHostContextResolver, TypertLocalRegistry, TypertLookup, TypertLookupDefinition, TypertLookupHost, TypertLookupMap, TypertLookupProvider, TypertLookupResolver, TypertLookupRegistry, TypertLookupWire, TypertRemoteScopeApi, TypertRemoteScopeMap, TypertRemoteScopeNamespace, TypertRemoteContribution, TypertRemoteEvent, TypertRemoteEventSelection, TypertRemoteMap, TypertRemoteNamespace, TypertRemoteNamespaceMap, TypertRemoteRegistry, TypertRegistryChange, TypertRegistryListener, TypertSchema, TypertRegistryContract, } from './types.ts';\n/** Options for an explicit Service-to-Gateway binding. */\nexport interface TypertGatewayBindingOptions {\n /** Wire namespace; defaults to the Cordis service key. */\n readonly namespace?: string;\n}\n/** Visible declaration that one Service participates in Typert Gateway export. */\nexport interface TypertGatewayBinding<Service extends object = object> {\n readonly service: Service;\n readonly serviceKey: string;\n readonly namespace: string;\n}\n/** Invocation mode recorded by a Remote method decorator. */\nexport type RemoteInvocationMarker = {\n readonly kind: 'direct';\n} | {\n readonly kind: 'context';\n readonly context: string;\n};\n/** One decorator marker discovered for a live Service instance. */\nexport interface RemoteMethodMarker {\n /** Public instance method carrying the implementation. */\n readonly method: string;\n /** Endpoint method when it differs from the implementation member. */\n readonly exportName?: string;\n /** Stream methods yield many independently validated result items. */\n readonly mode?: 'stream';\n readonly invocation: RemoteInvocationMarker;\n}\n/** Options for a non-unary Remote method. */\nexport interface RemoteMethodOptions {\n /** Deliver each Iterable item over the shared logical-stream carrier. */\n readonly mode: 'stream';\n}\ntype RemoteMethodDecorator = <This extends object, Args extends unknown[], Result>(method: (this: This, ...args: Args) => Result, context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Result>) => void;\n/**\n * Bind one visible Service field to a Cordis key and Remote namespace.\n * @param service - owning Service instance, normally `this`.\n * @param serviceKey - exact Cordis service key.\n * @param options - optional distinct wire namespace.\n * @returns a frozen, inspectable binding with no compiler-injected metadata.\n */\nexport declare function bindTypertRemote<Service extends object>(service: Service, serviceKey: string, options?: TypertGatewayBindingOptions): TypertGatewayBinding<Service>;\n/** Cordis Service base that exposes its registered name through Typert Gateway. */\nexport declare abstract class TypertRemoteService<out T = never> extends Service<T> {\n /** Visible binding consumed by the Gateway's source-mode discovery. */\n readonly typertRemote: TypertGatewayBinding<this>;\n /**\n * Register the Service and bind the same key to Typert Gateway.\n * @param ctx - owning Cordis Context.\n * @param serviceKey - exact Cordis service key and default wire namespace.\n * @param options - optional distinct wire namespace.\n */\n protected constructor(ctx: Context, serviceKey: string, options?: TypertGatewayBindingOptions);\n}\n/**\n * Mark one public instance method as a direct Remote invocation.\n * @param _method - decorated method; retained only by the class itself.\n * @param context - standard decorator context used to schedule private marking.\n */\nexport declare function Remote<This extends object, Args extends unknown[], Result>(_method: (this: This, ...args: Args) => Result, context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Result>): void;\n/**\n * Mark one public instance method under an exported name or as a logical stream.\n * @param option - endpoint method name or stream delivery mode.\n * @returns a standard method decorator.\n */\nexport declare function Remote(option: string | RemoteMethodOptions): RemoteMethodDecorator;\n/**\n * Create a decorator for a method resolved from one Remote Scope.\n * @param key - scope key declared through the Context map.\n * @param exportName - optional Remote export name; defaults to the method name.\n * @returns a standard method decorator that records a versioned prototype descriptor.\n */\nexport declare function RemoteScope(key: Extract<keyof TypertContextMap, string>, exportName?: string): RemoteMethodDecorator;\n/**\n * Read Remote markers attached to a live Service's class prototype.\n * The returned snapshot cannot mutate the stored descriptor.\n * @param service - live Service instance.\n * @returns markers in class declaration order.\n */\nexport declare function remoteMethods(service: object): readonly RemoteMethodMarker[];\n//# sourceMappingURL=index.d.ts.map","/**\n * Duplicate-install-safe nominal primitive helpers.\n *\n * A brand makes structurally identical strings or numbers non-interchangeable\n * at the type level: a `SessionId` cannot be passed where a `ToolCallId` is\n * expected, and an event sequence cannot be passed as a log offset. Comparison,\n * logging, and serialization retain the underlying primitive behavior.\n *\n * This package owns no concrete domain value and keeps no runtime identity or mutable\n * state, so independently installed copies produce interchangeable values.\n *\n * @module @deepseek-ai/dsh-brand\n */\ndeclare const BRAND: unique symbol;\n/** A string carrying a compile-time-only brand `B`. */\nexport type Branded<B extends string> = string & {\n readonly [BRAND]: B;\n};\n/** A number carrying a compile-time-only brand `B`. */\nexport type BrandedNumber<B extends string> = number & {\n readonly [BRAND]: B;\n};\n/**\n * Apply a compile-time string brand without changing the value.\n * @param value - string admitted by the domain that owns the target brand.\n * @returns the same string with the requested compile-time brand.\n */\nexport declare function brandString<T extends Branded<string>>(value: string | T): T;\n/**\n * Apply a compile-time number brand without changing the value.\n * @param value - number admitted by the domain that owns the target brand.\n * @returns the same number with the requested compile-time brand.\n */\nexport declare function brandNumber<T extends BrandedNumber<string>>(value: number | T): T;\nexport {};\n//# sourceMappingURL=index.d.ts.map","/** Attachment identifier brand. @module @deepseek-ai/dsh-attachment/brand */\nimport type { Branded } from '@deepseek-ai/dsh-brand';\n/** Opaque content-addressed identifier for one immutable attachment object. */\nexport type AttachmentId = Branded<'AttachmentId'>;\n/**\n * Brand a validated storage identifier.\n * @param value - backend-produced opaque identifier.\n * @returns the branded identifier.\n */\nexport declare function AttachmentId(value: string): AttachmentId;\n/** Opaque deterministic identity for one request-image transformation. */\nexport type ImageVariantId = Branded<'ImageVariantId'>;\n/**\n * Brand a validated request-image transformation identifier.\n * @param value - attachment-provider-produced opaque identifier.\n * @returns the branded identifier.\n */\nexport declare function ImageVariantId(value: string): ImageVariantId;\n//# sourceMappingURL=brand.d.ts.map","/** Durable attachment vocabulary. @module @deepseek-ai/dsh-attachment/types */\nimport type { AttachmentId, ImageVariantId } from './brand.ts';\nexport type { AttachmentId } from './brand.ts';\n/** Raster image formats accepted by the version-one attachment path. */\nexport type ImageMediaType = 'image/png' | 'image/jpeg' | 'image/webp' | 'image/gif';\n/** Durable, serializable reference to one immutable normalized image. */\nexport interface ImageAttachmentRef {\n /** Opaque storage identifier; never a filesystem path or bearer URL. */\n attachmentId: AttachmentId;\n /** Media type verified from the stored bytes. */\n mediaType: ImageMediaType;\n /** Exact encoded byte length. */\n bytes: number;\n /** Intrinsic encoded width in pixels. */\n width: number;\n /** Intrinsic encoded height in pixels. */\n height: number;\n /** Optional display name stripped of local path information. */\n name?: string;\n /**\n * Input dimensions after applying EXIF orientation and before normalization\n * scaling. Present only when normalization reduced the image.\n */\n originalDimensions?: {\n width: number;\n height: number;\n };\n}\n/** Deployment-resolved limits used by upload admission and request buffering. */\nexport interface ImageAttachmentLimits {\n maxImageBytes: number;\n maxImagesPerMessage: number;\n maxMessageImageBytes: number;\n maxImagePixels: number;\n /** Maximum intrinsic width and maximum intrinsic height in pixels for one image. */\n maxImageDimension: number;\n mediaTypes: readonly ImageMediaType[];\n}\n/** Base64-encoded image upload accompanying one wire request. */\nexport interface EncodedImageAttachment {\n /** Declared media type, verified against the decoded bytes during admission. */\n mediaType: ImageMediaType;\n /** Canonical base64 encoding of the image bytes. */\n data: string;\n /** Optional display name; it is never interpreted as a path. */\n name?: string;\n}\n/**\n * Browser-submitted prompt content accepted by Host prompt endpoints; the\n * accepting Host promotes image parts to durable references through\n * `admitPromptContent` before any message is created, so a wire caller can\n * never cite an attachment it did not upload.\n */\nexport type PromptContentPart = {\n readonly type: 'text';\n readonly text: string;\n} | {\n readonly type: 'image';\n readonly mediaType: ImageMediaType;\n readonly data: string;\n readonly name?: string;\n};\n/** Host-admitted prompt content with each uploaded image replaced by its durable reference. */\nexport type AdmittedPromptContentPart = {\n readonly type: 'text';\n readonly text: string;\n} | {\n readonly type: 'image';\n readonly attachment: ImageAttachmentRef;\n};\n/** Request to validate and durably commit one image. */\nexport interface SaveImageAttachment {\n data: Uint8Array;\n /** Caller-declared media type, checked against fully decoded bytes. */\n mediaType: ImageMediaType;\n /** Optional browser/provider display name; it is never interpreted as a path. */\n name?: string;\n}\n/** Stored image bytes returned after reference and digest verification. */\nexport interface StoredImageAttachment {\n ref: ImageAttachmentRef;\n data: Uint8Array;\n}\n/** Deterministic request-image policy selected by one exact model route. */\nexport interface ImageRequestPolicy {\n /** Maximum width multiplied by height after aspect-preserving projection. */\n maxPixels: number;\n /** Encoded-byte target before base64 expansion or Files API upload; the smallest quality-ladder output is kept when no quality fits. */\n maxBytes: number;\n}\n/** Cached request version derived from one provider-independent normalized attachment. */\nexport interface RequestImageAttachment {\n /** Cache and upload-index key over the attachment id, policy, and fixed encoder parameters. */\n variantId: ImageVariantId;\n /** Durable normalized attachment from which this request version was derived. */\n attachment: ImageAttachmentRef;\n /** Encoded request bytes. */\n data: Uint8Array;\n mediaType: ImageMediaType;\n bytes: number;\n width: number;\n height: number;\n /** Provider-compatible sample depth proven after request encoding. */\n depth: 'uchar';\n /** Provider-compatible color space proven after request encoding. */\n space: 'srgb';\n /** Whether the encoded request version retains an alpha channel. */\n hasAlpha: boolean;\n}\n//# sourceMappingURL=types.d.ts.map","/** Durable attachment storage seam (`ctx.attachments`). @module @deepseek-ai/dsh-attachment */\nimport { Context, Service } from '@deepseek-ai/cordis';\nimport type { ImageAttachmentLimits, ImageAttachmentRef, ImageRequestPolicy, RequestImageAttachment, SaveImageAttachment, StoredImageAttachment } from './types.ts';\nexport { AttachmentId, ImageVariantId } from './brand.ts';\nexport { AttachmentError, isImageAdmissionError } from './error.ts';\nexport type { AttachmentErrorCode, ImageAdmissionErrorCode } from './error.ts';\nexport { admitEncodedImages, admitPromptContent } from './admission.ts';\nexport { requestImageDimensions } from './request-projection.ts';\nexport type { AttachmentId as AttachmentIdType, AdmittedPromptContentPart, EncodedImageAttachment, ImageAttachmentLimits, ImageAttachmentRef, ImageRequestPolicy, ImageMediaType, PromptContentPart, RequestImageAttachment, SaveImageAttachment, StoredImageAttachment, } from './types.ts';\ndeclare module '@deepseek-ai/cordis' {\n interface Context {\n attachments: AttachmentStore;\n }\n}\n/** Immutable binary attachment service. Implementations validate bytes before publishing a reference. */\nexport declare abstract class AttachmentStore extends Service {\n constructor(ctx: Context);\n /** Deployment-resolved image policy used by authoritative and fast-path validation. */\n abstract readonly imageLimits: ImageAttachmentLimits;\n /**\n * Validate one image without persisting it.\n * Batch callers validate every member before saving any member.\n * @param input - encoded bytes, declared media type, and optional display name.\n * @returns completion after the encoded raster has been fully decoded.\n */\n abstract validateImage(input: SaveImageAttachment): Promise<void>;\n /**\n * Validate one ordered image batch before committing any member.\n * Validation failures start no writes; storage failures return no partial\n * references, although already published content-addressed objects may stay\n * unreachable until a future retention policy collects them.\n * @param inputs - encoded images in their owning message order.\n * @returns durable references in the exact input order.\n */\n protected validateImageBatch(inputs: readonly SaveImageAttachment[]): void;\n /**\n * Validate and durably commit one ordered image batch.\n * @param inputs - encoded images in owning-message order.\n * @returns durable normalized attachment references in the same order after every member succeeds.\n */\n saveImages(inputs: readonly SaveImageAttachment[]): Promise<readonly ImageAttachmentRef[]>;\n /**\n * Validate and durably commit one image before its owning session event is appended.\n * The returned reference describes the persisted normalized image. When\n * normalization reduces the raster, its `originalDimensions` records the\n * orientation-applied input dimensions.\n * @param input - encoded bytes, declared media type, and optional display name.\n * @returns the durable content-addressed normalized image reference.\n */\n abstract saveImage(input: SaveImageAttachment): Promise<ImageAttachmentRef>;\n /**\n * Read one image and verify that bytes still match the recorded reference.\n * @param ref - durable reference from the session log.\n * @param signal - optional cancellation for backend read and verification work.\n * @returns the verified bytes and normalized attachment reference.\n * @throws the signal reason when aborted, or a storage error when verification fails.\n */\n abstract readImage(ref: ImageAttachmentRef, signal?: AbortSignal): Promise<StoredImageAttachment>;\n /**\n * Locate the provider-owned normalized object in the harness host filesystem.\n * @param ref - durable normalized attachment reference.\n * @returns an absolute host path, or undefined when this backend is not host-file-backed.\n * @throws an AttachmentError when the durable reference is invalid.\n */\n imageHostPath(ref: ImageAttachmentRef): string | undefined;\n /**\n * Generate or read one deterministic model-request version from the stored normalized image.\n * @param ref - durable provider-independent normalized attachment reference.\n * @param policy - exact route pixel budget and encoded-byte target; a target no ladder quality meets yields the smallest ladder output.\n * @param signal - optional cancellation.\n * @returns request bytes and the cache/upload identity covering every transform input.\n */\n readImageRequest(ref: ImageAttachmentRef, policy: ImageRequestPolicy, signal?: AbortSignal): Promise<RequestImageAttachment>;\n}\nexport default AttachmentStore;\n//# sourceMappingURL=index.d.ts.map","/**\n * dsh-llm's owned branded ids: tool-call correlation and provider request\n * diagnostics.\n *\n * The `Branded<B>` primitive and stateless constructor live in\n * `@deepseek-ai/dsh-brand` so every owner of a cross-boundary id can brand it\n * without depending on dsh-llm; see that package's README for the\n * nominal-typing policy.\n *\n * @module @deepseek-ai/dsh-llm/brand\n */\nimport { type Branded } from '@deepseek-ai/dsh-brand';\n/** Stable identity carried by one message across inbox, log, and model-request boundaries. */\nexport type MessageId = Branded<'MessageId'>;\n/**\n * Brand a message identifier.\n * @param id - the opaque message identifier.\n * @returns the same string with the message-id brand.\n */\nexport declare function MessageId(id: string): MessageId;\n/**\n * Correlates a model-issued tool call with its result. Provider-issued for\n * real adapters; synthesized by mocks/assembler fallbacks.\n */\nexport type ToolCallId = Branded<'ToolCallId'>;\n/**\n * Brand a string as a {@link ToolCallId}.\n * @param id - the provider-issued or synthesized call id.\n * @returns the same string with the tool-call-id brand.\n */\nexport declare function ToolCallId(id: string): ToolCallId;\n/** Provider-issued request identifier retained for diagnostics across package boundaries. */\nexport type ProviderRequestId = Branded<'ProviderRequestId'>;\n/**\n * Brand a provider-issued request identifier.\n * @param id - the opaque provider-issued string.\n * @returns the same string, branded; no validation is performed.\n */\nexport declare function ProviderRequestId(id: string): ProviderRequestId;\n/** Adapter-owned identifier for one model's selectable reasoning effort. */\nexport type ReasoningEffortId = Branded<'ReasoningEffortId'>;\n/**\n * Brand an adapter-owned reasoning-effort identifier.\n * @param id - the opaque identifier exposed by one model capability.\n * @returns the same string, branded; no validation is performed.\n */\nexport declare function ReasoningEffortId(id: string): ReasoningEffortId;\n//# sourceMappingURL=brand.d.ts.map","/** Message value types, identity, and immutable construction helpers. */\nimport type { MessageId, ToolCallId } from './brand.ts';\nimport type { ContentBlock, ToolResultBlock } from './types.ts';\n/** Provider/model identity and adapter-private replay data for an assistant message. */\nexport interface AssistantProvenance {\n /** Provider route that produced the message. */\n provider: string;\n /** Provider model id that produced the message. */\n model: string;\n /**\n * Lossless-JSON adapter state needed to replay the provider response.\n * `LlmRuntime` exposes it to a target adapter only when that adapter instance\n * currently owns both this historical provider and the target provider.\n */\n replayState?: unknown;\n}\n/** Required source of an assistant message produced by a routed model. */\nexport interface ModelMessageSource extends AssistantProvenance {\n kind: 'model';\n}\n/** Required source of a user-role message carrying one tool result. */\nexport interface ToolMessageSource {\n kind: 'tool';\n callId: ToolCallId;\n}\n/**\n * The kind of information in producer-supplied context, declared by the\n * producer beside its provenance.\n *\n * `MessageSource.kind` answers *who produced this*; `form` answers *what kind\n * of thing it is*, and the two axes are deliberately independent — several\n * producers share one form, and one producer may emit more than one form over\n * a session.\n *\n * The vocabulary is SEMANTIC, never visual: a value states that the content is\n * a file's instructions or a catalog of available items, and a consumer decides\n * what that looks like. Colors, icons, ordering, and collapse defaults are the\n * consumer's business and must not enter this union. It grows one value at a\n * time as producers gain the structured fields their form needs; an absent or\n * unknown value is the documented default, presented as opaque content.\n */\nexport type ContextForm = \n/** Instructions read out of workspace files the model is expected to follow. */\n'instructions'\n/** A catalog of items available in this session, republished as it changes. */\n | 'catalog'\n/** Current state, where a later snapshot from the same producer supersedes an earlier one. */\n | 'snapshot'\n/** A one-off account of something that just happened; it supersedes nothing. */\n | 'notice'\n/** A message another agent addressed to this one. */\n | 'relay'\n/** Material lifted out of another session's log, possibly reduced on the way in. */\n | 'recall';\n/** One named contribution to a `snapshot`-form context, in assembly order. */\nexport interface ContextSnapshotSection {\n /** The contributing subsystem's name. */\n readonly name: string;\n /** That contribution's model-facing text, exactly as assembled. */\n readonly text: string;\n}\n/**\n * Producer-declared {@link ContextForm} and the fields that form requires,\n * mixed into the source types that carry one.\n *\n * Discriminated by `form` so a producer cannot select a form without the\n * fields needed to present it: a `notice` must record its one-line\n * account, a `snapshot` its sections. Omitting `form` stays valid — an\n * undeclared context is the documented default.\n */\nexport type ContextFormed = {\n readonly form?: never;\n} | {\n readonly form: 'instructions';\n} | {\n readonly form: 'catalog';\n} | {\n readonly form: 'snapshot';\n /** The named contributions this snapshot assembled, in order. */\n readonly sections: readonly ContextSnapshotSection[];\n} | {\n readonly form: 'notice';\n /** One-line account of what happened, shown without expanding the row. */\n readonly summary: string;\n} | {\n readonly form: 'relay';\n} | {\n readonly form: 'recall';\n};\n/**\n * Where a message (or injected content) came from.\n * Merge-extensible sum type — plugins add their own `kind`s.\n */\nexport interface MessageSourceMap {\n user: {\n kind: 'user';\n };\n plugin: {\n kind: 'plugin';\n plugin: string;\n } & ContextFormed;\n model: ModelMessageSource;\n tool: ToolMessageSource;\n}\n/**\n * Bound for a `notice` summary. The account rides a collapsed transcript row\n * and is committed to the durable log, while its inputs — task labels, goal\n * objectives, tool arguments — are caller text with no length of their own.\n */\nexport declare const CONTEXT_SUMMARY_MAX_CHARS = 120;\n/**\n * Bound one `notice` summary to {@link CONTEXT_SUMMARY_MAX_CHARS}.\n * @param summary - the producer's one-line account, of any length.\n * @returns the account, ellipsized when it exceeds the bound.\n */\nexport declare function boundContextSummary(summary: string): string;\n/** Any known message source, derived from {@link MessageSourceMap}; switch on `kind` and fall through unknowns (merge-extensible). */\nexport type MessageSource = MessageSourceMap[keyof MessageSourceMap];\n/** One immutable message representation shared by delivery, durable history, and model requests. */\nexport interface Message {\n /** Stable identity preserved across every representation boundary. */\n readonly id: MessageId;\n /** Provider-neutral conversation role. */\n readonly role: 'system' | 'user' | 'assistant';\n /** Exact model-facing blocks. */\n readonly content: ContentBlock[];\n /** Required source fields supplied by the producer. */\n readonly source: MessageSource;\n}\n/** A user-role specialization of the one shared message representation. */\nexport interface UserMessage extends Message {\n readonly role: 'user';\n}\n/** A model-produced assistant specialization of the shared message representation. */\nexport interface AssistantMessage extends Message {\n readonly role: 'assistant';\n readonly source: ModelMessageSource;\n}\n/** A tool-result specialization whose model-facing block retains call correlation. */\nexport interface ToolResultMessage extends Message {\n readonly role: 'user';\n readonly content: [ToolResultBlock];\n readonly source: ToolMessageSource;\n}\ntype NewMessage = Omit<Message, 'id'>;\ntype NewUserMessage = Omit<UserMessage, 'id' | 'role'>;\ntype NewAssistantMessage = Omit<AssistantMessage, 'id' | 'role' | 'source'> & {\n readonly source: Omit<ModelMessageSource, 'kind'> & {\n readonly kind?: never;\n };\n};\n/**\n * Detach and deep-freeze a message whose identity already exists.\n * @param message - complete message, including its stable identity.\n * @returns an immutable snapshot that preserves the identity.\n */\nexport declare function freezeMessage<T extends Message>(message: T): T;\n/**\n * Create one identified message and freeze it before publication.\n * @param input - complete role, content, and source for a new message.\n * @returns an immutable message with a fresh stable identity.\n */\nexport declare function createMessage<T extends NewMessage>(input: T & {\n readonly id?: never;\n}): T & Pick<Message, 'id'>;\n/**\n * Create one identified user-role message and freeze it before publication.\n * @param input - complete content and source for a new user message.\n * @returns an immutable user message with a fresh stable identity.\n */\nexport declare function createUserMessage<T extends NewUserMessage>(input: T & {\n readonly id?: never;\n readonly role?: never;\n}): T & Pick<UserMessage, 'id' | 'role'>;\n/**\n * Create one identified model-produced assistant message and freeze it before publication.\n * @param input - complete content plus the provider, model, and optional replay state for a new assistant message.\n * @returns an immutable assistant message with fixed role/source tags and a fresh stable identity.\n */\nexport declare function createAssistantMessage(input: NewAssistantMessage & {\n readonly id?: never;\n readonly role?: never;\n}): AssistantMessage;\n/** Input whose acceptance creates one tool-result message. */\nexport interface ToolResultMessageInput {\n readonly callId: ToolCallId;\n readonly content: ContentBlock[];\n readonly isError: boolean;\n}\n/**\n * Create and freeze one identified tool-result message.\n * @param input - call identity, raw result blocks, and outcome.\n * @returns an immutable user-role tool-result message.\n */\nexport declare function createToolResultMessage(input: ToolResultMessageInput): ToolResultMessage;\nexport {};\n//# sourceMappingURL=message.d.ts.map","/**\n * Canonical provider-neutral message and streaming vocabulary for the loop,\n * session log, and plugins. Adapters alone translate provider wire messages;\n * mapped interfaces make the content, source, and finish unions extensible.\n */\nimport type { Branded } from '@deepseek-ai/dsh-brand';\nimport type { ImageAttachmentRef } from '@deepseek-ai/dsh-attachment';\nimport type { ToolCallId, ProviderRequestId, ReasoningEffortId } from './brand.ts';\nimport type { Message } from './message.ts';\ndeclare module '@deepseek-ai/cordis' {\n interface Events {\n /**\n * The provider topology changed: an adapter registered or unregistered\n * routes, or the configurable-provider directory gained or lost entries.\n * This payload-free registry notification fires at each commit point\n * (including registration disposal); consumers re-read `listProviders()`,\n * `listModels()`, or `listConfigurableProviders()` for the new state.\n * Observer failures are contained and cannot veto the registry mutation.\n * @mode emit\n */\n 'llm/adapters-updated'(): void;\n }\n}\nexport type { AssistantMessage, AssistantProvenance, Message, MessageSource, MessageSourceMap, ModelMessageSource, ToolMessageSource, ToolResultMessage, UserMessage, } from './message.ts';\n/** Serializable provider or transport failure facts; policy decides whether they are retryable. */\nexport interface LlmFailure {\n /** Human-readable provider or transport failure. */\n readonly message: string;\n /** Stable provider-neutral machine-routing code. */\n readonly code: string;\n /** HTTP status returned by the provider, when available. */\n readonly status?: number;\n /** Provider-requested delay in milliseconds, when valid and available. */\n readonly providerRetryAfterMs?: number;\n /** Opaque provider-issued request identifier for diagnostics. */\n readonly requestId?: ProviderRequestId;\n}\n/** Plain text visible to the end user. */\nexport interface TextBlock {\n type: 'text';\n text: string;\n}\n/** Reasoning / thinking content, distinct from visible text. */\nexport interface ReasoningBlock {\n type: 'reasoning';\n text: string;\n}\n/**\n * A durable raster image reference, valid in user or assistant content. The\n * block is deliberately role-neutral; assistant-side rendering is forward\n * compatibility — the current production adapters declare text-only output,\n * so only user messages may carry images.\n */\nexport interface ImageBlock {\n type: 'image';\n /** Immutable bytes and intrinsic display metadata owned by the attachment service. */\n attachment: ImageAttachmentRef;\n}\n/** A tool invocation requested by the model. */\nexport interface ToolCallBlock {\n type: 'tool-call';\n /** Provider-issued call id; correlates with the matching tool result. */\n id: ToolCallId;\n name: string;\n /** Raw JSON string as produced by the model. */\n arguments: string;\n}\n/** The result of a tool invocation, sent back to the model. */\nexport interface ToolResultBlock {\n type: 'tool-result';\n toolCallId: ToolCallId;\n content: ContentBlock[];\n isError?: boolean;\n}\n/**\n * Merge-extensible content blocks keyed by `type`. New core blocks must land\n * with adapter, UI, and compaction support.\n */\nexport interface ContentBlockMap {\n 'text': TextBlock;\n 'reasoning': ReasoningBlock;\n 'image': ImageBlock;\n 'tool-call': ToolCallBlock;\n 'tool-result': ToolResultBlock;\n}\n/** The block `type` tag vocabulary; widens as plugins add entries to {@link ContentBlockMap}. */\nexport type ContentBlockType = keyof ContentBlockMap;\n/** Any known content block, derived from {@link ContentBlockMap}; switch on `type` and fall through unknowns (merge-extensible). */\nexport type ContentBlock = ContentBlockMap[ContentBlockType];\n/**\n * Why a model response stopped.\n * Merge-extensible so adapters can surface provider-specific reasons.\n */\nexport interface FinishReasonMap {\n 'stop': {\n kind: 'stop';\n };\n 'tool-calls': {\n kind: 'tool-calls';\n };\n 'max-tokens': {\n kind: 'max-tokens';\n };\n 'aborted': {\n kind: 'aborted';\n failure: LlmFailure;\n };\n 'error': {\n kind: 'error';\n failure: LlmFailure;\n };\n}\n/** Any known finish reason, derived from {@link FinishReasonMap}; switch on `kind` and fall through unknowns (merge-extensible). */\nexport type FinishReason = FinishReasonMap[keyof FinishReasonMap];\n/**\n * Token accounting for one model call (cache fields are optional).\n *\n * Counts are DISJOINT: `inputTokens` is uncached input only; cached input is\n * reported separately as `cacheReadTokens`/`cacheWriteTokens` (billed input =\n * sum of the three). Adapters whose providers fold cache hits into a total\n * prompt count (DeepSeek's `prompt_tokens`) subtract them out.\n */\nexport interface TokenUsage {\n inputTokens: number;\n outputTokens: number;\n /**\n * Exact full-call total including aggregate prompt and output tokens.\n *\n * Adapters preserve a provider total or derive it from authoritative\n * aggregate prompt/output counters; they omit it when unavailable or\n * inconsistent.\n */\n totalTokens?: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n reasoningTokens?: number;\n}\n/**\n * Request price of one ordered image occurrence under one exact model route's\n * request projection. Every occurrence resolves to the pair the wire actually\n * carries: provider visual tokens for a retained image, plus the model-visible\n * text sent with or instead of it (request-preview handle, offload placeholder,\n * or text-only substitution). The caller prices `text` with its own text\n * estimator so provider pricing never fixes a text tokenization.\n */\nexport interface LlmImageRequestPrice {\n /** Provider visual tokens for the retained request image; 0 when only text represents this occurrence. */\n visualTokens: number;\n /** Model-visible text sent for this occurrence, to be priced by the caller's text estimator. */\n text: string;\n}\n/**\n * Provider-side request-image pricing for one exact model route. Implemented\n * by adapters whose provider charges visual tokens; consumers (the token\n * meter) resolve it synchronously per measurement, so implementations must not\n * perform I/O.\n */\nexport interface LlmImageRequestPricing {\n /**\n * Price every image occurrence of one request projection.\n * @param images - durable image references in request order, one entry per occurrence.\n * @returns one price per occurrence, aligned by index with `images`.\n */\n priceImages(images: readonly ImageAttachmentRef[]): readonly LlmImageRequestPrice[];\n}\n/** Display metadata for one registered provider route. */\nexport interface LlmProviderInfo {\n /** Provider route key used by {@link GenerateOptions.provider}. */\n id: string;\n /** Human-readable provider name for selectors and diagnostics. */\n name: string;\n}\n/** Merge-extensible provider model modality vocabulary. */\nexport interface ModelModalityMap {\n text: 'text';\n image: 'image';\n}\n/** Any declared provider model modality. */\nexport type ModelModality = ModelModalityMap[keyof ModelModalityMap];\n/**\n * One provider route an adapter plugin can activate through configuration,\n * whether or not the route is currently registered. Configuration surfaces\n * merge this directory with `listProviders()` to offer every configurable\n * provider alongside its live/dormant state.\n */\nexport interface LlmConfigurableProvider {\n /** Provider route key this entry activates when configured. */\n provider: string;\n /** Human-readable provider name for configuration surfaces. */\n displayName: string;\n /** User-settings namespace whose section configures this provider. */\n settingsNs: string;\n /**\n * Path from that namespace's section root to this provider's profile\n * object; empty when the whole section is the profile.\n */\n settingsPath: readonly string[];\n /**\n * Whether the owning adapter knows this route only because configuration\n * declared it — a gateway or self-hosted server it ships nothing about.\n * Absent means the adapter draws no such distinction; false means it does\n * and this route is one of its own. Only the adapter can answer: a stored\n * profile is how a user-added route AND a corrected shipped one both look\n * from outside.\n */\n declared?: boolean;\n}\n/**\n * One interrogation of a provider endpoint that configuration has not stored\n * yet. Configuration surfaces send the draft a user is still editing, so the\n * request carries the endpoint and credential directly instead of naming a\n * route: a provider being added has no route to name.\n */\nexport interface LlmModelDiscoveryRequest {\n /**\n * Route the draft is editing, when it edits an existing one. A route whose\n * adapter already knows its models answers from that knowledge instead of\n * asking the endpoint — the adapter's own registry is the better answer, and\n * it costs no network call.\n */\n provider?: string;\n /**\n * Endpoint to interrogate. Optional because a route the adapter already\n * describes needs none; a route it does not must supply one.\n */\n baseURL?: string;\n /** Wire protocol the endpoint speaks, when the draft names one. */\n api?: string;\n /** Credential for this interrogation alone; the harness never stores it. */\n apiKey?: string;\n}\n/** Provider-side discovery request with operation-local cancellation attached. */\nexport interface LlmModelDiscoveryOperation extends LlmModelDiscoveryRequest {\n /** Caller cancellation; implementations must settle promptly after it aborts. */\n signal?: AbortSignal;\n}\ndeclare module '@deepseek-ai/dsh-typert-protocol' {\n interface RemoteErrorDetailsMap {\n /** A draft provider interrogation refused or failed. */\n 'llm/model-discovery-rejected': {\n readonly settingsNs: string;\n readonly baseURL?: string;\n };\n }\n}\n/**\n * One model an endpoint reports about itself. Every field but the id is\n * optional because most provider listings disclose an id and nothing else;\n * a surface adopting one of these still owes the capacities its adapter needs.\n */\nexport interface LlmDiscoveredModel {\n /** Model id the endpoint accepts. */\n id: string;\n /** Human-readable name when the endpoint supplies one. */\n name?: string;\n /** Maximum combined request and response context, when disclosed. */\n contextWindow?: number;\n /** Maximum output tokens, when disclosed. */\n maxTokens?: number;\n}\n/** One adapter-discovered model; catalog membership is advisory, not request validation. */\nexport interface LlmModelInfo {\n /** Provider route that owns this model entry. */\n provider: string;\n /** Model id passed to {@link GenerateOptions.model}. */\n id: string;\n /** Human-readable model name for selectors. */\n name: string;\n /** Optional user-facing distinction from otherwise similar models. */\n description?: string;\n /** Accepted request modalities; absent means unknown, while an explicit omission is negative capability. */\n inputModalities?: readonly ModelModality[];\n}\n/** Provider-owned context capacity for one exact provider/model route. */\nexport interface LlmModelContext {\n /** Maximum combined request and response context in tokens. */\n contextWindow: number;\n}\n/** Display metadata for one adapter-owned reasoning effort. */\nexport interface LlmReasoningEffortInfo {\n /** Opaque stable value accepted by {@link GenerateOptions.reasoningEffort}. */\n id: ReasoningEffortId;\n /** Human-readable effort name for selectors and diagnostics. */\n name: string;\n /** Optional user-facing distinction from otherwise similar efforts. */\n description?: string;\n}\n/** Selectable reasoning efforts for one exact provider/model route. */\nexport interface LlmModelReasoningInfo {\n /** Supported efforts in adapter-preferred display order. */\n efforts: readonly LlmReasoningEffortInfo[];\n /**\n * Adapter-configured default materialized into requests when callers omit\n * an effort. Absence preserves the provider's own default.\n */\n defaultEffort?: ReasoningEffortId;\n}\n/** Exact-route model metadata resolved by its owning adapter. */\nexport interface LlmResolvedModelInfo extends LlmModelInfo {\n /** Provider-owned context capacity when known. */\n context?: LlmModelContext;\n /** Adapter-configured per-request output cap materialized when callers omit one. */\n defaultMaxTokens?: number;\n /** Adapter-owned selectable reasoning levels when exposed. */\n reasoning?: LlmModelReasoningInfo;\n}\n/**\n * Adapter-private lossless-JSON state for replaying a successful response,\n * carried by a terminal `finish` chunk and stored on the assembled assistant\n * message's model source. Both halves stay opaque to the harness; only the\n * split is shared vocabulary, so assembly can keep stored metadata aligned\n * with stored content without reading either half.\n */\nexport interface ReplayEnvelope {\n /** Response-level adapter-private metadata (ids, native stop reason). */\n response: unknown;\n /**\n * Per-block adapter-private metadata, one entry per emitted block in\n * first-seen stream order. When assembly drops a block it drops the entry at\n * the same position; entries whose length does not match the emitted block\n * count discard the whole envelope. An adapter whose metadata is independent\n * of block structure omits this field and the envelope passes through\n * assembly unchanged.\n */\n blocks?: readonly unknown[];\n}\n/**\n * Raw streaming protocol emitted by adapters.\n * Block indexes correlate interleaved deltas, and `block-end` carries the\n * assembled block. Adapters emit usage before the terminal finish and nothing\n * afterward; tool arguments remain raw JSON strings. An adapter implementation\n * may throw, but `LlmRuntime.stream()` normalizes that failure to a terminal\n * `error` or `aborted` finish before exposing it to consumers.\n */\nexport type StreamChunk = {\n type: 'block-start';\n index: number;\n blockType: ContentBlockType;\n} | {\n type: 'text-delta';\n index: number;\n text: string;\n} | {\n type: 'reasoning-delta';\n index: number;\n text: string;\n} | {\n type: 'tool-call-delta';\n index: number;\n id: ToolCallId;\n name?: string;\n argumentsDelta: string;\n} | {\n type: 'block-end';\n index: number;\n block: ContentBlock;\n} | {\n type: 'usage';\n usage: TokenUsage;\n} | {\n type: 'finish';\n reason: FinishReason;\n /** Replay metadata for a successful response; see {@link ReplayEnvelope}. */\n replayState?: ReplayEnvelope;\n};\n/**\n * JSON-schema description of a tool, as sent to the model.\n *\n * Declared here (not in dsh-tools) because it is part of {@link GenerateOptions};\n * dsh-tools' ToolDefinition and dsh-system-prompt's PromptAssembly both import\n * it from this package.\n */\nexport interface ToolSchema {\n name: string;\n description: string;\n /** JSON Schema object for the arguments. */\n parameters: Record<string, unknown>;\n}\n/** A single model request, fully assembled. */\nexport interface GenerateOptions {\n /** Registered provider route selecting the adapter instance. */\n provider: string;\n model: string;\n /** Adapter-owned reasoning effort selected for this exact model. */\n reasoningEffort?: ReasoningEffortId;\n /**\n * Ordered conversation messages, exactly as the provider sees them (after\n * the `system` slot). A loop-built request assembles them as\n * the derived history (dsh-agent-loop); a hand-built one-shot passes any list.\n */\n messages: Message[];\n /** System prompt text (adapters map to the provider's system slot). */\n system?: string;\n /** Tool schemas (adapters map to the provider's `tools` field). */\n tools?: ToolSchema[];\n temperature?: number;\n maxTokens?: number;\n /**\n * Stop sequences: generation halts as soon as the model produces any one of\n * these strings (adapters map to the provider's stop field, e.g. OpenAI\n * `stop`). The stop string itself is not included in the output.\n */\n stop?: string[];\n signal?: AbortSignal;\n /**\n * Session identity stamped by the loop for request routing. Replay uses it\n * to separate cursors; adapters may map it to model-hidden transport metadata.\n */\n sessionId?: Branded<'SessionId'>;\n /**\n * Provider-neutral classification for an auxiliary model call. Adapters may\n * map the purpose to model-hidden transport metadata or purpose-specific\n * generation policy. Ordinary conversation requests leave it unset.\n */\n purpose?: 'compaction' | 'session-title';\n}\n//# sourceMappingURL=types.d.ts.map","/**\n * Provider-owned request-retry policy configuration and resolution.\n *\n * Adapters expose one resolved policy per registered provider route; the\n * optional dsh-llm-retry plugin executes it on the agent's failed-step extension point.\n *\n * @module @deepseek-ai/dsh-llm/retry-policy\n */\nimport z from '@deepseek-ai/schemastery';\n/** Bounded exponential backoff with symmetric jitter around each local delay. */\nexport interface BackoffConfig {\n /** Initial local exponential-backoff delay in milliseconds (default 500). */\n initialDelayMs?: number;\n /** Maximum locally scheduled or accepted provider delay in milliseconds (default 10000). */\n maxDelayMs?: number;\n /** Symmetric random multiplier range around one (default 0.1). */\n jitterRatio?: number;\n}\n/** Current bounded transient retry behavior for one provider route. */\nexport interface NormalRetryPolicyConfig {\n /** Retry only configured transient failure codes. */\n mode: 'normal';\n /** Maximum eligible retries after the first request (default 5). */\n maxRetries?: number;\n /** Stable failure codes eligible for this policy. */\n retryableCodes?: string[];\n /** Local exponential-backoff and jitter configuration. */\n backoff?: BackoffConfig;\n}\n/** Unbounded retry behavior for every model-request failure on one provider route. */\nexport interface AlwaysRetryPolicyConfig {\n /** Retry every model-request failure until success, cancellation, or disposal. */\n mode: 'always';\n /** Local exponential-backoff and jitter configuration. */\n backoff?: BackoffConfig;\n}\n/** Provider-owned model-request retry policy configuration. */\nexport type RetryPolicyConfig = NormalRetryPolicyConfig | AlwaysRetryPolicyConfig;\n/** Fully resolved backoff shared by both retry modes. */\nexport interface ResolvedRetryBackoff {\n readonly initialDelayMs: number;\n readonly maxDelayMs: number;\n readonly jitterRatio: number;\n}\n/** Fully resolved bounded transient retry policy. */\nexport interface ResolvedNormalRetryPolicy extends ResolvedRetryBackoff {\n readonly mode: 'normal';\n readonly maxRetries: number;\n readonly retryableCodes: readonly string[];\n}\n/** Fully resolved unbounded retry policy. */\nexport interface ResolvedAlwaysRetryPolicy extends ResolvedRetryBackoff {\n readonly mode: 'always';\n}\n/** Immutable provider policy captured when its adapter route is registered. */\nexport type ResolvedRetryPolicy = ResolvedNormalRetryPolicy | ResolvedAlwaysRetryPolicy;\n/** Cordis schema embedded by each concrete provider configuration. */\nexport declare const RetryPolicySchema: z<RetryPolicyConfig>;\n/**\n * Validate, default, and detach one provider-owned retry policy.\n * @param config - optional provider configuration; omission selects normal defaults.\n * @param path - diagnostic path naming the provider config that owns the value.\n * @returns an immutable policy safe to capture in provider registration state.\n */\nexport declare function resolveRetryPolicy(config: RetryPolicyConfig | undefined, path: string): ResolvedRetryPolicy;\n//# sourceMappingURL=retry-policy.d.ts.map","/**\n * Conversation call configuration and freeze utilities. Provider routing,\n * model, reasoning effort, and sampling values are request-header state that\n * can affect cache reuse; request waterfalls replace them and the loop logs\n * changed snapshots instead of allowing silent per-call drift.\n * @module dsh-llm/call-config\n */\nimport type { GenerateOptions } from './types.ts';\nimport type { ReasoningEffortId } from './brand.ts';\n/**\n * Provider, model, reasoning effort, and sampling scalars of one conversation's\n * requests. Every field maps 1:1 onto the same-named `GenerateOptions` field;\n * the loop builds requests from the logged header rather than accepting these\n * per call.\n */\nexport interface LlmCallConfig {\n provider: string;\n model: string;\n reasoningEffort?: ReasoningEffortId;\n temperature?: number;\n maxTokens?: number;\n stop?: string[];\n}\n/**\n * Effective config fields supplied by exact-model adapter resolution rather\n * than by the caller's request proposal.\n */\nexport interface LlmCallConfigAdapterDefaults {\n reasoningEffort?: true;\n maxTokens?: true;\n}\n/**\n * Field-wise equality over {@link LlmCallConfig} — the comparison a caller\n * runs to decide whether a proposed configuration is a real change (worth a\n * logged header snapshot) or the held one restated.\n * @param a - one configuration.\n * @param b - the other.\n * @returns whether every field (including the `stop` list, element-wise) matches.\n */\nexport declare function callConfigEquals(a: LlmCallConfig, b: LlmCallConfig): boolean;\n/**\n * Mark one exact request object as assembled by dsh-agent-loop.\n * @param request - loop-owned request envelope before LLM dispatch.\n * @returns the same request object marked as created by the process-local agent loop.\n */\nexport declare function markAgentLoopRequest<T extends GenerateOptions>(request: T): T;\n/**\n * Test whether the exact request object was assembled by dsh-agent-loop.\n * @param request - request envelope observed at the LLM waterfall.\n * @returns whether {@link markAgentLoopRequest} recorded this object.\n */\nexport declare function isAgentLoopRequest(request: GenerateOptions): boolean;\n//# sourceMappingURL=call-config.d.ts.map","/**\n * LLM service: adapter registry with a waterfall-interceptable streaming call\n * API. Exports the `LlmRuntime` default, the abstract `LlmAdapter` for\n * provider backends, and `BlockAssembler` for chunk assembly.\n *\n * @module @deepseek-ai/dsh-llm\n */\nimport { Context } from '@deepseek-ai/cordis';\nimport { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';\nimport type { GenerateOptions, LlmConfigurableProvider, LlmDiscoveredModel, LlmFailure, LlmImageRequestPricing, LlmModelContext, LlmModelDiscoveryRequest, LlmModelInfo, LlmResolvedModelInfo, LlmProviderInfo, ModelModality, StreamChunk } from './types.ts';\nimport type { ResolvedRetryPolicy } from './retry-policy.ts';\nimport type { ProviderRequestId } from './brand.ts';\nimport type { LlmCallConfig, LlmCallConfigAdapterDefaults } from './call-config.ts';\nimport { HarnessError } from './error.ts';\nexport * from './attribution.ts';\nexport * from './brand.ts';\nexport * from './error.ts';\nexport * from './api-key.ts';\nexport * from './types.ts';\nexport * from './content.ts';\nexport * from './message.ts';\nexport * from './retry-policy.ts';\nexport { BlockAssembler } from './assembler.ts';\nexport { callConfigEquals, isAgentLoopRequest, markAgentLoopRequest } from './call-config.ts';\nexport type { LlmCallConfig, LlmCallConfigAdapterDefaults } from './call-config.ts';\ndeclare module '@deepseek-ai/cordis' {\n interface Context {\n llm: LlmRuntime;\n }\n interface Events {\n /**\n * Waterfall around every streaming model call (retry, replay, routing).\n * Bound to the {@link LlmRuntime}; call `next()` to reach the resolved\n * adapter's stream, or yield your own chunks to short-circuit.\n * @param options - the full request. A LOOP-built request carries the\n * process-local {@link markAgentLoopRequest} identity and arrives deep-frozen\n * (mutation throws): its content is a pure function of the session log (the\n * reconstructability Agent Note), so listeners read it, never rewrite it.\n * Hand-built calls do not carry that marker; their messages already obey\n * the immutable creation contract.\n * @mode waterfall\n */\n 'llm/stream'(this: LlmRuntime, options: GenerateOptions, next: () => AsyncIterable<StreamChunk>): AsyncIterable<StreamChunk>;\n }\n}\n/** Structured provider facts and cause accepted by {@link LlmError}. */\nexport interface LlmErrorOptions extends ErrorOptions {\n /** Valid HTTP status observed at the provider boundary. */\n status?: number;\n /** Positive finite provider-requested delay in milliseconds. */\n providerRetryAfterMs?: number;\n /** Non-empty opaque provider request id. */\n requestId?: ProviderRequestId;\n}\n/**\n * Typed error for LLM-related failures. Extends {@link HarnessError}, so the\n * `code` string (e.g. `AUTH`, `RATE_LIMIT`, `NO_ADAPTER`) is shared taxonomy.\n */\nexport declare class LlmError extends HarnessError {\n /** Serializable facts retained beside this live Error. */\n readonly failure: LlmFailure;\n /**\n * @param message - non-empty human-readable failure summary.\n * @param code - non-empty stable provider-neutral machine code.\n * @param options - optional cause and validated serializable provider facts.\n */\n constructor(message: string, code: string, options?: LlmErrorOptions);\n}\n/**\n * Accept one supplied credential, or refuse it as unusable.\n *\n * A stored key arrives from the credentials seam, a `.env` line, or a shell\n * export, all of which pick up surrounding whitespace, so trimming is silent.\n * Anything else fails here rather than inside `fetch`, whose ByteString\n * refusal names a UTF-16 code point instead of the setting to change. The key\n * never enters the message: `ref` names where to fix it, and echoing any part\n * of a secret into a log or a UI is the failure this diagnosis avoids.\n *\n * Lives beside {@link LlmError} rather than in `./api-key.ts` so the predicate\n * module stays dependency-free; both adapters share this one diagnosis instead\n * of keeping near-identical local copies.\n * @param raw - the credential exactly as supplied.\n * @param pkg - the refusing package name, prefixed to the diagnostic.\n * @param ref - the credential reference the value resolved through.\n * @returns the trimmed, usable key.\n */\nexport declare function assertUsableApiKey(raw: string, pkg: string, ref: string): string;\n/** One model call whose config and adapter registration were resolved together. */\nexport interface PreparedLlmCall {\n /** Detached, deep-frozen config with any adapter-owned default materialized. */\n readonly config: LlmCallConfig;\n /** Immutable retry policy captured with the adapter registration. */\n readonly retryPolicy: ResolvedRetryPolicy;\n /** Detached context metadata resolved with the registration-bound call. */\n readonly context?: LlmModelContext;\n /** Exact model modalities captured with the adapter dispatch generation. */\n readonly inputModalities?: readonly ModelModality[];\n /** Config fields materialized by the captured adapter rather than proposed by the caller. */\n readonly adapterDefaults: LlmCallConfigAdapterDefaults;\n /**\n * Dispatch this call once through the registration captured during\n * preparation. The request's call-config fields must match {@link config};\n * reuse or mismatch fails with `INVALID_PREPARED_CALL`.\n * @param options - fully assembled request carrying the prepared config.\n * @returns the chunk stream, including the `llm/stream` waterfall.\n */\n stream(options: GenerateOptions): AsyncIterable<StreamChunk>;\n}\n/** One adapter-owned model-resolution generation bound to its eventual stream call. */\nexport interface PreparedAdapterCall {\n /** Exact model metadata from the same adapter generation as {@link stream}. */\n readonly model: LlmResolvedModelInfo;\n /** Dispatch through that generation without re-reading dynamic connection facts. */\n stream(options: GenerateOptions): AsyncIterable<StreamChunk>;\n}\n/**\n * Provider-wire adapter for the harness message and stream vocabulary. Register implementations\n * with `ctx.llm.registerAdapter(providers, adapter)`. Every provider HTTP request must include\n * `attributionHeaders()`; prove the headers are added in the wire request or library header hook. The direct-fetch\n * DeepSeek and library-backed pi-ai adapters meet this contract through different internals.\n */\nexport declare abstract class LlmAdapter {\n /**\n * Describe one provider route owned by this adapter.\n * @param provider - a route passed to `registerAdapter()` for this instance.\n * @returns detached display metadata whose id must equal `provider`.\n */\n providerInfo(provider: string): LlmProviderInfo;\n /**\n * Return the provider-owned retry policy captured with this route.\n * @param _provider - a route passed to `registerAdapter()` for this instance.\n * @returns a resolved policy, or `undefined` to use the normal defaults.\n */\n providerRetryPolicy(_provider: string): ResolvedRetryPolicy | undefined;\n /**\n * Resolve provider-side request-image pricing for one exact model route.\n * The default declares none, so consumers fall back to their own neutral\n * estimate. Implementations must answer synchronously without I/O; the\n * token meter resolves this per measurement.\n * @param _provider - a route passed to `registerAdapter()` for this instance.\n * @param _model - exact model id passed to {@link GenerateOptions.model}.\n * @returns route-owned image pricing, or `undefined` when the route declares none.\n */\n imageRequestPricing(_provider: string, _model: string): LlmImageRequestPricing | undefined;\n /**\n * List models this adapter can currently advertise for one owned provider.\n * The result is advisory: an adapter may accept unlisted model ids, and\n * consumers must not turn absence into request rejection.\n * @param _provider - one provider route owned by this adapter.\n * @returns discoverable models in adapter-preferred order.\n */\n listModels(_provider: string): Promise<readonly LlmModelInfo[]>;\n /**\n * Resolve all metadata available for one exact model. This query is\n * independent of the advisory catalog and does not validate request routing.\n * @param provider - one provider route owned by this adapter.\n * @param model - exact model id passed to {@link GenerateOptions.model}.\n * @param _signal - cancellation for this exact-model lookup; asynchronous\n * implementations must settle promptly after it aborts.\n * @returns provider/model identity plus any context, call-default, and reasoning metadata.\n */\n resolveModel(provider: string, model: string, _signal?: AbortSignal): Promise<LlmResolvedModelInfo>;\n /**\n * Bind exact model metadata and the eventual request dispatch to one adapter generation.\n * Dynamic adapters override this so settings changes between preparation and\n * dispatch cannot combine one generation's capabilities with another's endpoint.\n * @param provider - registered provider route.\n * @param model - exact model id.\n * @param signal - cancellation for model resolution.\n * @returns model metadata and a one-generation stream entry point.\n */\n prepareCall(provider: string, model: string, signal?: AbortSignal): Promise<PreparedAdapterCall>;\n /**\n * Stream one model call as raw chunks. The only required method.\n * @param options - the fully-assembled request; implementations must honor `options.signal`.\n * @returns the chunk stream, obeying the adapter contract documented on `StreamChunk`.\n */\n abstract stream(options: GenerateOptions): AsyncIterable<StreamChunk>;\n}\n/**\n * What {@link LlmRuntime.registerAdapter} returns: the disposer, plus an\n * atomic route replacement for the same adapter instance.\n */\nexport interface AdapterRegistrationHandle {\n /** Release every route this registration currently holds. */\n (): void;\n /**\n * Replace this registration's routes with `providers`, keeping the same\n * adapter instance. The candidate set is validated in full first — a\n * conflict with another adapter, an invalid name, or bad provider metadata\n * throws and leaves the current routes untouched — and the swap itself is\n * one synchronous section, so no request can observe a gap. An empty array\n * is legal here (a settings section that emptied holds zero routes while\n * staying registered), unlike an empty initial registration.\n *\n * Throws `LlmError` with code `REGISTRATION_DISPOSED` once the registration\n * has been released: its routes are gone and its disposer has already run,\n * so anything registered afterwards would have no owner left to release it.\n * @param providers - the complete next route set for this registration.\n */\n replace(providers: string[]): void;\n}\n/**\n * A live configurable-provider registration, disposable and atomically\n * replaceable — the directory counterpart of {@link AdapterRegistrationHandle}.\n */\nexport interface DirectoryRegistrationHandle {\n /** Withdraw every entry this registration currently holds. */\n (): void;\n /**\n * Replace this registration's entries with `entries`. The candidate set is\n * validated in full first — an entry another registration already declares,\n * a duplicate within the set, or invalid metadata throws and leaves the\n * current entries untouched — and the swap is one synchronous section, so no\n * reader observes a gap. An empty array is legal here, unlike an empty\n * initial registration.\n *\n * Throws `LlmError` with code `REGISTRATION_DISPOSED` once the registration\n * has been disposed.\n */\n replace(entries: readonly LlmConfigurableProvider[]): void;\n}\n/**\n * The abstract `llm` service: an adapter registry plus a streaming model-call\n * API, interceptable via the `llm/stream` waterfall.\n */\nexport declare class LlmRuntime extends TypertRemoteService {\n private adapters;\n private directory;\n private discoveries;\n constructor(ctx: Context);\n /** Notify topology observers without letting one broken listener veto the commit. */\n private emitAdaptersUpdated;\n /** Contained-listener diagnostic shared by the sync and async failure paths. */\n private warnAdaptersListenerFailure;\n /**\n * Register an adapter for the given provider routes. Throws `LlmError` with code\n * `DUPLICATE_ADAPTER` if any provider already has an adapter (all-or-nothing).\n * Disposed with the fiber.\n * @param providers - every provider route this adapter should serve.\n * @param adapter - the adapter that streams calls for those providers.\n * @returns the disposer, carrying {@link AdapterRegistrationHandle.replace}.\n */\n registerAdapter(providers: string[], adapter: LlmAdapter): AdapterRegistrationHandle;\n /**\n * Validate one candidate route set for `adapter`, treating routes this\n * registration already holds as available. Nothing is mutated: a rejected\n * candidate leaves the registry exactly as it was.\n */\n private prepareRoutes;\n /**\n * Swap this registration's routes for the prepared ones in one synchronous\n * section, so no observer can see the registry between the release and the\n * re-registration. The route set's one mutation point is also where\n * `llm/adapters-updated` is published, so a `replace` announces itself\n * exactly like a first registration.\n */\n private commitRoutes;\n /**\n * Describe provider routes with a registered adapter.\n * @returns detached provider metadata in registration order.\n */\n listProviders(): LlmProviderInfo[];\n /**\n * Declare provider routes an adapter plugin can activate through\n * configuration. Registration is all-or-nothing: an empty list, invalid\n * entry, or a provider already declared by any registration throws\n * `LlmError` without registering the rest. Disposed with the fiber.\n * @param entries - every configurable provider this plugin owns.\n * @returns a handle that withdraws all of them, and can atomically replace them.\n */\n registerConfigurableProviders(entries: readonly LlmConfigurableProvider[]): DirectoryRegistrationHandle;\n /**\n * List every declared configurable provider, registered or dormant.\n * @returns detached directory entries in declaration order.\n */\n listConfigurableProviders(): LlmConfigurableProvider[];\n /**\n * Offer to interrogate provider endpoints on behalf of the settings\n * namespace this plugin owns. The namespace is the key because that is what\n * a configuration surface already holds from the configurable-provider\n * directory, and because a provider being *added* has no route to name yet.\n * Disposed with the fiber.\n * @param settingsNs - the namespace whose profiles this discovery serves.\n * @param discover - interrogates one endpoint and must honor the supplied signal.\n * @returns the disposer that withdraws the offer.\n */\n registerModelDiscovery(settingsNs: string, discover: (request: LlmModelDiscoveryRequest, signal?: AbortSignal) => Promise<readonly LlmDiscoveredModel[]>): () => void;\n /**\n * Interrogate one provider endpoint for the models it advertises. The\n * request describes a draft, not a stored route, so nothing here reads or\n * writes settings or credentials — the caller owns both, and the reply is\n * candidate metadata a surface may offer for adoption.\n * @param settingsNs - namespace whose registered discovery serves this draft.\n * @param request - the endpoint, protocol, and one-shot credential to use.\n * @param signal - caller cancellation.\n * @returns the advertised models, deduplicated in endpoint order.\n */\n discoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal?: AbortSignal): Promise<LlmDiscoveredModel[]>;\n /**\n * Remote adapter for one draft provider interrogation.\n * @param settingsNs - namespace whose registered discovery serves this draft.\n * @param request - endpoint, protocol, and one-shot credential to use.\n * @param signal - caller cancellation supplied by the Remote carrier.\n * @returns advertised models in endpoint order.\n * @throws RemoteError with `llm/model-discovery-rejected` when discovery refuses or fails.\n */\n remoteDiscoverModels(settingsNs: string, request: LlmModelDiscoveryRequest, signal: AbortSignal): Promise<LlmDiscoveredModel[]>;\n /**\n * Resolve the retry policy captured when one provider route was registered.\n * @param provider - registered provider route to inspect.\n * @returns the provider-owned policy, with normal defaults already resolved.\n */\n providerRetryPolicy(provider: string): ResolvedRetryPolicy;\n /**\n * Resolve provider-side request-image pricing for one exact route, or\n * `undefined` when the provider is unregistered or declares none. Unknown\n * providers degrade to `undefined` rather than throwing because callers\n * price durable history whose route may no longer be mounted.\n * @param provider - provider route named by a request header.\n * @param model - exact model id named by the same header.\n * @returns the owning adapter's image pricing for the route, when declared.\n */\n imageRequestPricing(provider: string, model: string): LlmImageRequestPricing | undefined;\n /** Detach typed adapter-owned modality metadata. */\n private detachedModalities;\n /**\n * Discover models advertised by one registered provider. Catalog membership\n * is advisory and never changes routing or request validation.\n * @param provider - registered provider route to inspect.\n * @returns detached model metadata in adapter-preferred order.\n */\n listModels(provider: string): Promise<LlmModelInfo[]>;\n /**\n * Resolve and validate all metadata from the adapter that owns one exact\n * route. The result is detached from adapter-owned objects; catalog\n * membership remains advisory and does not control request routing.\n * @param provider - registered provider route to inspect.\n * @param model - exact model id passed to the adapter.\n * @param signal - optional cancellation for adapter-owned asynchronous lookup.\n * @returns exact model identity plus available context and reasoning metadata.\n */\n resolveModelInfo(provider: string, model: string, signal?: AbortSignal): Promise<LlmResolvedModelInfo>;\n private resolveModelInfoFor;\n /** Validate and detach one adapter-returned exact model result. */\n private normalizeModelInfo;\n /**\n * Validate a conversation call config against its exact model capability and\n * materialize adapter-configured defaults. Unsupported explicit efforts\n * reject before provider I/O; no clamping or aliasing is performed. This\n * standalone query does not bind a later dispatch; use {@link prepareCall}\n * when logging and streaming must share one adapter registration.\n * @param config - provider/model route and optional request controls.\n * @param signal - optional cancellation for adapter-owned capability lookup.\n * @returns a detached config only when a default must be materialized.\n */\n resolveCallConfig(config: LlmCallConfig, signal?: AbortSignal): Promise<LlmCallConfig>;\n private resolveCallFor;\n /** Validate request controls against one already-bound exact model result. */\n private resolveCallWithInfo;\n /**\n * Resolve one call under its current adapter registration. The returned\n * one-shot handle keeps that registration across header logging and dispatch,\n * so HMR cannot combine one adapter's capability result with another adapter.\n * @param config - provider/model route and optional request controls.\n * @param signal - optional cancellation for adapter-owned capability lookup.\n * @returns a prepared config and its registration-bound stream entry point.\n */\n prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise<PreparedLlmCall>;\n private registration;\n /** Remove replay state whose historical route is owned by another adapter. */\n private forAdapter;\n /**\n * Final adapter boundary. Adapter selection, dispatch, iterator construction,\n * and iteration failures become one terminal failure chunk. Middleware and\n * downstream consumer failures remain thrown plugin or consumer errors.\n */\n private adapterStream;\n /**\n * Stream one model call as raw chunks (token-level deltas). Replay state is\n * retained only when the same adapter instance owns its historical provider\n * and the target provider. Final adapter selection remains fixed through\n * asynchronous exact-model resolution and dispatch. Adapter selection,\n * dispatch, and iteration failures become terminal `error` or `aborted`\n * finish chunks; middleware, nested-call, cleanup, and consumer failures\n * remain thrown.\n * @param options - the full request; `options.provider` selects the adapter.\n * @returns the chunk stream, possibly wrapped by `llm/stream` listeners.\n */\n stream(options: GenerateOptions): AsyncIterable<StreamChunk>;\n private streamWithRegistration;\n}\nexport default LlmRuntime;\n//# sourceMappingURL=index.d.ts.map","/**\n * Red-team orchestration — the M4 tool-team layer: strix-named tools\n * (create_agent / send_message_to_agent / wait_for_agents /\n * view_agent_graph / stop_agent / agent_finish) composed over the dsh\n * subagent SERVICE (ctx.subagents + the spawn provider's continuable\n * children), not over tools. Children inherit the parent Agent's preset and\n * full tool surface (in-process spawn semantics); requested skills are\n * injected as a directive line in the child's prompt. S2-verified semantics\n * hold: send steers at step boundaries, interrupt parks the inbox (children\n * stay resumable), completion notices reach the parent's turn boundary.\n * A token-budget circuit breaker interrupts every tracked child and blocks\n * new spawns when the session's accumulated usage crosses the ceiling.\n * @module @gpzhang2001/sharpkit-team\n */\nimport type { Context } from '@deepseek-ai/cordis';\nimport type Schema from '@deepseek-ai/schemastery';\nimport type { ContentBlock } from '@deepseek-ai/dsh-llm';\n/** Structural view of the subagent service this package drives. */\nexport interface SubagentsLike {\n start(name: string, request: {\n readonly label?: string;\n readonly prompt: ContentBlock[];\n readonly parent: unknown;\n readonly signal: AbortSignal;\n }): {\n readonly id: {\n readonly [key: string]: unknown;\n } | string;\n readonly result: Promise<{\n readonly stopReason?: string;\n readonly output?: readonly ContentBlock[];\n }>;\n };\n sendMessage(sender: unknown, targetId: unknown, content: ContentBlock[], options?: unknown): Promise<unknown>;\n interrupt(targetSessionId: unknown, authority: {\n readonly kind: 'user';\n readonly parentSessionId: unknown;\n } | {\n readonly kind: 'ancestor';\n readonly agent: unknown;\n }): void;\n}\n/** Deployment-tunable configuration. */\nexport interface Config {\n /** Maximum delegation depth (root=1 spawns children; children don't spawn). */\n readonly maxTeamDepth?: number;\n /** Explicit session token ceiling for the circuit breaker (overrides budget estimates). */\n readonly maxSessionTokens?: number;\n /** USD budget ceiling for the circuit breaker (token-estimated; see usdPerMillionTokens). */\n readonly maxBudgetUsd?: number;\n /** Estimated blended $/1M tokens mapping a USD budget to a token ceiling. */\n readonly usdPerMillionTokens?: number;\n /** Skills catalog root — only used to validate requested skill names exist. */\n readonly skillsRoot?: string;\n}\nexport declare const name = \"pentest-tool-team\";\nexport declare const inject: string[];\nexport declare const Config: Schema<Config>;\n/** One tracked child (roster row). */\ninterface TrackedChild {\n readonly id: string;\n readonly label: string;\n readonly task: string;\n readonly skills: readonly string[];\n readonly startedAt: string;\n status: 'running' | 'completed' | 'stopped' | 'failed';\n completionReport: string | undefined;\n readonly result: Promise<{\n readonly stopReason?: string;\n readonly output?: readonly ContentBlock[];\n }>;\n}\n/** The orchestrator-facing team handle (tests + UI consume). */\nexport interface TeamHandle {\n children(): ReadonlyArray<Readonly<TrackedChild>>;\n /** True once the circuit breaker tripped. */\n isBreached(): boolean;\n tokensUsed(): number;\n}\nexport declare function apply(ctx: Context, config?: Config): TeamHandle;\nexport {};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"mappings":"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"}