@buildaureon/sdk 0.1.2 → 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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/adapters/fetch-adapter.ts","../src/constants/defaults.ts","../src/constants/endpoints.ts","../src/errors/codes.ts","../src/errors/base.ts","../src/errors/http.ts","../src/transport/url.ts","../src/transport/http.ts","../src/types/client-options.ts","../src/types/market.ts","../src/validation/market-input.ts","../src/types/objective.ts","../src/validation/objective-input.ts","../src/client/aureon-client.ts","../src/client/factory.ts","../src/auth/session.ts","../src/formatting/display.ts","../src/types/health.ts","../src/types/timeline.ts","../src/types/execution.ts","../src/adapters/logging-adapter.ts"],"names":["DEFAULT_TIMEOUT_MS"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * @fileoverview Fetch adapter helpers for browser and Node runtimes.\r\n */\r\n\r\nexport type FetchLike = typeof fetch;\r\n\r\nexport function resolveFetch(custom?: FetchLike): FetchLike {\r\n if (custom) return custom.bind(custom);\r\n if (typeof globalThis.fetch !== \"function\") {\r\n throw new Error(\"No fetch implementation available in this runtime\");\r\n }\r\n return globalThis.fetch.bind(globalThis);\r\n}\r\n\r\nexport function mergeHeaders(\r\n base: Record<string, string>,\r\n extra?: Record<string, string>\r\n): Record<string, string> {\r\n return { ...base, ...(extra ?? {}) };\r\n}\r\n\r\nexport function userAgentHeader(version: string): Record<string, string> {\r\n return { \"X-Aureon-SDK\": `@buildaureon/sdk/${version}` };\r\n}\r\n","/**\r\n * @fileoverview Default runtime values for SDK clients and examples.\r\n */\r\n\r\n/** Production AUREON API (public integrators). */\r\nexport const DEFAULT_API_BASE_URL = \"https://api.aureonlabs.network\";\r\n\r\n/** Local monorepo preview only; not for public docs. */\r\nexport const LOCAL_API_BASE_URL = \"http://127.0.0.1:8787\";\r\n\r\nexport const DEFAULT_TIMEOUT_MS = 30_000;\r\nexport const SDK_VERSION = \"0.1.2\";\r\nexport const SDK_NAME = \"@buildaureon/sdk\";\r\nexport const PRODUCT_NAME = \"AUREON\";\r\nexport const PRODUCT_TAGLINE =\r\n \"Financial Compass for Robinhood Chain\";\r\n\r\nexport const REFERENCE_SYMBOLS = [\"USDG\", \"NVDA\", \"AAPL\", \"GOOGL\", \"ETH\"] as const;\r\n\r\n/** HTTP header for product API keys. */\r\nexport const API_KEY_HEADER = \"X-Aureon-Api-Key\";\r\n","/**\r\n * @fileoverview API path constants for AureonClient methods.\r\n */\r\n\r\nexport const ENDPOINTS = {\r\n healthz: \"/healthz\",\r\n overview: \"/overview\",\r\n portfolio: \"/portfolio\",\r\n portfolioClear: \"/portfolio/clear\",\r\n portfolioSync: \"/portfolio/sync\",\r\n watchdogRefresh: \"/watchdog/refresh\",\r\n objectives: \"/objectives\",\r\n health: \"/health\",\r\n timeline: \"/timeline\",\r\n executions: \"/executions\",\r\n executionsRun: \"/executions/run\",\r\n marketEvents: \"/market/events\",\r\n marketPresets: \"/market/presets\",\r\n vault: \"/vault\",\r\n vaultStatus: \"/vault/status\",\r\n vaultPrepareDeposit: \"/vault/prepare-deposit\",\r\n vaultPrepareWithdraw: \"/vault/prepare-withdraw\",\r\n authNonce: \"/auth/nonce\",\r\n authVerify: \"/auth/verify\",\r\n authLogout: \"/auth/logout\",\r\n authDevLogin: \"/auth/dev-login\",\r\n authMe: \"/auth/me\",\r\n developerApiKeys: \"/developer/api-keys\",\r\n registryStatus: \"/registry/status\",\r\n} as const;\r\n\r\nexport function objectivePath(id: string): string {\r\n return `${ENDPOINTS.objectives}/${encodeURIComponent(id)}`;\r\n}\r\n\r\nexport function objectivePausePath(id: string): string {\r\n return `${objectivePath(id)}/pause`;\r\n}\r\n\r\nexport function objectiveResumePath(id: string): string {\r\n return `${objectivePath(id)}/resume`;\r\n}\r\n\r\nexport function objectiveRestorePlanPath(id: string): string {\r\n return `${objectivePath(id)}/restore-plan`;\r\n}\r\n\r\nexport function objectiveRestorePath(id: string): string {\r\n return `${objectivePath(id)}/restore`;\r\n}\r\n\r\nexport function developerApiKeyPath(id: string): string {\r\n return `${ENDPOINTS.developerApiKeys}/${encodeURIComponent(id)}`;\r\n}\r\n\r\nexport function registryObjectivePath(id: string): string {\r\n return `/registry/objectives/${encodeURIComponent(id)}`;\r\n}\r\n\r\nexport function registryPreparePath(id: string): string {\r\n return `${registryObjectivePath(id)}/prepare-register`;\r\n}\r\n\r\nexport function registryConfirmPath(id: string): string {\r\n return `${registryObjectivePath(id)}/confirm`;\r\n}\r\n","/**\r\n * @fileoverview Stable machine-readable error codes for @buildaureon/sdk.\r\n */\r\n\r\nexport type AureonErrorCode =\r\n | \"NETWORK_ERROR\"\r\n | \"TIMEOUT\"\r\n | \"VALIDATION_ERROR\"\r\n | \"NOT_FOUND\"\r\n | \"CONFLICT\"\r\n | \"UNAUTHORIZED\"\r\n | \"RATE_LIMITED\"\r\n | \"SERVER_ERROR\"\r\n | \"UNEXPECTED_RESPONSE\"\r\n | \"ABORTED\";\r\n\r\nexport const RETRYABLE_CODES: readonly AureonErrorCode[] = [\r\n \"NETWORK_ERROR\",\r\n \"TIMEOUT\",\r\n \"RATE_LIMITED\",\r\n \"SERVER_ERROR\",\r\n] as const;\r\n\r\nexport function isRetryableCode(code: AureonErrorCode): boolean {\r\n return (RETRYABLE_CODES as readonly string[]).includes(code);\r\n}\r\n\r\nexport function defaultMessageForStatus(status: number): string {\r\n switch (status) {\r\n case 400:\r\n return \"The request failed validation\";\r\n case 401:\r\n return \"Authentication is required\";\r\n case 403:\r\n return \"Access is forbidden for this resource\";\r\n case 404:\r\n return \"The requested resource was not found\";\r\n case 409:\r\n return \"The request conflicts with the current resource state\";\r\n case 429:\r\n return \"Rate limit exceeded\";\r\n default:\r\n if (status >= 500) return \"The server encountered an error\";\r\n return `Unexpected HTTP status ${status}`;\r\n }\r\n}\r\n","/**\r\n * @fileoverview Base and specialized error classes for the AUREON SDK.\r\n */\r\n\r\nimport { isRetryableCode, type AureonErrorCode } from \"./codes.js\";\r\n\r\nexport class AureonError extends Error {\r\n readonly code: AureonErrorCode;\r\n readonly status: number | null;\r\n readonly details: Record<string, unknown> | null;\r\n\r\n constructor(\r\n message: string,\r\n code: AureonErrorCode,\r\n status: number | null = null,\r\n details: Record<string, unknown> | null = null\r\n ) {\r\n super(message);\r\n this.name = \"AureonError\";\r\n this.code = code;\r\n this.status = status;\r\n this.details = details;\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n\r\n get retryable(): boolean {\r\n return isRetryableCode(this.code);\r\n }\r\n\r\n toJSON(): Record<string, unknown> {\r\n return {\r\n name: this.name,\r\n message: this.message,\r\n code: this.code,\r\n status: this.status,\r\n details: this.details,\r\n retryable: this.retryable,\r\n };\r\n }\r\n}\r\n\r\nexport class AureonValidationError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"VALIDATION_ERROR\", 400, details);\r\n this.name = \"AureonValidationError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonNotFoundError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"NOT_FOUND\", 404, details);\r\n this.name = \"AureonNotFoundError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonConflictError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"CONFLICT\", 409, details);\r\n this.name = \"AureonConflictError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonNetworkError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"NETWORK_ERROR\", null, details);\r\n this.name = \"AureonNetworkError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonTimeoutError extends AureonError {\r\n constructor(message = \"Request timed out\", details: Record<string, unknown> | null = null) {\r\n super(message, \"TIMEOUT\", null, details);\r\n this.name = \"AureonTimeoutError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n","/**\r\n * @fileoverview Maps HTTP responses into typed AureonError instances.\r\n */\r\n\r\nimport {\r\n AureonConflictError,\r\n AureonError,\r\n AureonNotFoundError,\r\n AureonValidationError,\r\n} from \"./base.js\";\r\nimport { defaultMessageForStatus } from \"./codes.js\";\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\r\n}\r\n\r\nfunction extractMessage(body: unknown): string | null {\r\n if (!isRecord(body)) return null;\r\n if (typeof body.message === \"string\") return body.message;\r\n if (typeof body.error === \"string\") return body.error;\r\n if (isRecord(body.error) && typeof body.error.message === \"string\") {\r\n return body.error.message;\r\n }\r\n return null;\r\n}\r\n\r\nexport function errorFromHttpStatus(status: number, body: unknown): AureonError {\r\n const message = extractMessage(body) ?? defaultMessageForStatus(status);\r\n const details = isRecord(body) ? body : { body };\r\n\r\n if (status === 400) return new AureonValidationError(message, details);\r\n if (status === 404) return new AureonNotFoundError(message, details);\r\n if (status === 409) return new AureonConflictError(message, details);\r\n if (status === 401 || status === 403) {\r\n return new AureonError(message, \"UNAUTHORIZED\", status, details);\r\n }\r\n if (status === 429) {\r\n return new AureonError(message, \"RATE_LIMITED\", status, details);\r\n }\r\n if (status >= 500) {\r\n return new AureonError(message, \"SERVER_ERROR\", status, details);\r\n }\r\n return new AureonError(message, \"UNEXPECTED_RESPONSE\", status, details);\r\n}\r\n\r\nexport function isAureonError(value: unknown): value is AureonError {\r\n return value instanceof AureonError;\r\n}\r\n","/**\r\n * @fileoverview URL helpers for the AUREON HTTP transport.\r\n */\r\n\r\nimport { AureonError } from \"../errors/base.js\";\r\n\r\nexport function joinUrl(baseUrl: string, path: string): string {\r\n const base = baseUrl.replace(/\\/+$/, \"\");\r\n const suffix = path.startsWith(\"/\") ? path : `/${path}`;\r\n return `${base}${suffix}`;\r\n}\r\n\r\nexport function assertBaseUrl(baseUrl: string): string {\r\n const trimmed = baseUrl.trim().replace(/\\/+$/, \"\");\r\n if (!/^https?:\\/\\//i.test(trimmed)) {\r\n throw new AureonError(\r\n \"baseUrl must be an absolute http(s) URL\",\r\n \"VALIDATION_ERROR\",\r\n 400,\r\n { baseUrl }\r\n );\r\n }\r\n return trimmed;\r\n}\r\n\r\nexport function withQuery(\r\n path: string,\r\n query: Record<string, string | undefined>\r\n): string {\r\n const params = new URLSearchParams();\r\n for (const [key, value] of Object.entries(query)) {\r\n if (value !== undefined && value !== \"\") params.set(key, value);\r\n }\r\n const qs = params.toString();\r\n if (!qs) return path;\r\n return path.includes(\"?\") ? `${path}&${qs}` : `${path}?${qs}`;\r\n}\r\n","/**\r\n * @fileoverview JSON HTTP transport used by AureonClient.\r\n */\r\n\r\nimport type { AureonLogger } from \"../adapters/logging-adapter.js\";\r\nimport {\r\n AureonError,\r\n AureonNetworkError,\r\n AureonTimeoutError,\r\n} from \"../errors/base.js\";\r\nimport { errorFromHttpStatus } from \"../errors/http.js\";\r\nimport { joinUrl } from \"./url.js\";\r\n\r\nexport interface TransportOptions {\r\n baseUrl: string;\r\n fetchImpl: typeof fetch;\r\n headers: Record<string, string>;\r\n timeoutMs: number;\r\n maxRetries?: number;\r\n retryDelayMs?: number;\r\n logger?: AureonLogger;\r\n getAccessToken?: () =>\r\n | string\r\n | null\r\n | undefined\r\n | Promise<string | null | undefined>;\r\n getApiKey?: () =>\r\n | string\r\n | null\r\n | undefined\r\n | Promise<string | null | undefined>;\r\n}\r\n\r\nexport interface RequestOptions {\r\n method?: string;\r\n body?: unknown;\r\n headers?: Record<string, string>;\r\n signal?: AbortSignal;\r\n}\r\n\r\nfunction safeParseJson(text: string): unknown {\r\n try {\r\n return JSON.parse(text);\r\n } catch {\r\n return { message: text };\r\n }\r\n}\r\n\r\nfunction isAbortError(error: unknown): boolean {\r\n return (\r\n (error instanceof DOMException && error.name === \"AbortError\") ||\r\n (error instanceof Error && error.name === \"AbortError\")\r\n );\r\n}\r\n\r\nfunction isRetryableError(error: unknown): boolean {\r\n if (error instanceof AureonNetworkError || error instanceof AureonTimeoutError) {\r\n return true;\r\n }\r\n if (error instanceof AureonError) {\r\n return (\r\n typeof error.status === \"number\" &&\r\n (error.status >= 500 || error.status === 429)\r\n );\r\n }\r\n return false;\r\n}\r\n\r\nfunction sleep(ms: number): Promise<void> {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n\r\nexport async function requestJson<T>(\r\n transport: TransportOptions,\r\n path: string,\r\n options: RequestOptions = {}\r\n): Promise<T> {\r\n const url = joinUrl(transport.baseUrl, path);\r\n const maxRetries = transport.maxRetries ?? 0;\r\n const retryDelayMs = transport.retryDelayMs ?? 250;\r\n let attempt = 0;\r\n\r\n while (true) {\r\n attempt += 1;\r\n const controller = new AbortController();\r\n const timeout = setTimeout(() => controller.abort(), transport.timeoutMs);\r\n const onAbort = () => controller.abort();\r\n\r\n if (options.signal) {\r\n if (options.signal.aborted) {\r\n clearTimeout(timeout);\r\n throw new AureonError(\"Request aborted\", \"ABORTED\");\r\n }\r\n options.signal.addEventListener(\"abort\", onAbort, { once: true });\r\n }\r\n\r\n try {\r\n const token = transport.getAccessToken\r\n ? await transport.getAccessToken()\r\n : null;\r\n const authHeaders: Record<string, string> = {};\r\n if (typeof token === \"string\" && token.trim().length > 0) {\r\n authHeaders.Authorization = `Bearer ${token.trim()}`;\r\n }\r\n\r\n const apiKey = transport.getApiKey\r\n ? await transport.getApiKey()\r\n : null;\r\n if (typeof apiKey === \"string\" && apiKey.trim().length > 0) {\r\n authHeaders[\"X-Aureon-Api-Key\"] = apiKey.trim();\r\n }\r\n\r\n transport.logger?.debug(\"aureon.request\", {\r\n method: options.method ?? (options.body !== undefined ? \"POST\" : \"GET\"),\r\n path,\r\n attempt,\r\n });\r\n\r\n const response = await transport.fetchImpl(url, {\r\n method: options.method ?? (options.body !== undefined ? \"POST\" : \"GET\"),\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n ...transport.headers,\r\n ...authHeaders,\r\n ...options.headers,\r\n },\r\n body:\r\n options.body !== undefined ? JSON.stringify(options.body) : undefined,\r\n signal: controller.signal,\r\n });\r\n\r\n const text = await response.text();\r\n const parsed = text.length > 0 ? safeParseJson(text) : null;\r\n\r\n if (!response.ok) {\r\n throw errorFromHttpStatus(response.status, parsed ?? { message: text });\r\n }\r\n\r\n return parsed as T;\r\n } catch (error) {\r\n if (error instanceof AureonError && !isRetryableError(error)) {\r\n throw error;\r\n }\r\n if (isAbortError(error)) {\r\n const timeoutError = new AureonTimeoutError(\r\n \"Request timed out or was aborted\",\r\n { url, timeoutMs: transport.timeoutMs }\r\n );\r\n if (attempt <= maxRetries) {\r\n transport.logger?.warn(\"aureon.retry\", {\r\n path,\r\n attempt,\r\n reason: \"timeout\",\r\n });\r\n await sleep(retryDelayMs);\r\n continue;\r\n }\r\n throw timeoutError;\r\n }\r\n if (error instanceof AureonError) {\r\n if (attempt <= maxRetries && isRetryableError(error)) {\r\n transport.logger?.warn(\"aureon.retry\", {\r\n path,\r\n attempt,\r\n code: error.code,\r\n status: error.status,\r\n });\r\n await sleep(retryDelayMs);\r\n continue;\r\n }\r\n throw error;\r\n }\r\n const networkError = new AureonNetworkError(\r\n error instanceof Error ? error.message : \"Network request failed\",\r\n { url }\r\n );\r\n if (attempt <= maxRetries) {\r\n transport.logger?.warn(\"aureon.retry\", {\r\n path,\r\n attempt,\r\n reason: \"network\",\r\n });\r\n await sleep(retryDelayMs);\r\n continue;\r\n }\r\n throw networkError;\r\n } finally {\r\n clearTimeout(timeout);\r\n if (options.signal) options.signal.removeEventListener(\"abort\", onAbort);\r\n }\r\n }\r\n}\r\n","/**\r\n * @fileoverview Client configuration types for AureonClient.\r\n */\r\n\r\nimport type { AureonLogger } from \"../adapters/logging-adapter.js\";\r\nimport { API_KEY_HEADER } from \"../constants/defaults.js\";\r\n\r\nexport interface AureonClientOptions {\r\n /**\r\n * Base URL of the AUREON API.\r\n * Defaults to `https://api.aureonlabs.network`.\r\n */\r\n baseUrl?: string;\r\n /**\r\n * Product API key sent as `X-Aureon-Api-Key` on every request.\r\n * Operator-issued keys (from the Developers console) also identify the\r\n * bound wallet for control-plane calls — no Bearer required.\r\n * Env bootstrap keys unlock product access only; they do not set identity.\r\n * The operator utility uses wallet Bearer only.\r\n */\r\n apiKey?: string | null;\r\n /**\r\n * Called before each request to resolve the product API key.\r\n * Prefer this for automations that load keys from env or a secret store.\r\n */\r\n getApiKey?: () => string | null | undefined | Promise<string | null | undefined>;\r\n /** Optional fetch implementation for non-browser runtimes. */\r\n fetch?: typeof fetch;\r\n /** Optional default headers merged into every request. */\r\n headers?: Record<string, string>;\r\n /** Request timeout in milliseconds. Defaults to 30000. */\r\n timeoutMs?: number;\r\n /**\r\n * Static Bearer session token. Prefer `getAccessToken` for apps that refresh\r\n * or clear sessions at runtime.\r\n */\r\n authToken?: string | null;\r\n /**\r\n * Called before each request to resolve the current Bearer token.\r\n * Return null/undefined to send the request without Authorization.\r\n */\r\n getAccessToken?: () => string | null | undefined | Promise<string | null | undefined>;\r\n /** Optional structured logger for request lifecycle diagnostics. */\r\n logger?: AureonLogger;\r\n /**\r\n * Extra attempts after the first failure for retryable errors\r\n * (network, timeout, 429, 5xx). Defaults to 0.\r\n */\r\n maxRetries?: number;\r\n /** Delay in ms between retries. Defaults to 250. */\r\n retryDelayMs?: number;\r\n}\r\n\r\nexport const DEFAULT_TIMEOUT_MS = 30_000;\r\n\r\nexport function resolveTimeoutMs(options: AureonClientOptions): number {\r\n const value = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\r\n if (!Number.isFinite(value) || value <= 0) {\r\n throw new Error(\"timeoutMs must be a positive finite number\");\r\n }\r\n return value;\r\n}\r\n\r\nexport function resolveHeaders(\r\n options: AureonClientOptions\r\n): Record<string, string> {\r\n const headers: Record<string, string> = { ...(options.headers ?? {}) };\r\n const key = options.apiKey?.trim();\r\n if (key) {\r\n headers[API_KEY_HEADER] = key;\r\n }\r\n return headers;\r\n}\r\n\r\nexport function resolveMaxRetries(options: AureonClientOptions): number {\r\n const value = options.maxRetries ?? 0;\r\n if (!Number.isInteger(value) || value < 0) {\r\n throw new Error(\"maxRetries must be a non-negative integer\");\r\n }\r\n return value;\r\n}\r\n\r\nexport function resolveRetryDelayMs(options: AureonClientOptions): number {\r\n const value = options.retryDelayMs ?? 250;\r\n if (!Number.isFinite(value) || value < 0) {\r\n throw new Error(\"retryDelayMs must be a non-negative finite number\");\r\n }\r\n return value;\r\n}\r\n","/**\r\n * @fileoverview Controlled market event types for operator demos and rehearsals.\r\n */\r\n\r\nexport interface MarketEvent {\r\n id: string;\r\n name: string;\r\n description: string;\r\n symbol: string;\r\n priceChangeRatio: number;\r\n appliedAt: string;\r\n}\r\n\r\nexport interface MarketPreset {\r\n name: string;\r\n description: string;\r\n symbol: string;\r\n priceChangeRatio: number;\r\n}\r\n\r\nexport interface ApplyMarketEventInput {\r\n name?: string;\r\n description?: string;\r\n symbol: string;\r\n priceChangeRatio: number;\r\n autoRestore?: boolean;\r\n}\r\n\r\nexport interface DashboardOverview {\r\n activeObjectives: number;\r\n healthyCount: number;\r\n warningCount: number;\r\n violationCount: number;\r\n pausedCount: number;\r\n totalNotionalUsd: number;\r\n stableWeight: number;\r\n /** Holdings count from the capital book. */\r\n assetCount: number;\r\n /** Absolute USD change vs prior UTC day snapshot; null when baseline only. */\r\n change24hUsd: number | null;\r\n /** Fractional change (0.05 = +5%); null when baseline only. */\r\n change24hPct: number | null;\r\n /** True when no prior-day snapshot exists yet. */\r\n change24hBaselineOnly: boolean;\r\n /** True when today's snapshot row exists. */\r\n change24hHasSnapshot: boolean;\r\n /** Average health score across non-paused objectives; null when none. */\r\n globalHealthScore: number | null;\r\n /** Persisted health samples (oldest → newest), up to ~90 days. */\r\n healthHistory: Array<{ at: string; score: number }>;\r\n /** warning + violation count. */\r\n attentionCount: number;\r\n /** Last successful live-mark watchdog evaluation (not overview poll). */\r\n lastEvaluationAt: string | null;\r\n /** lastEvaluationAt + watchdog interval when continuous monitor is configured. */\r\n nextEvaluationAt: string | null;\r\n watchdogIntervalMs: number | null;\r\n /** Last background/manual watchdog failure message, if any. */\r\n lastWatchdogError: string | null;\r\n lastSyncedAt: string | null;\r\n recentExecutions: import(\"./execution.js\").ExecutionReceipt[];\r\n recentEvents: import(\"./timeline.js\").TimelineEvent[];\r\n}\r\n\r\nexport function normalizeSymbol(symbol: string): string {\r\n return symbol.trim().toUpperCase();\r\n}\r\n\r\nexport function describeMarketMove(event: MarketEvent): string {\r\n const pct = (event.priceChangeRatio * 100).toFixed(2);\r\n return `${event.symbol} mark moved ${pct}% (${event.name})`;\r\n}\r\n","/**\r\n * @fileoverview Validation for controlled market event inputs.\r\n */\r\n\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport type { ApplyMarketEventInput } from \"../types/market.js\";\r\nimport { normalizeSymbol } from \"../types/market.js\";\r\n\r\nexport function normalizeApplyMarketEventInput(\r\n input: ApplyMarketEventInput\r\n): ApplyMarketEventInput {\r\n const symbol = normalizeSymbol(input.symbol ?? \"\");\r\n if (!symbol) throw new AureonValidationError(\"symbol is required\");\r\n if (!Number.isFinite(input.priceChangeRatio)) {\r\n throw new AureonValidationError(\"priceChangeRatio must be a finite number\");\r\n }\r\n if (input.priceChangeRatio <= -0.95) {\r\n throw new AureonValidationError(\r\n \"priceChangeRatio is too extreme for preview runtime\"\r\n );\r\n }\r\n return {\r\n ...input,\r\n symbol,\r\n autoRestore: input.autoRestore !== false,\r\n name: input.name?.trim() || undefined,\r\n description: input.description?.trim() || undefined,\r\n };\r\n}\r\n","/**\r\n * @fileoverview Objective domain types for Financial Compass Objectives.\r\n */\r\n\r\n/** Lifecycle status for a Financial Compass Objective (FCO). */\r\nexport type ObjectiveStatus =\r\n | \"draft\"\r\n | \"validated\"\r\n | \"active\"\r\n | \"paused\"\r\n | \"cancelled\"\r\n | \"completed\";\r\n\r\n/** Supported objective kinds for Phase 1 operator workflows. */\r\nexport type ObjectiveKind =\r\n | \"stable_allocation\"\r\n | \"balanced_portfolio\"\r\n | \"risk_ceiling\"\r\n | \"reward_reinvestment\";\r\n\r\n/** Priority influences evaluation ordering when multiple objectives compete. */\r\nexport type ObjectivePriority = \"low\" | \"medium\" | \"high\" | \"critical\";\r\n\r\n/**\r\n * Per-objective restore behaviour as stored on the API.\r\n *\r\n * SDK / agent integrations create objectives as **Automatic** (default).\r\n * `\"manual\"` exists so the operator utility can require an Approve click;\r\n * it is not part of the recommended SDK integration path.\r\n */\r\nexport type ObjectiveAutomationMode = \"manual\" | \"auto\";\r\n\r\n/** Policy rules attached to an objective. */\r\nexport interface ObjectivePolicy {\r\n targetWeight: number;\r\n tolerance: number;\r\n maxRiskScore?: number;\r\n reinvestRatio?: number;\r\n /** Holding symbol when the objective tracks a specific asset weight. */\r\n targetSymbol?: string;\r\n summary: string;\r\n}\r\n\r\n/** Financial Compass Objective record. */\r\nexport interface Objective {\r\n id: string;\r\n name: string;\r\n kind: ObjectiveKind;\r\n status: ObjectiveStatus;\r\n priority: ObjectivePriority;\r\n /**\r\n * Restore mode for this objective.\r\n * SDK creates always set `\"auto\"`. `\"manual\"` is operator-utility only.\r\n */\r\n automationMode: ObjectiveAutomationMode;\r\n policy: ObjectivePolicy;\r\n ownerId: string;\r\n createdAt: string;\r\n updatedAt: string;\r\n lastEvaluatedAt: string | null;\r\n lastExecutionId: string | null;\r\n verifiedOnChain?: boolean;\r\n configHash?: string;\r\n}\r\n\r\n/**\r\n * Input for creating a new objective.\r\n *\r\n * SDK create always sends `automationMode: \"auto\"` (Automatic restore).\r\n * Manual Approve is an operator-utility concern; do not rely on it in\r\n * agent / SDK loops.\r\n */\r\nexport interface CreateObjectiveInput {\r\n name: string;\r\n kind: ObjectiveKind;\r\n priority?: ObjectivePriority;\r\n targetWeight: number;\r\n tolerance: number;\r\n maxRiskScore?: number;\r\n reinvestRatio?: number;\r\n targetSymbol?: string | null;\r\n /**\r\n * @deprecated For SDK integrations omit this; create always uses Automatic.\r\n * The operator utility may still pass `\"manual\"` for Approve UX.\r\n */\r\n automationMode?: ObjectiveAutomationMode;\r\n}\r\n\r\n/** Partial update for an existing objective. */\r\nexport interface UpdateObjectiveInput {\r\n name?: string;\r\n priority?: ObjectivePriority;\r\n targetWeight?: number;\r\n tolerance?: number;\r\n maxRiskScore?: number;\r\n reinvestRatio?: number;\r\n /**\r\n * @deprecated Rejected on update; target token is fixed at create.\r\n * Recreate the objective to track a different holding.\r\n */\r\n targetSymbol?: never;\r\n /**\r\n * @deprecated Rejected on update; mode is fixed at create to avoid restore-flow issues.\r\n * Recreate the objective to switch Manual ↔ Automatic.\r\n */\r\n automationMode?: never;\r\n}\r\n\r\nexport const OBJECTIVE_KINDS: readonly ObjectiveKind[] = [\r\n \"stable_allocation\",\r\n \"balanced_portfolio\",\r\n \"risk_ceiling\",\r\n \"reward_reinvestment\",\r\n] as const;\r\n\r\nexport const OBJECTIVE_PRIORITIES: readonly ObjectivePriority[] = [\r\n \"low\",\r\n \"medium\",\r\n \"high\",\r\n \"critical\",\r\n] as const;\r\n\r\nexport function isObjectiveKind(value: string): value is ObjectiveKind {\r\n return (OBJECTIVE_KINDS as readonly string[]).includes(value);\r\n}\r\n\r\nexport function isObjectivePriority(value: string): value is ObjectivePriority {\r\n return (OBJECTIVE_PRIORITIES as readonly string[]).includes(value);\r\n}\r\n","/**\r\n * @fileoverview Validation and normalization for objective create/update payloads.\r\n */\r\n\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport type {\r\n CreateObjectiveInput,\r\n UpdateObjectiveInput,\r\n} from \"../types/objective.js\";\r\nimport { isObjectiveKind, isObjectivePriority } from \"../types/objective.js\";\r\n\r\nexport function buildPolicySummary(\r\n kind: CreateObjectiveInput[\"kind\"],\r\n targetWeight: number,\r\n tolerance: number\r\n): string {\r\n const targetPct = (targetWeight * 100).toFixed(1);\r\n const tolPct = (tolerance * 100).toFixed(1);\r\n switch (kind) {\r\n case \"stable_allocation\":\r\n return `Maintain ${targetPct}% stable allocation within ±${tolPct}%`;\r\n case \"balanced_portfolio\":\r\n return `Hold balanced weights near ${targetPct}% primary sleeve within ±${tolPct}%`;\r\n case \"risk_ceiling\":\r\n return `Keep portfolio risk at or below configured ceiling with ${tolPct}% buffer`;\r\n case \"reward_reinvestment\":\r\n return `Reinvest available rewards toward ${targetPct}% target sleeve`;\r\n default:\r\n return `Objective policy target ${targetPct}% ±${tolPct}%`;\r\n }\r\n}\r\n\r\nexport function normalizeCreateObjectiveInput(\r\n input: CreateObjectiveInput\r\n): CreateObjectiveInput {\r\n const name = input.name?.trim();\r\n if (!name || name.length < 3) {\r\n throw new AureonValidationError(\"Objective name must be at least 3 characters\");\r\n }\r\n if (!isObjectiveKind(input.kind)) {\r\n throw new AureonValidationError(`Unsupported objective kind: ${input.kind}`);\r\n }\r\n if (input.targetWeight < 0 || input.targetWeight > 1) {\r\n throw new AureonValidationError(\"targetWeight must be between 0 and 1\");\r\n }\r\n if (input.tolerance < 0 || input.tolerance > 0.5) {\r\n throw new AureonValidationError(\"tolerance must be between 0 and 0.5\");\r\n }\r\n const priority = input.priority ?? \"high\";\r\n if (!isObjectivePriority(priority)) {\r\n throw new AureonValidationError(`Unsupported priority: ${priority}`);\r\n }\r\n if (input.kind === \"balanced_portfolio\") {\r\n const symbol = input.targetSymbol?.trim().toUpperCase();\r\n if (!symbol) {\r\n throw new AureonValidationError(\r\n \"balanced_portfolio requires targetSymbol\"\r\n );\r\n }\r\n return {\r\n ...input,\r\n name,\r\n priority,\r\n targetSymbol: symbol,\r\n // SDK / agent path defaults to Automatic. Explicit \"manual\" is reserved\r\n // for the operator utility Approve UX; not recommended for integrations.\r\n automationMode: input.automationMode === \"manual\" ? \"manual\" : \"auto\",\r\n };\r\n }\r\n return {\r\n ...input,\r\n name,\r\n priority,\r\n targetSymbol: null,\r\n automationMode: input.automationMode === \"manual\" ? \"manual\" : \"auto\",\r\n };\r\n}\r\n\r\nexport function normalizeUpdateObjectiveInput(\r\n input: UpdateObjectiveInput\r\n): UpdateObjectiveInput {\r\n const next: UpdateObjectiveInput = { ...input };\r\n if (next.name !== undefined) {\r\n const name = next.name.trim();\r\n if (name.length < 3) {\r\n throw new AureonValidationError(\"Objective name must be at least 3 characters\");\r\n }\r\n next.name = name;\r\n }\r\n if (next.targetWeight !== undefined) {\r\n if (next.targetWeight < 0 || next.targetWeight > 1) {\r\n throw new AureonValidationError(\"targetWeight must be between 0 and 1\");\r\n }\r\n }\r\n if (next.tolerance !== undefined) {\r\n if (next.tolerance < 0 || next.tolerance > 0.5) {\r\n throw new AureonValidationError(\"tolerance must be between 0 and 0.5\");\r\n }\r\n }\r\n if (next.priority !== undefined && !isObjectivePriority(next.priority)) {\r\n throw new AureonValidationError(`Unsupported priority: ${next.priority}`);\r\n }\r\n if (next.automationMode !== undefined) {\r\n throw new AureonValidationError(\r\n \"automationMode cannot be changed after create: recreate the objective instead\"\r\n );\r\n }\r\n if ((input as { targetSymbol?: unknown }).targetSymbol !== undefined) {\r\n throw new AureonValidationError(\r\n \"targetSymbol cannot be changed after create: recreate the objective instead\"\r\n );\r\n }\r\n return next;\r\n}\r\n\r\nexport function assertId(value: string, label: string): void {\r\n if (!value || typeof value !== \"string\" || value.trim().length < 8) {\r\n throw new AureonValidationError(`Invalid ${label}`);\r\n }\r\n}\r\n","/**\r\n * @fileoverview AureonClient: primary entry point for @buildaureon/sdk.\r\n *\r\n * Typed HTTP client for the hosted AUREON API. Operator-issued API keys\r\n * (`X-Aureon-Api-Key`) identify the bound wallet for control-plane calls;\r\n * optional wallet Bearer sessions also work (Bearer wins when both are sent).\r\n * Env bootstrap keys unlock product access only.\r\n *\r\n * Objectives default to Automatic automation mode. Vault deposit and withdraw\r\n * are prepare-calldata steps for wallet signing; not server-side broadcasts.\r\n * Restorative execution receipts may use `settlement: \"vault\"` or\r\n * `settlement: \"staged\"` depending on the restore path.\r\n */\r\n\r\nimport { resolveFetch, userAgentHeader } from \"../adapters/fetch-adapter.js\";\r\nimport {\r\n DEFAULT_API_BASE_URL,\r\n SDK_VERSION,\r\n} from \"../constants/defaults.js\";\r\nimport {\r\n ENDPOINTS,\r\n developerApiKeyPath,\r\n objectivePath,\r\n objectivePausePath,\r\n objectiveResumePath,\r\n objectiveRestorePath,\r\n objectiveRestorePlanPath,\r\n registryObjectivePath,\r\n registryPreparePath,\r\n registryConfirmPath,\r\n} from \"../constants/endpoints.js\";\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport {\r\n assertBaseUrl,\r\n requestJson,\r\n withQuery,\r\n type TransportOptions,\r\n} from \"../transport/index.js\";\r\nimport type { AureonClientOptions } from \"../types/client-options.js\";\r\nimport {\r\n resolveHeaders,\r\n resolveMaxRetries,\r\n resolveRetryDelayMs,\r\n resolveTimeoutMs,\r\n} from \"../types/client-options.js\";\r\nimport type { ExecutionReceipt, RestorePlan } from \"../types/execution.js\";\r\nimport type {\r\n ObjectiveRegistryLookup,\r\n ObjectiveRegistryRecord,\r\n PrepareRegistryResult,\r\n RegistryStatus,\r\n} from \"../types/registry.js\";\r\nimport type { ObjectiveHealth } from \"../types/health.js\";\r\nimport type {\r\n ApplyMarketEventInput,\r\n DashboardOverview,\r\n MarketEvent,\r\n MarketPreset,\r\n} from \"../types/market.js\";\r\nimport type {\r\n CreateObjectiveInput,\r\n Objective,\r\n UpdateObjectiveInput,\r\n} from \"../types/objective.js\";\r\nimport type { PortfolioPositionInput, PortfolioSnapshot } from \"../types/portfolio.js\";\r\nimport type {\r\n VaultDepositSymbol,\r\n VaultOverview,\r\n VaultPrepareResult,\r\n VaultStatus,\r\n} from \"../types/vault.js\";\r\nimport type { WatchdogRefreshResult } from \"../types/watchdog.js\";\r\nimport type { TimelineEvent } from \"../types/timeline.js\";\r\nimport { normalizeApplyMarketEventInput } from \"../validation/market-input.js\";\r\nimport {\r\n assertId,\r\n normalizeCreateObjectiveInput,\r\n normalizeUpdateObjectiveInput,\r\n} from \"../validation/objective-input.js\";\r\n\r\nexport interface AuthNonceResponse {\r\n walletAddress: string;\r\n nonce: string;\r\n message: string;\r\n expiresAt: string;\r\n}\r\n\r\nexport interface AuthSessionResponse {\r\n token: string;\r\n walletAddress: string;\r\n expiresAt: string;\r\n sessionId: string;\r\n mode?: string;\r\n}\r\n\r\nexport interface AuthMeResponse {\r\n walletAddress: string;\r\n}\r\n\r\nexport interface SyncPortfolioResult {\r\n portfolio: PortfolioSnapshot;\r\n chainId: number;\r\n skippedZero: string[];\r\n}\r\n\r\nexport interface DeveloperApiKey {\r\n id: string;\r\n name: string;\r\n prefix: string;\r\n status: string;\r\n createdAt: string;\r\n revokedAt: string | null;\r\n}\r\n\r\nexport interface CreatedDeveloperApiKey extends DeveloperApiKey {\r\n /** Plaintext secret; only returned once at creation. */\r\n secret: string;\r\n}\r\n\r\n/**\r\n * High-level SDK client for AUREON operator and developer integrations.\r\n */\r\nexport class AureonClient {\r\n private readonly transport: TransportOptions;\r\n\r\n constructor(options: AureonClientOptions = {}) {\r\n const baseUrl = options.baseUrl ?? DEFAULT_API_BASE_URL;\r\n\r\n const staticToken = options.authToken;\r\n const getAccessToken =\r\n options.getAccessToken ??\r\n (staticToken\r\n ? () => staticToken\r\n : undefined);\r\n\r\n const staticApiKey = options.apiKey;\r\n const getApiKey =\r\n options.getApiKey ??\r\n (staticApiKey\r\n ? () => staticApiKey\r\n : undefined);\r\n\r\n this.transport = {\r\n baseUrl: assertBaseUrl(baseUrl),\r\n fetchImpl: resolveFetch(options.fetch),\r\n headers: {\r\n ...userAgentHeader(SDK_VERSION),\r\n ...resolveHeaders({ ...options, apiKey: undefined }),\r\n },\r\n timeoutMs: resolveTimeoutMs(options),\r\n maxRetries: resolveMaxRetries(options),\r\n retryDelayMs: resolveRetryDelayMs(options),\r\n logger: options.logger,\r\n getAccessToken,\r\n getApiKey,\r\n };\r\n }\r\n\r\n /** Returns the resolved API base URL. */\r\n get baseUrl(): string {\r\n return this.transport.baseUrl;\r\n }\r\n\r\n /** Health probe for connectivity checks. No auth required. */\r\n async ping(): Promise<{ ok: true; service: string; version: string }> {\r\n return requestJson(this.transport, ENDPOINTS.healthz);\r\n }\r\n\r\n /**\r\n * Requests a single-use wallet auth nonce/message for the given address.\r\n * No Bearer token required.\r\n */\r\n async getAuthNonce(address: string): Promise<AuthNonceResponse> {\r\n const trimmed = address?.trim();\r\n if (!trimmed) {\r\n throw new AureonValidationError(\"address is required\");\r\n }\r\n return requestJson(\r\n this.transport,\r\n withQuery(ENDPOINTS.authNonce, { address: trimmed })\r\n );\r\n }\r\n\r\n /**\r\n * Verifies a wallet signature and returns a Bearer session.\r\n * No Bearer token required on the request itself.\r\n */\r\n async verifyWallet(input: {\r\n address: string;\r\n message: string;\r\n signature: string;\r\n inviteCode?: string;\r\n }): Promise<AuthSessionResponse> {\r\n const address = input.address?.trim();\r\n const message = input.message?.trim();\r\n const signature = input.signature?.trim();\r\n const inviteCode = input.inviteCode?.trim();\r\n if (!address || !message || !signature) {\r\n throw new AureonValidationError(\r\n \"address, message, and signature are required\"\r\n );\r\n }\r\n return requestJson(this.transport, ENDPOINTS.authVerify, {\r\n method: \"POST\",\r\n body: { address, message, signature, inviteCode },\r\n });\r\n }\r\n\r\n /**\r\n * Local preview login without a wallet signature.\r\n * Only succeeds when the backend has `AUREON_ALLOW_DEV_LOGIN=1`.\r\n */\r\n async devLogin(): Promise<AuthSessionResponse> {\r\n return requestJson(this.transport, ENDPOINTS.authDevLogin, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Revokes the current Bearer session on the server. */\r\n async logout(): Promise<{ ok: true }> {\r\n return requestJson(this.transport, ENDPOINTS.authLogout, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Returns the wallet bound to the current Bearer session. Auth required. */\r\n async me(): Promise<AuthMeResponse> {\r\n return requestJson(this.transport, ENDPOINTS.authMe);\r\n }\r\n\r\n /**\r\n * Creates and activates a Financial Compass Objective (FCO).\r\n * SDK / agent path always prefers Automatic (`automationMode` omitted → `\"auto\"`).\r\n * Mode cannot be changed later via `updateObjective`; recreate instead.\r\n * Passing `\"manual\"` is reserved for the operator utility Approve UX.\r\n * Auth required.\r\n */\r\n async createObjective(input: CreateObjectiveInput): Promise<Objective> {\r\n const body = normalizeCreateObjectiveInput(input);\r\n return requestJson(this.transport, ENDPOINTS.objectives, {\r\n method: \"POST\",\r\n body,\r\n });\r\n }\r\n\r\n /** Lists objectives for the authenticated wallet. Auth required. */\r\n async listObjectives(): Promise<Objective[]> {\r\n const result = await requestJson<{ objectives: Objective[] }>(\r\n this.transport,\r\n ENDPOINTS.objectives\r\n );\r\n return result.objectives;\r\n }\r\n\r\n /** Fetches a single objective by id. Auth required. */\r\n async getObjective(id: string): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n return requestJson(this.transport, objectivePath(id));\r\n }\r\n\r\n /**\r\n * Applies a partial update to an objective policy or metadata.\r\n * Does **not** accept `automationMode` or `targetSymbol` (both locked at create).\r\n * Auth required.\r\n */\r\n async updateObjective(\r\n id: string,\r\n input: UpdateObjectiveInput\r\n ): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n const body = normalizeUpdateObjectiveInput(input);\r\n return requestJson(this.transport, objectivePath(id), {\r\n method: \"PATCH\",\r\n body,\r\n });\r\n }\r\n\r\n /** Pauses continuous evaluation for an objective. Auth required. */\r\n async pauseObjective(id: string): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n return requestJson(this.transport, objectivePausePath(id), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Resumes evaluation for a paused objective. Auth required. */\r\n async resumeObjective(id: string): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n return requestJson(this.transport, objectiveResumePath(id), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Returns health for one objective or all objectives when id is omitted. Auth required. */\r\n async getHealth(objectiveId?: string): Promise<ObjectiveHealth[]> {\r\n const path = withQuery(ENDPOINTS.health, { objectiveId });\r\n const result = await requestJson<{ health: ObjectiveHealth[] }>(\r\n this.transport,\r\n path\r\n );\r\n return result.health;\r\n }\r\n\r\n /** Returns timeline events, optionally filtered by objective. Auth required. */\r\n async getTimeline(objectiveId?: string): Promise<TimelineEvent[]> {\r\n const path = withQuery(ENDPOINTS.timeline, { objectiveId });\r\n const result = await requestJson<{ events: TimelineEvent[] }>(\r\n this.transport,\r\n path\r\n );\r\n return result.events;\r\n }\r\n\r\n /** Returns the current portfolio snapshot for the wallet. Auth required. */\r\n async getPortfolio(): Promise<PortfolioSnapshot> {\r\n return requestJson(this.transport, ENDPOINTS.portfolio);\r\n }\r\n\r\n /**\r\n * Replaces the wallet capital book with the provided positions.\r\n * Auth required. Does not invent holdings: every row must be supplied.\r\n */\r\n async setPortfolio(\r\n positions: PortfolioPositionInput[]\r\n ): Promise<PortfolioSnapshot> {\r\n if (!Array.isArray(positions) || positions.length === 0) {\r\n throw new AureonValidationError(\"positions must be a non-empty array\");\r\n }\r\n const result = await requestJson<{ portfolio: PortfolioSnapshot }>(\r\n this.transport,\r\n ENDPOINTS.portfolio,\r\n { method: \"PUT\", body: { positions } }\r\n );\r\n return result.portfolio;\r\n }\r\n\r\n /**\r\n * Clears all capital-book positions for the authenticated wallet.\r\n * Auth required. Does not invent seeded holdings.\r\n */\r\n async clearPortfolio(): Promise<PortfolioSnapshot> {\r\n const result = await requestJson<{ portfolio: PortfolioSnapshot }>(\r\n this.transport,\r\n ENDPOINTS.portfolioClear,\r\n { method: \"POST\" }\r\n );\r\n return result.portfolio;\r\n }\r\n\r\n /**\r\n * Replaces the capital book with on-chain balances for the session wallet\r\n * (Robinhood Chain via the AUREON API). Vault balances merge into the book.\r\n * Requires a wallet Bearer session; SDK clients should also send an API key\r\n * when keys are enforced. Does not invent holdings; only positive balances\r\n * returned by the API.\r\n */\r\n async syncPortfolio(): Promise<SyncPortfolioResult> {\r\n return requestJson(this.transport, ENDPOINTS.portfolioSync, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /**\r\n * Refreshes portfolio marks from live public market data, re-evaluates\r\n * objectives, optionally fires breach webhooks, and returns restore suggestions.\r\n * Auth required.\r\n */\r\n async refreshWatchdog(): Promise<WatchdogRefreshResult> {\r\n return requestJson(this.transport, ENDPOINTS.watchdogRefresh, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Returns dashboard overview aggregates. Auth required. */\r\n async getOverview(): Promise<DashboardOverview> {\r\n return requestJson(this.transport, ENDPOINTS.overview);\r\n }\r\n\r\n /**\r\n * Applies a controlled market event to portfolio marks.\r\n * When autoRestore is true, the API evaluates health and may run staged restorative execution.\r\n * Auth required.\r\n */\r\n async applyMarketEvent(input: ApplyMarketEventInput): Promise<{\r\n event: MarketEvent;\r\n portfolio: PortfolioSnapshot;\r\n health: ObjectiveHealth[];\r\n executions: ExecutionReceipt[];\r\n }> {\r\n const body = normalizeApplyMarketEventInput(input);\r\n return requestJson(this.transport, ENDPOINTS.marketEvents, {\r\n method: \"POST\",\r\n body,\r\n });\r\n }\r\n\r\n /** Lists controlled market event presets. Auth required. */\r\n async listMarketPresets(): Promise<MarketPreset[]> {\r\n const result = await requestJson<{ presets: MarketPreset[] }>(\r\n this.transport,\r\n ENDPOINTS.marketPresets\r\n );\r\n return result.presets;\r\n }\r\n\r\n /**\r\n * Returns the restore plan for an objective (wrap ETH, unwrap WETH, or vault swap).\r\n * Auth required.\r\n */\r\n async getRestorePlan(objectiveId: string): Promise<RestorePlan> {\r\n assertId(objectiveId, \"objective id\");\r\n const result = await requestJson<{ plan: RestorePlan }>(\r\n this.transport,\r\n objectiveRestorePlanPath(objectiveId)\r\n );\r\n return result.plan;\r\n }\r\n\r\n /**\r\n * Runs restorative execution for an objective currently outside policy.\r\n * Vault Sell A→Buy B when configured. ETH↔WETH wrap/unwrap is client-side\r\n * via getRestorePlan; this endpoint rejects those with action details.\r\n * Auth required.\r\n */\r\n async runExecution(objectiveId: string): Promise<ExecutionReceipt> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, ENDPOINTS.executionsRun, {\r\n method: \"POST\",\r\n body: { objectiveId },\r\n });\r\n }\r\n\r\n /**\r\n * Runs vault-backed restorative execution for an objective outside policy.\r\n * Auth required.\r\n */\r\n async restoreObjective(objectiveId: string): Promise<ExecutionReceipt> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, objectiveRestorePath(objectiveId), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Lists recent execution receipts. Auth required. */\r\n async listExecutions(objectiveId?: string): Promise<ExecutionReceipt[]> {\r\n const path = withQuery(ENDPOINTS.executions, { objectiveId });\r\n const result = await requestJson<{ executions: ExecutionReceipt[] }>(\r\n this.transport,\r\n path\r\n );\r\n return result.executions;\r\n }\r\n\r\n /** Returns Phase 2 ObjectiveRegistry deployment status. Auth required. */\r\n async getRegistryStatus(): Promise<RegistryStatus> {\r\n return requestJson(this.transport, ENDPOINTS.registryStatus);\r\n }\r\n\r\n /** Returns on-chain registry record for an objective when registered. Auth required. */\r\n async getObjectiveRegistry(objectiveId: string): Promise<ObjectiveRegistryLookup> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, registryObjectivePath(objectiveId));\r\n }\r\n\r\n /**\r\n * Prepares wallet-signed calldata to register an objective on ObjectiveRegistry.\r\n * Auth required.\r\n */\r\n async prepareObjectiveRegistry(objectiveId: string): Promise<PrepareRegistryResult> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, registryPreparePath(objectiveId), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /**\r\n * Confirms an on-chain registration after the wallet broadcast tx.\r\n * Auth required.\r\n */\r\n async confirmObjectiveRegistry(\r\n objectiveId: string,\r\n transactionHash: string\r\n ): Promise<{ record: ObjectiveRegistryRecord }> {\r\n assertId(objectiveId, \"objective id\");\r\n const hash = transactionHash.trim();\r\n if (!hash) {\r\n throw new AureonValidationError(\"transactionHash is required\");\r\n }\r\n return requestJson(this.transport, registryConfirmPath(objectiveId), {\r\n method: \"POST\",\r\n body: { transactionHash: hash },\r\n });\r\n }\r\n\r\n /** Returns the vault overview for the authenticated wallet. Auth required. */\r\n async getVault(): Promise<VaultOverview> {\r\n return requestJson(this.transport, ENDPOINTS.vault);\r\n }\r\n\r\n /** Returns compact vault funding status before restore. Auth required. */\r\n async getVaultStatus(): Promise<VaultStatus> {\r\n return requestJson(this.transport, ENDPOINTS.vaultStatus);\r\n }\r\n\r\n /**\r\n * Prepares wallet-signed calldata steps for a vault deposit.\r\n * Auth required.\r\n */\r\n async prepareVaultDeposit(input: {\r\n symbol: VaultDepositSymbol;\r\n amount: string;\r\n }): Promise<VaultPrepareResult> {\r\n const symbol = input.symbol?.trim();\r\n const amount = input.amount?.trim();\r\n if (!symbol) {\r\n throw new AureonValidationError(\r\n \"symbol is required (ETH or an allowlisted ERC-20)\"\r\n );\r\n }\r\n if (!amount) {\r\n throw new AureonValidationError(\"amount is required\");\r\n }\r\n return requestJson(this.transport, ENDPOINTS.vaultPrepareDeposit, {\r\n method: \"POST\",\r\n body: { symbol: symbol.toUpperCase(), amount },\r\n });\r\n }\r\n\r\n /**\r\n * Prepares wallet-signed calldata steps for a vault withdraw (any allowlisted ERC-20).\r\n * Auth required.\r\n */\r\n async prepareVaultWithdraw(input: {\r\n symbol?: string;\r\n amount: string;\r\n }): Promise<VaultPrepareResult> {\r\n const symbol = (input.symbol?.trim() || \"WETH\").toUpperCase();\r\n const amount = input.amount?.trim();\r\n if (!amount) {\r\n throw new AureonValidationError(\"amount is required\");\r\n }\r\n if (symbol === \"ETH\") {\r\n throw new AureonValidationError(\r\n 'withdraw symbol cannot be \"ETH\", use WETH'\r\n );\r\n }\r\n return requestJson(this.transport, ENDPOINTS.vaultPrepareWithdraw, {\r\n method: \"POST\",\r\n body: { symbol, amount },\r\n });\r\n }\r\n\r\n /**\r\n * Lists SDK API keys for the authenticated wallet.\r\n * Used by the operator utility Developer page.\r\n */\r\n async listApiKeys(): Promise<DeveloperApiKey[]> {\r\n const result = await requestJson<{ keys: DeveloperApiKey[] }>(\r\n this.transport,\r\n ENDPOINTS.developerApiKeys\r\n );\r\n return result.keys;\r\n }\r\n\r\n /**\r\n * Creates an SDK API key. `secret` is returned once; store it immediately.\r\n */\r\n async createApiKey(name: string): Promise<CreatedDeveloperApiKey> {\r\n const trimmed = name.trim();\r\n if (trimmed.length < 2) {\r\n throw new AureonValidationError(\"name must be at least 2 characters\");\r\n }\r\n return requestJson(this.transport, ENDPOINTS.developerApiKeys, {\r\n method: \"POST\",\r\n body: { name: trimmed },\r\n });\r\n }\r\n\r\n /** Revokes (deletes) an SDK API key owned by this wallet. */\r\n async revokeApiKey(keyId: string): Promise<DeveloperApiKey> {\r\n assertId(keyId, \"api key id\");\r\n return requestJson(this.transport, developerApiKeyPath(keyId), {\r\n method: \"DELETE\",\r\n });\r\n }\r\n\r\n /** Toggles the status (active/paused) of an SDK API key owned by this wallet. */\r\n async toggleApiKey(keyId: string): Promise<DeveloperApiKey> {\r\n assertId(keyId, \"api key id\");\r\n return requestJson(this.transport, `${developerApiKeyPath(keyId)}/toggle`, {\r\n method: \"POST\",\r\n });\r\n }\r\n}\r\n","/**\r\n * @fileoverview Factory helpers for constructing AureonClient instances.\r\n */\r\n\r\nimport {\r\n DEFAULT_API_BASE_URL,\r\n LOCAL_API_BASE_URL,\r\n} from \"../constants/defaults.js\";\r\nimport type { AureonClientOptions } from \"../types/client-options.js\";\r\nimport { AureonClient } from \"./aureon-client.js\";\r\n\r\n/**\r\n * Factory helper preferred by examples and quickstarts.\r\n * Defaults to the production AUREON API URL when `baseUrl` is omitted.\r\n */\r\nexport function createAureonClient(\r\n options: AureonClientOptions = {}\r\n): AureonClient {\r\n return new AureonClient({\r\n baseUrl: options.baseUrl ?? DEFAULT_API_BASE_URL,\r\n ...options,\r\n });\r\n}\r\n\r\n/**\r\n * Creates a client pointed at a local AUREON API process (monorepo operators).\r\n * Not advertised in the public README.\r\n */\r\nexport function createLocalAureonClient(\r\n overrides: Partial<AureonClientOptions> = {}\r\n): AureonClient {\r\n return new AureonClient({\r\n ...overrides,\r\n baseUrl: overrides.baseUrl ?? LOCAL_API_BASE_URL,\r\n });\r\n}\r\n","/**\r\n * @fileoverview Mutable bearer token holder for scripts and apps.\r\n */\r\n\r\n/** Mutable bearer token holder for scripts and apps. */\r\nexport function createSessionTokenProvider(initialToken?: string | null) {\r\n let token = initialToken ?? null;\r\n return {\r\n getAccessToken: () => token,\r\n setToken: (next: string | null) => {\r\n token = next;\r\n },\r\n clear: () => {\r\n token = null;\r\n },\r\n };\r\n}\r\n\r\nexport type SessionTokenProvider = ReturnType<typeof createSessionTokenProvider>;\r\n","/**\r\n * @fileoverview Display helpers shared by utility apps and CLI output.\r\n */\r\n\r\nimport type { HealthState } from \"../types/health.js\";\r\n\r\nexport function formatUsd(value: number): string {\r\n return new Intl.NumberFormat(\"en-US\", {\r\n style: \"currency\",\r\n currency: \"USD\",\r\n maximumFractionDigits: 2,\r\n }).format(value);\r\n}\r\n\r\nexport function formatWeight(weight: number): string {\r\n return `${(weight * 100).toFixed(1)}%`;\r\n}\r\n\r\nexport function healthTone(\r\n state: HealthState\r\n): \"positive\" | \"caution\" | \"critical\" | \"neutral\" {\r\n switch (state) {\r\n case \"healthy\":\r\n return \"positive\";\r\n case \"warning\":\r\n return \"caution\";\r\n case \"violation\":\r\n return \"critical\";\r\n case \"paused\":\r\n return \"neutral\";\r\n default:\r\n return \"neutral\";\r\n }\r\n}\r\n\r\nexport function formatSignedPercent(ratio: number): string {\r\n const pct = ratio * 100;\r\n const sign = pct > 0 ? \"+\" : \"\";\r\n return `${sign}${pct.toFixed(1)}%`;\r\n}\r\n\r\nexport function formatIsoTime(iso: string): string {\r\n try {\r\n return new Intl.DateTimeFormat(\"en-US\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n }).format(new Date(iso));\r\n } catch {\r\n return iso;\r\n }\r\n}\r\n","/**\r\n * @fileoverview Health Engine result types.\r\n */\r\n\r\nexport type HealthState = \"healthy\" | \"warning\" | \"violation\" | \"paused\";\r\n\r\nexport interface ObjectiveHealth {\r\n objectiveId: string;\r\n state: HealthState;\r\n score: number;\r\n currentMetric: number;\r\n targetMetric: number;\r\n deviation: number;\r\n message: string;\r\n evaluatedAt: string;\r\n}\r\n\r\nexport function isHealthState(value: string): value is HealthState {\r\n return [\"healthy\", \"warning\", \"violation\", \"paused\"].includes(value);\r\n}\r\n\r\nexport function healthRank(state: HealthState): number {\r\n switch (state) {\r\n case \"healthy\":\r\n return 0;\r\n case \"warning\":\r\n return 1;\r\n case \"paused\":\r\n return 2;\r\n case \"violation\":\r\n return 3;\r\n default:\r\n return 99;\r\n }\r\n}\r\n\r\nexport function pickWorstHealth(records: ObjectiveHealth[]): ObjectiveHealth | null {\r\n if (records.length === 0) return null;\r\n return [...records].sort((a, b) => healthRank(b.state) - healthRank(a.state))[0] ?? null;\r\n}\r\n","/**\r\n * @fileoverview Timeline event contracts for append-only operator narratives.\r\n */\r\n\r\nexport type TimelineEventType =\r\n | \"objective_created\"\r\n | \"objective_updated\"\r\n | \"objective_paused\"\r\n | \"objective_resumed\"\r\n | \"health_changed\"\r\n | \"violation_detected\"\r\n | \"evaluation_started\"\r\n | \"execution_started\"\r\n | \"execution_completed\"\r\n | \"market_event_applied\"\r\n | \"objective_restored\"\r\n | \"capital_provisioned\"\r\n | \"capital_cleared\"\r\n | \"capital_synced\"\r\n | \"registry_anchored\";\r\n\r\nexport interface TimelineEvent {\r\n id: string;\r\n objectiveId: string | null;\r\n type: TimelineEventType;\r\n message: string;\r\n payload: Record<string, unknown>;\r\n createdAt: string;\r\n}\r\n\r\nexport const TIMELINE_EVENT_TYPES: readonly TimelineEventType[] = [\r\n \"objective_created\",\r\n \"objective_updated\",\r\n \"objective_paused\",\r\n \"objective_resumed\",\r\n \"health_changed\",\r\n \"violation_detected\",\r\n \"evaluation_started\",\r\n \"execution_started\",\r\n \"execution_completed\",\r\n \"market_event_applied\",\r\n \"objective_restored\",\r\n \"capital_provisioned\",\r\n \"capital_cleared\",\r\n \"capital_synced\",\r\n \"registry_anchored\",\r\n] as const;\r\n\r\nexport function isTimelineEventType(value: string): value is TimelineEventType {\r\n return (TIMELINE_EVENT_TYPES as readonly string[]).includes(value);\r\n}\r\n\r\nexport function filterTimelineByObjective(\r\n events: TimelineEvent[],\r\n objectiveId: string\r\n): TimelineEvent[] {\r\n return events.filter((event) => event.objectiveId === objectiveId);\r\n}\r\n","/**\r\n * @fileoverview Execution receipt + restore-plan types.\r\n *\r\n * Receipts may settle as vault on-chain rebalance (`settlement: \"vault\"`) or\r\n * as a staged capital-book update (`settlement: \"staged\"`) when the vault\r\n * path is unavailable. Wrap/unwrap ETH↔WETH is client-side via RestorePlan.\r\n */\r\n\r\nimport type { RegistryRef } from \"./registry.js\";\r\n\r\nexport interface ExecutionReceipt {\r\n id: string;\r\n objectiveId: string;\r\n status: \"pending\" | \"submitted\" | \"confirmed\" | \"failed\";\r\n transactionHash: string;\r\n action: string;\r\n notionalAdjustedUsd: number;\r\n result: string;\r\n createdAt: string;\r\n confirmedAt: string | null;\r\n /**\r\n * `\"vault\"`: keeper rebalance confirmed (or pending_vault_* then confirmed).\r\n * `\"staged\"`: capital-book restore only (honest non-finality label).\r\n */\r\n settlement?: \"staged\" | \"vault\";\r\n registryRef?: RegistryRef;\r\n}\r\n\r\n/** Client-side restore action: wrap/unwrap ETH↔WETH or keeper vault swap. */\r\nexport type RestorePlanKind = \"wrap_eth\" | \"unwrap_weth\" | \"vault_swap\";\r\n\r\nexport interface RestorePlan {\r\n kind: RestorePlanKind;\r\n amountHuman: string;\r\n approxUsd: number;\r\n message: string;\r\n sellSymbol?: string;\r\n buySymbol?: string;\r\n}\r\n\r\nexport function isConfirmedExecution(receipt: ExecutionReceipt): boolean {\r\n return receipt.status === \"confirmed\" && Boolean(receipt.confirmedAt);\r\n}\r\n\r\nexport function shortTransactionHash(hash: string, head = 10, tail = 6): string {\r\n if (hash.length <= head + tail + 1) return hash;\r\n return `${hash.slice(0, head)}…${hash.slice(-tail)}`;\r\n}\r\n\r\nexport function sortExecutionsNewestFirst(\r\n receipts: ExecutionReceipt[]\r\n): ExecutionReceipt[] {\r\n return [...receipts].sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1));\r\n}\r\n\r\n/** True when the receipt claims vault (on-chain) settlement. */\r\nexport function isVaultSettlement(receipt: ExecutionReceipt): boolean {\r\n return receipt.settlement === \"vault\";\r\n}\r\n","/**\r\n * @fileoverview Optional structured logging hooks for SDK integrators.\r\n */\r\n\r\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\r\n\r\nexport interface AureonLogger {\r\n debug(message: string, context?: Record<string, unknown>): void;\r\n info(message: string, context?: Record<string, unknown>): void;\r\n warn(message: string, context?: Record<string, unknown>): void;\r\n error(message: string, context?: Record<string, unknown>): void;\r\n}\r\n\r\nexport const silentLogger: AureonLogger = {\r\n debug() {},\r\n info() {},\r\n warn() {},\r\n error() {},\r\n};\r\n\r\nexport function createConsoleLogger(prefix = \"aureon-sdk\"): AureonLogger {\r\n const write = (level: LogLevel, message: string, context?: Record<string, unknown>) => {\r\n const line = `[${prefix}] ${message}`;\r\n if (level === \"error\") console.error(line, context ?? \"\");\r\n else if (level === \"warn\") console.warn(line, context ?? \"\");\r\n else console.log(line, context ?? \"\");\r\n };\r\n return {\r\n debug: (m, c) => write(\"debug\", m, c),\r\n info: (m, c) => write(\"info\", m, c),\r\n warn: (m, c) => write(\"warn\", m, c),\r\n error: (m, c) => write(\"error\", m, c),\r\n };\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/adapters/fetch-adapter.ts","../src/constants/defaults.ts","../src/constants/endpoints.ts","../src/errors/codes.ts","../src/errors/base.ts","../src/formatting/allocation.ts","../src/types/objective.ts","../src/validation/objective-input.ts","../src/formatting/drift-restore.ts","../src/types/execution.ts","../src/validation/receipt-validator.ts","../src/formatting/receipt-verification.ts","../src/formatting/portfolio-watch.ts","../src/formatting/full-aureon-loop.ts","../src/formatting/audit-trail.ts","../src/formatting/intent.ts","../src/errors/http.ts","../src/transport/url.ts","../src/transport/http.ts","../src/types/client-options.ts","../src/types/market.ts","../src/validation/market-input.ts","../src/client/aureon-client.ts","../src/client/factory.ts","../src/auth/session.ts","../src/formatting/display.ts","../src/types/health.ts","../src/types/timeline.ts","../src/types/settlement.ts","../src/adapters/logging-adapter.ts"],"names":["isOffPlan","isRecord","DEFAULT_TIMEOUT_MS"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * @fileoverview Fetch adapter helpers for browser and Node runtimes.\r\n */\r\n\r\nexport type FetchLike = typeof fetch;\r\n\r\nexport function resolveFetch(custom?: FetchLike): FetchLike {\r\n if (custom) return custom.bind(custom);\r\n if (typeof globalThis.fetch !== \"function\") {\r\n throw new Error(\"No fetch implementation available in this runtime\");\r\n }\r\n return globalThis.fetch.bind(globalThis);\r\n}\r\n\r\nexport function mergeHeaders(\r\n base: Record<string, string>,\r\n extra?: Record<string, string>\r\n): Record<string, string> {\r\n return { ...base, ...(extra ?? {}) };\r\n}\r\n\r\nexport function userAgentHeader(version: string): Record<string, string> {\r\n return { \"X-Aureon-SDK\": `@buildaureon/sdk/${version}` };\r\n}\r\n","/**\r\n * @fileoverview Default runtime values for SDK clients and examples.\r\n */\r\n\r\n/** Production AUREON API (public integrators). */\r\nexport const DEFAULT_API_BASE_URL = \"https://api.aureonlabs.network\";\r\n\r\n/** Local monorepo preview only; not for public docs. */\r\nexport const LOCAL_API_BASE_URL = \"http://127.0.0.1:8787\";\r\n\r\nexport const DEFAULT_TIMEOUT_MS = 30_000;\r\nexport const SDK_VERSION = \"0.1.7\";\r\nexport const SDK_NAME = \"@buildaureon/sdk\";\r\nexport const PRODUCT_NAME = \"AUREON\";\r\nexport const PRODUCT_TAGLINE =\r\n \"Financial Compass for Robinhood Chain\";\r\n\r\nexport const REFERENCE_SYMBOLS = [\"USDG\", \"NVDA\", \"AAPL\", \"GOOGL\", \"ETH\"] as const;\r\n\r\n/** HTTP header for product API keys. */\r\nexport const API_KEY_HEADER = \"X-Aureon-Api-Key\";\r\n","/**\r\n * @fileoverview API path constants for AureonClient methods.\r\n */\r\n\r\nexport const ENDPOINTS = {\r\n healthz: \"/healthz\",\r\n overview: \"/overview\",\r\n portfolio: \"/portfolio\",\r\n portfolioClear: \"/portfolio/clear\",\r\n portfolioSync: \"/portfolio/sync\",\r\n watchdogRefresh: \"/watchdog/refresh\",\r\n objectives: \"/objectives\",\r\n health: \"/health\",\r\n timeline: \"/timeline\",\r\n executions: \"/executions\",\r\n executionsRun: \"/executions/run\",\r\n marketEvents: \"/market/events\",\r\n marketPresets: \"/market/presets\",\r\n vault: \"/vault\",\r\n vaultStatus: \"/vault/status\",\r\n vaultPrepareDeposit: \"/vault/prepare-deposit\",\r\n vaultPrepareWithdraw: \"/vault/prepare-withdraw\",\r\n authNonce: \"/auth/nonce\",\r\n authVerify: \"/auth/verify\",\r\n authLogout: \"/auth/logout\",\r\n authDevLogin: \"/auth/dev-login\",\r\n authMe: \"/auth/me\",\r\n developerApiKeys: \"/developer/api-keys\",\r\n registryStatus: \"/registry/status\",\r\n settlements: \"/settlements\",\r\n} as const;\r\n\r\nexport function objectivePath(id: string): string {\r\n return `${ENDPOINTS.objectives}/${encodeURIComponent(id)}`;\r\n}\r\n\r\nexport function objectivePausePath(id: string): string {\r\n return `${objectivePath(id)}/pause`;\r\n}\r\n\r\nexport function objectiveResumePath(id: string): string {\r\n return `${objectivePath(id)}/resume`;\r\n}\r\n\r\nexport function objectiveRestorePlanPath(id: string): string {\r\n return `${objectivePath(id)}/restore-plan`;\r\n}\r\n\r\nexport function objectiveRestorePath(id: string): string {\r\n return `${objectivePath(id)}/restore`;\r\n}\r\n\r\nexport function developerApiKeyPath(id: string): string {\r\n return `${ENDPOINTS.developerApiKeys}/${encodeURIComponent(id)}`;\r\n}\r\n\r\nexport function registryObjectivePath(id: string): string {\r\n return `/registry/objectives/${encodeURIComponent(id)}`;\r\n}\r\n\r\nexport function registryPreparePath(id: string): string {\r\n return `${registryObjectivePath(id)}/prepare-register`;\r\n}\r\n\r\nexport function registryConfirmPath(id: string): string {\r\n return `${registryObjectivePath(id)}/confirm`;\r\n}\r\n\r\nexport function executionSettlementPath(id: string): string {\r\n return `/executions/${encodeURIComponent(id)}/settlement`;\r\n}\r\n\r\nexport function executionConfirmSettlementPath(id: string): string {\r\n return `/executions/${encodeURIComponent(id)}/confirm-settlement`;\r\n}\r\n","/**\r\n * @fileoverview Stable machine-readable error codes for @buildaureon/sdk.\r\n */\r\n\r\nexport type AureonErrorCode =\r\n | \"NETWORK_ERROR\"\r\n | \"TIMEOUT\"\r\n | \"VALIDATION_ERROR\"\r\n | \"NOT_FOUND\"\r\n | \"CONFLICT\"\r\n | \"UNAUTHORIZED\"\r\n | \"RATE_LIMITED\"\r\n | \"SERVER_ERROR\"\r\n | \"UNEXPECTED_RESPONSE\"\r\n | \"ABORTED\";\r\n\r\nexport const RETRYABLE_CODES: readonly AureonErrorCode[] = [\r\n \"NETWORK_ERROR\",\r\n \"TIMEOUT\",\r\n \"RATE_LIMITED\",\r\n \"SERVER_ERROR\",\r\n] as const;\r\n\r\nexport function isRetryableCode(code: AureonErrorCode): boolean {\r\n return (RETRYABLE_CODES as readonly string[]).includes(code);\r\n}\r\n\r\nexport function defaultMessageForStatus(status: number): string {\r\n switch (status) {\r\n case 400:\r\n return \"The request failed validation\";\r\n case 401:\r\n return \"Authentication is required\";\r\n case 403:\r\n return \"Access is forbidden for this resource\";\r\n case 404:\r\n return \"The requested resource was not found\";\r\n case 409:\r\n return \"The request conflicts with the current resource state\";\r\n case 429:\r\n return \"Rate limit exceeded\";\r\n default:\r\n if (status >= 500) return \"The server encountered an error\";\r\n return `Unexpected HTTP status ${status}`;\r\n }\r\n}\r\n","/**\r\n * @fileoverview Base and specialized error classes for the AUREON SDK.\r\n */\r\n\r\nimport { isRetryableCode, type AureonErrorCode } from \"./codes.js\";\r\n\r\nexport class AureonError extends Error {\r\n readonly code: AureonErrorCode;\r\n readonly status: number | null;\r\n readonly details: Record<string, unknown> | null;\r\n\r\n constructor(\r\n message: string,\r\n code: AureonErrorCode,\r\n status: number | null = null,\r\n details: Record<string, unknown> | null = null\r\n ) {\r\n super(message);\r\n this.name = \"AureonError\";\r\n this.code = code;\r\n this.status = status;\r\n this.details = details;\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n\r\n get retryable(): boolean {\r\n return isRetryableCode(this.code);\r\n }\r\n\r\n toJSON(): Record<string, unknown> {\r\n return {\r\n name: this.name,\r\n message: this.message,\r\n code: this.code,\r\n status: this.status,\r\n details: this.details,\r\n retryable: this.retryable,\r\n };\r\n }\r\n}\r\n\r\nexport class AureonValidationError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"VALIDATION_ERROR\", 400, details);\r\n this.name = \"AureonValidationError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonNotFoundError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"NOT_FOUND\", 404, details);\r\n this.name = \"AureonNotFoundError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonConflictError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"CONFLICT\", 409, details);\r\n this.name = \"AureonConflictError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonNetworkError extends AureonError {\r\n constructor(message: string, details: Record<string, unknown> | null = null) {\r\n super(message, \"NETWORK_ERROR\", null, details);\r\n this.name = \"AureonNetworkError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n\r\nexport class AureonTimeoutError extends AureonError {\r\n constructor(message = \"Request timed out\", details: Record<string, unknown> | null = null) {\r\n super(message, \"TIMEOUT\", null, details);\r\n this.name = \"AureonTimeoutError\";\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\n","/**\r\n * @fileoverview Objective vs actual allocation comparison and plan paradox detection.\r\n */\r\n\r\nimport type { DashboardOverview } from \"../types/market.js\";\r\nimport type { HealthState, ObjectiveHealth } from \"../types/health.js\";\r\nimport type { Objective, ObjectiveKind } from \"../types/objective.js\";\r\n\r\nexport interface AllocationComparisonRow {\r\n objectiveId: string;\r\n name: string;\r\n kind: ObjectiveKind;\r\n targetSymbol?: string;\r\n targetWeight: number;\r\n currentMetric: number;\r\n deviation: number;\r\n state: HealthState;\r\n}\r\n\r\nexport interface PlanParadoxResult {\r\n detected: boolean;\r\n bookUp: boolean;\r\n offPlanCount: number;\r\n message: string;\r\n}\r\n\r\nconst ACTIVE_STATUSES = new Set([\"active\", \"validated\"]);\r\n\r\nfunction isOffPlan(state: HealthState): boolean {\r\n return state === \"warning\" || state === \"violation\";\r\n}\r\n\r\n/**\r\n * Joins active objectives with health records into target vs current rows.\r\n */\r\nexport function buildAllocationComparison(\r\n objectives: Objective[],\r\n health: ObjectiveHealth[]\r\n): AllocationComparisonRow[] {\r\n const healthById = new Map(health.map((h) => [h.objectiveId, h]));\r\n\r\n return objectives\r\n .filter((o) => ACTIVE_STATUSES.has(o.status))\r\n .map((objective) => {\r\n const record = healthById.get(objective.id);\r\n const targetWeight =\r\n objective.policy?.targetWeight ?? record?.targetMetric ?? 0;\r\n const currentMetric = record?.currentMetric ?? 0;\r\n return {\r\n objectiveId: objective.id,\r\n name: objective.name,\r\n kind: objective.kind,\r\n targetSymbol: objective.policy?.targetSymbol,\r\n targetWeight,\r\n currentMetric,\r\n deviation: record?.deviation ?? currentMetric - targetWeight,\r\n state: record?.state ?? \"paused\",\r\n };\r\n });\r\n}\r\n\r\n/**\r\n * Detects when book performance looks fine but objectives are off-plan.\r\n */\r\nexport function detectPlanParadox(\r\n overview: DashboardOverview,\r\n health: ObjectiveHealth[]\r\n): PlanParadoxResult {\r\n const offPlan = health.filter((h) => isOffPlan(h.state));\r\n const offPlanCount = offPlan.length;\r\n\r\n const bookUp =\r\n overview.change24hPct != null && !overview.change24hBaselineOnly\r\n ? overview.change24hPct >= 0\r\n : overview.attentionCount > 0 && overview.totalNotionalUsd > 0;\r\n\r\n const detected = bookUp && offPlanCount > 0;\r\n\r\n let message = \"Portfolio and objectives are aligned.\";\r\n if (detected) {\r\n const pct =\r\n overview.change24hPct != null && !overview.change24hBaselineOnly\r\n ? `${(overview.change24hPct * 100).toFixed(1)}%`\r\n : \"recent activity\";\r\n message = `Book is up (${pct}), but ${offPlanCount} objective${\r\n offPlanCount === 1 ? \"\" : \"s\"\r\n } are off-plan.`;\r\n } else if (offPlanCount > 0) {\r\n message = `${offPlanCount} objective${\r\n offPlanCount === 1 ? \"\" : \"s\"\r\n } need attention.`;\r\n }\r\n\r\n return { detected, bookUp, offPlanCount, message };\r\n}\r\n","/**\r\n * @fileoverview Objective domain types for Financial Compass Objectives.\r\n */\r\n\r\n/** Lifecycle status for a Financial Compass Objective (FCO). */\r\nexport type ObjectiveStatus =\r\n | \"draft\"\r\n | \"validated\"\r\n | \"active\"\r\n | \"paused\"\r\n | \"cancelled\"\r\n | \"completed\";\r\n\r\n/** Supported objective kinds for Phase 1 operator workflows. */\r\nexport type ObjectiveKind =\r\n | \"stable_allocation\"\r\n | \"balanced_portfolio\"\r\n | \"risk_ceiling\"\r\n | \"reward_reinvestment\";\r\n\r\n/** Priority influences evaluation ordering when multiple objectives compete. */\r\nexport type ObjectivePriority = \"low\" | \"medium\" | \"high\" | \"critical\";\r\n\r\n/**\r\n * Per-objective restore behaviour as stored on the API.\r\n *\r\n * SDK / agent integrations create objectives as **Automatic** (default).\r\n * `\"manual\"` exists so the operator utility can require an Approve click;\r\n * it is not part of the recommended SDK integration path.\r\n */\r\nexport type ObjectiveAutomationMode = \"manual\" | \"auto\";\r\n\r\n/** Policy rules attached to an objective. */\r\nexport interface ObjectivePolicy {\r\n targetWeight: number;\r\n tolerance: number;\r\n maxRiskScore?: number;\r\n reinvestRatio?: number;\r\n /** Holding symbol when the objective tracks a specific asset weight. */\r\n targetSymbol?: string;\r\n summary: string;\r\n}\r\n\r\n/** Financial Compass Objective record. */\r\nexport interface Objective {\r\n id: string;\r\n name: string;\r\n kind: ObjectiveKind;\r\n status: ObjectiveStatus;\r\n priority: ObjectivePriority;\r\n /**\r\n * Restore mode for this objective.\r\n * SDK creates always set `\"auto\"`. `\"manual\"` is operator-utility only.\r\n */\r\n automationMode: ObjectiveAutomationMode;\r\n policy: ObjectivePolicy;\r\n ownerId: string;\r\n createdAt: string;\r\n updatedAt: string;\r\n lastEvaluatedAt: string | null;\r\n lastExecutionId: string | null;\r\n verifiedOnChain?: boolean;\r\n configHash?: string;\r\n}\r\n\r\n/**\r\n * Input for creating a new objective.\r\n *\r\n * SDK create always sends `automationMode: \"auto\"` (Automatic restore).\r\n * Manual Approve is an operator-utility concern; do not rely on it in\r\n * agent / SDK loops.\r\n */\r\nexport interface CreateObjectiveInput {\r\n name: string;\r\n kind: ObjectiveKind;\r\n priority?: ObjectivePriority;\r\n targetWeight: number;\r\n tolerance: number;\r\n maxRiskScore?: number;\r\n reinvestRatio?: number;\r\n targetSymbol?: string | null;\r\n /**\r\n * @deprecated For SDK integrations omit this; create always uses Automatic.\r\n * The operator utility may still pass `\"manual\"` for Approve UX.\r\n */\r\n automationMode?: ObjectiveAutomationMode;\r\n}\r\n\r\n/** Partial update for an existing objective. */\r\nexport interface UpdateObjectiveInput {\r\n name?: string;\r\n priority?: ObjectivePriority;\r\n targetWeight?: number;\r\n tolerance?: number;\r\n maxRiskScore?: number;\r\n reinvestRatio?: number;\r\n /**\r\n * @deprecated Rejected on update; target token is fixed at create.\r\n * Recreate the objective to track a different holding.\r\n */\r\n targetSymbol?: never;\r\n /**\r\n * @deprecated Rejected on update; mode is fixed at create to avoid restore-flow issues.\r\n * Recreate the objective to switch Manual ↔ Automatic.\r\n */\r\n automationMode?: never;\r\n}\r\n\r\nexport const OBJECTIVE_KINDS: readonly ObjectiveKind[] = [\r\n \"stable_allocation\",\r\n \"balanced_portfolio\",\r\n \"risk_ceiling\",\r\n \"reward_reinvestment\",\r\n] as const;\r\n\r\nexport const OBJECTIVE_PRIORITIES: readonly ObjectivePriority[] = [\r\n \"low\",\r\n \"medium\",\r\n \"high\",\r\n \"critical\",\r\n] as const;\r\n\r\nexport function isObjectiveKind(value: string): value is ObjectiveKind {\r\n return (OBJECTIVE_KINDS as readonly string[]).includes(value);\r\n}\r\n\r\nexport function isObjectivePriority(value: string): value is ObjectivePriority {\r\n return (OBJECTIVE_PRIORITIES as readonly string[]).includes(value);\r\n}\r\n","/**\r\n * @fileoverview Validation and normalization for objective create/update payloads.\r\n */\r\n\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport type {\r\n CreateObjectiveInput,\r\n UpdateObjectiveInput,\r\n} from \"../types/objective.js\";\r\nimport { isObjectiveKind, isObjectivePriority } from \"../types/objective.js\";\r\n\r\nexport function buildPolicySummary(\r\n kind: CreateObjectiveInput[\"kind\"],\r\n targetWeight: number,\r\n tolerance: number\r\n): string {\r\n const targetPct = (targetWeight * 100).toFixed(1);\r\n const tolPct = (tolerance * 100).toFixed(1);\r\n switch (kind) {\r\n case \"stable_allocation\":\r\n return `Maintain ${targetPct}% stable allocation within ±${tolPct}%`;\r\n case \"balanced_portfolio\":\r\n return `Hold balanced weights near ${targetPct}% primary sleeve within ±${tolPct}%`;\r\n case \"risk_ceiling\":\r\n return `Keep portfolio risk at or below configured ceiling with ${tolPct}% buffer`;\r\n case \"reward_reinvestment\":\r\n return `Reinvest available rewards toward ${targetPct}% target sleeve`;\r\n default:\r\n return `Objective policy target ${targetPct}% ±${tolPct}%`;\r\n }\r\n}\r\n\r\nexport function normalizeCreateObjectiveInput(\r\n input: CreateObjectiveInput\r\n): CreateObjectiveInput {\r\n const name = input.name?.trim();\r\n if (!name || name.length < 3) {\r\n throw new AureonValidationError(\"Objective name must be at least 3 characters\");\r\n }\r\n if (!isObjectiveKind(input.kind)) {\r\n throw new AureonValidationError(`Unsupported objective kind: ${input.kind}`);\r\n }\r\n if (input.targetWeight < 0 || input.targetWeight > 1) {\r\n throw new AureonValidationError(\"targetWeight must be between 0 and 1\");\r\n }\r\n if (input.tolerance < 0 || input.tolerance > 0.5) {\r\n throw new AureonValidationError(\"tolerance must be between 0 and 0.5\");\r\n }\r\n const priority = input.priority ?? \"high\";\r\n if (!isObjectivePriority(priority)) {\r\n throw new AureonValidationError(`Unsupported priority: ${priority}`);\r\n }\r\n if (input.kind === \"balanced_portfolio\") {\r\n const symbol = input.targetSymbol?.trim().toUpperCase();\r\n if (!symbol) {\r\n throw new AureonValidationError(\r\n \"balanced_portfolio requires targetSymbol\"\r\n );\r\n }\r\n return {\r\n ...input,\r\n name,\r\n priority,\r\n targetSymbol: symbol,\r\n // SDK / agent path defaults to Automatic. Explicit \"manual\" is reserved\r\n // for the operator utility Approve UX; not recommended for integrations.\r\n automationMode: input.automationMode === \"manual\" ? \"manual\" : \"auto\",\r\n };\r\n }\r\n return {\r\n ...input,\r\n name,\r\n priority,\r\n targetSymbol: null,\r\n automationMode: input.automationMode === \"manual\" ? \"manual\" : \"auto\",\r\n };\r\n}\r\n\r\nexport function normalizeUpdateObjectiveInput(\r\n input: UpdateObjectiveInput\r\n): UpdateObjectiveInput {\r\n const next: UpdateObjectiveInput = { ...input };\r\n if (next.name !== undefined) {\r\n const name = next.name.trim();\r\n if (name.length < 3) {\r\n throw new AureonValidationError(\"Objective name must be at least 3 characters\");\r\n }\r\n next.name = name;\r\n }\r\n if (next.targetWeight !== undefined) {\r\n if (next.targetWeight < 0 || next.targetWeight > 1) {\r\n throw new AureonValidationError(\"targetWeight must be between 0 and 1\");\r\n }\r\n }\r\n if (next.tolerance !== undefined) {\r\n if (next.tolerance < 0 || next.tolerance > 0.5) {\r\n throw new AureonValidationError(\"tolerance must be between 0 and 0.5\");\r\n }\r\n }\r\n if (next.priority !== undefined && !isObjectivePriority(next.priority)) {\r\n throw new AureonValidationError(`Unsupported priority: ${next.priority}`);\r\n }\r\n if (next.automationMode !== undefined) {\r\n throw new AureonValidationError(\r\n \"automationMode cannot be changed after create: recreate the objective instead\"\r\n );\r\n }\r\n if ((input as { targetSymbol?: unknown }).targetSymbol !== undefined) {\r\n throw new AureonValidationError(\r\n \"targetSymbol cannot be changed after create: recreate the objective instead\"\r\n );\r\n }\r\n return next;\r\n}\r\n\r\nexport function assertId(value: string, label: string): void {\r\n if (!value || typeof value !== \"string\" || value.trim().length < 8) {\r\n throw new AureonValidationError(`Invalid ${label}`);\r\n }\r\n}\r\n","/**\r\n * @fileoverview Drift → detection → restore teaching flow helpers.\r\n */\r\n\r\nimport type { AllocationComparisonRow } from \"./allocation.js\";\r\nimport type { ExecutionReceipt, RestorePlan } from \"../types/execution.js\";\r\nimport type { ObjectiveHealth } from \"../types/health.js\";\r\nimport type { Objective } from \"../types/objective.js\";\r\nimport { buildPolicySummary } from \"../validation/objective-input.js\";\r\n\r\nexport type DriftRestorePhase = \"aligned\" | \"drift_detected\" | \"restored\";\r\n\r\nexport interface DriftRestoreFlow {\r\n objectiveId: string;\r\n rule: { summary: string; targetWeight: number; tolerance: number };\r\n phases: {\r\n aligned: {\r\n health: ObjectiveHealth;\r\n allocationRow?: AllocationComparisonRow;\r\n };\r\n drift: {\r\n health: ObjectiveHealth;\r\n allocationRow?: AllocationComparisonRow;\r\n restorePlan?: RestorePlan;\r\n };\r\n restored?: {\r\n health: ObjectiveHealth;\r\n receipt?: ExecutionReceipt;\r\n settlement?: string;\r\n };\r\n };\r\n currentPhase: DriftRestorePhase;\r\n message: string;\r\n}\r\n\r\nfunction isOffPlan(state: ObjectiveHealth[\"state\"]): boolean {\r\n return state === \"warning\" || state === \"violation\";\r\n}\r\n\r\n/**\r\n * Infers drift-restore phase from a single health snapshot.\r\n */\r\nexport function inferDriftPhase(health: ObjectiveHealth): DriftRestorePhase {\r\n if (health.state === \"healthy\") return \"aligned\";\r\n if (isOffPlan(health.state)) return \"drift_detected\";\r\n return \"aligned\";\r\n}\r\n\r\n/**\r\n * Builds the drift → detection → restore teaching shape.\r\n */\r\nexport function buildDriftRestoreFlow(input: {\r\n objective: Objective;\r\n alignedHealth: ObjectiveHealth;\r\n driftHealth: ObjectiveHealth;\r\n driftPlan?: RestorePlan;\r\n restoredHealth?: ObjectiveHealth;\r\n receipt?: ExecutionReceipt;\r\n alignedRow?: AllocationComparisonRow;\r\n driftRow?: AllocationComparisonRow;\r\n}): DriftRestoreFlow {\r\n const targetWeight =\r\n input.objective.policy?.targetWeight ??\r\n input.alignedHealth.targetMetric ??\r\n 0;\r\n const tolerance =\r\n input.objective.policy?.tolerance ?? 0.02;\r\n const summary =\r\n input.objective.policy?.summary ??\r\n buildPolicySummary(input.objective.kind, targetWeight, tolerance);\r\n\r\n const restored = input.restoredHealth\r\n ? {\r\n health: input.restoredHealth,\r\n receipt: input.receipt,\r\n settlement: input.receipt?.settlement,\r\n }\r\n : undefined;\r\n\r\n const currentPhase: DriftRestorePhase = restored\r\n ? restored.health.state === \"healthy\" ||\r\n !isOffPlan(restored.health.state)\r\n ? \"restored\"\r\n : \"drift_detected\"\r\n : inferDriftPhase(input.driftHealth);\r\n\r\n let message =\r\n \"Rule set and portfolio aligned. Ready to detect drift when marks move.\";\r\n if (currentPhase === \"drift_detected\") {\r\n message =\r\n \"We broke the rule on purpose. AUREON detected drift — allocation moved off policy.\";\r\n } else if (currentPhase === \"restored\") {\r\n const settlement = input.receipt?.settlement ?? \"staged\";\r\n message = `Drift detected and restore completed (${settlement} settlement). Policy is back within tolerance.`;\r\n }\r\n\r\n return {\r\n objectiveId: input.objective.id,\r\n rule: { summary, targetWeight, tolerance },\r\n phases: {\r\n aligned: {\r\n health: input.alignedHealth,\r\n allocationRow: input.alignedRow,\r\n },\r\n drift: {\r\n health: input.driftHealth,\r\n allocationRow: input.driftRow,\r\n restorePlan: input.driftPlan,\r\n },\r\n restored,\r\n },\r\n currentPhase,\r\n message,\r\n };\r\n}\r\n\r\n/**\r\n * Read-only flow from current objective state + optional latest receipt.\r\n */\r\nexport function buildDriftRestoreFlowFromSnapshot(input: {\r\n objective: Objective;\r\n health: ObjectiveHealth;\r\n allocationRow?: AllocationComparisonRow;\r\n restorePlan?: RestorePlan;\r\n latestReceipt?: ExecutionReceipt;\r\n}): DriftRestoreFlow {\r\n const targetWeight =\r\n input.objective.policy?.targetWeight ?? input.health.targetMetric ?? 0;\r\n\r\n const offPlan = isOffPlan(input.health.state);\r\n const hasRestore =\r\n input.latestReceipt &&\r\n input.latestReceipt.objectiveId === input.objective.id;\r\n\r\n if (!offPlan && !hasRestore) {\r\n return buildDriftRestoreFlow({\r\n objective: input.objective,\r\n alignedHealth: input.health,\r\n driftHealth: input.health,\r\n alignedRow: input.allocationRow,\r\n driftRow: input.allocationRow,\r\n });\r\n }\r\n\r\n if (offPlan) {\r\n return buildDriftRestoreFlow({\r\n objective: input.objective,\r\n alignedHealth: {\r\n ...input.health,\r\n state: \"healthy\",\r\n currentMetric: targetWeight,\r\n deviation: 0,\r\n message: \"On track — still inside your target range.\",\r\n },\r\n driftHealth: input.health,\r\n driftPlan: input.restorePlan,\r\n alignedRow: input.allocationRow,\r\n driftRow: input.allocationRow,\r\n });\r\n }\r\n\r\n return buildDriftRestoreFlow({\r\n objective: input.objective,\r\n alignedHealth: {\r\n ...input.health,\r\n state: \"healthy\",\r\n currentMetric: targetWeight,\r\n deviation: 0,\r\n message: \"On track — still inside your target range.\",\r\n },\r\n driftHealth: {\r\n ...input.health,\r\n state: \"warning\",\r\n message: \"Prior drift detected.\",\r\n },\r\n restoredHealth: input.health,\r\n receipt: input.latestReceipt,\r\n alignedRow: input.allocationRow,\r\n driftRow: input.allocationRow,\r\n });\r\n}\r\n","/**\r\n * @fileoverview Execution receipt + restore-plan types.\r\n *\r\n * Receipts may settle as vault on-chain rebalance (`settlement: \"vault\"`) or\r\n * as a staged capital-book update (`settlement: \"staged\"`) when the vault\r\n * path is unavailable. Wrap/unwrap ETH↔WETH is client-side via RestorePlan.\r\n */\r\n\r\nimport type { RegistryRef } from \"./registry.js\";\r\nimport type { SettlementRecord } from \"./settlement.js\";\r\nimport type { TimelineEvent } from \"./timeline.js\";\r\n\r\nexport interface ExecutionReceipt {\r\n id: string;\r\n objectiveId: string;\r\n status: \"pending\" | \"submitted\" | \"confirmed\" | \"failed\";\r\n transactionHash: string;\r\n action: string;\r\n notionalAdjustedUsd: number;\r\n result: string;\r\n createdAt: string;\r\n confirmedAt: string | null;\r\n /**\r\n * `\"vault\"`: keeper rebalance confirmed (or pending_vault_* then confirmed).\r\n * `\"staged\"`: capital-book restore only (honest non-finality label).\r\n */\r\n settlement: \"staged\" | \"vault\";\r\n /** Block explorer link when vault tx is a real `0x…` hash; null for staged. */\r\n explorerUrl?: string | null;\r\n registryRef?: RegistryRef;\r\n /** True when a settlement record exists for this execution (vault only). */\r\n verifiedOnChain?: boolean;\r\n /** Populated when verifiedOnChain is true. */\r\n settlementRecord?: SettlementRecord;\r\n}\r\n\r\n/** Client-side restore action: wrap/unwrap ETH↔WETH or keeper vault swap. */\r\nexport type RestorePlanKind = \"wrap_eth\" | \"unwrap_weth\" | \"vault_swap\";\r\n\r\nexport interface RestorePlan {\r\n kind: RestorePlanKind;\r\n amountHuman: string;\r\n approxUsd: number;\r\n message: string;\r\n sellSymbol?: string;\r\n buySymbol?: string;\r\n}\r\n\r\nexport function isConfirmedExecution(receipt: ExecutionReceipt): boolean {\r\n return receipt.status === \"confirmed\" && Boolean(receipt.confirmedAt);\r\n}\r\n\r\nexport function shortTransactionHash(hash: string, head = 10, tail = 6): string {\r\n if (hash.length <= head + tail + 1) return hash;\r\n return `${hash.slice(0, head)}…${hash.slice(-tail)}`;\r\n}\r\n\r\nexport function sortExecutionsNewestFirst(\r\n receipts: ExecutionReceipt[]\r\n): ExecutionReceipt[] {\r\n return [...receipts].sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1));\r\n}\r\n\r\n/** True when the receipt claims vault (on-chain) settlement. */\r\nexport function isVaultSettlement(receipt: ExecutionReceipt): boolean {\r\n return receipt.settlement === \"vault\";\r\n}\r\n\r\n/** True when the receipt has independent on-chain settlement proof. */\r\nexport function isChainVerifiedReceipt(receipt: ExecutionReceipt): boolean {\r\n return receipt.verifiedOnChain === true;\r\n}\r\n\r\n/** Human-readable one-line receipt summary for agents and logs. */\r\nexport function formatReceiptSummary(receipt: ExecutionReceipt): string {\r\n const settlementLabel =\r\n receipt.verifiedOnChain\r\n ? \"vault settlement (chain-verified)\"\r\n : receipt.settlement === \"vault\"\r\n ? \"vault settlement (unverified on-chain)\"\r\n : \"staged settlement (capital book)\";\r\n const parts = [receipt.action, settlementLabel, receipt.status];\r\n if (receipt.explorerUrl) parts.push(receipt.explorerUrl);\r\n if (receipt.registryRef) {\r\n parts.push(\r\n `registry ${shortTransactionHash(receipt.registryRef.objectiveKey, 8, 4)}`\r\n );\r\n }\r\n return parts.join(\" · \");\r\n}\r\n\r\n/** Timeline events linked to a receipt via payload.executionId. */\r\nexport function findTimelineEventsForReceipt(\r\n events: TimelineEvent[],\r\n receipt: ExecutionReceipt\r\n): TimelineEvent[] {\r\n return events.filter((event) => {\r\n if (\r\n event.type !== \"execution_started\" &&\r\n event.type !== \"execution_completed\"\r\n ) {\r\n return false;\r\n }\r\n const executionId = event.payload?.executionId;\r\n return typeof executionId === \"string\" && executionId === receipt.id;\r\n });\r\n}\r\n","/**\r\n * @fileoverview Phase 2 execution receipt validator — schema + honesty rules.\r\n */\r\n\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport type { ExecutionReceipt } from \"../types/execution.js\";\r\n\r\nconst EXECUTION_STATUSES = new Set([\r\n \"pending\",\r\n \"submitted\",\r\n \"confirmed\",\r\n \"failed\",\r\n]);\r\n\r\nconst SETTLEMENTS = new Set([\"vault\", \"staged\"]);\r\n\r\nconst TX_HASH_0X = /^0x[a-fA-F0-9]{64}$/;\r\nconst ADDRESS_0X = /^0x[a-fA-F0-9]{40}$/;\r\nconst BYTES32_0X = /^0x[a-fA-F0-9]{64}$/;\r\nconst ISO_TIMESTAMP = /^\\d{4}-\\d{2}-\\d{2}T/;\r\n\r\nexport type ReceiptValidationCode =\r\n | \"INVALID_INPUT\"\r\n | \"MISSING_FIELD\"\r\n | \"INVALID_SETTLEMENT\"\r\n | \"INVALID_STATUS\"\r\n | \"MISSING_CONFIRMED_AT\"\r\n | \"STAGED_WITH_EXPLORER\"\r\n | \"STAGED_VERIFIED_ON_CHAIN\"\r\n | \"STAGED_WITH_SETTLEMENT_RECORD\"\r\n | \"INVALID_VAULT_HASH\"\r\n | \"VAULT_MISSING_EXPLORER\"\r\n | \"VERIFIED_WITHOUT_RECORD\"\r\n | \"VERIFIED_RECORD_MISMATCH\"\r\n | \"INVALID_REGISTRY_REF\"\r\n | \"INVALID_SETTLEMENT_RECORD\";\r\n\r\nexport type ReceiptValidationIssue = {\r\n code: ReceiptValidationCode;\r\n message: string;\r\n path?: string;\r\n};\r\n\r\nexport type ReceiptValidationResult = {\r\n valid: boolean;\r\n issues: ReceiptValidationIssue[];\r\n};\r\n\r\nfunction issue(\r\n code: ReceiptValidationCode,\r\n message: string,\r\n path?: string\r\n): ReceiptValidationIssue {\r\n return path ? { code, message, path } : { code, message };\r\n}\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\r\n}\r\n\r\nfunction isNonEmptyString(value: unknown): value is string {\r\n return typeof value === \"string\" && value.trim().length > 0;\r\n}\r\n\r\nfunction isVaultTransactionHash(hash: string): boolean {\r\n return hash.startsWith(\"pending_vault_\") || TX_HASH_0X.test(hash);\r\n}\r\n\r\nfunction isRealVaultTxHash(hash: string): boolean {\r\n return TX_HASH_0X.test(hash);\r\n}\r\n\r\nfunction isStagedTransactionHash(hash: string): boolean {\r\n return !isVaultTransactionHash(hash);\r\n}\r\n\r\n/** Validates a settlement record nested on a receipt. */\r\nexport function validateSettlementRecord(\r\n input: unknown,\r\n options: { executionId?: string } = {}\r\n): ReceiptValidationResult {\r\n const issues: ReceiptValidationIssue[] = [];\r\n if (!isRecord(input)) {\r\n return {\r\n valid: false,\r\n issues: [issue(\"INVALID_INPUT\", \"Settlement record must be an object\")],\r\n };\r\n }\r\n\r\n const requiredStrings: Array<[string, string]> = [\r\n [\"id\", \"id\"],\r\n [\"walletAddress\", \"walletAddress\"],\r\n [\"transactionHash\", \"transactionHash\"],\r\n [\"vaultAddress\", \"vaultAddress\"],\r\n [\"tokenSell\", \"tokenSell\"],\r\n [\"tokenBuy\", \"tokenBuy\"],\r\n [\"amountIn\", \"amountIn\"],\r\n [\"amountOut\", \"amountOut\"],\r\n [\"explorerUrl\", \"explorerUrl\"],\r\n [\"verifiedAt\", \"verifiedAt\"],\r\n [\"status\", \"status\"],\r\n ];\r\n\r\n for (const [key, path] of requiredStrings) {\r\n if (!isNonEmptyString(input[key])) {\r\n issues.push(issue(\"MISSING_FIELD\", `Missing ${key}`, path));\r\n }\r\n }\r\n\r\n if (input.settlement !== \"vault\") {\r\n issues.push(\r\n issue(\r\n \"INVALID_SETTLEMENT_RECORD\",\r\n 'settlement must be \"vault\" on chain records',\r\n \"settlement\"\r\n )\r\n );\r\n }\r\n\r\n if (\r\n typeof input.blockNumber !== \"number\" ||\r\n !Number.isFinite(input.blockNumber) ||\r\n input.blockNumber < 0\r\n ) {\r\n issues.push(\r\n issue(\"INVALID_SETTLEMENT_RECORD\", \"blockNumber must be a non-negative number\", \"blockNumber\")\r\n );\r\n }\r\n\r\n if (\r\n typeof input.logIndex !== \"number\" ||\r\n !Number.isInteger(input.logIndex) ||\r\n input.logIndex < 0\r\n ) {\r\n issues.push(\r\n issue(\"INVALID_SETTLEMENT_RECORD\", \"logIndex must be a non-negative integer\", \"logIndex\")\r\n );\r\n }\r\n\r\n const tx = String(input.transactionHash ?? \"\");\r\n if (tx && !TX_HASH_0X.test(tx)) {\r\n issues.push(\r\n issue(\"INVALID_SETTLEMENT_RECORD\", \"transactionHash must be a 32-byte hex hash\", \"transactionHash\")\r\n );\r\n }\r\n\r\n if (input.status !== \"confirmed\" && input.status !== \"orphan\") {\r\n issues.push(\r\n issue(\r\n \"INVALID_SETTLEMENT_RECORD\",\r\n 'status must be \"confirmed\" or \"orphan\"',\r\n \"status\"\r\n )\r\n );\r\n }\r\n\r\n if (\r\n options.executionId &&\r\n input.executionId != null &&\r\n input.executionId !== options.executionId\r\n ) {\r\n issues.push(\r\n issue(\r\n \"VERIFIED_RECORD_MISMATCH\",\r\n \"settlementRecord.executionId must match receipt.id\",\r\n \"executionId\"\r\n )\r\n );\r\n }\r\n\r\n if (isRecord(input.registryRef)) {\r\n const refIssues = validateRegistryRef(input.registryRef, \"registryRef\");\r\n issues.push(...refIssues);\r\n }\r\n\r\n return { valid: issues.length === 0, issues };\r\n}\r\n\r\nfunction validateRegistryRef(\r\n ref: Record<string, unknown>,\r\n basePath: string\r\n): ReceiptValidationIssue[] {\r\n const issues: ReceiptValidationIssue[] = [];\r\n const objectiveKey = ref.objectiveKey;\r\n const contractAddress = ref.contractAddress;\r\n\r\n if (!isNonEmptyString(objectiveKey) || !BYTES32_0X.test(objectiveKey)) {\r\n issues.push(\r\n issue(\r\n \"INVALID_REGISTRY_REF\",\r\n \"objectiveKey must be a 32-byte hex string\",\r\n `${basePath}.objectiveKey`\r\n )\r\n );\r\n }\r\n if (!isNonEmptyString(contractAddress) || !ADDRESS_0X.test(contractAddress)) {\r\n issues.push(\r\n issue(\r\n \"INVALID_REGISTRY_REF\",\r\n \"contractAddress must be a 20-byte hex address\",\r\n `${basePath}.contractAddress`\r\n )\r\n );\r\n }\r\n return issues;\r\n}\r\n\r\n/**\r\n * Validates an execution receipt against the Phase 2 contract + honesty rules.\r\n * Never throws — inspect `valid` and `issues`.\r\n */\r\nexport function validateExecutionReceipt(input: unknown): ReceiptValidationResult {\r\n const issues: ReceiptValidationIssue[] = [];\r\n\r\n if (!isRecord(input)) {\r\n return {\r\n valid: false,\r\n issues: [issue(\"INVALID_INPUT\", \"Receipt must be an object\")],\r\n };\r\n }\r\n\r\n const required: Array<[string, string]> = [\r\n [\"id\", \"id\"],\r\n [\"objectiveId\", \"objectiveId\"],\r\n [\"action\", \"action\"],\r\n [\"status\", \"status\"],\r\n [\"transactionHash\", \"transactionHash\"],\r\n [\"result\", \"result\"],\r\n [\"createdAt\", \"createdAt\"],\r\n [\"settlement\", \"settlement\"],\r\n ];\r\n\r\n for (const [key, path] of required) {\r\n if (!isNonEmptyString(input[key])) {\r\n issues.push(issue(\"MISSING_FIELD\", `Missing ${key}`, path));\r\n }\r\n }\r\n\r\n const settlement = input.settlement;\r\n if (settlement != null && !SETTLEMENTS.has(String(settlement))) {\r\n issues.push(\r\n issue(\r\n \"INVALID_SETTLEMENT\",\r\n 'settlement must be \"vault\" or \"staged\"',\r\n \"settlement\"\r\n )\r\n );\r\n }\r\n\r\n const status = input.status;\r\n if (status != null && !EXECUTION_STATUSES.has(String(status))) {\r\n issues.push(\r\n issue(\r\n \"INVALID_STATUS\",\r\n \"status must be pending, submitted, confirmed, or failed\",\r\n \"status\"\r\n )\r\n );\r\n }\r\n\r\n if (status === \"confirmed\" && !isNonEmptyString(input.confirmedAt)) {\r\n issues.push(\r\n issue(\"MISSING_CONFIRMED_AT\", \"confirmed status requires confirmedAt\", \"confirmedAt\")\r\n );\r\n }\r\n\r\n if (isNonEmptyString(input.createdAt) && !ISO_TIMESTAMP.test(input.createdAt)) {\r\n issues.push(\r\n issue(\"MISSING_FIELD\", \"createdAt must be an ISO-8601 timestamp\", \"createdAt\")\r\n );\r\n }\r\n\r\n const txHash = String(input.transactionHash ?? \"\");\r\n const settlementStr = String(settlement ?? \"\");\r\n\r\n if (settlementStr === \"staged\") {\r\n if (input.explorerUrl != null && input.explorerUrl !== \"\") {\r\n issues.push(\r\n issue(\r\n \"STAGED_WITH_EXPLORER\",\r\n \"staged receipts must not include explorerUrl\",\r\n \"explorerUrl\"\r\n )\r\n );\r\n }\r\n if (input.verifiedOnChain === true) {\r\n issues.push(\r\n issue(\r\n \"STAGED_VERIFIED_ON_CHAIN\",\r\n \"staged receipts cannot be verifiedOnChain\",\r\n \"verifiedOnChain\"\r\n )\r\n );\r\n }\r\n if (input.settlementRecord != null) {\r\n issues.push(\r\n issue(\r\n \"STAGED_WITH_SETTLEMENT_RECORD\",\r\n \"staged receipts must not include settlementRecord\",\r\n \"settlementRecord\"\r\n )\r\n );\r\n }\r\n if (txHash && !isStagedTransactionHash(txHash)) {\r\n issues.push(\r\n issue(\r\n \"INVALID_VAULT_HASH\",\r\n \"staged settlement must not use a vault transaction hash\",\r\n \"transactionHash\"\r\n )\r\n );\r\n }\r\n }\r\n\r\n if (settlementStr === \"vault\") {\r\n if (txHash && !isVaultTransactionHash(txHash)) {\r\n issues.push(\r\n issue(\r\n \"INVALID_VAULT_HASH\",\r\n \"vault settlement requires 0x… hash or pending_vault_* prefix\",\r\n \"transactionHash\"\r\n )\r\n );\r\n }\r\n if (isRealVaultTxHash(txHash)) {\r\n if (input.explorerUrl == null || input.explorerUrl === \"\") {\r\n issues.push(\r\n issue(\r\n \"VAULT_MISSING_EXPLORER\",\r\n \"confirmed vault tx must include explorerUrl\",\r\n \"explorerUrl\"\r\n )\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (input.verifiedOnChain === true) {\r\n if (settlementStr !== \"vault\") {\r\n issues.push(\r\n issue(\r\n \"VERIFIED_WITHOUT_RECORD\",\r\n \"verifiedOnChain requires vault settlement\",\r\n \"verifiedOnChain\"\r\n )\r\n );\r\n }\r\n if (input.settlementRecord == null) {\r\n issues.push(\r\n issue(\r\n \"VERIFIED_WITHOUT_RECORD\",\r\n \"verifiedOnChain requires settlementRecord\",\r\n \"verifiedOnChain\"\r\n )\r\n );\r\n } else {\r\n const nested = validateSettlementRecord(input.settlementRecord, {\r\n executionId: isNonEmptyString(input.id) ? input.id : undefined,\r\n });\r\n for (const nestedIssue of nested.issues) {\r\n issues.push({\r\n ...nestedIssue,\r\n path: nestedIssue.path\r\n ? `settlementRecord.${nestedIssue.path}`\r\n : \"settlementRecord\",\r\n });\r\n }\r\n }\r\n } else if (input.settlementRecord != null && input.verifiedOnChain !== false) {\r\n // settlementRecord without verifiedOnChain flag is inconsistent\r\n if (input.verifiedOnChain !== true) {\r\n issues.push(\r\n issue(\r\n \"VERIFIED_RECORD_MISMATCH\",\r\n \"settlementRecord present but verifiedOnChain is not true\",\r\n \"verifiedOnChain\"\r\n )\r\n );\r\n }\r\n }\r\n\r\n if (isRecord(input.registryRef)) {\r\n issues.push(...validateRegistryRef(input.registryRef, \"registryRef\"));\r\n }\r\n\r\n return { valid: issues.length === 0, issues };\r\n}\r\n\r\n/** Type guard: true when input passes validateExecutionReceipt. */\r\nexport function isValidExecutionReceipt(input: unknown): input is ExecutionReceipt {\r\n return validateExecutionReceipt(input).valid;\r\n}\r\n\r\n/** Throws AureonValidationError when the receipt fails validation. */\r\nexport function assertValidExecutionReceipt(receipt: unknown): asserts receipt is ExecutionReceipt {\r\n const result = validateExecutionReceipt(receipt);\r\n if (!result.valid) {\r\n throw new AureonValidationError(\"Invalid execution receipt\", {\r\n issues: result.issues,\r\n });\r\n }\r\n}\r\n","/**\r\n * @fileoverview Receipt → verification teaching flow helpers.\r\n */\r\n\r\nimport type { ExecutionReceipt } from \"../types/execution.js\";\r\nimport {\r\n formatReceiptSummary,\r\n isChainVerifiedReceipt,\r\n} from \"../types/execution.js\";\r\nimport type { ExecutionSettlementLookup } from \"../types/settlement.js\";\r\nimport type { TimelineEvent } from \"../types/timeline.js\";\r\nimport type { ReceiptValidationResult } from \"../validation/receipt-validator.js\";\r\nimport { validateExecutionReceipt } from \"../validation/receipt-validator.js\";\r\n\r\nexport type ReceiptVerificationPhase =\r\n | \"claimed\"\r\n | \"validated\"\r\n | \"validation_failed\"\r\n | \"chain_verified\";\r\n\r\nexport type ReceiptProofTier =\r\n | \"claim_only\"\r\n | \"schema_valid\"\r\n | \"chain_verified\";\r\n\r\nexport interface ReceiptVerificationFlow {\r\n executionId: string;\r\n receipt: ExecutionReceipt;\r\n phases: {\r\n claimed: { summary: string; status: string; settlement: string; result: string };\r\n validation: ReceiptValidationResult;\r\n settlement?: ExecutionSettlementLookup;\r\n timelineEvents?: TimelineEvent[];\r\n };\r\n proofTier: ReceiptProofTier;\r\n currentPhase: ReceiptVerificationPhase;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Infers proof tier from receipt, validation, and optional settlement lookup.\r\n */\r\nexport function inferProofTier(\r\n receipt: ExecutionReceipt,\r\n validation: ReceiptValidationResult,\r\n settlement?: ExecutionSettlementLookup\r\n): ReceiptProofTier {\r\n if (!validation.valid) return \"claim_only\";\r\n if (\r\n settlement?.verifiedOnChain === true ||\r\n isChainVerifiedReceipt(receipt) ||\r\n receipt.verifiedOnChain === true\r\n ) {\r\n return \"chain_verified\";\r\n }\r\n return \"schema_valid\";\r\n}\r\n\r\nfunction inferCurrentPhase(\r\n validation: ReceiptValidationResult,\r\n proofTier: ReceiptProofTier\r\n): ReceiptVerificationPhase {\r\n if (!validation.valid) return \"validation_failed\";\r\n if (proofTier === \"chain_verified\") return \"chain_verified\";\r\n return \"validated\";\r\n}\r\n\r\n/**\r\n * Builds the receipt → verification teaching shape.\r\n */\r\nexport function buildReceiptVerificationFlow(input: {\r\n receipt: ExecutionReceipt;\r\n validation?: ReceiptValidationResult;\r\n settlement?: ExecutionSettlementLookup;\r\n timelineEvents?: TimelineEvent[];\r\n}): ReceiptVerificationFlow {\r\n const validation =\r\n input.validation ?? validateExecutionReceipt(input.receipt);\r\n const proofTier = inferProofTier(\r\n input.receipt,\r\n validation,\r\n input.settlement\r\n );\r\n const currentPhase = inferCurrentPhase(validation, proofTier);\r\n\r\n let message =\r\n \"An AI saying 'transaction successful' is only a claim — validate the receipt before trusting it.\";\r\n if (currentPhase === \"validation_failed\") {\r\n message =\r\n \"Receipt failed validation — do not summarize as proof. Fix honesty issues before reporting success.\";\r\n } else if (currentPhase === \"chain_verified\") {\r\n message =\r\n \"Receipt passes validation and has independent on-chain settlement proof.\";\r\n } else if (proofTier === \"schema_valid\") {\r\n const label =\r\n input.receipt.settlement === \"staged\"\r\n ? \"staged (capital book)\"\r\n : \"vault (not yet chain-observed)\";\r\n message = `Receipt passes validation (${label}). Schema-valid does not mean chain-verified — check settlement lookup for vault proof.`;\r\n }\r\n\r\n return {\r\n executionId: input.receipt.id,\r\n receipt: input.receipt,\r\n phases: {\r\n claimed: {\r\n summary: formatReceiptSummary(input.receipt),\r\n status: input.receipt.status,\r\n settlement: input.receipt.settlement,\r\n result: input.receipt.result,\r\n },\r\n validation,\r\n settlement: input.settlement,\r\n timelineEvents: input.timelineEvents,\r\n },\r\n proofTier,\r\n currentPhase,\r\n message,\r\n };\r\n}\r\n","/**\r\n * @fileoverview Portfolio watch while away — agent-in-host teaching flow (Update 6).\r\n */\r\n\r\nimport type { AllocationComparisonRow } from \"./allocation.js\";\r\nimport type { ExecutionReceipt } from \"../types/execution.js\";\r\nimport type { MarketEvent } from \"../types/market.js\";\r\nimport type { ObjectiveHealth } from \"../types/health.js\";\r\nimport type { Objective } from \"../types/objective.js\";\r\nimport type { TimelineEvent } from \"../types/timeline.js\";\r\nimport { buildPolicySummary } from \"../validation/objective-input.js\";\r\n\r\nexport type AgentHost = \"cursor\" | \"claude\" | \"mcp\";\r\n\r\nexport type PortfolioWatchPhase =\r\n | \"watch_registered\"\r\n | \"while_away\"\r\n | \"return_briefing\";\r\n\r\n/** Default consumer brief for Update 6 demos. */\r\nexport const DEFAULT_PORTFOLIO_WATCH_BRIEF =\r\n \"Watch my portfolio while I'm away — keep about 20% in stable assets.\";\r\n\r\nexport interface PortfolioWatchFlow {\r\n objectiveId: string;\r\n userBrief: string;\r\n host: AgentHost;\r\n phases: {\r\n register: {\r\n objectiveName: string;\r\n automationMode: string;\r\n policySummary: string;\r\n health: ObjectiveHealth;\r\n allocationRow?: AllocationComparisonRow;\r\n };\r\n whileAway?: {\r\n marketEventName: string;\r\n symbol: string;\r\n priceChangeRatio: number;\r\n healthBefore: ObjectiveHealth;\r\n healthAfter: ObjectiveHealth;\r\n autoRestored: boolean;\r\n receipt?: ExecutionReceipt;\r\n };\r\n briefing: {\r\n health: ObjectiveHealth;\r\n timelineEventCount: number;\r\n timelineEvents: TimelineEvent[];\r\n summaryLines: string[];\r\n };\r\n };\r\n currentPhase: PortfolioWatchPhase;\r\n message: string;\r\n}\r\n\r\nfunction isOffPlan(state: ObjectiveHealth[\"state\"]): boolean {\r\n return state === \"warning\" || state === \"violation\";\r\n}\r\n\r\n/**\r\n * Infers portfolio-watch phase from register + optional while-away data.\r\n */\r\nexport function inferPortfolioWatchPhase(input: {\r\n registerHealth: ObjectiveHealth;\r\n whileAway?: PortfolioWatchFlow[\"phases\"][\"whileAway\"];\r\n}): PortfolioWatchPhase {\r\n if (input.whileAway) return \"return_briefing\";\r\n if (isOffPlan(input.registerHealth.state)) return \"while_away\";\r\n return \"watch_registered\";\r\n}\r\n\r\n/**\r\n * Builds human-readable briefing lines for agent hosts (Cursor / Claude).\r\n */\r\nexport function buildPortfolioWatchBriefingLines(input: {\r\n userBrief: string;\r\n host: AgentHost;\r\n objective: Objective;\r\n registerHealth: ObjectiveHealth;\r\n briefingHealth: ObjectiveHealth;\r\n whileAway?: PortfolioWatchFlow[\"phases\"][\"whileAway\"];\r\n timelineEvents: TimelineEvent[];\r\n}): string[] {\r\n const hostLabel =\r\n input.host === \"cursor\"\r\n ? \"Cursor\"\r\n : input.host === \"claude\"\r\n ? \"Claude\"\r\n : \"MCP agent\";\r\n const lines: string[] = [\r\n `You asked ${hostLabel} to watch your portfolio while away.`,\r\n `Policy registered: ${input.objective.name} (${input.objective.automationMode ?? \"auto\"} mode).`,\r\n ];\r\n\r\n if (input.whileAway) {\r\n lines.push(\r\n `While away: ${input.whileAway.symbol} moved ${(input.whileAway.priceChangeRatio * 100).toFixed(0)}% — health went from ${input.whileAway.healthBefore.state} to ${input.whileAway.healthAfter.state}.`\r\n );\r\n if (input.whileAway.autoRestored && input.whileAway.receipt) {\r\n lines.push(\r\n `Automatic restore ran — settlement ${input.whileAway.receipt.settlement}. Receipt id ${input.whileAway.receipt.id}.`\r\n );\r\n } else if (input.whileAway.autoRestored) {\r\n lines.push(\"Automatic restore ran — check executions for receipt.\");\r\n } else {\r\n lines.push(\"No automatic restore fired — review health and restore plan.\");\r\n }\r\n } else if (isOffPlan(input.briefingHealth.state)) {\r\n lines.push(\r\n `Portfolio is off-plan (${input.briefingHealth.state}) — agent should surface restore options.`\r\n );\r\n } else {\r\n lines.push(\"Portfolio remains within policy — no action required.\");\r\n }\r\n\r\n if (input.timelineEvents.length > 0) {\r\n const types = [...new Set(input.timelineEvents.map((e) => e.type))].slice(\r\n 0,\r\n 4\r\n );\r\n lines.push(`Timeline: ${input.timelineEvents.length} recent event(s) — ${types.join(\", \")}.`);\r\n }\r\n\r\n lines.push(`Current health: ${input.briefingHealth.state}.`);\r\n return lines;\r\n}\r\n\r\n/**\r\n * Builds the portfolio watch teaching shape for agent-in-host demos.\r\n */\r\nexport function buildPortfolioWatchFlow(input: {\r\n userBrief: string;\r\n host: AgentHost;\r\n objective: Objective;\r\n registerHealth: ObjectiveHealth;\r\n registerRow?: AllocationComparisonRow;\r\n whileAway?: {\r\n marketEvent: MarketEvent;\r\n healthBefore: ObjectiveHealth;\r\n healthAfter: ObjectiveHealth;\r\n autoRestored: boolean;\r\n receipt?: ExecutionReceipt;\r\n };\r\n briefingHealth: ObjectiveHealth;\r\n timelineEvents: TimelineEvent[];\r\n}): PortfolioWatchFlow {\r\n const targetWeight =\r\n input.objective.policy?.targetWeight ??\r\n input.registerHealth.targetMetric ??\r\n 0;\r\n const tolerance = input.objective.policy?.tolerance ?? 0.02;\r\n const policySummary =\r\n input.objective.policy?.summary ??\r\n buildPolicySummary(input.objective.kind, targetWeight, tolerance);\r\n\r\n const whileAway = input.whileAway\r\n ? {\r\n marketEventName: input.whileAway.marketEvent.name,\r\n symbol: input.whileAway.marketEvent.symbol,\r\n priceChangeRatio: input.whileAway.marketEvent.priceChangeRatio,\r\n healthBefore: input.whileAway.healthBefore,\r\n healthAfter: input.whileAway.healthAfter,\r\n autoRestored: input.whileAway.autoRestored,\r\n receipt: input.whileAway.receipt,\r\n }\r\n : undefined;\r\n\r\n const summaryLines = buildPortfolioWatchBriefingLines({\r\n userBrief: input.userBrief,\r\n host: input.host,\r\n objective: input.objective,\r\n registerHealth: input.registerHealth,\r\n briefingHealth: input.briefingHealth,\r\n whileAway,\r\n timelineEvents: input.timelineEvents,\r\n });\r\n\r\n const currentPhase = inferPortfolioWatchPhase({\r\n registerHealth: input.registerHealth,\r\n whileAway,\r\n });\r\n\r\n let message =\r\n \"Tell your agent to watch the portfolio — intent becomes an Automatic objective, then read health and timeline when you return.\";\r\n if (currentPhase === \"return_briefing\" && whileAway?.autoRestored) {\r\n message =\r\n \"While you were away, the market moved and Automatic mode restored policy. Review the briefing — not a blank check, a registered rule.\";\r\n } else if (currentPhase === \"while_away\" || isOffPlan(input.briefingHealth.state)) {\r\n message =\r\n \"Portfolio drifted off-plan. The agent should report health and restore options — not discretionary trades.\";\r\n }\r\n\r\n return {\r\n objectiveId: input.objective.id,\r\n userBrief: input.userBrief,\r\n host: input.host,\r\n phases: {\r\n register: {\r\n objectiveName: input.objective.name,\r\n automationMode: input.objective.automationMode ?? \"auto\",\r\n policySummary,\r\n health: input.registerHealth,\r\n allocationRow: input.registerRow,\r\n },\r\n whileAway,\r\n briefing: {\r\n health: input.briefingHealth,\r\n timelineEventCount: input.timelineEvents.length,\r\n timelineEvents: input.timelineEvents,\r\n summaryLines,\r\n },\r\n },\r\n currentPhase,\r\n message,\r\n };\r\n}\r\n\r\n/**\r\n * Read-only portfolio watch snapshot from current objective state.\r\n */\r\nexport function buildPortfolioWatchFlowFromSnapshot(input: {\r\n userBrief: string;\r\n host: AgentHost;\r\n objective: Objective;\r\n health: ObjectiveHealth;\r\n allocationRow?: AllocationComparisonRow;\r\n latestReceipt?: ExecutionReceipt;\r\n timelineEvents: TimelineEvent[];\r\n}): PortfolioWatchFlow {\r\n return buildPortfolioWatchFlow({\r\n userBrief: input.userBrief,\r\n host: input.host,\r\n objective: input.objective,\r\n registerHealth: input.health,\r\n registerRow: input.allocationRow,\r\n briefingHealth: input.health,\r\n timelineEvents: input.timelineEvents,\r\n });\r\n}\r\n","/**\r\n * @fileoverview Full AUREON loop teaching flow helpers.\r\n */\r\n\r\nimport type {\r\n AllocationComparisonRow,\r\n PlanParadoxResult,\r\n} from \"./allocation.js\";\r\nimport type { ReceiptVerificationFlow } from \"./receipt-verification.js\";\r\nimport { buildReceiptVerificationFlow } from \"./receipt-verification.js\";\r\nimport type { ExecutionReceipt } from \"../types/execution.js\";\r\nimport type { ObjectiveHealth } from \"../types/health.js\";\r\nimport type { Objective } from \"../types/objective.js\";\r\nimport { buildPolicySummary } from \"../validation/objective-input.js\";\r\n\r\nexport type FullAureonLoopPhase =\r\n | \"intent\"\r\n | \"plan_check\"\r\n | \"restored\"\r\n | \"verified\";\r\n\r\n/** Default brief for full-loop demos. */\r\nexport const DEFAULT_FULL_LOOP_BRIEF =\r\n \"Keep about 20% in stable assets — grow the book without abandoning the plan.\";\r\n\r\nexport interface FullAureonLoopFlow {\r\n objectiveId: string;\r\n userBrief: string;\r\n phases: {\r\n intent: {\r\n objectiveName: string;\r\n policySummary: string;\r\n automationMode: string;\r\n health: ObjectiveHealth;\r\n };\r\n planCheck: {\r\n baselineAligned: boolean;\r\n afterShock: {\r\n health: ObjectiveHealth;\r\n allocationRow?: AllocationComparisonRow;\r\n paradox: PlanParadoxResult;\r\n };\r\n };\r\n driftRestore: {\r\n healthBefore: ObjectiveHealth;\r\n healthAfter: ObjectiveHealth;\r\n receipt: ExecutionReceipt;\r\n settlement: string;\r\n };\r\n verification: ReceiptVerificationFlow;\r\n };\r\n currentPhase: FullAureonLoopPhase;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Infers loop phase from which stages are present.\r\n */\r\nexport function inferFullAureonLoopPhase(input: {\r\n hasRestore: boolean;\r\n verificationValid: boolean;\r\n}): FullAureonLoopPhase {\r\n if (input.hasRestore && input.verificationValid) return \"verified\";\r\n if (input.hasRestore) return \"restored\";\r\n return \"plan_check\";\r\n}\r\n\r\n/**\r\n * Builds the full AUREON loop teaching shape.\r\n */\r\nexport function buildFullAureonLoopFlow(input: {\r\n userBrief: string;\r\n objective: Objective;\r\n baselineHealth: ObjectiveHealth;\r\n afterShockHealth: ObjectiveHealth;\r\n afterShockRow?: AllocationComparisonRow;\r\n paradox: PlanParadoxResult;\r\n restoredHealth: ObjectiveHealth;\r\n receipt: ExecutionReceipt;\r\n verification?: ReceiptVerificationFlow;\r\n}): FullAureonLoopFlow {\r\n const targetWeight =\r\n input.objective.policy?.targetWeight ??\r\n input.baselineHealth.targetMetric ??\r\n 0;\r\n const tolerance = input.objective.policy?.tolerance ?? 0.02;\r\n const policySummary =\r\n input.objective.policy?.summary ??\r\n buildPolicySummary(input.objective.kind, targetWeight, tolerance);\r\n\r\n const verification =\r\n input.verification ??\r\n buildReceiptVerificationFlow({ receipt: input.receipt });\r\n\r\n const currentPhase = inferFullAureonLoopPhase({\r\n hasRestore: true,\r\n verificationValid: verification.phases.validation.valid,\r\n });\r\n\r\n let message =\r\n \"We're not building another portfolio tracker. AUREON registers intent, checks the plan, restores when off-plan, and verifies the receipt.\";\r\n if (!verification.phases.validation.valid) {\r\n message =\r\n \"Loop completed restore, but the receipt failed validation — do not treat success text as proof.\";\r\n } else if (verification.proofTier === \"chain_verified\") {\r\n message =\r\n \"Full loop complete: intent → plan check → restore → chain-verified receipt. Not a tracker — a Financial Compass.\";\r\n } else {\r\n message =\r\n \"Full loop complete: intent → plan check → restore → schema-valid receipt. We're not building another portfolio tracker.\";\r\n }\r\n\r\n return {\r\n objectiveId: input.objective.id,\r\n userBrief: input.userBrief,\r\n phases: {\r\n intent: {\r\n objectiveName: input.objective.name,\r\n policySummary,\r\n automationMode: input.objective.automationMode ?? \"auto\",\r\n health: input.baselineHealth,\r\n },\r\n planCheck: {\r\n baselineAligned: input.baselineHealth.state === \"healthy\",\r\n afterShock: {\r\n health: input.afterShockHealth,\r\n allocationRow: input.afterShockRow,\r\n paradox: input.paradox,\r\n },\r\n },\r\n driftRestore: {\r\n healthBefore: input.afterShockHealth,\r\n healthAfter: input.restoredHealth,\r\n receipt: input.receipt,\r\n settlement: input.receipt.settlement,\r\n },\r\n verification,\r\n },\r\n currentPhase,\r\n message,\r\n };\r\n}\r\n\r\n/**\r\n * Read-only full-loop snapshot from current objective state + latest receipt.\r\n */\r\nexport function buildFullAureonLoopFlowFromSnapshot(input: {\r\n userBrief: string;\r\n objective: Objective;\r\n health: ObjectiveHealth;\r\n allocationRow?: AllocationComparisonRow;\r\n paradox: PlanParadoxResult;\r\n latestReceipt?: ExecutionReceipt;\r\n verification?: ReceiptVerificationFlow;\r\n}): FullAureonLoopFlow | null {\r\n if (!input.latestReceipt) return null;\r\n\r\n const verification =\r\n input.verification ??\r\n buildReceiptVerificationFlow({ receipt: input.latestReceipt });\r\n\r\n return buildFullAureonLoopFlow({\r\n userBrief: input.userBrief,\r\n objective: input.objective,\r\n baselineHealth: input.health,\r\n afterShockHealth: input.health,\r\n afterShockRow: input.allocationRow,\r\n paradox: input.paradox,\r\n restoredHealth: input.health,\r\n receipt: input.latestReceipt,\r\n verification,\r\n });\r\n}\r\n","/**\r\n * @fileoverview Financial audit trail — objective → registry → receipt → settlement.\r\n *\r\n * Joins what already exists. Never invents missing proof. Gaps stay labeled.\r\n */\r\n\r\nimport type { ExecutionReceipt } from \"../types/execution.js\";\r\nimport { formatReceiptSummary } from \"../types/execution.js\";\r\nimport type { ObjectiveHealth } from \"../types/health.js\";\r\nimport type { Objective } from \"../types/objective.js\";\r\nimport type {\r\n ObjectiveRegistryLookup,\r\n ObjectiveRegistryRecord,\r\n} from \"../types/registry.js\";\r\nimport type { SettlementRecord } from \"../types/settlement.js\";\r\nimport type { TimelineEvent } from \"../types/timeline.js\";\r\nimport { buildPolicySummary } from \"../validation/objective-input.js\";\r\nimport {\r\n validateExecutionReceipt,\r\n type ReceiptValidationResult,\r\n} from \"../validation/receipt-validator.js\";\r\n\r\nexport type AuditTrailGapCode =\r\n | \"not_registered\"\r\n | \"no_executions\"\r\n | \"no_settlements\"\r\n | \"staged_only\"\r\n | \"vault_unverified\"\r\n | \"invalid_receipt\"\r\n | \"no_timeline\"\r\n | \"lookup_failed\";\r\n\r\nexport interface AuditTrailGap {\r\n code: AuditTrailGapCode;\r\n message: string;\r\n}\r\n\r\nexport interface AuditTrailReceiptRow {\r\n id: string;\r\n action: string;\r\n settlement: \"vault\" | \"staged\";\r\n status: string;\r\n valid: boolean;\r\n verifiedOnChain: boolean;\r\n explorerUrl: string | null;\r\n summary: string;\r\n validation: ReceiptValidationResult;\r\n}\r\n\r\nexport interface FinancialAuditTrail {\r\n objectiveId: string;\r\n objectiveName: string;\r\n policySummary: string;\r\n healthState: string | null;\r\n generatedAt: string;\r\n registry: {\r\n present: boolean;\r\n record?: ObjectiveRegistryRecord;\r\n };\r\n receipts: AuditTrailReceiptRow[];\r\n settlements: SettlementRecord[];\r\n timeline: Array<{\r\n id: string;\r\n type: string;\r\n message: string;\r\n createdAt: string;\r\n executionId: string | null;\r\n }>;\r\n gaps: AuditTrailGap[];\r\n message: string;\r\n}\r\n\r\nexport function buildFinancialAuditTrail(input: {\r\n objective: Objective;\r\n health?: ObjectiveHealth;\r\n registry?: ObjectiveRegistryLookup;\r\n receipts: ExecutionReceipt[];\r\n settlements: SettlementRecord[];\r\n timeline: TimelineEvent[];\r\n generatedAt?: string;\r\n registryLookupFailed?: boolean;\r\n settlementsLookupFailed?: boolean;\r\n}): FinancialAuditTrail {\r\n const targetWeight = input.objective.policy?.targetWeight ?? 0;\r\n const tolerance = input.objective.policy?.tolerance ?? 0.02;\r\n const policySummary =\r\n input.objective.policy?.summary ??\r\n buildPolicySummary(input.objective.kind, targetWeight, tolerance);\r\n\r\n const registered =\r\n input.registry?.registered === true ? input.registry.record : undefined;\r\n\r\n const receipts = input.receipts.map((receipt) => {\r\n const validation = validateExecutionReceipt(receipt);\r\n return {\r\n id: receipt.id,\r\n action: receipt.action,\r\n settlement: receipt.settlement,\r\n status: receipt.status,\r\n valid: validation.valid,\r\n verifiedOnChain: receipt.verifiedOnChain === true,\r\n explorerUrl: receipt.explorerUrl ?? null,\r\n summary: formatReceiptSummary(receipt),\r\n validation,\r\n };\r\n });\r\n\r\n const timeline = input.timeline.map((event) => ({\r\n id: event.id,\r\n type: event.type,\r\n message: event.message,\r\n createdAt: event.createdAt,\r\n executionId:\r\n typeof event.payload?.executionId === \"string\"\r\n ? event.payload.executionId\r\n : null,\r\n }));\r\n\r\n const gaps: AuditTrailGap[] = [];\r\n if (input.registryLookupFailed || input.settlementsLookupFailed) {\r\n const parts = [\r\n input.registryLookupFailed ? \"Registry lookup failed.\" : null,\r\n input.settlementsLookupFailed ? \"Settlement lookup failed.\" : null,\r\n ].filter((part): part is string => Boolean(part));\r\n gaps.push({\r\n code: \"lookup_failed\",\r\n message: `${parts.join(\" \")} Do not treat this as a confirmed gap.`,\r\n });\r\n }\r\n if (!registered && !input.registryLookupFailed) {\r\n gaps.push({\r\n code: \"not_registered\",\r\n message: \"Objective is not registered on ObjectiveRegistry.\",\r\n });\r\n }\r\n if (receipts.length === 0) {\r\n gaps.push({\r\n code: \"no_executions\",\r\n message: \"No execution receipts for this objective.\",\r\n });\r\n } else {\r\n if (receipts.every((row) => row.settlement === \"staged\")) {\r\n gaps.push({\r\n code: \"staged_only\",\r\n message: \"Every receipt is staged. None are on-chain.\",\r\n });\r\n }\r\n if (\r\n receipts.some((row) => row.settlement === \"vault\" && !row.verifiedOnChain)\r\n ) {\r\n gaps.push({\r\n code: \"vault_unverified\",\r\n message:\r\n \"At least one vault receipt has no independent settlement record yet.\",\r\n });\r\n }\r\n if (receipts.some((row) => !row.valid)) {\r\n gaps.push({\r\n code: \"invalid_receipt\",\r\n message: \"At least one receipt failed local validation. Do not trust it.\",\r\n });\r\n }\r\n }\r\n const everyReceiptStaged =\r\n receipts.length > 0 && receipts.every((row) => row.settlement === \"staged\");\r\n if (\r\n input.settlements.length === 0 &&\r\n !input.settlementsLookupFailed &&\r\n !everyReceiptStaged\r\n ) {\r\n gaps.push({\r\n code: \"no_settlements\",\r\n message: \"No chain settlement records linked to this objective.\",\r\n });\r\n }\r\n if (timeline.length === 0) {\r\n gaps.push({\r\n code: \"no_timeline\",\r\n message: \"No timeline events for this objective.\",\r\n });\r\n }\r\n\r\n return {\r\n objectiveId: input.objective.id,\r\n objectiveName: input.objective.name,\r\n policySummary,\r\n healthState: input.health?.state ?? null,\r\n generatedAt: input.generatedAt ?? new Date().toISOString(),\r\n registry: registered\r\n ? { present: true, record: registered }\r\n : { present: false },\r\n receipts,\r\n settlements: input.settlements,\r\n timeline,\r\n gaps,\r\n message: auditTrailMessage({\r\n registered: Boolean(registered),\r\n receiptCount: receipts.length,\r\n settlementCount: input.settlements.length,\r\n invalid: receipts.some((row) => !row.valid),\r\n chainVerified: receipts.some((row) => row.verifiedOnChain),\r\n }),\r\n };\r\n}\r\n\r\nexport function formatAuditTrailLines(trail: FinancialAuditTrail): string[] {\r\n const lines = [\r\n `Objective ${trail.objectiveName} (${trail.objectiveId})`,\r\n `Policy ${trail.policySummary}`,\r\n `Health ${trail.healthState ?? \"unknown\"}`,\r\n `Registry ${trail.registry.present ? \"registered on-chain\" : \"not registered\"}`,\r\n `Receipts ${trail.receipts.length}`,\r\n `Settlements ${trail.settlements.length}`,\r\n `Timeline ${trail.timeline.length}`,\r\n ];\r\n if (trail.gaps.length > 0) {\r\n lines.push(\"Gaps\");\r\n for (const gap of trail.gaps) {\r\n lines.push(` - ${gap.message}`);\r\n }\r\n }\r\n lines.push(trail.message);\r\n return lines;\r\n}\r\n\r\nfunction auditTrailMessage(input: {\r\n registered: boolean;\r\n receiptCount: number;\r\n settlementCount: number;\r\n invalid: boolean;\r\n chainVerified: boolean;\r\n}): string {\r\n if (input.invalid) {\r\n return \"Audit trail assembled with dishonest or incomplete receipts. Do not treat success text as proof.\";\r\n }\r\n if (input.receiptCount === 0) {\r\n return \"Audit trail shows the objective only. No restore has been recorded yet.\";\r\n }\r\n if (input.chainVerified && input.registered) {\r\n return \"Audit trail complete on testnet: registered objective, receipts, and chain settlement. Not mainnet.\";\r\n }\r\n if (input.chainVerified) {\r\n return \"Receipts include chain settlement proof. Objective is not registered on-chain.\";\r\n }\r\n if (input.settlementCount === 0) {\r\n return \"Audit trail shows receipts without chain settlement records. Staged or unverified vault — not independent proof.\";\r\n }\r\n return \"Audit trail assembled from what exists. Gaps are labeled. Nothing missing was invented.\";\r\n}\r\n","/**\r\n * @fileoverview Financial intent → objective → portfolio flow helpers.\r\n */\r\n\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport type { ObjectiveHealth } from \"../types/health.js\";\r\nimport type {\r\n CreateObjectiveInput,\r\n Objective,\r\n ObjectiveKind,\r\n ObjectivePriority,\r\n} from \"../types/objective.js\";\r\nimport type { PortfolioPosition, PortfolioSnapshot } from \"../types/portfolio.js\";\r\nimport { buildPolicySummary } from \"../validation/objective-input.js\";\r\n\r\nexport interface FinancialIntent {\r\n /** User or agent wording — what they want money to do. */\r\n brief: string;\r\n kind: ObjectiveKind;\r\n targetWeight: number;\r\n tolerance: number;\r\n targetSymbol?: string;\r\n name?: string;\r\n priority?: ObjectivePriority;\r\n}\r\n\r\nexport interface ObjectivePortfolioFlow {\r\n intent: { brief: string; policySummary: string };\r\n objective: Objective;\r\n health: ObjectiveHealth | null;\r\n portfolio: {\r\n totalNotionalUsd: number;\r\n stableWeight: number;\r\n positions: PortfolioPosition[];\r\n };\r\n message: string;\r\n}\r\n\r\nconst DEFAULT_TOLERANCE = 0.02;\r\n\r\nfunction defaultName(intent: FinancialIntent): string {\r\n if (intent.name?.trim()) return intent.name.trim();\r\n const pct = (intent.targetWeight * 100).toFixed(0);\r\n switch (intent.kind) {\r\n case \"stable_allocation\":\r\n return `Maintain ${pct}% Stable Assets`;\r\n case \"balanced_portfolio\":\r\n return `Maintain ${pct}% ${intent.targetSymbol ?? \"Sleeve\"}`;\r\n case \"risk_ceiling\":\r\n return `Risk ceiling policy`;\r\n case \"reward_reinvestment\":\r\n return `Reinvest rewards toward ${pct}%`;\r\n default:\r\n return intent.brief.slice(0, 64);\r\n }\r\n}\r\n\r\n/**\r\n * Maps agent-extracted intent into a create-objective payload.\r\n */\r\nexport function resolveObjectiveFromIntent(\r\n intent: FinancialIntent\r\n): CreateObjectiveInput {\r\n const brief = intent.brief?.trim();\r\n if (!brief || brief.length < 3) {\r\n throw new AureonValidationError(\"Intent brief must be at least 3 characters\");\r\n }\r\n if (intent.targetWeight < 0 || intent.targetWeight > 1) {\r\n throw new AureonValidationError(\"targetWeight must be between 0 and 1\");\r\n }\r\n const tolerance = intent.tolerance ?? DEFAULT_TOLERANCE;\r\n if (tolerance < 0 || tolerance > 0.5) {\r\n throw new AureonValidationError(\"tolerance must be between 0 and 0.5\");\r\n }\r\n\r\n const base: CreateObjectiveInput = {\r\n name: defaultName(intent),\r\n kind: intent.kind,\r\n targetWeight: intent.targetWeight,\r\n tolerance,\r\n priority: intent.priority ?? \"high\",\r\n automationMode: \"auto\",\r\n };\r\n\r\n if (intent.kind === \"balanced_portfolio\") {\r\n const symbol = intent.targetSymbol?.trim().toUpperCase();\r\n if (!symbol) {\r\n throw new AureonValidationError(\r\n \"balanced_portfolio intent requires targetSymbol\"\r\n );\r\n }\r\n return { ...base, targetSymbol: symbol };\r\n }\r\n\r\n return base;\r\n}\r\n\r\n/**\r\n * Builds the AI → objective → portfolio teaching shape after create + read.\r\n */\r\nexport function buildObjectivePortfolioFlow(\r\n intent: FinancialIntent,\r\n objective: Objective,\r\n health: ObjectiveHealth | null,\r\n portfolio: PortfolioSnapshot\r\n): ObjectivePortfolioFlow {\r\n const policySummary =\r\n objective.policy?.summary ??\r\n buildPolicySummary(intent.kind, intent.targetWeight, intent.tolerance);\r\n\r\n const state = health?.state ?? \"paused\";\r\n const current = health?.currentMetric;\r\n const target = health?.targetMetric ?? intent.targetWeight;\r\n\r\n let message =\r\n \"Intent registered as objective. Portfolio is now scored against that policy.\";\r\n if (health && state === \"healthy\") {\r\n message = `Portfolio aligns with intent — ${policySummary}.`;\r\n } else if (health && (state === \"warning\" || state === \"violation\")) {\r\n message = `Objective is active but portfolio is off-plan (${state}). Current ${((current ?? 0) * 100).toFixed(1)}% vs target ${(target * 100).toFixed(1)}%.`;\r\n }\r\n\r\n return {\r\n intent: { brief: intent.brief.trim(), policySummary },\r\n objective,\r\n health,\r\n portfolio: {\r\n totalNotionalUsd: portfolio.totalNotionalUsd,\r\n stableWeight: portfolio.stableWeight,\r\n positions: portfolio.positions,\r\n },\r\n message,\r\n };\r\n}\r\n\r\n/**\r\n * Lightweight rule-based parser for demo scripts.\r\n */\r\nexport function parseFinancialIntent(brief: string): FinancialIntent {\r\n const text = brief.trim();\r\n if (!text) {\r\n throw new AureonValidationError(\"Intent brief is required\");\r\n }\r\n\r\n const stableMatch = text.match(\r\n /(\\d+(?:\\.\\d+)?)\\s*%?\\s*(?:of\\s+(?:my\\s+)?portfolio\\s+in\\s+)?stable/i\r\n );\r\n if (stableMatch) {\r\n const pct = Number(stableMatch[1]) / 100;\r\n return {\r\n brief: text,\r\n kind: \"stable_allocation\",\r\n targetWeight: pct,\r\n tolerance: DEFAULT_TOLERANCE,\r\n };\r\n }\r\n\r\n const holdMatch = text.match(\r\n /(?:hold|keep|maintain)\\s+(?:about\\s+)?(\\d+(?:\\.\\d+)?)\\s*%?\\s*(?:in\\s+)?([A-Z]{2,10})/i\r\n );\r\n if (holdMatch) {\r\n const pct = Number(holdMatch[1]) / 100;\r\n const symbol = holdMatch[2]!.toUpperCase();\r\n if (symbol === \"STABLE\" || symbol === \"STABLES\") {\r\n return {\r\n brief: text,\r\n kind: \"stable_allocation\",\r\n targetWeight: pct,\r\n tolerance: DEFAULT_TOLERANCE,\r\n };\r\n }\r\n return {\r\n brief: text,\r\n kind: \"balanced_portfolio\",\r\n targetWeight: pct,\r\n tolerance: DEFAULT_TOLERANCE,\r\n targetSymbol: symbol,\r\n };\r\n }\r\n\r\n const pctOnly = text.match(/(\\d+(?:\\.\\d+)?)\\s*%/);\r\n if (pctOnly && /stable/i.test(text)) {\r\n return {\r\n brief: text,\r\n kind: \"stable_allocation\",\r\n targetWeight: Number(pctOnly[1]) / 100,\r\n tolerance: DEFAULT_TOLERANCE,\r\n };\r\n }\r\n\r\n throw new AureonValidationError(\r\n \"Could not parse intent from brief — supply structured FinancialIntent fields\"\r\n );\r\n}\r\n","/**\r\n * @fileoverview Maps HTTP responses into typed AureonError instances.\r\n */\r\n\r\nimport {\r\n AureonConflictError,\r\n AureonError,\r\n AureonNotFoundError,\r\n AureonValidationError,\r\n} from \"./base.js\";\r\nimport { defaultMessageForStatus } from \"./codes.js\";\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\r\n}\r\n\r\nfunction extractMessage(body: unknown): string | null {\r\n if (!isRecord(body)) return null;\r\n if (typeof body.message === \"string\") return body.message;\r\n if (typeof body.error === \"string\") return body.error;\r\n if (isRecord(body.error) && typeof body.error.message === \"string\") {\r\n return body.error.message;\r\n }\r\n return null;\r\n}\r\n\r\nexport function errorFromHttpStatus(status: number, body: unknown): AureonError {\r\n const message = extractMessage(body) ?? defaultMessageForStatus(status);\r\n const details = isRecord(body) ? body : { body };\r\n\r\n if (status === 400) return new AureonValidationError(message, details);\r\n if (status === 404) return new AureonNotFoundError(message, details);\r\n if (status === 409) return new AureonConflictError(message, details);\r\n if (status === 401 || status === 403) {\r\n return new AureonError(message, \"UNAUTHORIZED\", status, details);\r\n }\r\n if (status === 429) {\r\n return new AureonError(message, \"RATE_LIMITED\", status, details);\r\n }\r\n if (status >= 500) {\r\n return new AureonError(message, \"SERVER_ERROR\", status, details);\r\n }\r\n return new AureonError(message, \"UNEXPECTED_RESPONSE\", status, details);\r\n}\r\n\r\nexport function isAureonError(value: unknown): value is AureonError {\r\n return value instanceof AureonError;\r\n}\r\n","/**\r\n * @fileoverview URL helpers for the AUREON HTTP transport.\r\n */\r\n\r\nimport { AureonError } from \"../errors/base.js\";\r\n\r\nexport function joinUrl(baseUrl: string, path: string): string {\r\n const base = baseUrl.replace(/\\/+$/, \"\");\r\n const suffix = path.startsWith(\"/\") ? path : `/${path}`;\r\n return `${base}${suffix}`;\r\n}\r\n\r\nexport function assertBaseUrl(baseUrl: string): string {\r\n const trimmed = baseUrl.trim().replace(/\\/+$/, \"\");\r\n if (!/^https?:\\/\\//i.test(trimmed)) {\r\n throw new AureonError(\r\n \"baseUrl must be an absolute http(s) URL\",\r\n \"VALIDATION_ERROR\",\r\n 400,\r\n { baseUrl }\r\n );\r\n }\r\n return trimmed;\r\n}\r\n\r\nexport function withQuery(\r\n path: string,\r\n query: Record<string, string | undefined>\r\n): string {\r\n const params = new URLSearchParams();\r\n for (const [key, value] of Object.entries(query)) {\r\n if (value !== undefined && value !== \"\") params.set(key, value);\r\n }\r\n const qs = params.toString();\r\n if (!qs) return path;\r\n return path.includes(\"?\") ? `${path}&${qs}` : `${path}?${qs}`;\r\n}\r\n","/**\r\n * @fileoverview JSON HTTP transport used by AureonClient.\r\n */\r\n\r\nimport type { AureonLogger } from \"../adapters/logging-adapter.js\";\r\nimport {\r\n AureonError,\r\n AureonNetworkError,\r\n AureonTimeoutError,\r\n} from \"../errors/base.js\";\r\nimport { errorFromHttpStatus } from \"../errors/http.js\";\r\nimport { joinUrl } from \"./url.js\";\r\n\r\nexport interface TransportOptions {\r\n baseUrl: string;\r\n fetchImpl: typeof fetch;\r\n headers: Record<string, string>;\r\n timeoutMs: number;\r\n maxRetries?: number;\r\n retryDelayMs?: number;\r\n logger?: AureonLogger;\r\n getAccessToken?: () =>\r\n | string\r\n | null\r\n | undefined\r\n | Promise<string | null | undefined>;\r\n getApiKey?: () =>\r\n | string\r\n | null\r\n | undefined\r\n | Promise<string | null | undefined>;\r\n}\r\n\r\nexport interface RequestOptions {\r\n method?: string;\r\n body?: unknown;\r\n headers?: Record<string, string>;\r\n signal?: AbortSignal;\r\n}\r\n\r\nfunction safeParseJson(text: string): unknown {\r\n try {\r\n return JSON.parse(text);\r\n } catch {\r\n return { message: text };\r\n }\r\n}\r\n\r\nfunction isAbortError(error: unknown): boolean {\r\n return (\r\n (error instanceof DOMException && error.name === \"AbortError\") ||\r\n (error instanceof Error && error.name === \"AbortError\")\r\n );\r\n}\r\n\r\nfunction isRetryableError(error: unknown): boolean {\r\n if (error instanceof AureonNetworkError || error instanceof AureonTimeoutError) {\r\n return true;\r\n }\r\n if (error instanceof AureonError) {\r\n return (\r\n typeof error.status === \"number\" &&\r\n (error.status >= 500 || error.status === 429)\r\n );\r\n }\r\n return false;\r\n}\r\n\r\nfunction sleep(ms: number): Promise<void> {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n\r\nexport async function requestJson<T>(\r\n transport: TransportOptions,\r\n path: string,\r\n options: RequestOptions = {}\r\n): Promise<T> {\r\n const url = joinUrl(transport.baseUrl, path);\r\n const maxRetries = transport.maxRetries ?? 0;\r\n const retryDelayMs = transport.retryDelayMs ?? 250;\r\n let attempt = 0;\r\n\r\n while (true) {\r\n attempt += 1;\r\n const controller = new AbortController();\r\n const timeout = setTimeout(() => controller.abort(), transport.timeoutMs);\r\n const onAbort = () => controller.abort();\r\n\r\n if (options.signal) {\r\n if (options.signal.aborted) {\r\n clearTimeout(timeout);\r\n throw new AureonError(\"Request aborted\", \"ABORTED\");\r\n }\r\n options.signal.addEventListener(\"abort\", onAbort, { once: true });\r\n }\r\n\r\n try {\r\n const token = transport.getAccessToken\r\n ? await transport.getAccessToken()\r\n : null;\r\n const authHeaders: Record<string, string> = {};\r\n if (typeof token === \"string\" && token.trim().length > 0) {\r\n authHeaders.Authorization = `Bearer ${token.trim()}`;\r\n }\r\n\r\n const apiKey = transport.getApiKey\r\n ? await transport.getApiKey()\r\n : null;\r\n if (typeof apiKey === \"string\" && apiKey.trim().length > 0) {\r\n authHeaders[\"X-Aureon-Api-Key\"] = apiKey.trim();\r\n }\r\n\r\n transport.logger?.debug(\"aureon.request\", {\r\n method: options.method ?? (options.body !== undefined ? \"POST\" : \"GET\"),\r\n path,\r\n attempt,\r\n });\r\n\r\n const response = await transport.fetchImpl(url, {\r\n method: options.method ?? (options.body !== undefined ? \"POST\" : \"GET\"),\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n ...transport.headers,\r\n ...authHeaders,\r\n ...options.headers,\r\n },\r\n body:\r\n options.body !== undefined ? JSON.stringify(options.body) : undefined,\r\n signal: controller.signal,\r\n });\r\n\r\n const text = await response.text();\r\n const parsed = text.length > 0 ? safeParseJson(text) : null;\r\n\r\n if (!response.ok) {\r\n throw errorFromHttpStatus(response.status, parsed ?? { message: text });\r\n }\r\n\r\n return parsed as T;\r\n } catch (error) {\r\n if (error instanceof AureonError && !isRetryableError(error)) {\r\n throw error;\r\n }\r\n if (isAbortError(error)) {\r\n const timeoutError = new AureonTimeoutError(\r\n \"Request timed out or was aborted\",\r\n { url, timeoutMs: transport.timeoutMs }\r\n );\r\n if (attempt <= maxRetries) {\r\n transport.logger?.warn(\"aureon.retry\", {\r\n path,\r\n attempt,\r\n reason: \"timeout\",\r\n });\r\n await sleep(retryDelayMs);\r\n continue;\r\n }\r\n throw timeoutError;\r\n }\r\n if (error instanceof AureonError) {\r\n if (attempt <= maxRetries && isRetryableError(error)) {\r\n transport.logger?.warn(\"aureon.retry\", {\r\n path,\r\n attempt,\r\n code: error.code,\r\n status: error.status,\r\n });\r\n await sleep(retryDelayMs);\r\n continue;\r\n }\r\n throw error;\r\n }\r\n const networkError = new AureonNetworkError(\r\n error instanceof Error ? error.message : \"Network request failed\",\r\n { url }\r\n );\r\n if (attempt <= maxRetries) {\r\n transport.logger?.warn(\"aureon.retry\", {\r\n path,\r\n attempt,\r\n reason: \"network\",\r\n });\r\n await sleep(retryDelayMs);\r\n continue;\r\n }\r\n throw networkError;\r\n } finally {\r\n clearTimeout(timeout);\r\n if (options.signal) options.signal.removeEventListener(\"abort\", onAbort);\r\n }\r\n }\r\n}\r\n","/**\r\n * @fileoverview Client configuration types for AureonClient.\r\n */\r\n\r\nimport type { AureonLogger } from \"../adapters/logging-adapter.js\";\r\nimport { API_KEY_HEADER } from \"../constants/defaults.js\";\r\n\r\nexport interface AureonClientOptions {\r\n /**\r\n * Base URL of the AUREON API.\r\n * Defaults to `https://api.aureonlabs.network`.\r\n */\r\n baseUrl?: string;\r\n /**\r\n * Product API key sent as `X-Aureon-Api-Key` on every request.\r\n * Operator-issued keys (from the Developers console) also identify the\r\n * bound wallet for control-plane calls — no Bearer required.\r\n * Env bootstrap keys unlock product access only; they do not set identity.\r\n * The operator utility uses wallet Bearer only.\r\n */\r\n apiKey?: string | null;\r\n /**\r\n * Called before each request to resolve the product API key.\r\n * Prefer this for automations that load keys from env or a secret store.\r\n */\r\n getApiKey?: () => string | null | undefined | Promise<string | null | undefined>;\r\n /** Optional fetch implementation for non-browser runtimes. */\r\n fetch?: typeof fetch;\r\n /** Optional default headers merged into every request. */\r\n headers?: Record<string, string>;\r\n /** Request timeout in milliseconds. Defaults to 30000. */\r\n timeoutMs?: number;\r\n /**\r\n * Static Bearer session token. Prefer `getAccessToken` for apps that refresh\r\n * or clear sessions at runtime.\r\n */\r\n authToken?: string | null;\r\n /**\r\n * Called before each request to resolve the current Bearer token.\r\n * Return null/undefined to send the request without Authorization.\r\n */\r\n getAccessToken?: () => string | null | undefined | Promise<string | null | undefined>;\r\n /** Optional structured logger for request lifecycle diagnostics. */\r\n logger?: AureonLogger;\r\n /**\r\n * Extra attempts after the first failure for retryable errors\r\n * (network, timeout, 429, 5xx). Defaults to 0.\r\n */\r\n maxRetries?: number;\r\n /** Delay in ms between retries. Defaults to 250. */\r\n retryDelayMs?: number;\r\n}\r\n\r\nexport const DEFAULT_TIMEOUT_MS = 30_000;\r\n\r\nexport function resolveTimeoutMs(options: AureonClientOptions): number {\r\n const value = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\r\n if (!Number.isFinite(value) || value <= 0) {\r\n throw new Error(\"timeoutMs must be a positive finite number\");\r\n }\r\n return value;\r\n}\r\n\r\nexport function resolveHeaders(\r\n options: AureonClientOptions\r\n): Record<string, string> {\r\n const headers: Record<string, string> = { ...(options.headers ?? {}) };\r\n const key = options.apiKey?.trim();\r\n if (key) {\r\n headers[API_KEY_HEADER] = key;\r\n }\r\n return headers;\r\n}\r\n\r\nexport function resolveMaxRetries(options: AureonClientOptions): number {\r\n const value = options.maxRetries ?? 0;\r\n if (!Number.isInteger(value) || value < 0) {\r\n throw new Error(\"maxRetries must be a non-negative integer\");\r\n }\r\n return value;\r\n}\r\n\r\nexport function resolveRetryDelayMs(options: AureonClientOptions): number {\r\n const value = options.retryDelayMs ?? 250;\r\n if (!Number.isFinite(value) || value < 0) {\r\n throw new Error(\"retryDelayMs must be a non-negative finite number\");\r\n }\r\n return value;\r\n}\r\n","/**\r\n * @fileoverview Controlled market event types for operator demos and rehearsals.\r\n */\r\n\r\nexport interface MarketEvent {\r\n id: string;\r\n name: string;\r\n description: string;\r\n symbol: string;\r\n priceChangeRatio: number;\r\n appliedAt: string;\r\n}\r\n\r\nexport interface MarketPreset {\r\n name: string;\r\n description: string;\r\n symbol: string;\r\n priceChangeRatio: number;\r\n}\r\n\r\nexport interface ApplyMarketEventInput {\r\n name?: string;\r\n description?: string;\r\n symbol: string;\r\n priceChangeRatio: number;\r\n autoRestore?: boolean;\r\n}\r\n\r\nexport interface DashboardOverview {\r\n activeObjectives: number;\r\n healthyCount: number;\r\n warningCount: number;\r\n violationCount: number;\r\n pausedCount: number;\r\n totalNotionalUsd: number;\r\n stableWeight: number;\r\n /** Holdings count from the capital book. */\r\n assetCount: number;\r\n /** Absolute USD change vs prior UTC day snapshot; null when baseline only. */\r\n change24hUsd: number | null;\r\n /** Fractional change (0.05 = +5%); null when baseline only. */\r\n change24hPct: number | null;\r\n /** True when no prior-day snapshot exists yet. */\r\n change24hBaselineOnly: boolean;\r\n /** True when today's snapshot row exists. */\r\n change24hHasSnapshot: boolean;\r\n /** Average health score across non-paused objectives; null when none. */\r\n globalHealthScore: number | null;\r\n /** Persisted health samples (oldest → newest), up to ~90 days. */\r\n healthHistory: Array<{ at: string; score: number }>;\r\n /** warning + violation count. */\r\n attentionCount: number;\r\n /** Last successful live-mark watchdog evaluation (not overview poll). */\r\n lastEvaluationAt: string | null;\r\n /** lastEvaluationAt + watchdog interval when continuous monitor is configured. */\r\n nextEvaluationAt: string | null;\r\n watchdogIntervalMs: number | null;\r\n /** Last background/manual watchdog failure message, if any. */\r\n lastWatchdogError: string | null;\r\n lastSyncedAt: string | null;\r\n recentExecutions: import(\"./execution.js\").ExecutionReceipt[];\r\n recentEvents: import(\"./timeline.js\").TimelineEvent[];\r\n}\r\n\r\nexport function normalizeSymbol(symbol: string): string {\r\n return symbol.trim().toUpperCase();\r\n}\r\n\r\nexport function describeMarketMove(event: MarketEvent): string {\r\n const pct = (event.priceChangeRatio * 100).toFixed(2);\r\n return `${event.symbol} mark moved ${pct}% (${event.name})`;\r\n}\r\n","/**\r\n * @fileoverview Validation for controlled market event inputs.\r\n */\r\n\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport type { ApplyMarketEventInput } from \"../types/market.js\";\r\nimport { normalizeSymbol } from \"../types/market.js\";\r\n\r\nexport function normalizeApplyMarketEventInput(\r\n input: ApplyMarketEventInput\r\n): ApplyMarketEventInput {\r\n const symbol = normalizeSymbol(input.symbol ?? \"\");\r\n if (!symbol) throw new AureonValidationError(\"symbol is required\");\r\n if (!Number.isFinite(input.priceChangeRatio)) {\r\n throw new AureonValidationError(\"priceChangeRatio must be a finite number\");\r\n }\r\n if (input.priceChangeRatio <= -0.95) {\r\n throw new AureonValidationError(\r\n \"priceChangeRatio is too extreme for preview runtime\"\r\n );\r\n }\r\n return {\r\n ...input,\r\n symbol,\r\n autoRestore: input.autoRestore === true,\r\n name: input.name?.trim() || undefined,\r\n description: input.description?.trim() || undefined,\r\n };\r\n}\r\n","/**\r\n * @fileoverview AureonClient: primary entry point for @buildaureon/sdk.\r\n *\r\n * Typed HTTP client for the hosted AUREON API. Operator-issued API keys\r\n * (`X-Aureon-Api-Key`) identify the bound wallet for control-plane calls;\r\n * optional wallet Bearer sessions also work (Bearer wins when both are sent).\r\n * Env bootstrap keys unlock product access only.\r\n *\r\n * Objectives default to Automatic automation mode. Vault deposit and withdraw\r\n * are prepare-calldata steps for wallet signing; not server-side broadcasts.\r\n * Restorative execution receipts may use `settlement: \"vault\"` or\r\n * `settlement: \"staged\"` depending on the restore path.\r\n */\r\n\r\nimport { resolveFetch, userAgentHeader } from \"../adapters/fetch-adapter.js\";\r\nimport {\r\n DEFAULT_API_BASE_URL,\r\n SDK_VERSION,\r\n} from \"../constants/defaults.js\";\r\nimport {\r\n ENDPOINTS,\r\n developerApiKeyPath,\r\n objectivePath,\r\n objectivePausePath,\r\n objectiveResumePath,\r\n objectiveRestorePath,\r\n objectiveRestorePlanPath,\r\n registryObjectivePath,\r\n registryPreparePath,\r\n registryConfirmPath,\r\n executionSettlementPath,\r\n executionConfirmSettlementPath,\r\n} from \"../constants/endpoints.js\";\r\nimport { AureonValidationError } from \"../errors/base.js\";\r\nimport {\r\n buildAllocationComparison,\r\n detectPlanParadox,\r\n type AllocationComparisonRow,\r\n type PlanParadoxResult,\r\n} from \"../formatting/allocation.js\";\r\nimport {\r\n buildDriftRestoreFlow,\r\n buildDriftRestoreFlowFromSnapshot,\r\n type DriftRestoreFlow,\r\n} from \"../formatting/drift-restore.js\";\r\nimport {\r\n buildReceiptVerificationFlow,\r\n type ReceiptVerificationFlow,\r\n} from \"../formatting/receipt-verification.js\";\r\nimport {\r\n buildPortfolioWatchFlow,\r\n buildPortfolioWatchFlowFromSnapshot,\r\n DEFAULT_PORTFOLIO_WATCH_BRIEF,\r\n type AgentHost,\r\n type PortfolioWatchFlow,\r\n} from \"../formatting/portfolio-watch.js\";\r\nimport {\r\n buildFullAureonLoopFlow,\r\n buildFullAureonLoopFlowFromSnapshot,\r\n DEFAULT_FULL_LOOP_BRIEF,\r\n type FullAureonLoopFlow,\r\n} from \"../formatting/full-aureon-loop.js\";\r\nimport {\r\n buildFinancialAuditTrail,\r\n type FinancialAuditTrail,\r\n} from \"../formatting/audit-trail.js\";\r\nimport {\r\n buildObjectivePortfolioFlow,\r\n resolveObjectiveFromIntent,\r\n type FinancialIntent,\r\n type ObjectivePortfolioFlow,\r\n} from \"../formatting/intent.js\";\r\nimport {\r\n assertBaseUrl,\r\n requestJson,\r\n withQuery,\r\n type TransportOptions,\r\n} from \"../transport/index.js\";\r\nimport type { AureonClientOptions } from \"../types/client-options.js\";\r\nimport {\r\n resolveHeaders,\r\n resolveMaxRetries,\r\n resolveRetryDelayMs,\r\n resolveTimeoutMs,\r\n} from \"../types/client-options.js\";\r\nimport type { ExecutionReceipt, RestorePlan } from \"../types/execution.js\";\r\nimport {\r\n findTimelineEventsForReceipt,\r\n sortExecutionsNewestFirst,\r\n} from \"../types/execution.js\";\r\nimport type {\r\n ExecutionSettlementLookup,\r\n SettlementRecord,\r\n} from \"../types/settlement.js\";\r\nimport type {\r\n ObjectiveRegistryLookup,\r\n ObjectiveRegistryRecord,\r\n PrepareRegistryResult,\r\n RegistryStatus,\r\n} from \"../types/registry.js\";\r\nimport type { ObjectiveHealth } from \"../types/health.js\";\r\nimport type {\r\n ApplyMarketEventInput,\r\n DashboardOverview,\r\n MarketEvent,\r\n MarketPreset,\r\n} from \"../types/market.js\";\r\nimport type {\r\n CreateObjectiveInput,\r\n Objective,\r\n UpdateObjectiveInput,\r\n} from \"../types/objective.js\";\r\nimport type { PortfolioPositionInput, PortfolioSnapshot } from \"../types/portfolio.js\";\r\nimport type {\r\n VaultDepositSymbol,\r\n VaultOverview,\r\n VaultPrepareResult,\r\n VaultStatus,\r\n} from \"../types/vault.js\";\r\nimport type { WatchdogRefreshResult } from \"../types/watchdog.js\";\r\nimport type { TimelineEvent } from \"../types/timeline.js\";\r\nimport { normalizeApplyMarketEventInput } from \"../validation/market-input.js\";\r\nimport {\r\n assertId,\r\n normalizeCreateObjectiveInput,\r\n normalizeUpdateObjectiveInput,\r\n} from \"../validation/objective-input.js\";\r\nimport { validateExecutionReceipt } from \"../validation/receipt-validator.js\";\r\n\r\n/** Shared capital book for content-arc demos (~20% stables). */\r\nconst DEMO_DRIFT_RESTORE_POSITIONS: PortfolioPositionInput[] = [\r\n {\r\n symbol: \"USDG\",\r\n name: \"Paxos USDG\",\r\n category: \"stable\",\r\n quantity: 24_000,\r\n markPriceUsd: 1,\r\n },\r\n {\r\n symbol: \"NVDA\",\r\n name: \"NVIDIA Stock Token\",\r\n category: \"stock_token\",\r\n quantity: 45,\r\n markPriceUsd: 920,\r\n },\r\n {\r\n symbol: \"AAPL\",\r\n name: \"Apple Stock Token\",\r\n category: \"stock_token\",\r\n quantity: 80,\r\n markPriceUsd: 210,\r\n },\r\n {\r\n symbol: \"ETH\",\r\n name: \"Ether\",\r\n category: \"gas\",\r\n quantity: 8.5,\r\n markPriceUsd: 3400,\r\n },\r\n];\r\n\r\nexport interface AuthNonceResponse {\r\n walletAddress: string;\r\n nonce: string;\r\n message: string;\r\n expiresAt: string;\r\n}\r\n\r\nexport interface AuthSessionResponse {\r\n token: string;\r\n walletAddress: string;\r\n expiresAt: string;\r\n sessionId: string;\r\n mode?: string;\r\n}\r\n\r\nexport interface AuthMeResponse {\r\n walletAddress: string;\r\n}\r\n\r\nexport interface SyncPortfolioResult {\r\n portfolio: PortfolioSnapshot;\r\n chainId: number;\r\n skippedZero: string[];\r\n}\r\n\r\nexport interface DeveloperApiKey {\r\n id: string;\r\n name: string;\r\n prefix: string;\r\n status: string;\r\n createdAt: string;\r\n revokedAt: string | null;\r\n}\r\n\r\nexport interface CreatedDeveloperApiKey extends DeveloperApiKey {\r\n /** Plaintext secret; only returned once at creation. */\r\n secret: string;\r\n}\r\n\r\n/**\r\n * High-level SDK client for AUREON operator and developer integrations.\r\n */\r\nexport class AureonClient {\r\n private readonly transport: TransportOptions;\r\n\r\n constructor(options: AureonClientOptions = {}) {\r\n const baseUrl = options.baseUrl ?? DEFAULT_API_BASE_URL;\r\n\r\n const staticToken = options.authToken;\r\n const getAccessToken =\r\n options.getAccessToken ??\r\n (staticToken\r\n ? () => staticToken\r\n : undefined);\r\n\r\n const staticApiKey = options.apiKey;\r\n const getApiKey =\r\n options.getApiKey ??\r\n (staticApiKey\r\n ? () => staticApiKey\r\n : undefined);\r\n\r\n this.transport = {\r\n baseUrl: assertBaseUrl(baseUrl),\r\n fetchImpl: resolveFetch(options.fetch),\r\n headers: {\r\n ...userAgentHeader(SDK_VERSION),\r\n ...resolveHeaders({ ...options, apiKey: undefined }),\r\n },\r\n timeoutMs: resolveTimeoutMs(options),\r\n maxRetries: resolveMaxRetries(options),\r\n retryDelayMs: resolveRetryDelayMs(options),\r\n logger: options.logger,\r\n getAccessToken,\r\n getApiKey,\r\n };\r\n }\r\n\r\n /** Returns the resolved API base URL. */\r\n get baseUrl(): string {\r\n return this.transport.baseUrl;\r\n }\r\n\r\n /** Health probe for connectivity checks. No auth required. */\r\n async ping(): Promise<{ ok: true; service: string; version: string }> {\r\n return requestJson(this.transport, ENDPOINTS.healthz);\r\n }\r\n\r\n /**\r\n * Requests a single-use wallet auth nonce/message for the given address.\r\n * No Bearer token required.\r\n */\r\n async getAuthNonce(address: string): Promise<AuthNonceResponse> {\r\n const trimmed = address?.trim();\r\n if (!trimmed) {\r\n throw new AureonValidationError(\"address is required\");\r\n }\r\n return requestJson(\r\n this.transport,\r\n withQuery(ENDPOINTS.authNonce, { address: trimmed })\r\n );\r\n }\r\n\r\n /**\r\n * Verifies a wallet signature and returns a Bearer session.\r\n * No Bearer token required on the request itself.\r\n */\r\n async verifyWallet(input: {\r\n address: string;\r\n message: string;\r\n signature: string;\r\n inviteCode?: string;\r\n }): Promise<AuthSessionResponse> {\r\n const address = input.address?.trim();\r\n const message = input.message?.trim();\r\n const signature = input.signature?.trim();\r\n const inviteCode = input.inviteCode?.trim();\r\n if (!address || !message || !signature) {\r\n throw new AureonValidationError(\r\n \"address, message, and signature are required\"\r\n );\r\n }\r\n return requestJson(this.transport, ENDPOINTS.authVerify, {\r\n method: \"POST\",\r\n body: { address, message, signature, inviteCode },\r\n });\r\n }\r\n\r\n /**\r\n * Local preview login without a wallet signature.\r\n * Only succeeds when the backend has `AUREON_ALLOW_DEV_LOGIN=1`.\r\n */\r\n async devLogin(): Promise<AuthSessionResponse> {\r\n return requestJson(this.transport, ENDPOINTS.authDevLogin, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Revokes the current Bearer session on the server. */\r\n async logout(): Promise<{ ok: true }> {\r\n return requestJson(this.transport, ENDPOINTS.authLogout, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Returns the wallet bound to the current Bearer session. Auth required. */\r\n async me(): Promise<AuthMeResponse> {\r\n return requestJson(this.transport, ENDPOINTS.authMe);\r\n }\r\n\r\n /**\r\n * Creates and activates a Financial Compass Objective (FCO).\r\n * SDK / agent path always prefers Automatic (`automationMode` omitted → `\"auto\"`).\r\n * Mode cannot be changed later via `updateObjective`; recreate instead.\r\n * Passing `\"manual\"` is reserved for the operator utility Approve UX.\r\n * Auth required.\r\n */\r\n async createObjective(input: CreateObjectiveInput): Promise<Objective> {\r\n const body = normalizeCreateObjectiveInput(input);\r\n return requestJson(this.transport, ENDPOINTS.objectives, {\r\n method: \"POST\",\r\n body,\r\n });\r\n }\r\n\r\n /** Lists objectives for the authenticated wallet. Auth required. */\r\n async listObjectives(): Promise<Objective[]> {\r\n const result = await requestJson<{ objectives: Objective[] }>(\r\n this.transport,\r\n ENDPOINTS.objectives\r\n );\r\n return result.objectives;\r\n }\r\n\r\n /** Fetches a single objective by id. Auth required. */\r\n async getObjective(id: string): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n return requestJson(this.transport, objectivePath(id));\r\n }\r\n\r\n /**\r\n * Applies a partial update to an objective policy or metadata.\r\n * Does **not** accept `automationMode` or `targetSymbol` (both locked at create).\r\n * Auth required.\r\n */\r\n async updateObjective(\r\n id: string,\r\n input: UpdateObjectiveInput\r\n ): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n const body = normalizeUpdateObjectiveInput(input);\r\n return requestJson(this.transport, objectivePath(id), {\r\n method: \"PATCH\",\r\n body,\r\n });\r\n }\r\n\r\n /** Pauses continuous evaluation for an objective. Auth required. */\r\n async pauseObjective(id: string): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n return requestJson(this.transport, objectivePausePath(id), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Resumes evaluation for a paused objective. Auth required. */\r\n async resumeObjective(id: string): Promise<Objective> {\r\n assertId(id, \"objective id\");\r\n return requestJson(this.transport, objectiveResumePath(id), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Returns health for one objective or all objectives when id is omitted. Auth required. */\r\n async getHealth(objectiveId?: string): Promise<ObjectiveHealth[]> {\r\n const path = withQuery(ENDPOINTS.health, { objectiveId });\r\n const result = await requestJson<{ health: ObjectiveHealth[] }>(\r\n this.transport,\r\n path\r\n );\r\n return result.health;\r\n }\r\n\r\n /** Returns timeline events, optionally filtered by objective. Auth required. */\r\n async getTimeline(objectiveId?: string): Promise<TimelineEvent[]> {\r\n const path = withQuery(ENDPOINTS.timeline, { objectiveId });\r\n const result = await requestJson<{ events: TimelineEvent[] }>(\r\n this.transport,\r\n path\r\n );\r\n return result.events;\r\n }\r\n\r\n /** Returns the current portfolio snapshot for the wallet. Auth required. */\r\n async getPortfolio(): Promise<PortfolioSnapshot> {\r\n return requestJson(this.transport, ENDPOINTS.portfolio);\r\n }\r\n\r\n /**\r\n * Replaces the wallet capital book with the provided positions.\r\n * Auth required. Does not invent holdings: every row must be supplied.\r\n */\r\n async setPortfolio(\r\n positions: PortfolioPositionInput[]\r\n ): Promise<PortfolioSnapshot> {\r\n if (!Array.isArray(positions) || positions.length === 0) {\r\n throw new AureonValidationError(\"positions must be a non-empty array\");\r\n }\r\n const result = await requestJson<{ portfolio: PortfolioSnapshot }>(\r\n this.transport,\r\n ENDPOINTS.portfolio,\r\n { method: \"PUT\", body: { positions } }\r\n );\r\n return result.portfolio;\r\n }\r\n\r\n /**\r\n * Clears all capital-book positions for the authenticated wallet.\r\n * Auth required. Does not invent seeded holdings.\r\n */\r\n async clearPortfolio(): Promise<PortfolioSnapshot> {\r\n const result = await requestJson<{ portfolio: PortfolioSnapshot }>(\r\n this.transport,\r\n ENDPOINTS.portfolioClear,\r\n { method: \"POST\" }\r\n );\r\n return result.portfolio;\r\n }\r\n\r\n /**\r\n * Replaces the capital book with on-chain balances for the session wallet\r\n * (Robinhood Chain via the AUREON API). Vault balances merge into the book.\r\n * Requires a wallet Bearer session; SDK clients should also send an API key\r\n * when keys are enforced. Does not invent holdings; only positive balances\r\n * returned by the API.\r\n */\r\n async syncPortfolio(): Promise<SyncPortfolioResult> {\r\n return requestJson(this.transport, ENDPOINTS.portfolioSync, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /**\r\n * Refreshes portfolio marks from live public market data, re-evaluates\r\n * objectives, optionally fires breach webhooks, and returns restore suggestions.\r\n * Auth required.\r\n */\r\n async refreshWatchdog(): Promise<WatchdogRefreshResult> {\r\n return requestJson(this.transport, ENDPOINTS.watchdogRefresh, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Returns dashboard overview aggregates. Auth required. */\r\n async getOverview(): Promise<DashboardOverview> {\r\n return requestJson(this.transport, ENDPOINTS.overview);\r\n }\r\n\r\n /**\r\n * Objective vs actual portfolio — joins objectives, health, and overview\r\n * into comparison rows plus a green-book/off-plan paradox flag.\r\n * Auth required.\r\n */\r\n async getAllocationVsTarget(): Promise<{\r\n rows: AllocationComparisonRow[];\r\n paradox: PlanParadoxResult;\r\n overview: DashboardOverview;\r\n }> {\r\n const [overview, objectives, health] = await Promise.all([\r\n this.getOverview(),\r\n this.listObjectives(),\r\n this.getHealth(),\r\n ]);\r\n const rows = buildAllocationComparison(objectives, health);\r\n const paradox = detectPlanParadox(overview, health);\r\n return { rows, paradox, overview };\r\n }\r\n\r\n /**\r\n * Registers agent/user intent as an Automatic objective and returns the\r\n * AI → objective → portfolio flow snapshot.\r\n * Auth required.\r\n */\r\n async applyFinancialIntent(\r\n intent: FinancialIntent\r\n ): Promise<ObjectivePortfolioFlow> {\r\n const objective = await this.createObjective(\r\n resolveObjectiveFromIntent(intent)\r\n );\r\n try {\r\n await this.refreshWatchdog();\r\n } catch {\r\n // Watchdog may be unavailable in some environments; health still loads below.\r\n }\r\n const [healthRecords, portfolio] = await Promise.all([\r\n this.getHealth(objective.id),\r\n this.getPortfolio(),\r\n ]);\r\n return buildObjectivePortfolioFlow(\r\n intent,\r\n objective,\r\n healthRecords[0] ?? null,\r\n portfolio\r\n );\r\n }\r\n\r\n /**\r\n * Read-only AI → objective → portfolio flow for existing objectives.\r\n * Auth required.\r\n */\r\n async getObjectivePortfolioFlow(\r\n objectiveId?: string\r\n ): Promise<ObjectivePortfolioFlow[]> {\r\n const [objectives, healthRecords, portfolio] = await Promise.all([\r\n objectiveId\r\n ? [await this.getObjective(objectiveId)]\r\n : this.listObjectives(),\r\n this.getHealth(objectiveId),\r\n this.getPortfolio(),\r\n ]);\r\n\r\n const active = objectives.filter(\r\n (o) => o.status === \"active\" || o.status === \"validated\"\r\n );\r\n const healthById = new Map(healthRecords.map((h) => [h.objectiveId, h]));\r\n\r\n return active.map((objective) => {\r\n const health = healthById.get(objective.id) ?? null;\r\n const intent: FinancialIntent = {\r\n brief: objective.name,\r\n kind: objective.kind,\r\n targetWeight: objective.policy?.targetWeight ?? 0,\r\n tolerance: objective.policy?.tolerance ?? 0.02,\r\n targetSymbol: objective.policy?.targetSymbol,\r\n name: objective.name,\r\n priority: objective.priority,\r\n };\r\n return buildObjectivePortfolioFlow(\r\n intent,\r\n objective,\r\n health,\r\n portfolio\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Controlled drift → detection → restore demo\r\n * Seeds book, creates stable objective, applies NVDA rally with auto-restore\r\n * disabled, then runs manual restore and returns the three-beat flow.\r\n * Auth required.\r\n */\r\n async runDriftRestoreDemo(): Promise<DriftRestoreFlow> {\r\n await this.setPortfolio(DEMO_DRIFT_RESTORE_POSITIONS);\r\n\r\n const objective = await this.createObjective({\r\n name: \"Maintain 20% Stable Assets\",\r\n kind: \"stable_allocation\",\r\n targetWeight: 0.2,\r\n tolerance: 0.02,\r\n });\r\n\r\n try {\r\n await this.refreshWatchdog();\r\n } catch {\r\n // Watchdog may be unavailable; baseline health still loads below.\r\n }\r\n\r\n const [alignedHealthRecords, baselineRows] = await Promise.all([\r\n this.getHealth(objective.id),\r\n this.getAllocationVsTarget(),\r\n ]);\r\n const alignedHealth = alignedHealthRecords[0];\r\n if (!alignedHealth) {\r\n throw new AureonValidationError(\r\n \"Baseline health missing after objective create\"\r\n );\r\n }\r\n const alignedRow = baselineRows.rows.find(\r\n (r) => r.objectiveId === objective.id\r\n );\r\n\r\n await this.applyMarketEvent({\r\n name: \"NVDA Stock Token Rally\",\r\n description: \"Controlled mark move — drift demo\",\r\n symbol: \"NVDA\",\r\n priceChangeRatio: 0.45,\r\n autoRestore: false,\r\n });\r\n\r\n const [driftHealthRecords, driftRows, restorePlan] = await Promise.all([\r\n this.getHealth(objective.id),\r\n this.getAllocationVsTarget(),\r\n this.getRestorePlan(objective.id),\r\n ]);\r\n const driftHealth = driftHealthRecords[0];\r\n if (!driftHealth) {\r\n throw new AureonValidationError(\"Drift health missing after market event\");\r\n }\r\n const driftRow = driftRows.rows.find((r) => r.objectiveId === objective.id);\r\n\r\n const receipt = await this.restoreObjective(objective.id);\r\n\r\n const [restoredHealthRecords] = await Promise.all([\r\n this.getHealth(objective.id),\r\n ]);\r\n const restoredHealth = restoredHealthRecords[0];\r\n\r\n return buildDriftRestoreFlow({\r\n objective,\r\n alignedHealth,\r\n driftHealth,\r\n driftPlan: restorePlan,\r\n restoredHealth: restoredHealth ?? driftHealth,\r\n receipt,\r\n alignedRow,\r\n driftRow,\r\n });\r\n }\r\n\r\n /**\r\n * Read-only drift → detection → restore flow for active objectives.\r\n * Auth required.\r\n */\r\n async getDriftRestoreFlow(objectiveId?: string): Promise<DriftRestoreFlow[]> {\r\n const [objectives, healthRecords, allocation, executions] = await Promise.all([\r\n objectiveId\r\n ? [await this.getObjective(objectiveId)]\r\n : this.listObjectives(),\r\n this.getHealth(objectiveId),\r\n this.getAllocationVsTarget(),\r\n this.listExecutions(objectiveId),\r\n ]);\r\n\r\n const active = objectives.filter(\r\n (o) => o.status === \"active\" || o.status === \"validated\"\r\n );\r\n const healthById = new Map(healthRecords.map((h) => [h.objectiveId, h]));\r\n const rowById = new Map(\r\n allocation.rows.map((r) => [r.objectiveId, r])\r\n );\r\n const receiptsByObjective = new Map<string, ExecutionReceipt>();\r\n for (const receipt of sortExecutionsNewestFirst(executions)) {\r\n if (!receiptsByObjective.has(receipt.objectiveId)) {\r\n receiptsByObjective.set(receipt.objectiveId, receipt);\r\n }\r\n }\r\n\r\n const flows: DriftRestoreFlow[] = [];\r\n for (const objective of active) {\r\n const health = healthById.get(objective.id);\r\n if (!health) continue;\r\n\r\n let restorePlan: RestorePlan | undefined;\r\n if (health.state === \"warning\" || health.state === \"violation\") {\r\n try {\r\n restorePlan = await this.getRestorePlan(objective.id);\r\n } catch {\r\n // Plan unavailable when restore path is blocked.\r\n }\r\n }\r\n\r\n flows.push(\r\n buildDriftRestoreFlowFromSnapshot({\r\n objective,\r\n health,\r\n allocationRow: rowById.get(objective.id),\r\n restorePlan,\r\n latestReceipt: receiptsByObjective.get(objective.id),\r\n })\r\n );\r\n }\r\n\r\n return flows;\r\n }\r\n\r\n private async buildReceiptVerificationFlowForReceipt(\r\n receipt: ExecutionReceipt,\r\n timelineEvents?: TimelineEvent[]\r\n ): Promise<ReceiptVerificationFlow> {\r\n const validation = validateExecutionReceipt(receipt);\r\n\r\n let settlement: ExecutionSettlementLookup | undefined;\r\n if (receipt.settlement === \"vault\") {\r\n try {\r\n settlement = await this.getExecutionSettlement(receipt.id);\r\n } catch {\r\n // Settlement lookup unavailable — flow still reports validation tier.\r\n }\r\n }\r\n\r\n const events =\r\n timelineEvents ??\r\n findTimelineEventsForReceipt(\r\n await this.getTimeline(receipt.objectiveId),\r\n receipt\r\n );\r\n\r\n return buildReceiptVerificationFlow({\r\n receipt,\r\n validation,\r\n settlement,\r\n timelineEvents: events,\r\n });\r\n }\r\n\r\n /**\r\n * Controlled receipt → verification demo.\r\n * Runs drift-restore, then validates receipt and looks up settlement.\r\n * Auth required.\r\n */\r\n async runReceiptVerificationDemo(): Promise<ReceiptVerificationFlow> {\r\n const driftFlow = await this.runDriftRestoreDemo();\r\n const receipt = driftFlow.phases.restored?.receipt;\r\n if (!receipt) {\r\n throw new AureonValidationError(\r\n \"Restore receipt missing after drift-restore demo\"\r\n );\r\n }\r\n return this.buildReceiptVerificationFlowForReceipt(receipt);\r\n }\r\n\r\n /**\r\n * Read-only receipt → verification flow for execution receipts.\r\n * Auth required.\r\n */\r\n async getReceiptVerificationFlow(\r\n executionId?: string\r\n ): Promise<ReceiptVerificationFlow[]> {\r\n const executions = sortExecutionsNewestFirst(await this.listExecutions());\r\n const targets = executionId\r\n ? executions.filter((e) => e.id === executionId)\r\n : executions.slice(0, 5);\r\n\r\n if (targets.length === 0) {\r\n return [];\r\n }\r\n\r\n const timeline = await this.getTimeline();\r\n const flows: ReceiptVerificationFlow[] = [];\r\n for (const receipt of targets) {\r\n flows.push(\r\n await this.buildReceiptVerificationFlowForReceipt(\r\n receipt,\r\n findTimelineEventsForReceipt(timeline, receipt)\r\n )\r\n );\r\n }\r\n return flows;\r\n }\r\n\r\n /**\r\n * Controlled portfolio watch demo.\r\n * User brief → Automatic objective → market move while away → auto restore → return briefing.\r\n * Auth required.\r\n */\r\n async runPortfolioWatchDemo(input?: {\r\n brief?: string;\r\n host?: AgentHost;\r\n }): Promise<PortfolioWatchFlow> {\r\n const userBrief = input?.brief?.trim() || DEFAULT_PORTFOLIO_WATCH_BRIEF;\r\n const host = input?.host ?? \"cursor\";\r\n\r\n await this.setPortfolio(DEMO_DRIFT_RESTORE_POSITIONS);\r\n\r\n const intent: FinancialIntent = {\r\n brief: userBrief,\r\n kind: \"stable_allocation\",\r\n targetWeight: 0.2,\r\n tolerance: 0.02,\r\n };\r\n\r\n const setup = await this.applyFinancialIntent(intent);\r\n const objective = setup.objective;\r\n const registerHealth = setup.health;\r\n if (!registerHealth) {\r\n throw new AureonValidationError(\r\n \"Register health missing after applyFinancialIntent\"\r\n );\r\n }\r\n\r\n const baselineRows = await this.getAllocationVsTarget();\r\n const registerRow = baselineRows.rows.find(\r\n (r) => r.objectiveId === objective.id\r\n );\r\n\r\n const healthBeforeRecords = await this.getHealth(objective.id);\r\n const healthBefore = healthBeforeRecords[0];\r\n if (!healthBefore) {\r\n throw new AureonValidationError(\"Baseline health missing before market event\");\r\n }\r\n\r\n const marketResult = await this.applyMarketEvent({\r\n name: \"NVDA rally while you were away\",\r\n description: \"portfolio watch demo — auto restore on\",\r\n symbol: \"NVDA\",\r\n priceChangeRatio: 0.45,\r\n autoRestore: true,\r\n });\r\n\r\n const healthAfter =\r\n marketResult.health.find((h) => h.objectiveId === objective.id) ??\r\n healthBefore;\r\n const receipt = marketResult.executions.find(\r\n (e) => e.objectiveId === objective.id\r\n );\r\n\r\n const timeline = await this.getTimeline(objective.id);\r\n\r\n return buildPortfolioWatchFlow({\r\n userBrief,\r\n host,\r\n objective,\r\n registerHealth,\r\n registerRow,\r\n whileAway: {\r\n marketEvent: marketResult.event,\r\n healthBefore,\r\n healthAfter,\r\n autoRestored: marketResult.executions.length > 0,\r\n receipt,\r\n },\r\n briefingHealth: healthAfter,\r\n timelineEvents: timeline.slice(0, 10),\r\n });\r\n }\r\n\r\n /**\r\n * Read-only portfolio watch briefing for Automatic objectives.\r\n * Auth required.\r\n */\r\n async getPortfolioWatchFlow(input?: {\r\n objectiveId?: string;\r\n brief?: string;\r\n host?: AgentHost;\r\n }): Promise<PortfolioWatchFlow[]> {\r\n const userBrief =\r\n input?.brief?.trim() || DEFAULT_PORTFOLIO_WATCH_BRIEF;\r\n const host = input?.host ?? \"mcp\";\r\n\r\n const [objectives, healthRecords, allocation, timeline] =\r\n await Promise.all([\r\n input?.objectiveId\r\n ? [await this.getObjective(input.objectiveId)]\r\n : this.listObjectives(),\r\n this.getHealth(input?.objectiveId),\r\n this.getAllocationVsTarget(),\r\n this.getTimeline(input?.objectiveId),\r\n ]);\r\n\r\n const active = objectives.filter(\r\n (o) =>\r\n (o.status === \"active\" || o.status === \"validated\") &&\r\n (o.automationMode ?? \"auto\") === \"auto\"\r\n );\r\n const healthById = new Map(healthRecords.map((h) => [h.objectiveId, h]));\r\n const rowById = new Map(allocation.rows.map((r) => [r.objectiveId, r]));\r\n\r\n const flows: PortfolioWatchFlow[] = [];\r\n for (const objective of active) {\r\n const health = healthById.get(objective.id);\r\n if (!health) continue;\r\n\r\n const objectiveTimeline = timeline.filter(\r\n (e) => !e.objectiveId || e.objectiveId === objective.id\r\n );\r\n\r\n flows.push(\r\n buildPortfolioWatchFlowFromSnapshot({\r\n userBrief,\r\n host,\r\n objective,\r\n health,\r\n allocationRow: rowById.get(objective.id),\r\n timelineEvents: objectiveTimeline.slice(0, 10),\r\n })\r\n );\r\n }\r\n\r\n return flows;\r\n }\r\n\r\n /**\r\n * Controlled full AUREON loop demo (Content Arc).\r\n * Intent → plan check (green vs plan with autoRestore false) → restore → receipt verification.\r\n * Auth required.\r\n */\r\n async runFullAureonLoopDemo(input?: {\r\n brief?: string;\r\n }): Promise<FullAureonLoopFlow> {\r\n const userBrief = input?.brief?.trim() || DEFAULT_FULL_LOOP_BRIEF;\r\n\r\n await this.setPortfolio(DEMO_DRIFT_RESTORE_POSITIONS);\r\n\r\n const intent: FinancialIntent = {\r\n brief: userBrief,\r\n kind: \"stable_allocation\",\r\n targetWeight: 0.2,\r\n tolerance: 0.02,\r\n };\r\n\r\n const setup = await this.applyFinancialIntent(intent);\r\n const objective = setup.objective;\r\n const baselineHealth = setup.health;\r\n if (!baselineHealth) {\r\n throw new AureonValidationError(\r\n \"Baseline health missing after applyFinancialIntent\"\r\n );\r\n }\r\n\r\n await this.applyMarketEvent({\r\n name: \"NVDA rally — green book, off-plan sleeve\",\r\n description: \"Full loop — autoRestore false to expose plan paradox\",\r\n symbol: \"NVDA\",\r\n priceChangeRatio: 0.45,\r\n autoRestore: false,\r\n });\r\n\r\n const [afterShockHealthRecords, allocation] = await Promise.all([\r\n this.getHealth(objective.id),\r\n this.getAllocationVsTarget(),\r\n ]);\r\n const afterShockHealth = afterShockHealthRecords[0];\r\n if (!afterShockHealth) {\r\n throw new AureonValidationError(\"Health missing after market event\");\r\n }\r\n const afterShockRow = allocation.rows.find(\r\n (r) => r.objectiveId === objective.id\r\n );\r\n\r\n const receipt = await this.restoreObjective(objective.id);\r\n\r\n const restoredHealthRecords = await this.getHealth(objective.id);\r\n const restoredHealth = restoredHealthRecords[0] ?? afterShockHealth;\r\n\r\n const verification =\r\n await this.buildReceiptVerificationFlowForReceipt(receipt);\r\n\r\n return buildFullAureonLoopFlow({\r\n userBrief,\r\n objective,\r\n baselineHealth,\r\n afterShockHealth,\r\n afterShockRow,\r\n paradox: allocation.paradox,\r\n restoredHealth,\r\n receipt,\r\n verification,\r\n });\r\n }\r\n\r\n /**\r\n * Read-only full AUREON loop for active objectives with a latest receipt.\r\n * Auth required.\r\n */\r\n async getFullAureonLoopFlow(input?: {\r\n objectiveId?: string;\r\n brief?: string;\r\n }): Promise<FullAureonLoopFlow[]> {\r\n const userBrief = input?.brief?.trim() || DEFAULT_FULL_LOOP_BRIEF;\r\n\r\n const [objectives, healthRecords, allocation, executions] =\r\n await Promise.all([\r\n input?.objectiveId\r\n ? [await this.getObjective(input.objectiveId)]\r\n : this.listObjectives(),\r\n this.getHealth(input?.objectiveId),\r\n this.getAllocationVsTarget(),\r\n this.listExecutions(input?.objectiveId),\r\n ]);\r\n\r\n const active = objectives.filter(\r\n (o) => o.status === \"active\" || o.status === \"validated\"\r\n );\r\n const healthById = new Map(healthRecords.map((h) => [h.objectiveId, h]));\r\n const rowById = new Map(allocation.rows.map((r) => [r.objectiveId, r]));\r\n const receiptsByObjective = new Map<string, ExecutionReceipt>();\r\n for (const receipt of sortExecutionsNewestFirst(executions)) {\r\n if (!receiptsByObjective.has(receipt.objectiveId)) {\r\n receiptsByObjective.set(receipt.objectiveId, receipt);\r\n }\r\n }\r\n\r\n const flows: FullAureonLoopFlow[] = [];\r\n for (const objective of active) {\r\n const health = healthById.get(objective.id);\r\n if (!health) continue;\r\n const latestReceipt = receiptsByObjective.get(objective.id);\r\n if (!latestReceipt) continue;\r\n\r\n const verification =\r\n await this.buildReceiptVerificationFlowForReceipt(latestReceipt);\r\n\r\n const flow = buildFullAureonLoopFlowFromSnapshot({\r\n userBrief,\r\n objective,\r\n health,\r\n allocationRow: rowById.get(objective.id),\r\n paradox: allocation.paradox,\r\n latestReceipt,\r\n verification,\r\n });\r\n if (flow) flows.push(flow);\r\n }\r\n\r\n return flows;\r\n }\r\n\r\n /**\r\n * Applies a controlled market event to portfolio marks.\r\n * When autoRestore is true, the API may run restore. Omit or false = drift only, no restore. Automatic still 409s if the vault cannot execute.\r\n * Auth required.\r\n */\r\n async applyMarketEvent(input: ApplyMarketEventInput): Promise<{\r\n event: MarketEvent;\r\n portfolio: PortfolioSnapshot;\r\n health: ObjectiveHealth[];\r\n executions: ExecutionReceipt[];\r\n }> {\r\n const body = normalizeApplyMarketEventInput(input);\r\n return requestJson(this.transport, ENDPOINTS.marketEvents, {\r\n method: \"POST\",\r\n body,\r\n });\r\n }\r\n\r\n /** Lists controlled market event presets. Auth required. */\r\n async listMarketPresets(): Promise<MarketPreset[]> {\r\n const result = await requestJson<{ presets: MarketPreset[] }>(\r\n this.transport,\r\n ENDPOINTS.marketPresets\r\n );\r\n return result.presets;\r\n }\r\n\r\n /**\r\n * Returns the restore plan for an objective (wrap ETH, unwrap WETH, or vault swap).\r\n * Auth required.\r\n */\r\n async getRestorePlan(objectiveId: string): Promise<RestorePlan> {\r\n assertId(objectiveId, \"objective id\");\r\n const result = await requestJson<{ plan: RestorePlan }>(\r\n this.transport,\r\n objectiveRestorePlanPath(objectiveId)\r\n );\r\n return result.plan;\r\n }\r\n\r\n /**\r\n * Runs restorative execution for an objective currently outside policy.\r\n * Vault Sell A→Buy B when configured. ETH↔WETH wrap/unwrap is client-side\r\n * via getRestorePlan; this endpoint rejects those with action details.\r\n * Auth required.\r\n */\r\n async runExecution(objectiveId: string): Promise<ExecutionReceipt> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, ENDPOINTS.executionsRun, {\r\n method: \"POST\",\r\n body: { objectiveId },\r\n });\r\n }\r\n\r\n /**\r\n * Runs restorative execution for an objective outside policy.\r\n * Receipt.settlement may be vault or staged. Only verifiedOnChain is proof.\r\n * Auth required.\r\n */\r\n async restoreObjective(objectiveId: string): Promise<ExecutionReceipt> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, objectiveRestorePath(objectiveId), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /** Lists recent execution receipts. Auth required. */\r\n async listExecutions(objectiveId?: string): Promise<ExecutionReceipt[]> {\r\n const path = withQuery(ENDPOINTS.executions, { objectiveId });\r\n const result = await requestJson<{ executions: ExecutionReceipt[] }>(\r\n this.transport,\r\n path\r\n );\r\n return result.executions;\r\n }\r\n\r\n /** Returns chain-verified settlement record for an execution when present. Auth required. */\r\n async getExecutionSettlement(executionId: string): Promise<ExecutionSettlementLookup> {\r\n assertId(executionId, \"execution id\");\r\n return requestJson(this.transport, executionSettlementPath(executionId));\r\n }\r\n\r\n /** Lists chain-verified settlement records for the authenticated wallet. Auth required. */\r\n async listSettlements(objectiveId?: string): Promise<SettlementRecord[]> {\r\n const path = withQuery(ENDPOINTS.settlements, { objectiveId });\r\n const result = await requestJson<{ settlements: SettlementRecord[] }>(\r\n this.transport,\r\n path\r\n );\r\n return result.settlements;\r\n }\r\n\r\n /**\r\n * Manual backfill: verify a vault tx on-chain and attach settlement proof.\r\n * Auth required.\r\n */\r\n async confirmExecutionSettlement(\r\n executionId: string,\r\n transactionHash: string\r\n ): Promise<{ settlement: SettlementRecord }> {\r\n assertId(executionId, \"execution id\");\r\n const hash = transactionHash.trim();\r\n if (!hash) {\r\n throw new AureonValidationError(\"transactionHash is required\");\r\n }\r\n return requestJson(this.transport, executionConfirmSettlementPath(executionId), {\r\n method: \"POST\",\r\n body: { transactionHash: hash },\r\n });\r\n }\r\n\r\n /** Returns Phase 2 ObjectiveRegistry deployment status. Auth required. */\r\n async getRegistryStatus(): Promise<RegistryStatus> {\r\n return requestJson(this.transport, ENDPOINTS.registryStatus);\r\n }\r\n\r\n /** Returns on-chain registry record for an objective when registered. Auth required. */\r\n async getObjectiveRegistry(objectiveId: string): Promise<ObjectiveRegistryLookup> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, registryObjectivePath(objectiveId));\r\n }\r\n\r\n /**\r\n * Prepares wallet-signed calldata to register an objective on ObjectiveRegistry.\r\n * Auth required.\r\n */\r\n async prepareObjectiveRegistry(objectiveId: string): Promise<PrepareRegistryResult> {\r\n assertId(objectiveId, \"objective id\");\r\n return requestJson(this.transport, registryPreparePath(objectiveId), {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /**\r\n * Confirms an on-chain registration after the wallet broadcast tx.\r\n * Auth required.\r\n */\r\n async confirmObjectiveRegistry(\r\n objectiveId: string,\r\n transactionHash: string\r\n ): Promise<{ record: ObjectiveRegistryRecord }> {\r\n assertId(objectiveId, \"objective id\");\r\n const hash = transactionHash.trim();\r\n if (!hash) {\r\n throw new AureonValidationError(\"transactionHash is required\");\r\n }\r\n return requestJson(this.transport, registryConfirmPath(objectiveId), {\r\n method: \"POST\",\r\n body: { transactionHash: hash },\r\n });\r\n }\r\n\r\n /** Returns the vault overview for the authenticated wallet. Auth required. */\r\n async getVault(): Promise<VaultOverview> {\r\n return requestJson(this.transport, ENDPOINTS.vault);\r\n }\r\n\r\n /** Returns compact vault funding status before restore. Auth required. */\r\n async getVaultStatus(): Promise<VaultStatus> {\r\n return requestJson(this.transport, ENDPOINTS.vaultStatus);\r\n }\r\n\r\n /**\r\n * Prepares wallet-signed calldata steps for a vault deposit.\r\n * Auth required.\r\n */\r\n async prepareVaultDeposit(input: {\r\n symbol: VaultDepositSymbol;\r\n amount: string;\r\n }): Promise<VaultPrepareResult> {\r\n const symbol = input.symbol?.trim();\r\n const amount = input.amount?.trim();\r\n if (!symbol) {\r\n throw new AureonValidationError(\r\n \"symbol is required (ETH or an allowlisted ERC-20)\"\r\n );\r\n }\r\n if (!amount) {\r\n throw new AureonValidationError(\"amount is required\");\r\n }\r\n return requestJson(this.transport, ENDPOINTS.vaultPrepareDeposit, {\r\n method: \"POST\",\r\n body: { symbol: symbol.toUpperCase(), amount },\r\n });\r\n }\r\n\r\n /**\r\n * Prepares wallet-signed calldata steps for a vault withdraw (any allowlisted ERC-20).\r\n * Auth required.\r\n */\r\n async prepareVaultWithdraw(input: {\r\n symbol?: string;\r\n amount: string;\r\n }): Promise<VaultPrepareResult> {\r\n const symbol = (input.symbol?.trim() || \"WETH\").toUpperCase();\r\n const amount = input.amount?.trim();\r\n if (!amount) {\r\n throw new AureonValidationError(\"amount is required\");\r\n }\r\n if (symbol === \"ETH\") {\r\n throw new AureonValidationError(\r\n 'withdraw symbol cannot be \"ETH\", use WETH'\r\n );\r\n }\r\n return requestJson(this.transport, ENDPOINTS.vaultPrepareWithdraw, {\r\n method: \"POST\",\r\n body: { symbol, amount },\r\n });\r\n }\r\n\r\n /**\r\n * Lists SDK API keys for the authenticated wallet.\r\n * Used by the operator utility Developer page.\r\n */\r\n async listApiKeys(): Promise<DeveloperApiKey[]> {\r\n const result = await requestJson<{ keys: DeveloperApiKey[] }>(\r\n this.transport,\r\n ENDPOINTS.developerApiKeys\r\n );\r\n return result.keys;\r\n }\r\n\r\n /**\r\n * Creates an SDK API key. `secret` is returned once; store it immediately.\r\n */\r\n async createApiKey(name: string): Promise<CreatedDeveloperApiKey> {\r\n const trimmed = name.trim();\r\n if (trimmed.length < 2) {\r\n throw new AureonValidationError(\"name must be at least 2 characters\");\r\n }\r\n return requestJson(this.transport, ENDPOINTS.developerApiKeys, {\r\n method: \"POST\",\r\n body: { name: trimmed },\r\n });\r\n }\r\n\r\n /** Revokes (deletes) an SDK API key owned by this wallet. */\r\n async revokeApiKey(keyId: string): Promise<DeveloperApiKey> {\r\n assertId(keyId, \"api key id\");\r\n return requestJson(this.transport, developerApiKeyPath(keyId), {\r\n method: \"DELETE\",\r\n });\r\n }\r\n\r\n /** Toggles the status (active/paused) of an SDK API key owned by this wallet. */\r\n async toggleApiKey(keyId: string): Promise<DeveloperApiKey> {\r\n assertId(keyId, \"api key id\");\r\n return requestJson(this.transport, `${developerApiKeyPath(keyId)}/toggle`, {\r\n method: \"POST\",\r\n });\r\n }\r\n\r\n /**\r\n * Joins objective → registry → receipts → settlements → timeline.\r\n * Missing proof is labeled as a gap. Nothing is invented. Auth required.\r\n */\r\n async getAuditTrail(objectiveId: string): Promise<FinancialAuditTrail> {\r\n assertId(objectiveId, \"objective id\");\r\n const [objective, healthRows, receipts, settlementsResult, timeline] =\r\n await Promise.all([\r\n this.getObjective(objectiveId),\r\n this.getHealth(objectiveId),\r\n this.listExecutions(objectiveId),\r\n this.listSettlements(objectiveId).then(\r\n (rows) => ({ ok: true as const, rows }),\r\n () => ({ ok: false as const, rows: [] as SettlementRecord[] })\r\n ),\r\n this.getTimeline(objectiveId),\r\n ]);\r\n\r\n let registry: Awaited<ReturnType<typeof this.getObjectiveRegistry>> = {\r\n registered: false,\r\n objectiveId,\r\n };\r\n let registryLookupFailed = false;\r\n try {\r\n registry = await this.getObjectiveRegistry(objectiveId);\r\n } catch {\r\n registryLookupFailed = true;\r\n }\r\n\r\n return buildFinancialAuditTrail({\r\n objective,\r\n health: healthRows[0],\r\n registry,\r\n receipts: sortExecutionsNewestFirst(receipts),\r\n settlements: settlementsResult.rows,\r\n timeline,\r\n registryLookupFailed,\r\n settlementsLookupFailed: !settlementsResult.ok,\r\n });\r\n }\r\n}\r\n","/**\r\n * @fileoverview Factory helpers for constructing AureonClient instances.\r\n */\r\n\r\nimport {\r\n DEFAULT_API_BASE_URL,\r\n LOCAL_API_BASE_URL,\r\n} from \"../constants/defaults.js\";\r\nimport type { AureonClientOptions } from \"../types/client-options.js\";\r\nimport { AureonClient } from \"./aureon-client.js\";\r\n\r\n/**\r\n * Factory helper preferred by examples and quickstarts.\r\n * Defaults to the production AUREON API URL when `baseUrl` is omitted.\r\n */\r\nexport function createAureonClient(\r\n options: AureonClientOptions = {}\r\n): AureonClient {\r\n return new AureonClient({\r\n baseUrl: options.baseUrl ?? DEFAULT_API_BASE_URL,\r\n ...options,\r\n });\r\n}\r\n\r\n/**\r\n * Creates a client pointed at a local AUREON API process (monorepo operators).\r\n * Not advertised in the public README.\r\n */\r\nexport function createLocalAureonClient(\r\n overrides: Partial<AureonClientOptions> = {}\r\n): AureonClient {\r\n return new AureonClient({\r\n ...overrides,\r\n baseUrl: overrides.baseUrl ?? LOCAL_API_BASE_URL,\r\n });\r\n}\r\n","/**\r\n * @fileoverview Mutable bearer token holder for scripts and apps.\r\n */\r\n\r\n/** Mutable bearer token holder for scripts and apps. */\r\nexport function createSessionTokenProvider(initialToken?: string | null) {\r\n let token = initialToken ?? null;\r\n return {\r\n getAccessToken: () => token,\r\n setToken: (next: string | null) => {\r\n token = next;\r\n },\r\n clear: () => {\r\n token = null;\r\n },\r\n };\r\n}\r\n\r\nexport type SessionTokenProvider = ReturnType<typeof createSessionTokenProvider>;\r\n","/**\r\n * @fileoverview Display helpers shared by utility apps and CLI output.\r\n */\r\n\r\nimport type { HealthState } from \"../types/health.js\";\r\n\r\nexport function formatUsd(value: number): string {\r\n return new Intl.NumberFormat(\"en-US\", {\r\n style: \"currency\",\r\n currency: \"USD\",\r\n maximumFractionDigits: 2,\r\n }).format(value);\r\n}\r\n\r\nexport function formatWeight(weight: number): string {\r\n return `${(weight * 100).toFixed(1)}%`;\r\n}\r\n\r\nexport function healthTone(\r\n state: HealthState\r\n): \"positive\" | \"caution\" | \"critical\" | \"neutral\" {\r\n switch (state) {\r\n case \"healthy\":\r\n return \"positive\";\r\n case \"warning\":\r\n return \"caution\";\r\n case \"violation\":\r\n return \"critical\";\r\n case \"paused\":\r\n return \"neutral\";\r\n default:\r\n return \"neutral\";\r\n }\r\n}\r\n\r\nexport function formatSignedPercent(ratio: number): string {\r\n const pct = ratio * 100;\r\n const sign = pct > 0 ? \"+\" : \"\";\r\n return `${sign}${pct.toFixed(1)}%`;\r\n}\r\n\r\nexport function formatIsoTime(iso: string): string {\r\n try {\r\n return new Intl.DateTimeFormat(\"en-US\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n second: \"2-digit\",\r\n }).format(new Date(iso));\r\n } catch {\r\n return iso;\r\n }\r\n}\r\n","/**\r\n * @fileoverview Health Engine result types.\r\n */\r\n\r\nexport type HealthState = \"healthy\" | \"warning\" | \"violation\" | \"paused\";\r\n\r\nexport interface ObjectiveHealth {\r\n objectiveId: string;\r\n state: HealthState;\r\n score: number;\r\n currentMetric: number;\r\n targetMetric: number;\r\n deviation: number;\r\n message: string;\r\n evaluatedAt: string;\r\n}\r\n\r\nexport function isHealthState(value: string): value is HealthState {\r\n return [\"healthy\", \"warning\", \"violation\", \"paused\"].includes(value);\r\n}\r\n\r\nexport function healthRank(state: HealthState): number {\r\n switch (state) {\r\n case \"healthy\":\r\n return 0;\r\n case \"warning\":\r\n return 1;\r\n case \"paused\":\r\n return 2;\r\n case \"violation\":\r\n return 3;\r\n default:\r\n return 99;\r\n }\r\n}\r\n\r\nexport function pickWorstHealth(records: ObjectiveHealth[]): ObjectiveHealth | null {\r\n if (records.length === 0) return null;\r\n return [...records].sort((a, b) => healthRank(b.state) - healthRank(a.state))[0] ?? null;\r\n}\r\n","/**\r\n * @fileoverview Timeline event contracts for append-only operator narratives.\r\n */\r\n\r\nexport type TimelineEventType =\r\n | \"objective_created\"\r\n | \"objective_updated\"\r\n | \"objective_paused\"\r\n | \"objective_resumed\"\r\n | \"health_changed\"\r\n | \"violation_detected\"\r\n | \"evaluation_started\"\r\n | \"execution_started\"\r\n | \"execution_completed\"\r\n | \"market_event_applied\"\r\n | \"objective_restored\"\r\n | \"capital_provisioned\"\r\n | \"capital_cleared\"\r\n | \"capital_synced\"\r\n | \"registry_registered\"\r\n | \"settlement_recorded\";\r\n\r\nexport interface TimelineEvent {\r\n id: string;\r\n objectiveId: string | null;\r\n type: TimelineEventType;\r\n message: string;\r\n payload: Record<string, unknown>;\r\n createdAt: string;\r\n}\r\n\r\nexport const TIMELINE_EVENT_TYPES: readonly TimelineEventType[] = [\r\n \"objective_created\",\r\n \"objective_updated\",\r\n \"objective_paused\",\r\n \"objective_resumed\",\r\n \"health_changed\",\r\n \"violation_detected\",\r\n \"evaluation_started\",\r\n \"execution_started\",\r\n \"execution_completed\",\r\n \"market_event_applied\",\r\n \"objective_restored\",\r\n \"capital_provisioned\",\r\n \"capital_cleared\",\r\n \"capital_synced\",\r\n \"registry_registered\",\r\n \"settlement_recorded\",\r\n] as const;\r\n\r\nexport function isTimelineEventType(value: string): value is TimelineEventType {\r\n return (TIMELINE_EVENT_TYPES as readonly string[]).includes(value);\r\n}\r\n\r\nexport function filterTimelineByObjective(\r\n events: TimelineEvent[],\r\n objectiveId: string\r\n): TimelineEvent[] {\r\n return events.filter((event) => event.objectiveId === objectiveId);\r\n}\r\n","/**\r\n * @fileoverview On-chain settlement record for vault rebalances (Day 8).\r\n */\r\n\r\nimport type { RegistryRef } from \"./registry.js\";\r\n\r\nexport type SettlementStatus = \"confirmed\" | \"orphan\";\r\n\r\nexport interface SettlementRecord {\r\n id: string;\r\n executionId: string | null;\r\n objectiveId: string | null;\r\n walletAddress: string;\r\n /** Chain-verified vault settlements are always `\"vault\"`. */\r\n settlement: \"vault\";\r\n transactionHash: string;\r\n blockNumber: number;\r\n logIndex: number;\r\n vaultAddress: string;\r\n tokenSell: string;\r\n tokenBuy: string;\r\n amountIn: string;\r\n amountOut: string;\r\n explorerUrl: string;\r\n verifiedAt: string;\r\n status: SettlementStatus;\r\n registryRef?: RegistryRef;\r\n}\r\n\r\nexport interface ExecutionSettlementLookup {\r\n executionId: string;\r\n verifiedOnChain: boolean;\r\n settlement: SettlementRecord | null;\r\n}\r\n\r\n/** Human-readable settlement summary for agents and logs. */\r\nexport function formatSettlementSummary(record: SettlementRecord): string {\r\n const parts = [\r\n \"vault settlement (chain-verified)\",\r\n `block ${record.blockNumber}`,\r\n record.explorerUrl,\r\n ];\r\n if (record.registryRef) {\r\n parts.push(`registry ${record.registryRef.objectiveKey.slice(0, 10)}…`);\r\n }\r\n return parts.join(\" · \");\r\n}\r\n","/**\r\n * @fileoverview Optional structured logging hooks for SDK integrators.\r\n */\r\n\r\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\r\n\r\nexport interface AureonLogger {\r\n debug(message: string, context?: Record<string, unknown>): void;\r\n info(message: string, context?: Record<string, unknown>): void;\r\n warn(message: string, context?: Record<string, unknown>): void;\r\n error(message: string, context?: Record<string, unknown>): void;\r\n}\r\n\r\nexport const silentLogger: AureonLogger = {\r\n debug() {},\r\n info() {},\r\n warn() {},\r\n error() {},\r\n};\r\n\r\nexport function createConsoleLogger(prefix = \"aureon-sdk\"): AureonLogger {\r\n const write = (level: LogLevel, message: string, context?: Record<string, unknown>) => {\r\n const line = `[${prefix}] ${message}`;\r\n if (level === \"error\") console.error(line, context ?? \"\");\r\n else if (level === \"warn\") console.warn(line, context ?? \"\");\r\n else console.log(line, context ?? \"\");\r\n };\r\n return {\r\n debug: (m, c) => write(\"debug\", m, c),\r\n info: (m, c) => write(\"info\", m, c),\r\n warn: (m, c) => write(\"warn\", m, c),\r\n error: (m, c) => write(\"error\", m, c),\r\n };\r\n}\r\n"]}