@forgeax/engine-intelligence 0.1.6 → 0.1.7

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/plugin.ts","../src/types.ts","../src/runtime.ts","../src/transport.ts"],"names":["err","ok"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ActivityId } from './types';\n\nexport type IntelligenceErrorCode =\n | 'intelligence-invalid-request'\n | 'intelligence-session-provider-mismatch'\n | 'intelligence-capacity-exceeded'\n | 'intelligence-activity-not-found'\n | 'intelligence-provider-failed'\n | 'intelligence-output-overflow'\n | 'intelligence-closed';\n\nexport interface IntelligenceErrorDetailMap {\n readonly 'intelligence-invalid-request': { readonly field: 'input'; readonly reason: string };\n readonly 'intelligence-session-provider-mismatch': {\n readonly expectedProviderId: string;\n readonly receivedProviderId: string;\n };\n readonly 'intelligence-capacity-exceeded': { readonly limit: number };\n readonly 'intelligence-activity-not-found': { readonly activityId: ActivityId };\n readonly 'intelligence-provider-failed': { readonly providerId: string; readonly cause: unknown };\n readonly 'intelligence-output-overflow': {\n readonly activityId: ActivityId;\n readonly bound: 'output-chars' | 'pending-events';\n readonly limit: number;\n };\n readonly 'intelligence-closed': Readonly<Record<string, never>>;\n}\n\nexport type IntelligenceErrorDetailFor<C extends IntelligenceErrorCode> =\n IntelligenceErrorDetailMap[C];\n\nconst policy = {\n 'intelligence-invalid-request': {\n expected: 'activity input must be a non-empty string within the configured bound',\n hint: 'validate and bound player input before submitting the activity',\n },\n 'intelligence-session-provider-mismatch': {\n expected: 'a session reference must be resumed by the provider that created it',\n hint: 'discard the incompatible session or select its original provider',\n },\n 'intelligence-capacity-exceeded': {\n expected: 'active intelligence work must remain within the configured concurrency bound',\n hint: 'wait for an activity to finish or raise the explicit provider capacity',\n },\n 'intelligence-activity-not-found': {\n expected: 'the activity must still be running when cancellation is requested',\n hint: 'ignore an already observed terminal activity or retain the correct ActivityId',\n },\n 'intelligence-provider-failed': {\n expected: 'the selected provider must complete or report a structured failure',\n hint: 'inspect detail.cause and provider configuration, then retry or select another provider',\n },\n 'intelligence-output-overflow': {\n expected: 'incremental and final output must remain within configured queue and text bounds',\n hint: 'consume events every frame or raise the explicit bound for this application',\n },\n 'intelligence-closed': {\n expected: 'the intelligence service must be open for submit and cancel operations',\n hint: 'create a new service after its Cordis realm or owner has been disposed',\n },\n} satisfies Record<IntelligenceErrorCode, { readonly expected: string; readonly hint: string }>;\n\nexport const INTELLIGENCE_EXPECTED = Object.fromEntries(\n Object.entries(policy).map(([code, value]) => [code, value.expected]),\n) as Readonly<Record<IntelligenceErrorCode, string>>;\n\nexport const INTELLIGENCE_ERROR_HINTS = Object.fromEntries(\n Object.entries(policy).map(([code, value]) => [code, value.hint]),\n) as Readonly<Record<IntelligenceErrorCode, string>>;\n\nclass IntelligenceErrorClass extends Error {\n readonly code: IntelligenceErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: IntelligenceErrorDetailFor<IntelligenceErrorCode>;\n\n constructor(args: {\n code: IntelligenceErrorCode;\n detail: IntelligenceErrorDetailFor<IntelligenceErrorCode>;\n }) {\n const selected = policy[args.code];\n super(\n `[IntelligenceError ${args.code}] expected: ${selected.expected}; hint: ${selected.hint}`,\n );\n this.name = 'IntelligenceError';\n this.code = args.code;\n this.expected = selected.expected;\n this.hint = selected.hint;\n this.detail = args.detail;\n }\n}\n\ntype IntelligenceErrorVariant<C extends IntelligenceErrorCode> = IntelligenceErrorClass & {\n readonly code: C;\n readonly detail: IntelligenceErrorDetailFor<C>;\n};\n\nexport type IntelligenceError = {\n [C in IntelligenceErrorCode]: IntelligenceErrorVariant<C>;\n}[IntelligenceErrorCode];\n\ninterface IntelligenceErrorConstructor {\n new <C extends IntelligenceErrorCode>(args: {\n code: C;\n detail: IntelligenceErrorDetailFor<C>;\n }): IntelligenceErrorVariant<C>;\n readonly prototype: IntelligenceErrorClass;\n}\n\nexport const IntelligenceError: IntelligenceErrorConstructor =\n IntelligenceErrorClass as unknown as IntelligenceErrorConstructor;\n\ntype PodDetailMap = Omit<IntelligenceErrorDetailMap, 'intelligence-provider-failed'> & {\n readonly 'intelligence-provider-failed': { readonly providerId: string; readonly cause: string };\n};\n\nexport type IntelligenceFailure = {\n [C in IntelligenceErrorCode]: {\n readonly code: C;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PodDetailMap[C];\n };\n}[IntelligenceErrorCode];\n\nexport function intelligenceFailure(error: IntelligenceError): IntelligenceFailure {\n if (error.code === 'intelligence-provider-failed') {\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: {\n providerId: error.detail.providerId,\n cause:\n error.detail.cause instanceof Error\n ? error.detail.cause.message\n : String(error.detail.cause),\n },\n };\n }\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: error.detail,\n } as IntelligenceFailure;\n}\n\nexport function providerError(providerId: string, cause: unknown): IntelligenceError {\n return new IntelligenceError({\n code: 'intelligence-provider-failed',\n detail: { providerId, cause },\n });\n}\n","import type { Plugin } from '@forgeax/engine-plugin';\nimport type { IntelligenceService } from './types';\n\ndeclare module '@forgeax/engine-plugin' {\n interface EngineContextServices {\n intelligence?: IntelligenceService;\n }\n}\n\n/** Install one optional intelligence service and bind its lifetime to this Cordis Fiber. */\nexport function intelligencePlugin(service: IntelligenceService): Plugin {\n return {\n name: 'intelligence',\n provide: 'intelligence',\n apply(ctx) {\n ctx.provide('intelligence', service);\n ctx.effect(() => () => service.close(), 'intelligence/service');\n },\n };\n}\n","import type { Result } from '@forgeax/engine-types';\nimport type { IntelligenceError, IntelligenceFailure } from './errors';\n\ndeclare const activityIdBrand: unique symbol;\n\n/** Opaque identity of one bounded asynchronous operation. */\nexport type ActivityId = string & { readonly [activityIdBrand]: true };\n\n/** Provider-scoped durable conversation identity. */\nexport interface SessionRef {\n readonly providerId: string;\n readonly id: string;\n}\n\nexport interface ActivityRef {\n readonly id: ActivityId;\n readonly session: SessionRef;\n}\n\nexport interface ActivityRequest {\n readonly input: string;\n readonly session?: SessionRef;\n}\n\n/** Fully identified request used by realm transports and provider dispatch. */\nexport interface ActivitySubmission extends ActivityRef {\n readonly input: string;\n}\n\nexport type ActivityEvent =\n | {\n readonly type: 'text-delta';\n readonly activityId: ActivityId;\n readonly sequence: number;\n readonly text: string;\n }\n | {\n readonly type: 'completed';\n readonly activityId: ActivityId;\n readonly sequence: number;\n readonly session: SessionRef;\n readonly output: string;\n }\n | {\n readonly type: 'failed';\n readonly activityId: ActivityId;\n readonly sequence: number;\n readonly error: IntelligenceFailure;\n }\n | {\n readonly type: 'cancelled';\n readonly activityId: ActivityId;\n readonly sequence: number;\n };\n\nexport interface ActivitySink {\n text(text: string): void;\n complete(output: string): void;\n fail(cause: unknown): void;\n cancelled(): void;\n}\n\n/** Provider implementation boundary. It never receives World or Renderer authority. */\nexport interface IntelligenceProvider {\n readonly id: string;\n start(submission: ActivitySubmission, sink: ActivitySink): Result<void, IntelligenceError>;\n cancel(activityId: ActivityId): Result<void, IntelligenceError>;\n close(): Promise<void>;\n}\n\n/** Frame-safe consumer surface. No method waits for provider work. */\nexport interface IntelligenceService {\n readonly providerId: string;\n submit(request: ActivityRequest): Result<ActivityRef, IntelligenceError>;\n poll(maxEvents?: number): readonly ActivityEvent[];\n cancel(activityId: ActivityId): Result<void, IntelligenceError>;\n close(): Promise<void>;\n}\n\nexport interface IntelligenceLimits {\n readonly maxInputChars: number;\n readonly maxOutputChars: number;\n readonly maxConcurrentActivities: number;\n readonly maxPendingEventsPerActivity: number;\n readonly maxPollEvents: number;\n}\n\nexport const DEFAULT_INTELLIGENCE_LIMITS: IntelligenceLimits = {\n maxInputChars: 16_384,\n maxOutputChars: 65_536,\n maxConcurrentActivities: 8,\n maxPendingEventsPerActivity: 256,\n maxPollEvents: 64,\n};\n\nexport interface IntelligenceRuntimeOptions {\n readonly limits?: Partial<IntelligenceLimits>;\n readonly createActivityId?: () => ActivityId;\n readonly createSessionId?: () => string;\n}\n\nexport function activityId(value: string): ActivityId {\n return value as ActivityId;\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\nimport { IntelligenceError, intelligenceFailure, providerError } from './errors';\nimport {\n type ActivityEvent,\n type ActivityId,\n type ActivityRef,\n type ActivityRequest,\n type ActivitySink,\n type ActivitySubmission,\n activityId,\n DEFAULT_INTELLIGENCE_LIMITS,\n type IntelligenceLimits,\n type IntelligenceProvider,\n type IntelligenceRuntimeOptions,\n type IntelligenceService,\n} from './types';\n\ninterface ActivityRecord {\n readonly ref: ActivityRef;\n readonly events: ActivityEvent[];\n sequence: number;\n outputChars: number;\n terminal: boolean;\n}\n\nlet fallbackIdentity = 0;\n\nfunction nextIdentity(prefix: string): string {\n const uuid = globalThis.crypto?.randomUUID?.();\n if (uuid !== undefined) return `${prefix}-${uuid}`;\n fallbackIdentity += 1;\n return `${prefix}-${Date.now().toString(36)}-${fallbackIdentity.toString(36)}`;\n}\n\nexport function resolveIntelligenceLimits(\n overrides: Partial<IntelligenceLimits> | undefined,\n): IntelligenceLimits {\n const limits = { ...DEFAULT_INTELLIGENCE_LIMITS, ...overrides };\n for (const [name, value] of Object.entries(limits)) {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(`${name} must be a positive integer`);\n }\n }\n if (limits.maxPendingEventsPerActivity < 2) {\n throw new RangeError(\n 'maxPendingEventsPerActivity must reserve at least one data and terminal event',\n );\n }\n return limits;\n}\n\nexport class IntelligenceRuntime implements IntelligenceService {\n readonly providerId: string;\n readonly limits: IntelligenceLimits;\n private readonly records = new Map<ActivityId, ActivityRecord>();\n private readonly createActivityId: () => ActivityId;\n private readonly createSessionId: () => string;\n private closed = false;\n private closeTask: Promise<void> | undefined;\n\n constructor(\n private readonly provider: IntelligenceProvider,\n options: IntelligenceRuntimeOptions = {},\n ) {\n this.providerId = provider.id;\n this.limits = resolveIntelligenceLimits(options.limits);\n this.createActivityId =\n options.createActivityId ?? (() => activityId(nextIdentity('activity')));\n this.createSessionId = options.createSessionId ?? (() => nextIdentity('session'));\n }\n\n submit(request: ActivityRequest): Result<ActivityRef, IntelligenceError> {\n const validated = this.validateRequest(request);\n if (!validated.ok) return validated;\n const ref: ActivityRef = {\n id: this.createActivityId(),\n session: request.session ?? { providerId: this.providerId, id: this.createSessionId() },\n };\n const accepted = this.accept({ ...ref, input: request.input });\n return accepted.ok ? ok(ref) : accepted;\n }\n\n /** Accept an already identified request from a realm transport. */\n accept(submission: ActivitySubmission): Result<void, IntelligenceError> {\n const validated = this.validateRequest({\n input: submission.input,\n session: submission.session,\n });\n if (!validated.ok) return validated;\n if (this.records.has(submission.id)) {\n return err(\n providerError(this.providerId, `duplicate activity identity: ${String(submission.id)}`),\n );\n }\n if (this.runningCount >= this.limits.maxConcurrentActivities) {\n return err(\n new IntelligenceError({\n code: 'intelligence-capacity-exceeded',\n detail: { limit: this.limits.maxConcurrentActivities },\n }),\n );\n }\n const record: ActivityRecord = {\n ref: { id: submission.id, session: submission.session },\n events: [],\n sequence: 0,\n outputChars: 0,\n terminal: false,\n };\n this.records.set(submission.id, record);\n const started = this.provider.start(submission, this.createSink(record));\n if (!started.ok) {\n this.records.delete(submission.id);\n return started;\n }\n return ok(undefined);\n }\n\n poll(maxEvents = this.limits.maxPollEvents): readonly ActivityEvent[] {\n if (!Number.isInteger(maxEvents) || maxEvents <= 0) return [];\n const bounded = Math.min(maxEvents, this.limits.maxPollEvents);\n const events: ActivityEvent[] = [];\n for (const [id, record] of this.records) {\n while (record.events.length > 0 && events.length < bounded) {\n const event = record.events.shift();\n if (event !== undefined) events.push(event);\n }\n if (record.terminal && record.events.length === 0) this.records.delete(id);\n if (events.length === bounded) break;\n }\n return events;\n }\n\n cancel(activity: ActivityId): Result<void, IntelligenceError> {\n if (this.closed) return err(this.closedError());\n const record = this.records.get(activity);\n if (record === undefined || record.terminal) {\n return err(\n new IntelligenceError({\n code: 'intelligence-activity-not-found',\n detail: { activityId: activity },\n }),\n );\n }\n return this.provider.cancel(activity);\n }\n\n close(): Promise<void> {\n this.closeTask ??= this.performClose();\n return this.closeTask;\n }\n\n private async performClose(): Promise<void> {\n this.closed = true;\n await this.provider.close();\n this.records.clear();\n }\n\n private get runningCount(): number {\n let count = 0;\n for (const record of this.records.values()) if (!record.terminal) count += 1;\n return count;\n }\n\n private validateRequest(request: ActivityRequest): Result<void, IntelligenceError> {\n if (this.closed) return err(this.closedError());\n if (request.input.length === 0 || request.input.length > this.limits.maxInputChars) {\n return err(\n new IntelligenceError({\n code: 'intelligence-invalid-request',\n detail: {\n field: 'input',\n reason:\n request.input.length === 0\n ? 'input is empty'\n : `input exceeds ${this.limits.maxInputChars} characters`,\n },\n }),\n );\n }\n if (request.session !== undefined && request.session.providerId !== this.providerId) {\n return err(\n new IntelligenceError({\n code: 'intelligence-session-provider-mismatch',\n detail: {\n expectedProviderId: this.providerId,\n receivedProviderId: request.session.providerId,\n },\n }),\n );\n }\n return ok(undefined);\n }\n\n private createSink(record: ActivityRecord): ActivitySink {\n return {\n text: (text) => {\n if (record.terminal || text.length === 0) return;\n if (record.outputChars + text.length > this.limits.maxOutputChars) {\n this.overflow(record, 'output-chars', this.limits.maxOutputChars);\n return;\n }\n if (record.events.length >= this.limits.maxPendingEventsPerActivity - 1) {\n this.overflow(record, 'pending-events', this.limits.maxPendingEventsPerActivity);\n return;\n }\n record.outputChars += text.length;\n this.push(record, { type: 'text-delta', text });\n },\n complete: (output) => {\n if (record.terminal) return;\n if (output.length > this.limits.maxOutputChars) {\n this.overflow(record, 'output-chars', this.limits.maxOutputChars);\n return;\n }\n record.terminal = true;\n this.push(record, { type: 'completed', session: record.ref.session, output });\n },\n fail: (cause) => {\n if (record.terminal) return;\n record.terminal = true;\n const error = providerError(this.providerId, cause);\n this.push(record, { type: 'failed', error: intelligenceFailure(error) });\n },\n cancelled: () => {\n if (record.terminal) return;\n record.terminal = true;\n this.push(record, { type: 'cancelled' });\n },\n };\n }\n\n private overflow(\n record: ActivityRecord,\n bound: 'output-chars' | 'pending-events',\n limit: number,\n ): void {\n if (record.terminal) return;\n record.terminal = true;\n const error = new IntelligenceError({\n code: 'intelligence-output-overflow',\n detail: { activityId: record.ref.id, bound, limit },\n });\n if (record.events.length >= this.limits.maxPendingEventsPerActivity) record.events.pop();\n this.push(record, { type: 'failed', error: intelligenceFailure(error) });\n this.provider.cancel(record.ref.id);\n }\n\n private push(\n record: ActivityRecord,\n event:\n | { readonly type: 'text-delta'; readonly text: string }\n | {\n readonly type: 'completed';\n readonly session: ActivityRef['session'];\n readonly output: string;\n }\n | { readonly type: 'failed'; readonly error: ReturnType<typeof intelligenceFailure> }\n | { readonly type: 'cancelled' },\n ): void {\n record.sequence += 1;\n record.events.push({\n ...event,\n activityId: record.ref.id,\n sequence: record.sequence,\n } as ActivityEvent);\n }\n\n private closedError(): IntelligenceError {\n return new IntelligenceError({ code: 'intelligence-closed', detail: {} });\n }\n}\n\nexport function createIntelligenceRuntime(\n provider: IntelligenceProvider,\n options: IntelligenceRuntimeOptions = {},\n): IntelligenceRuntime {\n return new IntelligenceRuntime(provider, options);\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\nimport { IntelligenceError } from './errors';\nimport { type IntelligenceRuntime, resolveIntelligenceLimits } from './runtime';\nimport {\n type ActivityEvent,\n type ActivityId,\n type ActivityRef,\n type ActivityRequest,\n type ActivitySubmission,\n activityId,\n type IntelligenceLimits,\n type IntelligenceRuntimeOptions,\n type IntelligenceService,\n} from './types';\n\nexport type IntelligenceHostCommand =\n | { readonly kind: 'intelligence-submit'; readonly submission: ActivitySubmission }\n | { readonly kind: 'intelligence-poll'; readonly maxEvents: number }\n | { readonly kind: 'intelligence-cancel'; readonly activityId: ActivityId }\n | { readonly kind: 'intelligence-close' };\n\nexport type IntelligenceRealmMessage =\n | { readonly kind: 'intelligence-events'; readonly events: readonly ActivityEvent[] }\n | { readonly kind: 'intelligence-closed' }\n | {\n readonly kind: 'intelligence-rejected';\n readonly activityId: ActivityId;\n readonly error: import('./errors').IntelligenceFailure;\n };\n\nexport interface IntelligenceMessagePort {\n postMessage(message: IntelligenceHostCommand | IntelligenceRealmMessage): void;\n addEventListener(\n type: 'message',\n listener: (event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>) => void,\n ): void;\n removeEventListener(\n type: 'message',\n listener: (event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>) => void,\n ): void;\n start?(): void;\n close(): void;\n}\n\nexport interface IntelligencePortBinding {\n close(): Promise<void>;\n}\n\n/** Bind a Host-owned runtime to the realm side of a MessageChannel. */\nexport function bindIntelligencePort(\n port: IntelligenceMessagePort,\n runtime: IntelligenceRuntime,\n): IntelligencePortBinding {\n let closed = false;\n const listener = (\n event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>,\n ): void => {\n const message = event.data;\n if (message.kind === 'intelligence-submit') {\n const accepted = runtime.accept(message.submission);\n if (!accepted.ok) {\n const failure = importFailure(accepted.error);\n port.postMessage({\n kind: 'intelligence-rejected',\n activityId: message.submission.id,\n error: failure,\n });\n }\n return;\n }\n if (message.kind === 'intelligence-poll') {\n port.postMessage({ kind: 'intelligence-events', events: runtime.poll(message.maxEvents) });\n return;\n }\n if (message.kind === 'intelligence-cancel') {\n runtime.cancel(message.activityId);\n return;\n }\n if (message.kind === 'intelligence-close') void close(true);\n };\n const close = async (notifyRealm = false): Promise<void> => {\n if (closed) return;\n closed = true;\n port.removeEventListener('message', listener);\n await runtime.close();\n if (notifyRealm) {\n port.postMessage({ kind: 'intelligence-closed' });\n setTimeout(() => port.close(), 0);\n } else {\n port.close();\n }\n };\n port.addEventListener('message', listener);\n port.start?.();\n return { close };\n}\n\nfunction importFailure(error: import('./errors').IntelligenceError) {\n if (error.code === 'intelligence-provider-failed') {\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: {\n providerId: error.detail.providerId,\n cause:\n error.detail.cause instanceof Error\n ? error.detail.cause.message\n : String(error.detail.cause),\n },\n } as const;\n }\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: error.detail,\n } as import('./errors').IntelligenceFailure;\n}\n\nlet portIdentity = 0;\n\nfunction nextPortIdentity(prefix: string): string {\n const uuid = globalThis.crypto?.randomUUID?.();\n if (uuid !== undefined) return `${prefix}-${uuid}`;\n portIdentity += 1;\n return `${prefix}-${portIdentity}`;\n}\n\n/** Worker/main-realm client. Polling is request/response and never awaits a Host provider. */\nexport class IntelligencePortClient implements IntelligenceService {\n readonly limits: IntelligenceLimits;\n private readonly received: ActivityEvent[] = [];\n private readonly active = new Set<ActivityId>();\n private readonly rejected = new Map<\n ActivityId,\n IntelligenceRealmMessage & { kind: 'intelligence-rejected' }\n >();\n private readonly createActivityId: () => ActivityId;\n private readonly createSessionId: () => string;\n private readonly listener: (\n event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>,\n ) => void;\n private closed = false;\n private pollPending = false;\n private closeTask: Promise<void> | undefined;\n private closeResolve: (() => void) | undefined;\n\n constructor(\n readonly providerId: string,\n private readonly port: IntelligenceMessagePort,\n options: IntelligenceRuntimeOptions = {},\n ) {\n this.limits = resolveIntelligenceLimits(options.limits);\n this.createActivityId =\n options.createActivityId ?? (() => activityId(nextPortIdentity('activity')));\n this.createSessionId = options.createSessionId ?? (() => nextPortIdentity('session'));\n this.listener = (event) => {\n const message = event.data;\n if (message.kind === 'intelligence-events') {\n this.pollPending = false;\n for (const item of message.events) {\n this.received.push(item);\n if (item.type !== 'text-delta') this.active.delete(item.activityId);\n }\n } else if (message.kind === 'intelligence-rejected') {\n this.active.delete(message.activityId);\n this.rejected.set(message.activityId, message);\n } else if (message.kind === 'intelligence-closed') {\n this.port.removeEventListener('message', this.listener);\n this.received.length = 0;\n this.active.clear();\n this.rejected.clear();\n this.port.close();\n this.closeResolve?.();\n this.closeResolve = undefined;\n }\n };\n port.addEventListener('message', this.listener);\n port.start?.();\n }\n\n submit(request: ActivityRequest): Result<ActivityRef, IntelligenceError> {\n if (this.closed) return err(new IntelligenceError({ code: 'intelligence-closed', detail: {} }));\n if (request.input.length === 0 || request.input.length > this.limits.maxInputChars) {\n return err(\n new IntelligenceError({\n code: 'intelligence-invalid-request',\n detail: {\n field: 'input',\n reason:\n request.input.length === 0\n ? 'input is empty'\n : `input exceeds ${this.limits.maxInputChars} characters`,\n },\n }),\n );\n }\n if (request.session !== undefined && request.session.providerId !== this.providerId) {\n return err(\n new IntelligenceError({\n code: 'intelligence-session-provider-mismatch',\n detail: {\n expectedProviderId: this.providerId,\n receivedProviderId: request.session.providerId,\n },\n }),\n );\n }\n if (this.active.size >= this.limits.maxConcurrentActivities) {\n return err(\n new IntelligenceError({\n code: 'intelligence-capacity-exceeded',\n detail: { limit: this.limits.maxConcurrentActivities },\n }),\n );\n }\n const ref: ActivityRef = {\n id: this.createActivityId(),\n session: request.session ?? { providerId: this.providerId, id: this.createSessionId() },\n };\n this.active.add(ref.id);\n this.port.postMessage({\n kind: 'intelligence-submit',\n submission: { ...ref, input: request.input },\n });\n return ok(ref);\n }\n\n poll(maxEvents = this.limits.maxPollEvents): readonly ActivityEvent[] {\n if (this.closed || !Number.isInteger(maxEvents) || maxEvents <= 0) return [];\n const count = Math.min(maxEvents, this.limits.maxPollEvents);\n const events = this.received.splice(0, count);\n for (const [id, rejection] of this.rejected) {\n if (events.length >= count) break;\n this.rejected.delete(id);\n events.push({\n type: 'failed',\n activityId: id,\n sequence: 1,\n error: rejection.error,\n });\n }\n if (!this.pollPending) {\n this.pollPending = true;\n this.port.postMessage({ kind: 'intelligence-poll', maxEvents: count });\n }\n return events;\n }\n\n cancel(id: ActivityId): Result<void, IntelligenceError> {\n if (this.closed) return err(new IntelligenceError({ code: 'intelligence-closed', detail: {} }));\n if (!this.active.has(id)) {\n return err(\n new IntelligenceError({\n code: 'intelligence-activity-not-found',\n detail: { activityId: id },\n }),\n );\n }\n this.port.postMessage({ kind: 'intelligence-cancel', activityId: id });\n return ok(undefined);\n }\n\n close(): Promise<void> {\n if (this.closeTask !== undefined) return this.closeTask;\n this.closed = true;\n this.closeTask = new Promise((resolve) => {\n this.closeResolve = resolve;\n this.port.postMessage({ kind: 'intelligence-close' });\n });\n return this.closeTask;\n }\n}\n\nexport function createIntelligencePortClient(\n providerId: string,\n port: IntelligenceMessagePort,\n options: IntelligenceRuntimeOptions = {},\n): IntelligencePortClient {\n return new IntelligencePortClient(providerId, port, options);\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/plugin.ts","../src/types.ts","../src/runtime.ts","../src/transport.ts"],"names":["err","ok"],"mappings":";;;AA+BA,IAAM,MAAA,GAAS;AAAA,EACb,8BAAA,EAAgC;AAAA,IAC9B,QAAA,EAAU,uEAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,wCAAA,EAA0C;AAAA,IACxC,QAAA,EAAU,qEAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,gCAAA,EAAkC;AAAA,IAChC,QAAA,EAAU,8EAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,iCAAA,EAAmC;AAAA,IACjC,QAAA,EAAU,mEAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,8BAAA,EAAgC;AAAA,IAC9B,QAAA,EAAU,oEAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,8BAAA,EAAgC;AAAA,IAC9B,QAAA,EAAU,kFAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,qBAAA,EAAuB;AAAA,IACrB,QAAA,EAAU,wEAAA;AAAA,IACV,IAAA,EAAM;AAAA;AAEV,CAAA;AAEO,IAAM,wBAAwB,MAAA,CAAO,WAAA;AAAA,EAC1C,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,IAAI,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,KAAM,CAAC,IAAA,EAAM,KAAA,CAAM,QAAQ,CAAC;AACtE;AAEO,IAAM,2BAA2B,MAAA,CAAO,WAAA;AAAA,EAC7C,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,IAAI,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,KAAM,CAAC,IAAA,EAAM,KAAA,CAAM,IAAI,CAAC;AAClE;AAEA,IAAM,sBAAA,GAAN,cAAqC,KAAA,CAAM;AAAA,EAChC,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EAET,YAAY,IAAA,EAGT;AACD,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AACjC,IAAA,KAAA;AAAA,MACE,CAAA,mBAAA,EAAsB,KAAK,IAAI,CAAA,YAAA,EAAe,SAAS,QAAQ,CAAA,QAAA,EAAW,SAAS,IAAI,CAAA;AAAA,KACzF;AACA,IAAA,IAAA,CAAK,IAAA,GAAO,mBAAA;AACZ,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,WAAW,QAAA,CAAS,QAAA;AACzB,IAAA,IAAA,CAAK,OAAO,QAAA,CAAS,IAAA;AACrB,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AAAA,EACrB;AACF,CAAA;AAmBO,IAAM,iBAAA,GACX;AAeK,SAAS,oBAAoB,KAAA,EAA+C;AACjF,EAAA,IAAI,KAAA,CAAM,SAAS,8BAAA,EAAgC;AACjD,IAAA,OAAO;AAAA,MACL,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,MAAM,MAAA,CAAO,UAAA;AAAA,QACzB,KAAA,EACE,KAAA,CAAM,MAAA,CAAO,KAAA,YAAiB,KAAA,GAC1B,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,OAAA,GACnB,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,KAAK;AAAA;AACjC,KACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,QAAQ,KAAA,CAAM;AAAA,GAChB;AACF;AAEO,SAAS,aAAA,CAAc,YAAoB,KAAA,EAAmC;AACnF,EAAA,OAAO,IAAI,iBAAA,CAAkB;AAAA,IAC3B,IAAA,EAAM,8BAAA;AAAA,IACN,MAAA,EAAQ,EAAE,UAAA,EAAY,KAAA;AAAM,GAC7B,CAAA;AACH;;;AC/IO,SAAS,mBAAmB,OAAA,EAAsC;AACvE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,cAAA;AAAA,IACT,MAAM,GAAA,EAAK;AACT,MAAA,GAAA,CAAI,OAAA,CAAQ,gBAAgB,OAAO,CAAA;AACnC,MAAA,GAAA,CAAI,OAAO,MAAM,MAAM,OAAA,CAAQ,KAAA,IAAS,sBAAsB,CAAA;AAAA,IAChE;AAAA,GACF;AACF;;;ACoEO,IAAM,2BAAA,GAAkD;AAAA,EAC7D,aAAA,EAAe,KAAA;AAAA,EACf,cAAA,EAAgB,KAAA;AAAA,EAChB,uBAAA,EAAyB,CAAA;AAAA,EACzB,2BAAA,EAA6B,GAAA;AAAA,EAC7B,aAAA,EAAe;AACjB;AAQO,SAAS,WAAW,KAAA,EAA2B;AACpD,EAAA,OAAO,KAAA;AACT;;;AC9EA,IAAI,gBAAA,GAAmB,CAAA;AAEvB,SAAS,aAAa,MAAA,EAAwB;AAC5C,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,MAAA,EAAQ,UAAA,IAAa;AAC7C,EAAA,IAAI,SAAS,MAAA,EAAW,OAAO,CAAA,EAAG,MAAM,IAAI,IAAI,CAAA,CAAA;AAChD,EAAA,gBAAA,IAAoB,CAAA;AACpB,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,GAAA,EAAI,CAAE,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA,EAAI,gBAAA,CAAiB,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA;AAC9E;AAEO,SAAS,0BACd,SAAA,EACoB;AACpB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,2BAAA,EAA6B,GAAG,SAAA,EAAU;AAC9D,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AAClD,IAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA,IAAK,SAAS,CAAA,EAAG;AAC1C,MAAA,MAAM,IAAI,UAAA,CAAW,CAAA,EAAG,IAAI,CAAA,2BAAA,CAA6B,CAAA;AAAA,IAC3D;AAAA,EACF;AACA,EAAA,IAAI,MAAA,CAAO,8BAA8B,CAAA,EAAG;AAC1C,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,sBAAN,MAAyD;AAAA,EAS9D,WAAA,CACmB,QAAA,EACjB,OAAA,GAAsC,EAAC,EACvC;AAFiB,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAGjB,IAAA,IAAA,CAAK,aAAa,QAAA,CAAS,EAAA;AAC3B,IAAA,IAAA,CAAK,MAAA,GAAS,yBAAA,CAA0B,OAAA,CAAQ,MAAM,CAAA;AACtD,IAAA,IAAA,CAAK,mBACH,OAAA,CAAQ,gBAAA,KAAqB,MAAM,UAAA,CAAW,YAAA,CAAa,UAAU,CAAC,CAAA,CAAA;AACxE,IAAA,IAAA,CAAK,eAAA,GAAkB,OAAA,CAAQ,eAAA,KAAoB,MAAM,aAAa,SAAS,CAAA,CAAA;AAAA,EACjF;AAAA,EARmB,QAAA;AAAA,EATV,UAAA;AAAA,EACA,MAAA;AAAA,EACQ,OAAA,uBAAc,GAAA,EAAgC;AAAA,EAC9C,gBAAA;AAAA,EACA,eAAA;AAAA,EACT,MAAA,GAAS,KAAA;AAAA,EACT,SAAA;AAAA,EAaR,OAAO,OAAA,EAAkE;AACvE,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,eAAA,CAAgB,OAAO,CAAA;AAC9C,IAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,IAAA,MAAM,GAAA,GAAmB;AAAA,MACvB,EAAA,EAAI,KAAK,gBAAA,EAAiB;AAAA,MAC1B,OAAA,EAAS,OAAA,CAAQ,OAAA,IAAW,EAAE,UAAA,EAAY,KAAK,UAAA,EAAY,EAAA,EAAI,IAAA,CAAK,eAAA,EAAgB;AAAE,KACxF;AACA,IAAA,MAAM,QAAA,GAAW,KAAK,MAAA,CAAO,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,CAAA;AAC7D,IAAA,OAAO,QAAA,CAAS,EAAA,GAAK,EAAA,CAAG,GAAG,CAAA,GAAI,QAAA;AAAA,EACjC;AAAA;AAAA,EAGA,OAAO,UAAA,EAAiE;AACtE,IAAA,MAAM,SAAA,GAAY,KAAK,eAAA,CAAgB;AAAA,MACrC,OAAO,UAAA,CAAW,KAAA;AAAA,MAClB,SAAS,UAAA,CAAW;AAAA,KACrB,CAAA;AACD,IAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,OAAO,SAAA;AAC1B,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,EAAE,CAAA,EAAG;AACnC,MAAA,OAAO,GAAA;AAAA,QACL,aAAA,CAAc,KAAK,UAAA,EAAY,CAAA,6BAAA,EAAgC,OAAO,UAAA,CAAW,EAAE,CAAC,CAAA,CAAE;AAAA,OACxF;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,IAAA,CAAK,MAAA,CAAO,uBAAA,EAAyB;AAC5D,MAAA,OAAO,GAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,gCAAA;AAAA,UACN,MAAA,EAAQ,EAAE,KAAA,EAAO,IAAA,CAAK,OAAO,uBAAA;AAAwB,SACtD;AAAA,OACH;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAyB;AAAA,MAC7B,KAAK,EAAE,EAAA,EAAI,WAAW,EAAA,EAAI,OAAA,EAAS,WAAW,OAAA,EAAQ;AAAA,MACtD,QAAQ,EAAC;AAAA,MACT,QAAA,EAAU,CAAA;AAAA,MACV,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AACA,IAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,EAAA,EAAI,MAAM,CAAA;AACtC,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI;AACF,MAAA,OAAA,GAAU,KAAK,QAAA,CAAS,KAAA,CAAM,YAAY,IAAA,CAAK,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,IACnE,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,UAAA,CAAW,EAAE,CAAA;AACjC,MAAA,OAAO,GAAA,CAAI,aAAA,CAAc,IAAA,CAAK,UAAA,EAAY,KAAK,CAAC,CAAA;AAAA,IAClD;AACA,IAAA,IAAI,CAAC,QAAQ,EAAA,EAAI;AACf,MAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,UAAA,CAAW,EAAE,CAAA;AACjC,MAAA,OAAO,OAAA;AAAA,IACT;AACA,IAAA,OAAO,GAAG,MAAS,CAAA;AAAA,EACrB;AAAA,EAEA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,aAAA,EAAyC;AACpE,IAAA,IAAI,CAAC,OAAO,SAAA,CAAU,SAAS,KAAK,SAAA,IAAa,CAAA,SAAU,EAAC;AAC5D,IAAA,MAAM,UAAU,IAAA,CAAK,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,OAAO,aAAa,CAAA;AAC7D,IAAA,MAAM,SAA0B,EAAC;AACjC,IAAA,KAAA,MAAW,CAAC,EAAA,EAAI,MAAM,CAAA,IAAK,KAAK,OAAA,EAAS;AACvC,MAAA,OAAO,OAAO,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,SAAS,OAAA,EAAS;AAC1D,QAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,KAAA,EAAM;AAClC,QAAA,IAAI,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,MAC5C;AACA,MAAA,IAAI,MAAA,CAAO,YAAY,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,EAAE,CAAA;AACzE,MAAA,IAAI,MAAA,CAAO,WAAW,OAAA,EAAS;AAAA,IACjC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,OAAO,QAAA,EAAuD;AAC5D,IAAA,IAAI,KAAK,MAAA,EAAQ,OAAO,GAAA,CAAI,IAAA,CAAK,aAAa,CAAA;AAC9C,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AACxC,IAAA,IAAI,MAAA,KAAW,MAAA,IAAa,MAAA,CAAO,QAAA,EAAU;AAC3C,MAAA,OAAO,GAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,iCAAA;AAAA,UACN,MAAA,EAAQ,EAAE,UAAA,EAAY,QAAA;AAAS,SAChC;AAAA,OACH;AAAA,IACF;AACA,IAAA,IAAI;AACF,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA;AAAA,IACtC,SAAS,KAAA,EAAO;AACd,MAAA,OAAO,GAAA,CAAI,aAAA,CAAc,IAAA,CAAK,UAAA,EAAY,KAAK,CAAC,CAAA;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,KAAA,GAAuB;AACrB,IAAA,IAAA,CAAK,SAAA,KAAc,KAAK,YAAA,EAAa;AACrC,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA,EAEA,MAAc,YAAA,GAA8B;AAC1C,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,SAAS,KAAA,EAAM;AAAA,IAC5B,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AAAA,EACrB;AAAA,EAEA,IAAY,YAAA,GAAuB;AACjC,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,KAAA,MAAW,MAAA,IAAU,KAAK,OAAA,CAAQ,MAAA,IAAU,IAAI,CAAC,MAAA,CAAO,QAAA,EAAU,KAAA,IAAS,CAAA;AAC3E,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEQ,gBAAgB,OAAA,EAA2D;AACjF,IAAA,IAAI,KAAK,MAAA,EAAQ,OAAO,GAAA,CAAI,IAAA,CAAK,aAAa,CAAA;AAC9C,IAAA,IAAI,OAAA,CAAQ,MAAM,MAAA,KAAW,CAAA,IAAK,QAAQ,KAAA,CAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,aAAA,EAAe;AAClF,MAAA,OAAO,GAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,8BAAA;AAAA,UACN,MAAA,EAAQ;AAAA,YACN,KAAA,EAAO,OAAA;AAAA,YACP,MAAA,EACE,QAAQ,KAAA,CAAM,MAAA,KAAW,IACrB,gBAAA,GACA,CAAA,cAAA,EAAiB,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,WAAA;AAAA;AAClD,SACD;AAAA,OACH;AAAA,IACF;AACA,IAAA,IAAI,QAAQ,OAAA,KAAY,MAAA,IAAa,QAAQ,OAAA,CAAQ,UAAA,KAAe,KAAK,UAAA,EAAY;AACnF,MAAA,OAAO,GAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,wCAAA;AAAA,UACN,MAAA,EAAQ;AAAA,YACN,oBAAoB,IAAA,CAAK,UAAA;AAAA,YACzB,kBAAA,EAAoB,QAAQ,OAAA,CAAQ;AAAA;AACtC,SACD;AAAA,OACH;AAAA,IACF;AACA,IAAA,OAAO,GAAG,MAAS,CAAA;AAAA,EACrB;AAAA,EAEQ,WAAW,MAAA,EAAsC;AACvD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,CAAC,IAAA,KAAS;AACd,QAAA,IAAI,KAAK,MAAA,IAAU,MAAA,CAAO,QAAA,IAAY,IAAA,CAAK,WAAW,CAAA,EAAG;AACzD,QAAA,IAAI,OAAO,WAAA,GAAc,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,OAAO,cAAA,EAAgB;AACjE,UAAA,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc,CAAA;AAChE,UAAA;AAAA,QACF;AACA,QAAA,IAAI,OAAO,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK,MAAA,CAAO,8BAA8B,CAAA,EAAG;AACvE,UAAA,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,gBAAA,EAAkB,IAAA,CAAK,OAAO,2BAA2B,CAAA;AAC/E,UAAA;AAAA,QACF;AACA,QAAA,MAAA,CAAO,eAAe,IAAA,CAAK,MAAA;AAC3B,QAAA,IAAA,CAAK,KAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,MAAM,CAAA;AAAA,MAChD,CAAA;AAAA,MACA,QAAA,EAAU,CAAC,MAAA,KAAW;AACpB,QAAA,IAAI,IAAA,CAAK,MAAA,IAAU,MAAA,CAAO,QAAA,EAAU;AACpC,QAAA,IAAI,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,cAAA,EAAgB;AAC9C,UAAA,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc,CAAA;AAChE,UAAA;AAAA,QACF;AACA,QAAA,MAAA,CAAO,QAAA,GAAW,IAAA;AAClB,QAAA,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,WAAA,EAAa,SAAS,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,MAAA,EAAQ,CAAA;AAAA,MAC9E,CAAA;AAAA,MACA,IAAA,EAAM,CAAC,KAAA,KAAU;AACf,QAAA,IAAI,IAAA,CAAK,MAAA,IAAU,MAAA,CAAO,QAAA,EAAU;AACpC,QAAA,MAAA,CAAO,QAAA,GAAW,IAAA;AAClB,QAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,IAAA,CAAK,UAAA,EAAY,KAAK,CAAA;AAClD,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,EAAE,IAAA,EAAM,UAAU,KAAA,EAAO,mBAAA,CAAoB,KAAK,CAAA,EAAG,CAAA;AAAA,MACzE,CAAA;AAAA,MACA,WAAW,MAAM;AACf,QAAA,IAAI,IAAA,CAAK,MAAA,IAAU,MAAA,CAAO,QAAA,EAAU;AACpC,QAAA,MAAA,CAAO,QAAA,GAAW,IAAA;AAClB,QAAA,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,EAAE,IAAA,EAAM,aAAa,CAAA;AAAA,MACzC;AAAA,KACF;AAAA,EACF;AAAA,EAEQ,QAAA,CACN,MAAA,EACA,KAAA,EACA,KAAA,EACM;AACN,IAAA,IAAI,OAAO,QAAA,EAAU;AACrB,IAAA,MAAA,CAAO,QAAA,GAAW,IAAA;AAClB,IAAA,MAAM,KAAA,GAAQ,IAAI,iBAAA,CAAkB;AAAA,MAClC,IAAA,EAAM,8BAAA;AAAA,MACN,QAAQ,EAAE,UAAA,EAAY,OAAO,GAAA,CAAI,EAAA,EAAI,OAAO,KAAA;AAAM,KACnD,CAAA;AACD,IAAA,IAAI,MAAA,CAAO,OAAO,MAAA,IAAU,IAAA,CAAK,OAAO,2BAAA,EAA6B,MAAA,CAAO,OAAO,GAAA,EAAI;AACvF,IAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,EAAE,IAAA,EAAM,UAAU,KAAA,EAAO,mBAAA,CAAoB,KAAK,CAAA,EAAG,CAAA;AACvE,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AAAA,IACpC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEQ,IAAA,CACN,QACA,KAAA,EASM;AACN,IAAA,MAAA,CAAO,QAAA,IAAY,CAAA;AACnB,IAAA,MAAA,CAAO,OAAO,IAAA,CAAK;AAAA,MACjB,GAAG,KAAA;AAAA,MACH,UAAA,EAAY,OAAO,GAAA,CAAI,EAAA;AAAA,MACvB,UAAU,MAAA,CAAO;AAAA,KACD,CAAA;AAAA,EACpB;AAAA,EAEQ,WAAA,GAAiC;AACvC,IAAA,OAAO,IAAI,kBAAkB,EAAE,IAAA,EAAM,uBAAuB,MAAA,EAAQ,IAAI,CAAA;AAAA,EAC1E;AACF;AAEO,SAAS,yBAAA,CACd,QAAA,EACA,OAAA,GAAsC,EAAC,EAClB;AACrB,EAAA,OAAO,IAAI,mBAAA,CAAoB,QAAA,EAAU,OAAO,CAAA;AAClD;ACvPO,SAAS,oBAAA,CACd,MACA,OAAA,EACyB;AACzB,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,IAAI,SAAA;AACJ,EAAA,MAAM,QAAA,GAAW,CACf,KAAA,KACS;AACT,IAAA,IAAI,MAAA,EAAQ;AACZ,IAAA,MAAM,UAAU,KAAA,CAAM,IAAA;AACtB,IAAA,IAAI,OAAA,CAAQ,SAAS,qBAAA,EAAuB;AAC1C,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA;AAClD,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,OAAA,GAAU,aAAA,CAAc,QAAA,CAAS,KAAK,CAAA;AAC5C,QAAA,IAAA,CAAK,WAAA,CAAY;AAAA,UACf,IAAA,EAAM,uBAAA;AAAA,UACN,UAAA,EAAY,QAAQ,UAAA,CAAW,EAAA;AAAA,UAC/B,KAAA,EAAO;AAAA,SACR,CAAA;AAAA,MACH;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,OAAA,CAAQ,SAAS,mBAAA,EAAqB;AACxC,MAAA,IAAA,CAAK,WAAA,CAAY,EAAE,IAAA,EAAM,qBAAA,EAAuB,MAAA,EAAQ,QAAQ,IAAA,CAAK,OAAA,CAAQ,SAAS,CAAA,EAAG,CAAA;AACzF,MAAA;AAAA,IACF;AACA,IAAA,IAAI,OAAA,CAAQ,SAAS,qBAAA,EAAuB;AAC1C,MAAA,OAAA,CAAQ,MAAA,CAAO,QAAQ,UAAU,CAAA;AACjC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,oBAAA,EAAsB,KAAK,KAAA,EAAM;AAAA,EACxD,CAAA;AACA,EAAA,MAAM,QAAQ,MAAqB;AACjC,IAAA,IAAI,SAAA,KAAc,QAAW,OAAO,SAAA;AACpC,IAAA,MAAA,GAAS,IAAA;AACT,IAAA,IAAA,CAAK,mBAAA,CAAoB,WAAW,QAAQ,CAAA;AAC5C,IAAA,SAAA,GAAA,CAAa,YAAY;AACvB,MAAA,MAAM,QAAQ,KAAA,EAAM;AACpB,MAAA,IAAA,CAAK,WAAA,CAAY,EAAE,IAAA,EAAM,qBAAA,EAAuB,CAAA;AAChD,MAAA,UAAA,CAAW,MAAM,IAAA,CAAK,KAAA,EAAM,EAAG,CAAC,CAAA;AAAA,IAClC,CAAA,GAAG;AACH,IAAA,OAAO,SAAA;AAAA,EACT,CAAA;AACA,EAAA,IAAA,CAAK,gBAAA,CAAiB,WAAW,QAAQ,CAAA;AACzC,EAAA,IAAA,CAAK,KAAA,IAAQ;AACb,EAAA,OAAO,EAAE,KAAA,EAAM;AACjB;AAEA,SAAS,cAAc,KAAA,EAA6C;AAClE,EAAA,IAAI,KAAA,CAAM,SAAS,8BAAA,EAAgC;AACjD,IAAA,OAAO;AAAA,MACL,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,MAAM,MAAA,CAAO,UAAA;AAAA,QACzB,KAAA,EACE,KAAA,CAAM,MAAA,CAAO,KAAA,YAAiB,KAAA,GAC1B,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,OAAA,GACnB,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,KAAK;AAAA;AACjC,KACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,QAAQ,KAAA,CAAM;AAAA,GAChB;AACF;AAEA,IAAI,YAAA,GAAe,CAAA;AAEnB,SAAS,iBAAiB,MAAA,EAAwB;AAChD,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,MAAA,EAAQ,UAAA,IAAa;AAC7C,EAAA,IAAI,SAAS,MAAA,EAAW,OAAO,CAAA,EAAG,MAAM,IAAI,IAAI,CAAA,CAAA;AAChD,EAAA,YAAA,IAAgB,CAAA;AAChB,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAClC;AAGO,IAAM,yBAAN,MAA4D;AAAA,EAkBjE,WAAA,CACW,UAAA,EACQ,IAAA,EACjB,OAAA,GAAsC,EAAC,EACvC;AAHS,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACQ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAGjB,IAAA,IAAA,CAAK,MAAA,GAAS,yBAAA,CAA0B,OAAA,CAAQ,MAAM,CAAA;AACtD,IAAA,IAAA,CAAK,mBACH,OAAA,CAAQ,gBAAA,KAAqB,MAAM,UAAA,CAAW,gBAAA,CAAiB,UAAU,CAAC,CAAA,CAAA;AAC5E,IAAA,IAAA,CAAK,eAAA,GAAkB,OAAA,CAAQ,eAAA,KAAoB,MAAM,iBAAiB,SAAS,CAAA,CAAA;AACnF,IAAA,IAAA,CAAK,QAAA,GAAW,CAAC,KAAA,KAAU;AACzB,MAAA,MAAM,UAAU,KAAA,CAAM,IAAA;AACtB,MAAA,IAAI,IAAA,CAAK,MAAA,IAAU,OAAA,CAAQ,IAAA,KAAS,qBAAA,EAAuB;AAC3D,MAAA,IAAI,OAAA,CAAQ,SAAS,qBAAA,EAAuB;AAC1C,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,QAAA,KAAA,MAAW,IAAA,IAAQ,QAAQ,MAAA,EAAQ;AACjC,UAAA,IAAA,CAAK,QAAA,CAAS,KAAK,IAAI,CAAA;AACvB,UAAA,IAAI,KAAK,IAAA,KAAS,YAAA,OAAmB,MAAA,CAAO,MAAA,CAAO,KAAK,UAAU,CAAA;AAAA,QACpE;AAAA,MACF,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,uBAAA,EAAyB;AACnD,QAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA;AACrC,QAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,UAAA,EAAY,OAAO,CAAA;AAAA,MAC/C,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,qBAAA,EAAuB;AACjD,QAAA,IAAA,CAAK,UAAA,EAAW;AAChB,QAAA,IAAA,CAAK,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,IAAA,CAAK,QAAQ,CAAA;AACtD,QAAA,IAAA,CAAK,KAAK,KAAA,EAAM;AAChB,QAAA,IAAA,CAAK,YAAA,IAAe;AACpB,QAAA,IAAA,CAAK,YAAA,GAAe,MAAA;AACpB,QAAA,IAAA,CAAK,SAAA,KAAc,QAAQ,OAAA,EAAQ;AAAA,MACrC;AAAA,IACF,CAAA;AACA,IAAA,IAAA,CAAK,gBAAA,CAAiB,SAAA,EAAW,IAAA,CAAK,QAAQ,CAAA;AAC9C,IAAA,IAAA,CAAK,KAAA,IAAQ;AAAA,EACf;AAAA,EA/BW,UAAA;AAAA,EACQ,IAAA;AAAA,EAnBV,MAAA;AAAA,EACQ,WAA4B,EAAC;AAAA,EAC7B,MAAA,uBAAa,GAAA,EAAgB;AAAA,EAC7B,QAAA,uBAAe,GAAA,EAG9B;AAAA,EACe,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EAGT,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,KAAA;AAAA,EACd,SAAA;AAAA,EACA,YAAA;AAAA,EAoCA,UAAA,GAAmB;AACzB,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,IAAA,IAAA,CAAK,SAAS,MAAA,GAAS,CAAA;AACvB,IAAA,IAAA,CAAK,OAAO,KAAA,EAAM;AAClB,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AACpB,IAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAAA,EACrB;AAAA,EAEA,OAAO,OAAA,EAAkE;AACvE,IAAA,IAAI,IAAA,CAAK,MAAA,EAAQ,OAAOA,GAAAA,CAAI,IAAI,iBAAA,CAAkB,EAAE,IAAA,EAAM,qBAAA,EAAuB,MAAA,EAAQ,EAAC,EAAG,CAAC,CAAA;AAC9F,IAAA,IAAI,OAAA,CAAQ,MAAM,MAAA,KAAW,CAAA,IAAK,QAAQ,KAAA,CAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,aAAA,EAAe;AAClF,MAAA,OAAOA,GAAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,8BAAA;AAAA,UACN,MAAA,EAAQ;AAAA,YACN,KAAA,EAAO,OAAA;AAAA,YACP,MAAA,EACE,QAAQ,KAAA,CAAM,MAAA,KAAW,IACrB,gBAAA,GACA,CAAA,cAAA,EAAiB,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,WAAA;AAAA;AAClD,SACD;AAAA,OACH;AAAA,IACF;AACA,IAAA,IAAI,QAAQ,OAAA,KAAY,MAAA,IAAa,QAAQ,OAAA,CAAQ,UAAA,KAAe,KAAK,UAAA,EAAY;AACnF,MAAA,OAAOA,GAAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,wCAAA;AAAA,UACN,MAAA,EAAQ;AAAA,YACN,oBAAoB,IAAA,CAAK,UAAA;AAAA,YACzB,kBAAA,EAAoB,QAAQ,OAAA,CAAQ;AAAA;AACtC,SACD;AAAA,OACH;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,MAAA,CAAO,IAAA,IAAQ,IAAA,CAAK,OAAO,uBAAA,EAAyB;AAC3D,MAAA,OAAOA,GAAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,gCAAA;AAAA,UACN,MAAA,EAAQ,EAAE,KAAA,EAAO,IAAA,CAAK,OAAO,uBAAA;AAAwB,SACtD;AAAA,OACH;AAAA,IACF;AACA,IAAA,MAAM,GAAA,GAAmB;AAAA,MACvB,EAAA,EAAI,KAAK,gBAAA,EAAiB;AAAA,MAC1B,OAAA,EAAS,OAAA,CAAQ,OAAA,IAAW,EAAE,UAAA,EAAY,KAAK,UAAA,EAAY,EAAA,EAAI,IAAA,CAAK,eAAA,EAAgB;AAAE,KACxF;AACA,IAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,EAAE,CAAA;AACtB,IAAA,IAAA,CAAK,KAAK,WAAA,CAAY;AAAA,MACpB,IAAA,EAAM,qBAAA;AAAA,MACN,YAAY,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,QAAQ,KAAA;AAAM,KAC5C,CAAA;AACD,IAAA,OAAOC,GAAG,GAAG,CAAA;AAAA,EACf;AAAA,EAEA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,aAAA,EAAyC;AACpE,IAAA,IAAI,IAAA,CAAK,MAAA,IAAU,CAAC,MAAA,CAAO,SAAA,CAAU,SAAS,CAAA,IAAK,SAAA,IAAa,CAAA,EAAG,OAAO,EAAC;AAC3E,IAAA,MAAM,QAAQ,IAAA,CAAK,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,OAAO,aAAa,CAAA;AAC3D,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,GAAG,KAAK,CAAA;AAC5C,IAAA,KAAA,MAAW,CAAC,EAAA,EAAI,SAAS,CAAA,IAAK,KAAK,QAAA,EAAU;AAC3C,MAAA,IAAI,MAAA,CAAO,UAAU,KAAA,EAAO;AAC5B,MAAA,IAAA,CAAK,QAAA,CAAS,OAAO,EAAE,CAAA;AACvB,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,UAAA,EAAY,EAAA;AAAA,QACZ,QAAA,EAAU,CAAA;AAAA,QACV,OAAO,SAAA,CAAU;AAAA,OAClB,CAAA;AAAA,IACH;AACA,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,MAAA,IAAA,CAAK,KAAK,WAAA,CAAY,EAAE,MAAM,mBAAA,EAAqB,SAAA,EAAW,OAAO,CAAA;AAAA,IACvE;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,OAAO,EAAA,EAAiD;AACtD,IAAA,IAAI,IAAA,CAAK,MAAA,EAAQ,OAAOD,GAAAA,CAAI,IAAI,iBAAA,CAAkB,EAAE,IAAA,EAAM,qBAAA,EAAuB,MAAA,EAAQ,EAAC,EAAG,CAAC,CAAA;AAC9F,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAG;AACxB,MAAA,OAAOA,GAAAA;AAAA,QACL,IAAI,iBAAA,CAAkB;AAAA,UACpB,IAAA,EAAM,iCAAA;AAAA,UACN,MAAA,EAAQ,EAAE,UAAA,EAAY,EAAA;AAAG,SAC1B;AAAA,OACH;AAAA,IACF;AACA,IAAA,IAAA,CAAK,KAAK,WAAA,CAAY,EAAE,MAAM,qBAAA,EAAuB,UAAA,EAAY,IAAI,CAAA;AACrE,IAAA,OAAOC,GAAG,MAAS,CAAA;AAAA,EACrB;AAAA,EAEA,KAAA,GAAuB;AACrB,IAAA,IAAI,IAAA,CAAK,SAAA,KAAc,MAAA,EAAW,OAAO,IAAA,CAAK,SAAA;AAC9C,IAAA,IAAI,KAAK,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,SAAA,GAAY,QAAQ,OAAA,EAAQ;AACjC,MAAA,OAAO,IAAA,CAAK,SAAA;AAAA,IACd;AACA,IAAA,IAAA,CAAK,UAAA,EAAW;AAChB,IAAA,IAAA,CAAK,SAAA,GAAY,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AACxC,MAAA,IAAA,CAAK,YAAA,GAAe,OAAA;AACpB,MAAA,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,EAAE,IAAA,EAAM,sBAAsB,CAAA;AAAA,IACtD,CAAC,CAAA;AACD,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AACF;AAEO,SAAS,4BAAA,CACd,UAAA,EACA,IAAA,EACA,OAAA,GAAsC,EAAC,EACf;AACxB,EAAA,OAAO,IAAI,sBAAA,CAAuB,UAAA,EAAY,IAAA,EAAM,OAAO,CAAA;AAC7D","file":"index.mjs","sourcesContent":["import type { ActivityId } from './types';\n\nexport type IntelligenceErrorCode =\n | 'intelligence-invalid-request'\n | 'intelligence-session-provider-mismatch'\n | 'intelligence-capacity-exceeded'\n | 'intelligence-activity-not-found'\n | 'intelligence-provider-failed'\n | 'intelligence-output-overflow'\n | 'intelligence-closed';\n\nexport interface IntelligenceErrorDetailMap {\n readonly 'intelligence-invalid-request': { readonly field: 'input'; readonly reason: string };\n readonly 'intelligence-session-provider-mismatch': {\n readonly expectedProviderId: string;\n readonly receivedProviderId: string;\n };\n readonly 'intelligence-capacity-exceeded': { readonly limit: number };\n readonly 'intelligence-activity-not-found': { readonly activityId: ActivityId };\n readonly 'intelligence-provider-failed': { readonly providerId: string; readonly cause: unknown };\n readonly 'intelligence-output-overflow': {\n readonly activityId: ActivityId;\n readonly bound: 'output-chars' | 'pending-events';\n readonly limit: number;\n };\n readonly 'intelligence-closed': Readonly<Record<string, never>>;\n}\n\nexport type IntelligenceErrorDetailFor<C extends IntelligenceErrorCode> =\n IntelligenceErrorDetailMap[C];\n\nconst policy = {\n 'intelligence-invalid-request': {\n expected: 'activity input must be a non-empty string within the configured bound',\n hint: 'validate and bound player input before submitting the activity',\n },\n 'intelligence-session-provider-mismatch': {\n expected: 'a session reference must be resumed by the provider that created it',\n hint: 'discard the incompatible session or select its original provider',\n },\n 'intelligence-capacity-exceeded': {\n expected: 'active intelligence work must remain within the configured concurrency bound',\n hint: 'wait for an activity to finish or raise the explicit provider capacity',\n },\n 'intelligence-activity-not-found': {\n expected: 'the activity must still be running when cancellation is requested',\n hint: 'ignore an already observed terminal activity or retain the correct ActivityId',\n },\n 'intelligence-provider-failed': {\n expected: 'the selected provider must complete or report a structured failure',\n hint: 'inspect detail.cause and provider configuration, then retry or select another provider',\n },\n 'intelligence-output-overflow': {\n expected: 'incremental and final output must remain within configured queue and text bounds',\n hint: 'consume events every frame or raise the explicit bound for this application',\n },\n 'intelligence-closed': {\n expected: 'the intelligence service must be open for submit and cancel operations',\n hint: 'create a new service after its Cordis realm or owner has been disposed',\n },\n} satisfies Record<IntelligenceErrorCode, { readonly expected: string; readonly hint: string }>;\n\nexport const INTELLIGENCE_EXPECTED = Object.fromEntries(\n Object.entries(policy).map(([code, value]) => [code, value.expected]),\n) as Readonly<Record<IntelligenceErrorCode, string>>;\n\nexport const INTELLIGENCE_ERROR_HINTS = Object.fromEntries(\n Object.entries(policy).map(([code, value]) => [code, value.hint]),\n) as Readonly<Record<IntelligenceErrorCode, string>>;\n\nclass IntelligenceErrorClass extends Error {\n readonly code: IntelligenceErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: IntelligenceErrorDetailFor<IntelligenceErrorCode>;\n\n constructor(args: {\n code: IntelligenceErrorCode;\n detail: IntelligenceErrorDetailFor<IntelligenceErrorCode>;\n }) {\n const selected = policy[args.code];\n super(\n `[IntelligenceError ${args.code}] expected: ${selected.expected}; hint: ${selected.hint}`,\n );\n this.name = 'IntelligenceError';\n this.code = args.code;\n this.expected = selected.expected;\n this.hint = selected.hint;\n this.detail = args.detail;\n }\n}\n\ntype IntelligenceErrorVariant<C extends IntelligenceErrorCode> = IntelligenceErrorClass & {\n readonly code: C;\n readonly detail: IntelligenceErrorDetailFor<C>;\n};\n\nexport type IntelligenceError = {\n [C in IntelligenceErrorCode]: IntelligenceErrorVariant<C>;\n}[IntelligenceErrorCode];\n\ninterface IntelligenceErrorConstructor {\n new <C extends IntelligenceErrorCode>(args: {\n code: C;\n detail: IntelligenceErrorDetailFor<C>;\n }): IntelligenceErrorVariant<C>;\n readonly prototype: IntelligenceErrorClass;\n}\n\nexport const IntelligenceError: IntelligenceErrorConstructor =\n IntelligenceErrorClass as unknown as IntelligenceErrorConstructor;\n\ntype PodDetailMap = Omit<IntelligenceErrorDetailMap, 'intelligence-provider-failed'> & {\n readonly 'intelligence-provider-failed': { readonly providerId: string; readonly cause: string };\n};\n\nexport type IntelligenceFailure = {\n [C in IntelligenceErrorCode]: {\n readonly code: C;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PodDetailMap[C];\n };\n}[IntelligenceErrorCode];\n\nexport function intelligenceFailure(error: IntelligenceError): IntelligenceFailure {\n if (error.code === 'intelligence-provider-failed') {\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: {\n providerId: error.detail.providerId,\n cause:\n error.detail.cause instanceof Error\n ? error.detail.cause.message\n : String(error.detail.cause),\n },\n };\n }\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: error.detail,\n } as IntelligenceFailure;\n}\n\nexport function providerError(providerId: string, cause: unknown): IntelligenceError {\n return new IntelligenceError({\n code: 'intelligence-provider-failed',\n detail: { providerId, cause },\n });\n}\n","import type { Plugin } from '@forgeax/engine-plugin';\nimport type { IntelligenceService } from './types';\n\ndeclare module '@forgeax/engine-plugin' {\n interface EngineContextServices {\n intelligence?: IntelligenceService;\n }\n}\n\n/** Install one optional intelligence service and bind its lifetime to this Cordis Fiber. */\nexport function intelligencePlugin(service: IntelligenceService): Plugin {\n return {\n name: 'intelligence',\n provide: 'intelligence',\n apply(ctx) {\n ctx.provide('intelligence', service);\n ctx.effect(() => () => service.close(), 'intelligence/service');\n },\n };\n}\n","import type { Result } from '@forgeax/engine-types';\nimport type { IntelligenceError, IntelligenceFailure } from './errors';\n\ndeclare const activityIdBrand: unique symbol;\n\n/** Opaque identity of one bounded asynchronous operation. */\nexport type ActivityId = string & { readonly [activityIdBrand]: true };\n\n/** Provider-scoped durable conversation identity. */\nexport interface SessionRef {\n readonly providerId: string;\n readonly id: string;\n}\n\nexport interface ActivityRef {\n readonly id: ActivityId;\n readonly session: SessionRef;\n}\n\nexport interface ActivityRequest {\n readonly input: string;\n readonly session?: SessionRef;\n}\n\n/** Fully identified request used by realm transports and provider dispatch. */\nexport interface ActivitySubmission extends ActivityRef {\n readonly input: string;\n}\n\nexport type ActivityEvent =\n | {\n readonly type: 'text-delta';\n readonly activityId: ActivityId;\n readonly sequence: number;\n readonly text: string;\n }\n | {\n readonly type: 'completed';\n readonly activityId: ActivityId;\n readonly sequence: number;\n readonly session: SessionRef;\n readonly output: string;\n }\n | {\n readonly type: 'failed';\n readonly activityId: ActivityId;\n readonly sequence: number;\n readonly error: IntelligenceFailure;\n }\n | {\n readonly type: 'cancelled';\n readonly activityId: ActivityId;\n readonly sequence: number;\n };\n\nexport interface ActivitySink {\n text(text: string): void;\n complete(output: string): void;\n fail(cause: unknown): void;\n cancelled(): void;\n}\n\n/** Provider implementation boundary. It never receives World or Renderer authority. */\nexport interface IntelligenceProvider {\n readonly id: string;\n start(submission: ActivitySubmission, sink: ActivitySink): Result<void, IntelligenceError>;\n cancel(activityId: ActivityId): Result<void, IntelligenceError>;\n close(): Promise<void>;\n}\n\n/** Frame-safe consumer surface. No method waits for provider work. */\nexport interface IntelligenceService {\n readonly providerId: string;\n submit(request: ActivityRequest): Result<ActivityRef, IntelligenceError>;\n poll(maxEvents?: number): readonly ActivityEvent[];\n cancel(activityId: ActivityId): Result<void, IntelligenceError>;\n close(): Promise<void>;\n}\n\nexport interface IntelligenceLimits {\n readonly maxInputChars: number;\n readonly maxOutputChars: number;\n readonly maxConcurrentActivities: number;\n readonly maxPendingEventsPerActivity: number;\n readonly maxPollEvents: number;\n}\n\nexport const DEFAULT_INTELLIGENCE_LIMITS: IntelligenceLimits = {\n maxInputChars: 16_384,\n maxOutputChars: 65_536,\n maxConcurrentActivities: 8,\n maxPendingEventsPerActivity: 256,\n maxPollEvents: 64,\n};\n\nexport interface IntelligenceRuntimeOptions {\n readonly limits?: Partial<IntelligenceLimits>;\n readonly createActivityId?: () => ActivityId;\n readonly createSessionId?: () => string;\n}\n\nexport function activityId(value: string): ActivityId {\n return value as ActivityId;\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\nimport { IntelligenceError, intelligenceFailure, providerError } from './errors';\nimport {\n type ActivityEvent,\n type ActivityId,\n type ActivityRef,\n type ActivityRequest,\n type ActivitySink,\n type ActivitySubmission,\n activityId,\n DEFAULT_INTELLIGENCE_LIMITS,\n type IntelligenceLimits,\n type IntelligenceProvider,\n type IntelligenceRuntimeOptions,\n type IntelligenceService,\n} from './types';\n\ninterface ActivityRecord {\n readonly ref: ActivityRef;\n readonly events: ActivityEvent[];\n sequence: number;\n outputChars: number;\n terminal: boolean;\n}\n\nlet fallbackIdentity = 0;\n\nfunction nextIdentity(prefix: string): string {\n const uuid = globalThis.crypto?.randomUUID?.();\n if (uuid !== undefined) return `${prefix}-${uuid}`;\n fallbackIdentity += 1;\n return `${prefix}-${Date.now().toString(36)}-${fallbackIdentity.toString(36)}`;\n}\n\nexport function resolveIntelligenceLimits(\n overrides: Partial<IntelligenceLimits> | undefined,\n): IntelligenceLimits {\n const limits = { ...DEFAULT_INTELLIGENCE_LIMITS, ...overrides };\n for (const [name, value] of Object.entries(limits)) {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(`${name} must be a positive integer`);\n }\n }\n if (limits.maxPendingEventsPerActivity < 2) {\n throw new RangeError(\n 'maxPendingEventsPerActivity must reserve at least one data and terminal event',\n );\n }\n return limits;\n}\n\nexport class IntelligenceRuntime implements IntelligenceService {\n readonly providerId: string;\n readonly limits: IntelligenceLimits;\n private readonly records = new Map<ActivityId, ActivityRecord>();\n private readonly createActivityId: () => ActivityId;\n private readonly createSessionId: () => string;\n private closed = false;\n private closeTask: Promise<void> | undefined;\n\n constructor(\n private readonly provider: IntelligenceProvider,\n options: IntelligenceRuntimeOptions = {},\n ) {\n this.providerId = provider.id;\n this.limits = resolveIntelligenceLimits(options.limits);\n this.createActivityId =\n options.createActivityId ?? (() => activityId(nextIdentity('activity')));\n this.createSessionId = options.createSessionId ?? (() => nextIdentity('session'));\n }\n\n submit(request: ActivityRequest): Result<ActivityRef, IntelligenceError> {\n const validated = this.validateRequest(request);\n if (!validated.ok) return validated;\n const ref: ActivityRef = {\n id: this.createActivityId(),\n session: request.session ?? { providerId: this.providerId, id: this.createSessionId() },\n };\n const accepted = this.accept({ ...ref, input: request.input });\n return accepted.ok ? ok(ref) : accepted;\n }\n\n /** Accept an already identified request from a realm transport. */\n accept(submission: ActivitySubmission): Result<void, IntelligenceError> {\n const validated = this.validateRequest({\n input: submission.input,\n session: submission.session,\n });\n if (!validated.ok) return validated;\n if (this.records.has(submission.id)) {\n return err(\n providerError(this.providerId, `duplicate activity identity: ${String(submission.id)}`),\n );\n }\n if (this.runningCount >= this.limits.maxConcurrentActivities) {\n return err(\n new IntelligenceError({\n code: 'intelligence-capacity-exceeded',\n detail: { limit: this.limits.maxConcurrentActivities },\n }),\n );\n }\n const record: ActivityRecord = {\n ref: { id: submission.id, session: submission.session },\n events: [],\n sequence: 0,\n outputChars: 0,\n terminal: false,\n };\n this.records.set(submission.id, record);\n let started: Result<void, IntelligenceError>;\n try {\n started = this.provider.start(submission, this.createSink(record));\n } catch (cause) {\n this.records.delete(submission.id);\n return err(providerError(this.providerId, cause));\n }\n if (!started.ok) {\n this.records.delete(submission.id);\n return started;\n }\n return ok(undefined);\n }\n\n poll(maxEvents = this.limits.maxPollEvents): readonly ActivityEvent[] {\n if (!Number.isInteger(maxEvents) || maxEvents <= 0) return [];\n const bounded = Math.min(maxEvents, this.limits.maxPollEvents);\n const events: ActivityEvent[] = [];\n for (const [id, record] of this.records) {\n while (record.events.length > 0 && events.length < bounded) {\n const event = record.events.shift();\n if (event !== undefined) events.push(event);\n }\n if (record.terminal && record.events.length === 0) this.records.delete(id);\n if (events.length === bounded) break;\n }\n return events;\n }\n\n cancel(activity: ActivityId): Result<void, IntelligenceError> {\n if (this.closed) return err(this.closedError());\n const record = this.records.get(activity);\n if (record === undefined || record.terminal) {\n return err(\n new IntelligenceError({\n code: 'intelligence-activity-not-found',\n detail: { activityId: activity },\n }),\n );\n }\n try {\n return this.provider.cancel(activity);\n } catch (cause) {\n return err(providerError(this.providerId, cause));\n }\n }\n\n close(): Promise<void> {\n this.closeTask ??= this.performClose();\n return this.closeTask;\n }\n\n private async performClose(): Promise<void> {\n this.closed = true;\n try {\n await this.provider.close();\n } catch {\n // Disposal is terminal; provider failure must not strand the realm transport.\n }\n this.records.clear();\n }\n\n private get runningCount(): number {\n let count = 0;\n for (const record of this.records.values()) if (!record.terminal) count += 1;\n return count;\n }\n\n private validateRequest(request: ActivityRequest): Result<void, IntelligenceError> {\n if (this.closed) return err(this.closedError());\n if (request.input.length === 0 || request.input.length > this.limits.maxInputChars) {\n return err(\n new IntelligenceError({\n code: 'intelligence-invalid-request',\n detail: {\n field: 'input',\n reason:\n request.input.length === 0\n ? 'input is empty'\n : `input exceeds ${this.limits.maxInputChars} characters`,\n },\n }),\n );\n }\n if (request.session !== undefined && request.session.providerId !== this.providerId) {\n return err(\n new IntelligenceError({\n code: 'intelligence-session-provider-mismatch',\n detail: {\n expectedProviderId: this.providerId,\n receivedProviderId: request.session.providerId,\n },\n }),\n );\n }\n return ok(undefined);\n }\n\n private createSink(record: ActivityRecord): ActivitySink {\n return {\n text: (text) => {\n if (this.closed || record.terminal || text.length === 0) return;\n if (record.outputChars + text.length > this.limits.maxOutputChars) {\n this.overflow(record, 'output-chars', this.limits.maxOutputChars);\n return;\n }\n if (record.events.length >= this.limits.maxPendingEventsPerActivity - 1) {\n this.overflow(record, 'pending-events', this.limits.maxPendingEventsPerActivity);\n return;\n }\n record.outputChars += text.length;\n this.push(record, { type: 'text-delta', text });\n },\n complete: (output) => {\n if (this.closed || record.terminal) return;\n if (output.length > this.limits.maxOutputChars) {\n this.overflow(record, 'output-chars', this.limits.maxOutputChars);\n return;\n }\n record.terminal = true;\n this.push(record, { type: 'completed', session: record.ref.session, output });\n },\n fail: (cause) => {\n if (this.closed || record.terminal) return;\n record.terminal = true;\n const error = providerError(this.providerId, cause);\n this.push(record, { type: 'failed', error: intelligenceFailure(error) });\n },\n cancelled: () => {\n if (this.closed || record.terminal) return;\n record.terminal = true;\n this.push(record, { type: 'cancelled' });\n },\n };\n }\n\n private overflow(\n record: ActivityRecord,\n bound: 'output-chars' | 'pending-events',\n limit: number,\n ): void {\n if (record.terminal) return;\n record.terminal = true;\n const error = new IntelligenceError({\n code: 'intelligence-output-overflow',\n detail: { activityId: record.ref.id, bound, limit },\n });\n if (record.events.length >= this.limits.maxPendingEventsPerActivity) record.events.pop();\n this.push(record, { type: 'failed', error: intelligenceFailure(error) });\n try {\n this.provider.cancel(record.ref.id);\n } catch {\n // The overflow terminal already owns the activity outcome.\n }\n }\n\n private push(\n record: ActivityRecord,\n event:\n | { readonly type: 'text-delta'; readonly text: string }\n | {\n readonly type: 'completed';\n readonly session: ActivityRef['session'];\n readonly output: string;\n }\n | { readonly type: 'failed'; readonly error: ReturnType<typeof intelligenceFailure> }\n | { readonly type: 'cancelled' },\n ): void {\n record.sequence += 1;\n record.events.push({\n ...event,\n activityId: record.ref.id,\n sequence: record.sequence,\n } as ActivityEvent);\n }\n\n private closedError(): IntelligenceError {\n return new IntelligenceError({ code: 'intelligence-closed', detail: {} });\n }\n}\n\nexport function createIntelligenceRuntime(\n provider: IntelligenceProvider,\n options: IntelligenceRuntimeOptions = {},\n): IntelligenceRuntime {\n return new IntelligenceRuntime(provider, options);\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\nimport { IntelligenceError } from './errors';\nimport { type IntelligenceRuntime, resolveIntelligenceLimits } from './runtime';\nimport {\n type ActivityEvent,\n type ActivityId,\n type ActivityRef,\n type ActivityRequest,\n type ActivitySubmission,\n activityId,\n type IntelligenceLimits,\n type IntelligenceRuntimeOptions,\n type IntelligenceService,\n} from './types';\n\nexport type IntelligenceHostCommand =\n | { readonly kind: 'intelligence-submit'; readonly submission: ActivitySubmission }\n | { readonly kind: 'intelligence-poll'; readonly maxEvents: number }\n | { readonly kind: 'intelligence-cancel'; readonly activityId: ActivityId }\n | { readonly kind: 'intelligence-close' };\n\nexport type IntelligenceRealmMessage =\n | { readonly kind: 'intelligence-events'; readonly events: readonly ActivityEvent[] }\n | { readonly kind: 'intelligence-closed' }\n | {\n readonly kind: 'intelligence-rejected';\n readonly activityId: ActivityId;\n readonly error: import('./errors').IntelligenceFailure;\n };\n\nexport interface IntelligenceMessagePort {\n postMessage(message: IntelligenceHostCommand | IntelligenceRealmMessage): void;\n addEventListener(\n type: 'message',\n listener: (event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>) => void,\n ): void;\n removeEventListener(\n type: 'message',\n listener: (event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>) => void,\n ): void;\n start?(): void;\n close(): void;\n}\n\nexport interface IntelligencePortBinding {\n close(): Promise<void>;\n}\n\n/** Bind a Host-owned runtime to the realm side of a MessageChannel. */\nexport function bindIntelligencePort(\n port: IntelligenceMessagePort,\n runtime: IntelligenceRuntime,\n): IntelligencePortBinding {\n let closed = false;\n let closeTask: Promise<void> | undefined;\n const listener = (\n event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>,\n ): void => {\n if (closed) return;\n const message = event.data;\n if (message.kind === 'intelligence-submit') {\n const accepted = runtime.accept(message.submission);\n if (!accepted.ok) {\n const failure = importFailure(accepted.error);\n port.postMessage({\n kind: 'intelligence-rejected',\n activityId: message.submission.id,\n error: failure,\n });\n }\n return;\n }\n if (message.kind === 'intelligence-poll') {\n port.postMessage({ kind: 'intelligence-events', events: runtime.poll(message.maxEvents) });\n return;\n }\n if (message.kind === 'intelligence-cancel') {\n runtime.cancel(message.activityId);\n return;\n }\n if (message.kind === 'intelligence-close') void close();\n };\n const close = (): Promise<void> => {\n if (closeTask !== undefined) return closeTask;\n closed = true;\n port.removeEventListener('message', listener);\n closeTask = (async () => {\n await runtime.close();\n port.postMessage({ kind: 'intelligence-closed' });\n setTimeout(() => port.close(), 0);\n })();\n return closeTask;\n };\n port.addEventListener('message', listener);\n port.start?.();\n return { close };\n}\n\nfunction importFailure(error: import('./errors').IntelligenceError) {\n if (error.code === 'intelligence-provider-failed') {\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: {\n providerId: error.detail.providerId,\n cause:\n error.detail.cause instanceof Error\n ? error.detail.cause.message\n : String(error.detail.cause),\n },\n } as const;\n }\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: error.detail,\n } as import('./errors').IntelligenceFailure;\n}\n\nlet portIdentity = 0;\n\nfunction nextPortIdentity(prefix: string): string {\n const uuid = globalThis.crypto?.randomUUID?.();\n if (uuid !== undefined) return `${prefix}-${uuid}`;\n portIdentity += 1;\n return `${prefix}-${portIdentity}`;\n}\n\n/** Worker/main-realm client. Polling is request/response and never awaits a Host provider. */\nexport class IntelligencePortClient implements IntelligenceService {\n readonly limits: IntelligenceLimits;\n private readonly received: ActivityEvent[] = [];\n private readonly active = new Set<ActivityId>();\n private readonly rejected = new Map<\n ActivityId,\n IntelligenceRealmMessage & { kind: 'intelligence-rejected' }\n >();\n private readonly createActivityId: () => ActivityId;\n private readonly createSessionId: () => string;\n private readonly listener: (\n event: MessageEvent<IntelligenceHostCommand | IntelligenceRealmMessage>,\n ) => void;\n private closed = false;\n private pollPending = false;\n private closeTask: Promise<void> | undefined;\n private closeResolve: (() => void) | undefined;\n\n constructor(\n readonly providerId: string,\n private readonly port: IntelligenceMessagePort,\n options: IntelligenceRuntimeOptions = {},\n ) {\n this.limits = resolveIntelligenceLimits(options.limits);\n this.createActivityId =\n options.createActivityId ?? (() => activityId(nextPortIdentity('activity')));\n this.createSessionId = options.createSessionId ?? (() => nextPortIdentity('session'));\n this.listener = (event) => {\n const message = event.data;\n if (this.closed && message.kind !== 'intelligence-closed') return;\n if (message.kind === 'intelligence-events') {\n this.pollPending = false;\n for (const item of message.events) {\n this.received.push(item);\n if (item.type !== 'text-delta') this.active.delete(item.activityId);\n }\n } else if (message.kind === 'intelligence-rejected') {\n this.active.delete(message.activityId);\n this.rejected.set(message.activityId, message);\n } else if (message.kind === 'intelligence-closed') {\n this.markClosed();\n this.port.removeEventListener('message', this.listener);\n this.port.close();\n this.closeResolve?.();\n this.closeResolve = undefined;\n this.closeTask ??= Promise.resolve();\n }\n };\n port.addEventListener('message', this.listener);\n port.start?.();\n }\n\n private markClosed(): void {\n this.closed = true;\n this.received.length = 0;\n this.active.clear();\n this.rejected.clear();\n this.pollPending = false;\n }\n\n submit(request: ActivityRequest): Result<ActivityRef, IntelligenceError> {\n if (this.closed) return err(new IntelligenceError({ code: 'intelligence-closed', detail: {} }));\n if (request.input.length === 0 || request.input.length > this.limits.maxInputChars) {\n return err(\n new IntelligenceError({\n code: 'intelligence-invalid-request',\n detail: {\n field: 'input',\n reason:\n request.input.length === 0\n ? 'input is empty'\n : `input exceeds ${this.limits.maxInputChars} characters`,\n },\n }),\n );\n }\n if (request.session !== undefined && request.session.providerId !== this.providerId) {\n return err(\n new IntelligenceError({\n code: 'intelligence-session-provider-mismatch',\n detail: {\n expectedProviderId: this.providerId,\n receivedProviderId: request.session.providerId,\n },\n }),\n );\n }\n if (this.active.size >= this.limits.maxConcurrentActivities) {\n return err(\n new IntelligenceError({\n code: 'intelligence-capacity-exceeded',\n detail: { limit: this.limits.maxConcurrentActivities },\n }),\n );\n }\n const ref: ActivityRef = {\n id: this.createActivityId(),\n session: request.session ?? { providerId: this.providerId, id: this.createSessionId() },\n };\n this.active.add(ref.id);\n this.port.postMessage({\n kind: 'intelligence-submit',\n submission: { ...ref, input: request.input },\n });\n return ok(ref);\n }\n\n poll(maxEvents = this.limits.maxPollEvents): readonly ActivityEvent[] {\n if (this.closed || !Number.isInteger(maxEvents) || maxEvents <= 0) return [];\n const count = Math.min(maxEvents, this.limits.maxPollEvents);\n const events = this.received.splice(0, count);\n for (const [id, rejection] of this.rejected) {\n if (events.length >= count) break;\n this.rejected.delete(id);\n events.push({\n type: 'failed',\n activityId: id,\n sequence: 1,\n error: rejection.error,\n });\n }\n if (!this.pollPending) {\n this.pollPending = true;\n this.port.postMessage({ kind: 'intelligence-poll', maxEvents: count });\n }\n return events;\n }\n\n cancel(id: ActivityId): Result<void, IntelligenceError> {\n if (this.closed) return err(new IntelligenceError({ code: 'intelligence-closed', detail: {} }));\n if (!this.active.has(id)) {\n return err(\n new IntelligenceError({\n code: 'intelligence-activity-not-found',\n detail: { activityId: id },\n }),\n );\n }\n this.port.postMessage({ kind: 'intelligence-cancel', activityId: id });\n return ok(undefined);\n }\n\n close(): Promise<void> {\n if (this.closeTask !== undefined) return this.closeTask;\n if (this.closed) {\n this.closeTask = Promise.resolve();\n return this.closeTask;\n }\n this.markClosed();\n this.closeTask = new Promise((resolve) => {\n this.closeResolve = resolve;\n this.port.postMessage({ kind: 'intelligence-close' });\n });\n return this.closeTask;\n }\n}\n\nexport function createIntelligencePortClient(\n providerId: string,\n port: IntelligenceMessagePort,\n options: IntelligenceRuntimeOptions = {},\n): IntelligencePortClient {\n return new IntelligencePortClient(providerId, port, options);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAsC,MAAM,UAAU,CAAC;AACjF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EAGvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAmBjB,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,SAAS,GACjD,kBAAkB,CAapB;AAED,qBAAa,mBAAoB,YAAW,mBAAmB;IAU3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAA4B;gBAG1B,QAAQ,EAAE,oBAAoB,EAC/C,OAAO,GAAE,0BAA+B;IAS1C,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAWxE,mEAAmE;IACnE,MAAM,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAmCvE,IAAI,CAAC,SAAS,SAA4B,GAAG,SAAS,aAAa,EAAE;IAerE,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAc7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAKR,YAAY;IAM1B,OAAO,KAAK,YAAY,GAIvB;IAED,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,UAAU;IAsClB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,WAAW;CAGpB;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CAErB"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAsC,MAAM,UAAU,CAAC;AACjF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EAGvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AAmBjB,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,SAAS,GACjD,kBAAkB,CAapB;AAED,qBAAa,mBAAoB,YAAW,mBAAmB;IAU3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAA4B;gBAG1B,QAAQ,EAAE,oBAAoB,EAC/C,OAAO,GAAE,0BAA+B;IAS1C,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAWxE,mEAAmE;IACnE,MAAM,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAyCvE,IAAI,CAAC,SAAS,SAA4B,GAAG,SAAS,aAAa,EAAE;IAerE,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAkB7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAKR,YAAY;IAU1B,OAAO,KAAK,YAAY,GAIvB;IAED,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,UAAU;IAsClB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,WAAW;CAGpB;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CAErB"}
@@ -52,6 +52,7 @@ export declare class IntelligencePortClient implements IntelligenceService {
52
52
  private closeTask;
53
53
  private closeResolve;
54
54
  constructor(providerId: string, port: IntelligenceMessagePort, options?: IntelligenceRuntimeOptions);
55
+ private markClosed;
55
56
  submit(request: ActivityRequest): Result<ActivityRef, IntelligenceError>;
56
57
  poll(maxEvents?: number): readonly ActivityEvent[];
57
58
  cancel(id: ActivityId): Result<void, IntelligenceError>;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeax/engine-intelligence",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -21,8 +21,8 @@
21
21
  "README.md"
22
22
  ],
23
23
  "dependencies": {
24
- "@forgeax/engine-plugin": "0.1.6",
25
- "@forgeax/engine-types": "0.1.6"
24
+ "@forgeax/engine-plugin": "0.1.7",
25
+ "@forgeax/engine-types": "0.1.7"
26
26
  },
27
27
  "forgeax": {
28
28
  "metrics": {