conversationalist 0.0.10 → 0.0.11

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.
Files changed (67) hide show
  1. package/README.md +89 -15
  2. package/dist/adapters/anthropic/index.d.ts.map +1 -1
  3. package/dist/adapters/anthropic/index.js +255 -2
  4. package/dist/adapters/anthropic/index.js.map +8 -4
  5. package/dist/adapters/gemini/index.d.ts.map +1 -1
  6. package/dist/adapters/gemini/index.js +255 -3
  7. package/dist/adapters/gemini/index.js.map +8 -4
  8. package/dist/adapters/openai/index.d.ts.map +1 -1
  9. package/dist/adapters/openai/index.js +247 -3
  10. package/dist/adapters/openai/index.js.map +8 -4
  11. package/dist/context.d.ts +6 -0
  12. package/dist/context.d.ts.map +1 -1
  13. package/dist/conversation/append.d.ts +5 -0
  14. package/dist/conversation/append.d.ts.map +1 -1
  15. package/dist/conversation/create.d.ts +9 -0
  16. package/dist/conversation/create.d.ts.map +1 -1
  17. package/dist/conversation/index.d.ts +8 -3
  18. package/dist/conversation/index.d.ts.map +1 -1
  19. package/dist/conversation/integrity.d.ts +16 -0
  20. package/dist/conversation/integrity.d.ts.map +1 -0
  21. package/dist/conversation/modify.d.ts +8 -2
  22. package/dist/conversation/modify.d.ts.map +1 -1
  23. package/dist/conversation/serialization.d.ts +0 -17
  24. package/dist/conversation/serialization.d.ts.map +1 -1
  25. package/dist/conversation/system-messages.d.ts.map +1 -1
  26. package/dist/conversation/tool-interactions.d.ts +45 -0
  27. package/dist/conversation/tool-interactions.d.ts.map +1 -0
  28. package/dist/conversation/transform.d.ts.map +1 -1
  29. package/dist/conversation/validation.d.ts +8 -0
  30. package/dist/conversation/validation.d.ts.map +1 -0
  31. package/dist/errors.d.ts +6 -1
  32. package/dist/errors.d.ts.map +1 -1
  33. package/dist/export/index.js +249 -12
  34. package/dist/export/index.js.map +10 -6
  35. package/dist/history.d.ts +4 -1
  36. package/dist/history.d.ts.map +1 -1
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +604 -231
  40. package/dist/index.js.map +24 -13
  41. package/dist/markdown/index.js +595 -215
  42. package/dist/markdown/index.js.map +22 -12
  43. package/dist/schemas/index.js +35 -19
  44. package/dist/schemas/index.js.map +3 -3
  45. package/dist/schemas.d.ts +15 -35
  46. package/dist/schemas.d.ts.map +1 -1
  47. package/dist/streaming.d.ts.map +1 -1
  48. package/dist/types.d.ts +0 -4
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/utilities/index.d.ts +0 -1
  51. package/dist/utilities/index.d.ts.map +1 -1
  52. package/dist/utilities/markdown.d.ts.map +1 -1
  53. package/dist/utilities/tool-calls.d.ts +2 -6
  54. package/dist/utilities/tool-calls.d.ts.map +1 -1
  55. package/dist/utilities/tool-results.d.ts.map +1 -1
  56. package/dist/utilities/transient.d.ts.map +1 -1
  57. package/dist/utilities.d.ts +0 -1
  58. package/dist/utilities.d.ts.map +1 -1
  59. package/dist/versioning/index.d.ts +0 -1
  60. package/dist/versioning/index.d.ts.map +1 -1
  61. package/dist/versioning/index.js +1 -52
  62. package/dist/versioning/index.js.map +4 -5
  63. package/dist/with-conversation.d.ts +4 -1
  64. package/dist/with-conversation.d.ts.map +1 -1
  65. package/package.json +6 -4
  66. package/dist/conversation.d.ts +0 -109
  67. package/dist/conversation.d.ts.map +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/kind-of/index.js", "../../node_modules/is-extendable/index.js", "../../node_modules/extend-shallow/index.js", "../../node_modules/section-matter/index.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/common.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/exception.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/mark.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/str.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/seq.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/map.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/null.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/bool.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/int.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/float.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/json.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/core.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/timestamp.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/merge.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/binary.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/omap.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/pairs.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/set.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/js/function.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/default_full.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/loader.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/dumper.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml.js", "../../node_modules/gray-matter/node_modules/js-yaml/index.js", "../../node_modules/gray-matter/lib/engines.js", "../../node_modules/strip-bom-string/index.js", "../../node_modules/gray-matter/lib/utils.js", "../../node_modules/gray-matter/lib/defaults.js", "../../node_modules/gray-matter/lib/engine.js", "../../node_modules/gray-matter/lib/stringify.js", "../../node_modules/gray-matter/lib/excerpt.js", "../../node_modules/gray-matter/lib/to-file.js", "../../node_modules/gray-matter/lib/parse.js", "../../node_modules/gray-matter/index.js", "../../node_modules/event-emission/dist/index.js", "../../src/utilities/content.ts", "../../src/multi-modal.ts", "../../src/utilities/type-helpers.ts", "../../src/utilities/message.ts", "../../src/utilities/message-store.ts", "../../src/utilities/transient.ts", "../../src/environment.ts", "../../src/context.ts", "../../src/errors.ts", "../../src/types.ts", "../../src/conversation.ts", "../../src/streaming.ts", "../../src/history.ts", "../../src/utilities/markdown.ts", "../../src/utilities/tool-results.ts", "../../src/markdown/index.ts"],
3
+ "sources": ["../../node_modules/kind-of/index.js", "../../node_modules/is-extendable/index.js", "../../node_modules/extend-shallow/index.js", "../../node_modules/section-matter/index.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/common.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/exception.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/mark.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/str.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/seq.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/map.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/null.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/bool.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/int.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/float.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/json.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/core.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/timestamp.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/merge.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/binary.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/omap.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/pairs.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/set.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/type/js/function.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/schema/default_full.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/loader.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml/dumper.js", "../../node_modules/gray-matter/node_modules/js-yaml/lib/js-yaml.js", "../../node_modules/gray-matter/node_modules/js-yaml/index.js", "../../node_modules/gray-matter/lib/engines.js", "../../node_modules/strip-bom-string/index.js", "../../node_modules/gray-matter/lib/utils.js", "../../node_modules/gray-matter/lib/defaults.js", "../../node_modules/gray-matter/lib/engine.js", "../../node_modules/gray-matter/lib/stringify.js", "../../node_modules/gray-matter/lib/excerpt.js", "../../node_modules/gray-matter/lib/to-file.js", "../../node_modules/gray-matter/lib/parse.js", "../../node_modules/gray-matter/index.js", "../../node_modules/event-emission/dist/index.js", "../../src/errors.ts", "../../src/schemas.ts", "../../src/conversation/integrity.ts", "../../src/conversation/validation.ts", "../../src/utilities/content.ts", "../../src/multi-modal.ts", "../../src/utilities/type-helpers.ts", "../../src/utilities/message.ts", "../../src/utilities/message-store.ts", "../../src/utilities/transient.ts", "../../src/environment.ts", "../../src/context.ts", "../../src/types.ts", "../../src/conversation/create.ts", "../../src/conversation/tool-tracking.ts", "../../src/conversation/append.ts", "../../src/conversation/query.ts", "../../src/conversation/system-messages.ts", "../../src/utilities/tool-results.ts", "../../src/conversation/modify.ts", "../../src/conversation/serialization.ts", "../../src/conversation/transform.ts", "../../src/streaming.ts", "../../src/history.ts", "../../src/utilities/markdown.ts", "../../src/markdown/index.ts"],
4
4
  "sourcesContent": [
5
5
  "var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n",
6
6
  "/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n",
@@ -47,24 +47,34 @@
47
47
  "'use strict';\n\nconst getEngine = require('./engine');\nconst defaults = require('./defaults');\n\nmodule.exports = function(language, str, options) {\n const opts = defaults(options);\n const engine = getEngine(language, opts);\n if (typeof engine.parse !== 'function') {\n throw new TypeError('expected \"' + language + '.parse\" to be a function');\n }\n return engine.parse(str, opts);\n};\n",
48
48
  "'use strict';\n\nconst fs = require('fs');\nconst sections = require('section-matter');\nconst defaults = require('./lib/defaults');\nconst stringify = require('./lib/stringify');\nconst excerpt = require('./lib/excerpt');\nconst engines = require('./lib/engines');\nconst toFile = require('./lib/to-file');\nconst parse = require('./lib/parse');\nconst utils = require('./lib/utils');\n\n/**\n * Takes a string or object with `content` property, extracts\n * and parses front-matter from the string, then returns an object\n * with `data`, `content` and other [useful properties](#returned-object).\n *\n * ```js\n * const matter = require('gray-matter');\n * console.log(matter('---\\ntitle: Home\\n---\\nOther stuff'));\n * //=> { data: { title: 'Home'}, content: 'Other stuff' }\n * ```\n * @param {Object|String} `input` String, or object with `content` string\n * @param {Object} `options`\n * @return {Object}\n * @api public\n */\n\nfunction matter(input, options) {\n if (input === '') {\n return { data: {}, content: input, excerpt: '', orig: input };\n }\n\n let file = toFile(input);\n const cached = matter.cache[file.content];\n\n if (!options) {\n if (cached) {\n file = Object.assign({}, cached);\n file.orig = cached.orig;\n return file;\n }\n\n // only cache if there are no options passed. if we cache when options\n // are passed, we would need to also cache options values, which would\n // negate any performance benefits of caching\n matter.cache[file.content] = file;\n }\n\n return parseMatter(file, options);\n}\n\n/**\n * Parse front matter\n */\n\nfunction parseMatter(file, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n const close = '\\n' + opts.delimiters[1];\n let str = file.content;\n\n if (opts.language) {\n file.language = opts.language;\n }\n\n // get the length of the opening delimiter\n const openLen = open.length;\n if (!utils.startsWith(str, open, openLen)) {\n excerpt(file, opts);\n return file;\n }\n\n // if the next character after the opening delimiter is\n // a character from the delimiter, then it's not a front-\n // matter delimiter\n if (str.charAt(openLen) === open.slice(-1)) {\n return file;\n }\n\n // strip the opening delimiter\n str = str.slice(openLen);\n const len = str.length;\n\n // use the language defined after first delimiter, if it exists\n const language = matter.language(str, opts);\n if (language.name) {\n file.language = language.name;\n str = str.slice(language.raw.length);\n }\n\n // get the index of the closing delimiter\n let closeIndex = str.indexOf(close);\n if (closeIndex === -1) {\n closeIndex = len;\n }\n\n // get the raw front-matter block\n file.matter = str.slice(0, closeIndex);\n\n const block = file.matter.replace(/^\\s*#[^\\n]+/gm, '').trim();\n if (block === '') {\n file.isEmpty = true;\n file.empty = file.content;\n file.data = {};\n } else {\n\n // create file.data by parsing the raw file.matter block\n file.data = parse(file.language, file.matter, opts);\n }\n\n // update file.content\n if (closeIndex === len) {\n file.content = '';\n } else {\n file.content = str.slice(closeIndex + close.length);\n if (file.content[0] === '\\r') {\n file.content = file.content.slice(1);\n }\n if (file.content[0] === '\\n') {\n file.content = file.content.slice(1);\n }\n }\n\n excerpt(file, opts);\n\n if (opts.sections === true || typeof opts.section === 'function') {\n sections(file, opts.section);\n }\n return file;\n}\n\n/**\n * Expose engines\n */\n\nmatter.engines = engines;\n\n/**\n * Stringify an object to YAML or the specified language, and\n * append it to the given string. By default, only YAML and JSON\n * can be stringified. See the [engines](#engines) section to learn\n * how to stringify other languages.\n *\n * ```js\n * console.log(matter.stringify('foo bar baz', {title: 'Home'}));\n * // results in:\n * // ---\n * // title: Home\n * // ---\n * // foo bar baz\n * ```\n * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string.\n * @param {Object} `data` Front matter to stringify.\n * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml].\n * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string.\n * @api public\n */\n\nmatter.stringify = function(file, data, options) {\n if (typeof file === 'string') file = matter(file, options);\n return stringify(file, data, options);\n};\n\n/**\n * Synchronously read a file from the file system and parse\n * front matter. Returns the same object as the [main function](#matter).\n *\n * ```js\n * const file = matter.read('./content/blog-post.md');\n * ```\n * @param {String} `filepath` file path of the file to read.\n * @param {Object} `options` [Options](#options) to pass to gray-matter.\n * @return {Object} Returns [an object](#returned-object) with `data` and `content`\n * @api public\n */\n\nmatter.read = function(filepath, options) {\n const str = fs.readFileSync(filepath, 'utf8');\n const file = matter(str, options);\n file.path = filepath;\n return file;\n};\n\n/**\n * Returns true if the given `string` has front matter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Boolean} True if front matter exists.\n * @api public\n */\n\nmatter.test = function(str, options) {\n return utils.startsWith(str, defaults(options).delimiters[0]);\n};\n\n/**\n * Detect the language to use, if one is defined after the\n * first front-matter delimiter.\n * @param {String} `string`\n * @param {Object} `options`\n * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed\n */\n\nmatter.language = function(str, options) {\n const opts = defaults(options);\n const open = opts.delimiters[0];\n\n if (matter.test(str)) {\n str = str.slice(open.length);\n }\n\n const language = str.slice(0, str.search(/\\r?\\n/));\n return {\n raw: language,\n name: language ? language.trim() : ''\n };\n};\n\n/**\n * Expose `matter`\n */\n\nmatter.cache = {};\nmatter.clearCache = function() {\n matter.cache = {};\n};\nmodule.exports = matter;\n",
49
49
  "// @bun\n// src/symbols.ts\nvar SymbolObservable = typeof Symbol === \"function\" && Symbol.observable || Symbol.for(\"@@observable\");\nif (typeof Symbol === \"function\") {\n Symbol.observable = SymbolObservable;\n}\n\n// src/observable.ts\nfunction getMethod(obj, key) {\n if (obj === null || obj === undefined)\n return;\n const value = obj[key];\n if (value == null)\n return;\n if (typeof value !== \"function\") {\n throw new TypeError(value + \" is not a function\");\n }\n return value;\n}\nfunction hostReportError(e) {\n if (typeof queueMicrotask === \"function\") {\n queueMicrotask(() => {\n throw e;\n });\n } else {\n setTimeout(() => {\n throw e;\n });\n }\n}\nfunction SubscriptionObserverImpl(subscription) {\n this._subscription = subscription;\n}\nSubscriptionObserverImpl.prototype = Object.create(Object.prototype);\nObject.defineProperties(SubscriptionObserverImpl.prototype, {\n constructor: { value: Object, configurable: true, writable: true },\n closed: {\n get() {\n return this._subscription._closed;\n },\n configurable: true\n },\n next: {\n value: function next(value) {\n const subscription = this._subscription;\n if (subscription._closed)\n return;\n const observer = subscription._observer;\n try {\n const m = getMethod(observer, \"next\");\n if (!m)\n return;\n return m.call(observer, value);\n } catch (e) {\n try {\n this.error(e);\n } catch (err) {\n hostReportError(err);\n }\n }\n },\n configurable: true,\n writable: true\n },\n error: {\n value: function error(errorValue) {\n const subscription = this._subscription;\n if (subscription._closed)\n throw errorValue;\n subscription._closed = true;\n const observer = subscription._observer;\n try {\n const m = getMethod(observer, \"error\");\n if (m) {\n return m.call(observer, errorValue);\n }\n throw errorValue;\n } finally {\n subscription._cleanup();\n }\n },\n configurable: true,\n writable: true\n },\n complete: {\n value: function complete(value) {\n const subscription = this._subscription;\n if (subscription._closed)\n return;\n subscription._closed = true;\n const observer = subscription._observer;\n try {\n const m = getMethod(observer, \"complete\");\n if (m) {\n return m.call(observer, value);\n }\n return;\n } finally {\n subscription._cleanup();\n }\n },\n configurable: true,\n writable: true\n }\n});\nObject.defineProperty(SubscriptionObserverImpl.prototype.next, \"length\", { value: 1 });\nObject.defineProperty(SubscriptionObserverImpl.prototype.error, \"length\", { value: 1 });\nObject.defineProperty(SubscriptionObserverImpl.prototype.complete, \"length\", {\n value: 1\n});\nfunction Subscription(observer, subscriber) {\n this._observer = observer;\n this._cleanupFn = undefined;\n this._closed = false;\n const subscriptionObserver = new SubscriptionObserverImpl(this);\n try {\n const start = getMethod(observer, \"start\");\n if (start) {\n start.call(observer, this);\n }\n } catch (e) {\n hostReportError(e);\n }\n if (this._closed)\n return;\n try {\n const cleanup = subscriber(subscriptionObserver);\n if (cleanup != null) {\n if (typeof cleanup !== \"function\" && typeof cleanup.unsubscribe !== \"function\") {\n throw new TypeError(cleanup + \" is not a function or a subscription\");\n }\n this._cleanupFn = cleanup;\n if (this._closed) {\n this._cleanup();\n }\n }\n } catch (e) {\n subscriptionObserver.error(e);\n }\n}\nSubscription.prototype = Object.create(Object.prototype);\nObject.defineProperties(Subscription.prototype, {\n constructor: { value: Object, configurable: true, writable: true },\n closed: {\n get() {\n return this._closed;\n },\n configurable: true\n },\n unsubscribe: {\n value: function unsubscribe() {\n if (this._closed)\n return;\n this._closed = true;\n this._cleanup();\n },\n configurable: true,\n writable: true\n },\n _cleanup: {\n value: function _cleanup() {\n const cleanup = this._cleanupFn;\n if (!cleanup)\n return;\n this._cleanupFn = undefined;\n try {\n if (typeof cleanup === \"function\") {\n cleanup();\n } else if (cleanup && typeof cleanup.unsubscribe === \"function\") {\n cleanup.unsubscribe();\n }\n } catch (e) {\n hostReportError(e);\n }\n },\n configurable: true,\n writable: true\n }\n});\n\nclass Observable {\n _subscriber;\n constructor(subscriber) {\n if (typeof subscriber !== \"function\") {\n throw new TypeError(\"Observable initializer must be a function\");\n }\n this._subscriber = subscriber;\n }\n subscribe(observerOrNext, error2, complete2) {\n let observer;\n if (typeof observerOrNext === \"function\") {\n observer = {\n next: observerOrNext,\n error: error2,\n complete: complete2\n };\n } else if (typeof observerOrNext !== \"object\" || observerOrNext === null) {\n throw new TypeError(observerOrNext + \" is not an object\");\n } else {\n observer = observerOrNext;\n }\n return new Subscription(observer, this._subscriber);\n }\n [SymbolObservable]() {\n return this;\n }\n static of(...items) {\n const C = typeof this === \"function\" ? this : Observable;\n return new C((observer) => {\n for (let i = 0;i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed)\n return;\n }\n observer.complete();\n });\n }\n static from(x) {\n const C = typeof this === \"function\" ? this : Observable;\n if (x == null)\n throw new TypeError(x + \" is not an object\");\n const method = x[SymbolObservable];\n if (method != null) {\n if (typeof method !== \"function\") {\n throw new TypeError(method + \" is not a function\");\n }\n const observable = method.call(x);\n if (Object(observable) !== observable) {\n throw new TypeError(observable + \" is not an object\");\n }\n if (observable.constructor === C) {\n return observable;\n }\n return new C((observer) => observable.subscribe(observer));\n }\n if (Symbol.iterator in x) {\n return new C((observer) => {\n for (const item of x) {\n observer.next(item);\n if (observer.closed)\n return;\n }\n observer.complete();\n });\n }\n throw new TypeError(x + \" is not observable\");\n }\n}\n\n// src/observe.ts\nvar PROXY_MARKER = Symbol.for(\"@lasercat/event-emission/proxy\");\nvar ORIGINAL_TARGET = Symbol.for(\"@lasercat/event-emission/original\");\nvar ARRAY_MUTATORS = new Set([\n \"push\",\n \"pop\",\n \"shift\",\n \"unshift\",\n \"splice\",\n \"sort\",\n \"reverse\",\n \"fill\",\n \"copyWithin\"\n]);\nfunction isProxyable(value) {\n return value !== null && typeof value === \"object\" && !isProxied(value) && !(value instanceof Date) && !(value instanceof RegExp) && !(value instanceof Map) && !(value instanceof Set) && !(value instanceof WeakMap) && !(value instanceof WeakSet) && !(value instanceof Promise) && !(value instanceof Error) && !(value instanceof ArrayBuffer) && !ArrayBuffer.isView(value);\n}\nfunction isProxied(value) {\n return typeof value === \"object\" && value !== null && value[PROXY_MARKER] === true;\n}\nfunction isArrayMutator(prop) {\n return typeof prop === \"string\" && ARRAY_MUTATORS.has(prop);\n}\nfunction cloneAlongPath(obj, path) {\n const isArray = Array.isArray(obj);\n const rootClone = isArray ? [...obj] : { ...obj };\n if (!path || isArray) {\n return rootClone;\n }\n const parts = path.split(\".\");\n const result = rootClone;\n let current = result;\n for (let i = 0;i < parts.length; i++) {\n const key = parts[i];\n const value = current[key];\n if (value !== null && typeof value === \"object\") {\n current[key] = Array.isArray(value) ? [...value] : { ...value };\n if (i < parts.length - 1) {\n current = current[key];\n }\n } else {\n break;\n }\n }\n return result;\n}\nfunction cloneForComparison(obj, strategy, changedPath, deepClone) {\n if (obj === null || typeof obj !== \"object\")\n return obj;\n switch (strategy) {\n case \"shallow\":\n return Array.isArray(obj) ? [...obj] : { ...obj };\n case \"deep\":\n if (deepClone) {\n return deepClone(obj);\n }\n if (typeof structuredClone !== \"function\") {\n throw new Error(\"structuredClone is not available in this runtime; provide observe.deepClone, or use cloneStrategy 'path' or 'shallow'.\");\n }\n return structuredClone(obj);\n case \"path\":\n return cloneAlongPath(obj, changedPath);\n default:\n return obj;\n }\n}\nfunction computeArrayDiff(method, before, _after, args) {\n switch (method) {\n case \"push\":\n return { added: args };\n case \"pop\":\n return { removed: before.length > 0 ? [before[before.length - 1]] : [] };\n case \"shift\":\n return { removed: before.length > 0 ? [before[0]] : [] };\n case \"unshift\":\n return { added: args };\n case \"splice\": {\n const [start, deleteCount, ...items] = args;\n const actualStart = start < 0 ? Math.max(before.length + start, 0) : Math.min(start, before.length);\n const actualDeleteCount = Math.min(deleteCount ?? before.length - actualStart, before.length - actualStart);\n return {\n removed: before.slice(actualStart, actualStart + actualDeleteCount),\n added: items\n };\n }\n case \"sort\":\n case \"reverse\":\n case \"fill\":\n case \"copyWithin\":\n return {};\n default:\n return {};\n }\n}\nvar proxyRegistry = new WeakMap;\nfunction getContextRegistry(target) {\n let contextMap = proxyRegistry.get(target);\n if (!contextMap) {\n contextMap = new WeakMap;\n proxyRegistry.set(target, contextMap);\n }\n return contextMap;\n}\nfunction createArrayMethodInterceptor(array, method, path, context) {\n const original = array[method];\n return function(...args) {\n const previousState = cloneForComparison(context.originalRoot, context.options.cloneStrategy, path, context.options.deepClone);\n const previousItems = [...array];\n const result = original.apply(this, args);\n const { added, removed } = computeArrayDiff(method, previousItems, array, args);\n const methodEventPath = path ? `update:${path}.${method}` : `update:${method}`;\n const arrayEventPath = path ? `update:${path}` : \"update:\";\n context.eventTarget.dispatchEvent({\n type: methodEventPath,\n detail: {\n method,\n args,\n result,\n added,\n removed,\n current: context.originalRoot,\n previous: previousState\n }\n });\n if (path) {\n context.eventTarget.dispatchEvent({\n type: arrayEventPath,\n detail: {\n value: array,\n current: context.originalRoot,\n previous: previousState\n }\n });\n }\n context.eventTarget.dispatchEvent({\n type: \"update\",\n detail: {\n current: context.originalRoot,\n previous: previousState\n }\n });\n return result;\n };\n}\nfunction createObservableProxyInternal(target, path, context) {\n const contextRegistry = getContextRegistry(target);\n const existing = contextRegistry.get(context);\n if (existing) {\n return existing.proxy;\n }\n const proxy = new Proxy(target, {\n get(obj, prop, receiver) {\n if (prop === PROXY_MARKER)\n return true;\n if (prop === ORIGINAL_TARGET)\n return obj;\n if (typeof prop === \"symbol\") {\n return Reflect.get(obj, prop, receiver);\n }\n const value = Reflect.get(obj, prop, receiver);\n if (Array.isArray(obj) && isArrayMutator(prop)) {\n return createArrayMethodInterceptor(obj, prop, path, context);\n }\n if (context.options.deep && isProxyable(value)) {\n const nestedPath = path ? `${path}.${prop}` : prop;\n return createObservableProxyInternal(value, nestedPath, context);\n }\n return value;\n },\n set(obj, prop, value, receiver) {\n if (typeof prop === \"symbol\") {\n return Reflect.set(obj, prop, value, receiver);\n }\n const oldValue = Reflect.get(obj, prop, receiver);\n if (Object.is(oldValue, value)) {\n return true;\n }\n const propPath = path ? `${path}.${prop}` : prop;\n const previousState = cloneForComparison(context.originalRoot, context.options.cloneStrategy, propPath, context.options.deepClone);\n const success = Reflect.set(obj, prop, value, receiver);\n if (success) {\n context.eventTarget.dispatchEvent({\n type: `update:${propPath}`,\n detail: {\n value,\n current: context.originalRoot,\n previous: previousState\n }\n });\n context.eventTarget.dispatchEvent({\n type: \"update\",\n detail: {\n current: context.originalRoot,\n previous: previousState\n }\n });\n }\n return success;\n },\n deleteProperty(obj, prop) {\n if (typeof prop === \"symbol\") {\n return Reflect.deleteProperty(obj, prop);\n }\n const propPath = path ? `${path}.${String(prop)}` : String(prop);\n const previousState = cloneForComparison(context.originalRoot, context.options.cloneStrategy, propPath, context.options.deepClone);\n const success = Reflect.deleteProperty(obj, prop);\n if (success) {\n context.eventTarget.dispatchEvent({\n type: `update:${propPath}`,\n detail: {\n value: undefined,\n current: context.originalRoot,\n previous: previousState\n }\n });\n context.eventTarget.dispatchEvent({\n type: \"update\",\n detail: {\n current: context.originalRoot,\n previous: previousState\n }\n });\n }\n return success;\n }\n });\n contextRegistry.set(context, {\n proxy,\n path\n });\n return proxy;\n}\nfunction isEventTarget(obj) {\n return typeof obj === \"object\" && obj !== null && typeof obj.addEventListener === \"function\" && typeof obj.removeEventListener === \"function\" && typeof obj.dispatchEvent === \"function\";\n}\nfunction setupEventForwarding(source, target) {\n const handlers = new Map;\n const sourceAddEventListener = source.addEventListener.bind(source);\n const sourceRemoveEventListener = source.removeEventListener.bind(source);\n const forwardHandler = (type) => (event) => {\n const detail = event.detail ?? event;\n target.dispatchEvent({\n type,\n detail\n });\n };\n const originalAddEventListener = target.addEventListener.bind(target);\n const wrappedAddEventListener = (type, listener, options) => {\n if (!handlers.has(type) && type !== \"update\" && !type.startsWith(\"update:\")) {\n const handler = forwardHandler(type);\n handlers.set(type, handler);\n sourceAddEventListener(type, handler);\n }\n return originalAddEventListener(type, listener, options);\n };\n target.addEventListener = wrappedAddEventListener;\n return () => {\n target.addEventListener = originalAddEventListener;\n for (const [type, handler] of handlers) {\n sourceRemoveEventListener(type, handler);\n }\n handlers.clear();\n };\n}\nfunction isObserved(obj) {\n return isProxied(obj);\n}\nfunction getOriginal(proxy) {\n if (!isProxied(proxy)) {\n return proxy;\n }\n return proxy[ORIGINAL_TARGET] ?? proxy;\n}\nfunction createObservableProxy(target, eventTarget, options) {\n const resolvedOptions = {\n deep: options?.deep ?? true,\n cloneStrategy: options?.cloneStrategy ?? \"path\",\n deepClone: options?.deepClone\n };\n const context = {\n eventTarget,\n originalRoot: target,\n options: resolvedOptions\n };\n const proxy = createObservableProxyInternal(target, \"\", context);\n if (isEventTarget(target)) {\n const cleanupForwarding = setupEventForwarding(target, eventTarget);\n const maybeComplete = eventTarget.complete;\n if (typeof maybeComplete === \"function\") {\n const originalComplete = maybeComplete.bind(eventTarget);\n let cleaned = false;\n eventTarget.complete = () => {\n if (!cleaned) {\n cleaned = true;\n cleanupForwarding();\n }\n return originalComplete();\n };\n }\n }\n return proxy;\n}\n// src/errors.ts\nclass BufferOverflowError extends Error {\n constructor(eventType, bufferSize) {\n super(`Buffer overflow for event type \"${eventType}\" (max: ${bufferSize})`);\n this.name = \"BufferOverflowError\";\n }\n}\n// src/factory.ts\nfunction matchesWildcard(eventType, pattern) {\n if (pattern === \"*\")\n return true;\n return pattern.endsWith(\":*\") && eventType.startsWith(pattern.slice(0, -2) + \":\");\n}\nvar EVENT_STATE = Symbol(\"event-emission:event-state\");\nfunction createEventTarget(targetOrOpts, opts) {\n if (opts?.observe === true && targetOrOpts && typeof targetOrOpts === \"object\") {\n const target = targetOrOpts;\n const eventTarget = createEventTargetInternal({\n onListenerError: opts.onListenerError\n });\n const proxy = createObservableProxy(target, eventTarget, {\n deep: opts.deep,\n cloneStrategy: opts.cloneStrategy,\n deepClone: opts.deepClone\n });\n const methodNames = [\n \"addEventListener\",\n \"removeEventListener\",\n \"dispatchEvent\",\n \"clear\",\n \"on\",\n \"once\",\n \"removeAllListeners\",\n \"pipe\",\n \"addWildcardListener\",\n \"removeWildcardListener\",\n \"complete\",\n \"subscribe\",\n \"toObservable\",\n \"events\"\n ];\n for (const name of methodNames) {\n Object.defineProperty(proxy, name, {\n value: eventTarget[name],\n writable: false,\n enumerable: false,\n configurable: true\n });\n }\n Object.defineProperty(proxy, \"completed\", {\n get: () => eventTarget.completed,\n enumerable: false,\n configurable: true\n });\n return proxy;\n }\n return createEventTargetInternal(targetOrOpts);\n}\nfunction createEventTargetInternal(opts) {\n const listeners = new Map;\n const wildcardListeners = new Set;\n let isCompleted = false;\n const completionCallbacks = new Set;\n const now = () => typeof globalThis.performance?.now === \"function\" ? globalThis.performance.now() : Date.now();\n const initializeEventState = (state, type, bubbles, cancelable) => {\n state.initializedFlag = true;\n state.stopPropagationFlag = false;\n state.stopImmediatePropagationFlag = false;\n state.canceledFlag = false;\n state.isTrusted = false;\n state.target = null;\n state.currentTarget = null;\n state.eventPhase = 0;\n state.type = type;\n state.bubbles = bubbles;\n state.cancelable = cancelable;\n };\n const setCanceledFlag = (state) => {\n if (state.cancelable && !state.inPassiveListenerFlag) {\n state.canceledFlag = true;\n }\n };\n const createEvent = (type, detail, init) => {\n const state = {\n dispatchFlag: false,\n initializedFlag: true,\n stopPropagationFlag: false,\n stopImmediatePropagationFlag: false,\n canceledFlag: false,\n inPassiveListenerFlag: false,\n composedFlag: Boolean(init?.composed),\n eventPhase: init?.eventPhase ?? 0,\n currentTarget: init?.currentTarget ?? init?.target ?? null,\n target: init?.target ?? null,\n timeStamp: init?.timeStamp ?? now(),\n path: [],\n type,\n bubbles: Boolean(init?.bubbles),\n cancelable: Boolean(init?.cancelable),\n isTrusted: false\n };\n const event = { detail };\n Object.defineProperties(event, {\n type: {\n get: () => state.type,\n enumerable: true,\n configurable: true\n },\n bubbles: {\n get: () => state.bubbles,\n enumerable: true,\n configurable: true\n },\n cancelable: {\n get: () => state.cancelable,\n enumerable: true,\n configurable: true\n },\n cancelBubble: {\n get: () => state.stopPropagationFlag,\n set: (value) => {\n if (value)\n state.stopPropagationFlag = true;\n },\n enumerable: true,\n configurable: true\n },\n composed: {\n get: () => state.composedFlag,\n enumerable: true,\n configurable: true\n },\n currentTarget: {\n get: () => state.currentTarget,\n enumerable: true,\n configurable: true\n },\n defaultPrevented: {\n get: () => state.canceledFlag,\n enumerable: true,\n configurable: true\n },\n eventPhase: {\n get: () => state.eventPhase,\n enumerable: true,\n configurable: true\n },\n isTrusted: {\n get: () => state.isTrusted,\n enumerable: true,\n configurable: true\n },\n returnValue: {\n get: () => !state.canceledFlag,\n set: (value) => {\n if (value === false)\n setCanceledFlag(state);\n },\n enumerable: true,\n configurable: true\n },\n srcElement: {\n get: () => state.target,\n enumerable: true,\n configurable: true\n },\n target: {\n get: () => state.target,\n enumerable: true,\n configurable: true\n },\n timeStamp: {\n get: () => state.timeStamp,\n enumerable: true,\n configurable: true\n },\n composedPath: {\n value: () => state.path.map((entry) => entry.invocationTarget),\n enumerable: true,\n configurable: true\n },\n initEvent: {\n value: (newType, bubbles = false, cancelable = false) => {\n if (state.dispatchFlag)\n return;\n initializeEventState(state, newType, Boolean(bubbles), Boolean(cancelable));\n },\n enumerable: true,\n configurable: true\n },\n preventDefault: {\n value: () => setCanceledFlag(state),\n enumerable: true,\n configurable: true\n },\n stopImmediatePropagation: {\n value: () => {\n state.stopPropagationFlag = true;\n state.stopImmediatePropagationFlag = true;\n },\n enumerable: true,\n configurable: true\n },\n stopPropagation: {\n value: () => {\n state.stopPropagationFlag = true;\n },\n enumerable: true,\n configurable: true\n },\n NONE: { value: 0, enumerable: true, configurable: true },\n CAPTURING_PHASE: { value: 1, enumerable: true, configurable: true },\n AT_TARGET: { value: 2, enumerable: true, configurable: true },\n BUBBLING_PHASE: { value: 3, enumerable: true, configurable: true },\n [EVENT_STATE]: {\n value: state,\n enumerable: false,\n configurable: false\n }\n });\n return event;\n };\n const getEventState = (event) => event[EVENT_STATE];\n const normalizeAddListenerOptions = (options) => {\n if (typeof options === \"boolean\") {\n return {\n capture: options,\n passive: false,\n once: false,\n signal: null\n };\n }\n return {\n capture: Boolean(options?.capture),\n passive: Boolean(options?.passive),\n once: Boolean(options?.once),\n signal: options?.signal ?? null\n };\n };\n const normalizeCaptureOption = (options) => {\n if (typeof options === \"boolean\")\n return options;\n return Boolean(options?.capture);\n };\n const removeListenerRecord = (type, record) => {\n if (record.removed)\n return;\n record.removed = true;\n const list = listeners.get(type);\n if (list) {\n const idx = list.indexOf(record);\n if (idx >= 0)\n list.splice(idx, 1);\n if (list.length === 0)\n listeners.delete(type);\n }\n if (record.signal && record.abortHandler) {\n record.signal.removeEventListener(\"abort\", record.abortHandler);\n }\n };\n const handleListenerError = (eventType, error2) => {\n if (eventType === \"error\")\n return;\n if (opts?.onListenerError) {\n opts.onListenerError(eventType, error2);\n return;\n }\n const errorListeners = listeners.get(\"error\");\n if (errorListeners && errorListeners.length > 0) {\n dispatchEvent({ type: \"error\", detail: error2 });\n } else {\n throw error2;\n }\n };\n const notifyWildcardListeners = (eventType, event) => {\n if (wildcardListeners.size === 0)\n return;\n for (const rec of Array.from(wildcardListeners)) {\n if (!matchesWildcard(eventType, rec.pattern))\n continue;\n const baseEvent = createEvent(rec.pattern, event.detail, {\n target,\n currentTarget: target,\n eventPhase: 2,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n composed: event.composed\n });\n const wildcardEvent = Object.defineProperties(baseEvent, {\n originalType: { value: eventType, enumerable: true, configurable: true }\n });\n try {\n const fn = rec.fn;\n const res = fn(wildcardEvent);\n if (res && typeof res.then === \"function\") {\n res.catch((error2) => {\n try {\n handleListenerError(eventType, error2);\n } catch (rethrown) {\n queueMicrotask(() => {\n throw rethrown;\n });\n }\n });\n }\n } catch (error2) {\n handleListenerError(eventType, error2);\n } finally {\n if (rec.once)\n wildcardListeners.delete(rec);\n }\n const state = getEventState(wildcardEvent);\n if (state?.stopImmediatePropagationFlag || state?.stopPropagationFlag) {\n break;\n }\n }\n };\n const addEventListener = (type, listener, options) => {\n if (isCompleted || !listener) {\n return () => {};\n }\n const { capture, passive, once, signal } = normalizeAddListenerOptions(options);\n let list = listeners.get(type);\n if (!list) {\n list = [];\n listeners.set(type, list);\n }\n for (const existing of list) {\n if (existing.original === listener && existing.capture === capture) {\n return () => removeEventListener(type, listener, options);\n }\n }\n const original = listener;\n const callback = typeof listener === \"function\" ? listener : (event) => listener.handleEvent(event);\n const record = {\n type,\n original,\n callback,\n capture,\n passive,\n once,\n signal,\n removed: false\n };\n list.push(record);\n const unsubscribe2 = () => removeListenerRecord(type, record);\n if (signal) {\n const onAbort = () => removeListenerRecord(type, record);\n record.abortHandler = onAbort;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n if (signal.aborted)\n onAbort();\n }\n return unsubscribe2;\n };\n const addWildcardListener = (pattern, listener, options) => {\n if (isCompleted)\n return () => {};\n const opts2 = options ?? {};\n for (const existing of wildcardListeners) {\n if (existing.pattern === pattern && existing.fn === listener) {\n return () => removeWildcardListener(pattern, listener);\n }\n }\n const record = {\n fn: listener,\n pattern,\n once: opts2.once,\n signal: opts2.signal\n };\n wildcardListeners.add(record);\n const unsubscribe2 = () => {\n wildcardListeners.delete(record);\n if (record.signal && record.abortHandler) {\n record.signal.removeEventListener(\"abort\", record.abortHandler);\n }\n };\n if (opts2.signal) {\n const onAbort = () => unsubscribe2();\n record.abortHandler = onAbort;\n opts2.signal.addEventListener(\"abort\", onAbort, { once: true });\n if (opts2.signal.aborted)\n onAbort();\n }\n return unsubscribe2;\n };\n const removeWildcardListener = (pattern, listener) => {\n for (const record of Array.from(wildcardListeners)) {\n if (record.pattern === pattern && record.fn === listener) {\n wildcardListeners.delete(record);\n if (record.signal && record.abortHandler) {\n record.signal.removeEventListener(\"abort\", record.abortHandler);\n }\n }\n }\n };\n const invokeListeners = (eventType, event, phase, listenersSnapshot) => {\n const state = getEventState(event);\n if (!state || state.stopPropagationFlag)\n return;\n state.currentTarget = target;\n state.target = target;\n state.eventPhase = event.AT_TARGET;\n for (const rec of listenersSnapshot) {\n if (rec.removed)\n continue;\n if (phase === \"capturing\" && !rec.capture)\n continue;\n if (phase === \"bubbling\" && rec.capture)\n continue;\n if (rec.once)\n removeListenerRecord(rec.type, rec);\n if (rec.passive)\n state.inPassiveListenerFlag = true;\n try {\n const res = rec.callback.call(state.currentTarget, event);\n if (res && typeof res.then === \"function\") {\n res.catch((error2) => {\n try {\n handleListenerError(eventType, error2);\n } catch (rethrown) {\n queueMicrotask(() => {\n throw rethrown;\n });\n }\n });\n }\n } catch (error2) {\n handleListenerError(eventType, error2);\n } finally {\n if (rec.passive)\n state.inPassiveListenerFlag = false;\n }\n if (state.stopImmediatePropagationFlag)\n break;\n }\n };\n const dispatchEvent = (eventInput) => {\n if (isCompleted)\n return false;\n let event;\n let state;\n if (eventInput && typeof eventInput === \"object\") {\n state = getEventState(eventInput);\n if (state) {\n event = eventInput;\n } else {\n const input = eventInput;\n if (typeof input.type !== \"string\") {\n throw new TypeError(\"Event type must be a string\");\n }\n event = createEvent(input.type, input.detail, {\n bubbles: input.bubbles,\n cancelable: input.cancelable,\n composed: input.composed,\n timeStamp: input.timeStamp\n });\n state = getEventState(event);\n }\n } else {\n throw new TypeError(\"dispatchEvent expects an event object\");\n }\n const dispatchState = state ?? getEventState(event);\n if (dispatchState.dispatchFlag || !dispatchState.initializedFlag) {\n const message = \"Failed to execute dispatchEvent: event is already being dispatched\";\n if (typeof globalThis.DOMException === \"function\") {\n throw new globalThis.DOMException(message, \"InvalidStateError\");\n }\n const err = new Error(message);\n err.name = \"InvalidStateError\";\n throw err;\n }\n dispatchState.isTrusted = false;\n dispatchState.dispatchFlag = true;\n dispatchState.path = [\n {\n invocationTarget: target,\n invocationTargetInShadowTree: false,\n shadowAdjustedTarget: target,\n relatedTarget: null,\n touchTargets: [],\n rootOfClosedTree: false,\n slotInClosedTree: false\n }\n ];\n notifyWildcardListeners(dispatchState.type, event);\n const list = listeners.get(dispatchState.type);\n const snapshot = list ? list.slice() : [];\n invokeListeners(dispatchState.type, event, \"capturing\", snapshot);\n invokeListeners(dispatchState.type, event, \"bubbling\", snapshot);\n dispatchState.eventPhase = event.NONE;\n dispatchState.currentTarget = null;\n dispatchState.path = [];\n dispatchState.dispatchFlag = false;\n dispatchState.stopPropagationFlag = false;\n dispatchState.stopImmediatePropagationFlag = false;\n return !dispatchState.canceledFlag;\n };\n const removeEventListener = (type, listener, options) => {\n if (!listener)\n return;\n const capture = normalizeCaptureOption(options);\n const list = listeners.get(type);\n if (!list)\n return;\n for (const record of [...list]) {\n if (record.original === listener && record.capture === capture) {\n removeListenerRecord(type, record);\n }\n }\n };\n const clear = () => {\n for (const [type, list] of Array.from(listeners.entries())) {\n for (const record of [...list]) {\n removeListenerRecord(type, record);\n }\n }\n listeners.clear();\n for (const record of wildcardListeners) {\n if (record.signal && record.abortHandler) {\n record.signal.removeEventListener(\"abort\", record.abortHandler);\n }\n }\n wildcardListeners.clear();\n };\n const on = (type, options) => {\n return new Observable((observer) => {\n let opts2;\n if (typeof options === \"boolean\") {\n opts2 = { capture: options };\n } else {\n opts2 = options ?? {};\n }\n const handler = opts2.handler;\n const once = opts2.once;\n const eventHandler = (e) => {\n let success = false;\n try {\n if (handler) {\n handler(e);\n }\n observer.next(e);\n success = true;\n } finally {\n if (once && success) {\n observer.complete();\n }\n }\n };\n const errorHandler = (e) => {\n observer.error(e.detail);\n };\n const unsubscribeEvent = addEventListener(type, eventHandler, opts2);\n let unsubscribeError;\n if (opts2.receiveError) {\n unsubscribeError = addEventListener(\"error\", errorHandler, opts2);\n }\n return () => {\n unsubscribeEvent();\n if (unsubscribeError) {\n unsubscribeError();\n }\n };\n });\n };\n const onceMethod = (type, listener, options) => {\n if (typeof options === \"boolean\") {\n return addEventListener(type, listener, { capture: options, once: true });\n }\n return addEventListener(type, listener, { ...options ?? {}, once: true });\n };\n const removeAllListeners = (type) => {\n if (type !== undefined) {\n const list = listeners.get(type);\n if (list) {\n for (const record of [...list]) {\n removeListenerRecord(type, record);\n }\n listeners.delete(type);\n }\n } else {\n for (const [eventType, list] of Array.from(listeners.entries())) {\n for (const record of [...list]) {\n removeListenerRecord(eventType, record);\n }\n }\n listeners.clear();\n for (const record of wildcardListeners) {\n if (record.signal && record.abortHandler) {\n record.signal.removeEventListener(\"abort\", record.abortHandler);\n }\n }\n wildcardListeners.clear();\n }\n };\n const pipe = (target2, mapFn) => {\n if (isCompleted) {\n return () => {};\n }\n const unsubscribe2 = addWildcardListener(\"*\", (event) => {\n if (mapFn) {\n const mapped = mapFn(createEvent(event.originalType, event.detail, {\n target: target2,\n currentTarget: target2,\n eventPhase: 2,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n composed: event.composed\n }));\n if (mapped !== null) {\n target2.dispatchEvent(mapped);\n }\n } else {\n target2.dispatchEvent({\n type: event.originalType,\n detail: event.detail\n });\n }\n });\n const completionUnsub = () => {\n unsubscribe2();\n };\n completionCallbacks.add(completionUnsub);\n return () => {\n completionCallbacks.delete(completionUnsub);\n unsubscribe2();\n };\n };\n const complete2 = () => {\n if (isCompleted)\n return;\n isCompleted = true;\n for (const cb of completionCallbacks) {\n try {\n cb();\n } catch (err) {\n try {\n handleListenerError(\"complete\", err);\n } catch {}\n }\n }\n completionCallbacks.clear();\n for (const [eventType, list] of Array.from(listeners.entries())) {\n for (const record of [...list]) {\n removeListenerRecord(eventType, record);\n }\n }\n listeners.clear();\n for (const record of wildcardListeners) {\n if (record.signal && record.abortHandler) {\n record.signal.removeEventListener(\"abort\", record.abortHandler);\n }\n }\n wildcardListeners.clear();\n };\n const subscribe = (type, observerOrNext, error2, completeHandler) => {\n let observer;\n if (typeof observerOrNext === \"function\") {\n observer = {\n next: observerOrNext,\n error: error2,\n complete: completeHandler\n };\n } else {\n observer = observerOrNext ?? {};\n }\n let closed = false;\n if (isCompleted) {\n if (observer.complete) {\n try {\n observer.complete();\n } catch {}\n }\n return {\n unsubscribe: () => {\n closed = true;\n },\n get closed() {\n return closed || isCompleted;\n }\n };\n }\n const unsub = addEventListener(type, (event) => {\n if (closed)\n return;\n if (observer.next) {\n try {\n observer.next(event);\n } catch (err) {\n if (observer.error) {\n try {\n observer.error(err);\n } catch {}\n }\n }\n }\n });\n const onComplete = () => {\n if (closed)\n return;\n closed = true;\n if (observer.complete) {\n try {\n observer.complete();\n } catch {}\n }\n };\n completionCallbacks.add(onComplete);\n return {\n unsubscribe: () => {\n if (closed)\n return;\n closed = true;\n completionCallbacks.delete(onComplete);\n unsub();\n },\n get closed() {\n return closed || isCompleted;\n }\n };\n };\n const toObservable = () => {\n return new Observable((observer) => {\n if (isCompleted) {\n observer.complete();\n return;\n }\n const wildcardListener = (event) => {\n observer.next(createEvent(event.originalType, event.detail, {\n target,\n currentTarget: target,\n eventPhase: 2,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n composed: event.composed\n }));\n };\n const unsubscribe2 = addWildcardListener(\"*\", wildcardListener);\n const onComplete = () => {\n observer.complete();\n };\n completionCallbacks.add(onComplete);\n return () => {\n unsubscribe2();\n completionCallbacks.delete(onComplete);\n };\n });\n };\n function events(type, options) {\n if (isCompleted) {\n return {\n [Symbol.asyncIterator]() {\n return this;\n },\n next() {\n return Promise.resolve({\n value: undefined,\n done: true\n });\n },\n return() {\n return Promise.resolve({\n value: undefined,\n done: true\n });\n }\n };\n }\n const signal = options?.signal;\n const bufferSize = options?.bufferSize ?? Infinity;\n const overflowStrategy = options?.overflowStrategy ?? \"drop-oldest\";\n const buffer = [];\n let resolve = null;\n let done = false;\n let hasOverflow = false;\n let onAbort = null;\n const cleanupAbortListener = () => {\n if (signal && onAbort) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n };\n const unsub = addEventListener(type, (event) => {\n if (done)\n return;\n const typedEvent = event;\n if (resolve) {\n const r = resolve;\n resolve = null;\n r({ value: typedEvent, done: false });\n } else {\n if (buffer.length >= bufferSize && bufferSize !== Infinity) {\n switch (overflowStrategy) {\n case \"drop-oldest\":\n buffer.shift();\n buffer.push(typedEvent);\n break;\n case \"drop-latest\":\n break;\n case \"throw\":\n unsub();\n completionCallbacks.delete(onComplete);\n done = true;\n hasOverflow = true;\n cleanupAbortListener();\n return;\n }\n } else {\n buffer.push(typedEvent);\n }\n }\n });\n const onComplete = () => {\n done = true;\n cleanupAbortListener();\n if (resolve) {\n const r = resolve;\n resolve = null;\n r({ value: undefined, done: true });\n }\n };\n completionCallbacks.add(onComplete);\n if (signal) {\n onAbort = () => {\n done = true;\n completionCallbacks.delete(onComplete);\n unsub();\n if (resolve) {\n const r = resolve;\n resolve = null;\n r({ value: undefined, done: true });\n }\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n if (signal.aborted)\n onAbort();\n }\n const iterator = {\n [Symbol.asyncIterator]() {\n return this;\n },\n async next() {\n if (buffer.length > 0) {\n return { value: buffer.shift(), done: false };\n }\n if (resolve !== null) {\n return Promise.reject(new Error(\"Concurrent calls to next() are not supported on this async iterator\"));\n }\n return new Promise((_resolve, _reject) => {\n if (hasOverflow) {\n hasOverflow = false;\n _reject(new BufferOverflowError(type, bufferSize));\n return;\n }\n if (done) {\n _resolve({\n value: undefined,\n done: true\n });\n return;\n }\n resolve = _resolve;\n });\n },\n return() {\n if (resolve) {\n const r = resolve;\n resolve = null;\n r({ value: undefined, done: true });\n }\n done = true;\n completionCallbacks.delete(onComplete);\n unsub();\n cleanupAbortListener();\n return Promise.resolve({\n value: undefined,\n done: true\n });\n }\n };\n return iterator;\n }\n const target = {\n addEventListener,\n removeEventListener,\n dispatchEvent,\n clear,\n on,\n once: onceMethod,\n removeAllListeners,\n pipe,\n addWildcardListener,\n removeWildcardListener,\n complete: complete2,\n get completed() {\n return isCompleted;\n },\n subscribe,\n toObservable,\n events\n };\n target[SymbolObservable] = () => {\n return toObservable();\n };\n return target;\n}\n// src/event-emission.ts\nclass EventEmission {\n #target;\n constructor() {\n this.#target = createEventTarget();\n }\n addEventListener(type, listener, options) {\n return this.#target.addEventListener(type, listener, options);\n }\n removeEventListener(type, listener, options) {\n this.#target.removeEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n return this.#target.dispatchEvent(event);\n }\n on(type, options) {\n return this.#target.on(type, options);\n }\n once(type, listener, options) {\n return this.#target.once(type, listener, options);\n }\n removeAllListeners(type) {\n this.#target.removeAllListeners(type);\n }\n clear() {\n this.#target.clear();\n }\n pipe(target, mapFn) {\n return this.#target.pipe(target, mapFn);\n }\n addWildcardListener(pattern, listener, options) {\n return this.#target.addWildcardListener(pattern, listener, options);\n }\n removeWildcardListener(pattern, listener) {\n this.#target.removeWildcardListener(pattern, listener);\n }\n subscribe(typeOrObserver, observerOrNext, error2, completeHandler) {\n if (typeof typeOrObserver === \"string\") {\n return this.#target.subscribe(typeOrObserver, observerOrNext, error2, completeHandler);\n }\n if (typeof typeOrObserver === \"function\") {\n return this.#target.toObservable().subscribe(typeOrObserver);\n }\n if (typeof typeOrObserver === \"object\" && typeOrObserver !== null) {\n const maybeObserver = typeOrObserver;\n if (typeof maybeObserver.next === \"function\" || typeof maybeObserver.error === \"function\" || typeof maybeObserver.complete === \"function\") {\n return this.#target.toObservable().subscribe(typeOrObserver);\n }\n return this.#target.toObservable().subscribe({});\n }\n throw new Error(\"subscribe() requires a string event type, callback function, or observer object\");\n }\n toObservable() {\n return this.#target.toObservable();\n }\n [SymbolObservable]() {\n return this.toObservable();\n }\n complete() {\n this.#target.complete();\n }\n get completed() {\n return this.#target.completed;\n }\n events(type, options) {\n return this.#target.events(type, options);\n }\n}\nexport {\n createEventTarget,\n SymbolObservable,\n EventEmission,\n BufferOverflowError\n};\n\n//# debugId=60621EDDB80DC90E64756E2164756E21\n",
50
+ "/**\n * Error codes for Conversationalist errors (kebab-case with `error:` prefix).\n */\nexport type ConversationalistErrorCode =\n | 'error:locked'\n | 'error:invalid-input'\n | 'error:invalid-position'\n | 'error:invalid-tool-reference'\n | 'error:duplicate-id'\n | 'error:not-found'\n | 'error:serialization'\n | 'error:validation'\n | 'error:integrity';\n\n/**\n * Base error class for all Conversationalist errors.\n *\n * Provides structured error information with error codes, context data,\n * and cause chains for better debugging.\n */\nexport class ConversationalistError extends Error {\n /** Structured error code */\n readonly code: ConversationalistErrorCode;\n\n /** Additional context data */\n readonly context?: Record<string, unknown> | undefined;\n\n /** Underlying cause (if any) */\n override readonly cause?: Error | undefined;\n\n constructor(\n code: ConversationalistErrorCode,\n message: string,\n options?: {\n context?: Record<string, unknown> | undefined;\n cause?: Error | undefined;\n },\n ) {\n super(message);\n this.name = 'ConversationalistError';\n this.code = code;\n this.context = options?.context;\n this.cause = options?.cause;\n\n // Maintain proper stack trace in V8 environments\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ConversationalistError);\n }\n }\n\n /**\n * Formats the error as a detailed string with code and context.\n */\n toDetailedString(): string {\n const parts = [`[${this.code}] ${this.message}`];\n\n if (this.context && Object.keys(this.context).length > 0) {\n parts.push(`Context: ${JSON.stringify(this.context, null, 2)}`);\n }\n\n if (this.cause) {\n parts.push(`Caused by: ${this.cause.message}`);\n }\n\n return parts.join('\\n');\n }\n}\n\n/**\n * Creates a lock error (ERR_LOCKED).\n * Thrown when a conversation is already being modified.\n */\nexport function createLockedError(conversationId: string): ConversationalistError {\n return new ConversationalistError(\n 'error:locked',\n `conversation ${conversationId} is locked (concurrent modification detected)`,\n { context: { conversationId } },\n );\n}\n\n/**\n * Creates an invalid input error (ERR_INVALID_INPUT).\n * Thrown when message input data is invalid.\n */\nexport function createInvalidInputError(\n message: string,\n context?: Record<string, unknown>,\n): ConversationalistError {\n return new ConversationalistError('error:invalid-input', message, { context });\n}\n\n/**\n * Creates an invalid position error (ERR_INVALID_POSITION).\n * Thrown when positions are non-contiguous or invalid.\n */\nexport function createInvalidPositionError(\n expected: number,\n actual: number,\n): ConversationalistError {\n return new ConversationalistError(\n 'error:invalid-position',\n `invalid position: expected ${expected}, got ${actual}`,\n { context: { expected, actual } },\n );\n}\n\n/**\n * Creates an invalid tool reference error (ERR_INVALID_TOOL_REFERENCE).\n * Thrown when a tool result references a non-existent tool-use message.\n */\nexport function createInvalidToolReferenceError(callId: string): ConversationalistError {\n return new ConversationalistError(\n 'error:invalid-tool-reference',\n `tool result references non-existent tool-use: ${callId}`,\n { context: { callId } },\n );\n}\n\n/**\n * Creates a duplicate ID error (ERR_DUPLICATE_ID).\n * Thrown when a conversation with the given ID already exists.\n */\nexport function createDuplicateIdError(id: string): ConversationalistError {\n return new ConversationalistError(\n 'error:duplicate-id',\n `conversation with id ${id} already exists`,\n { context: { id } },\n );\n}\n\n/**\n * Creates a not found error (ERR_NOT_FOUND).\n * Thrown when a conversation cannot be found.\n */\nexport function createNotFoundError(id: string): ConversationalistError {\n return new ConversationalistError(\n 'error:not-found',\n `conversation with id ${id} not found`,\n {\n context: { id },\n },\n );\n}\n\n/**\n * Creates a serialization error (ERR_SERIALIZATION).\n * Thrown when JSON serialization/deserialization fails.\n */\nexport function createSerializationError(\n message: string,\n cause?: Error,\n): ConversationalistError {\n return new ConversationalistError('error:serialization', message, { cause });\n}\n\n/**\n * Creates a validation error (ERR_VALIDATION).\n * Thrown when data validation fails (e.g., Zod schema validation).\n */\nexport function createValidationError(\n message: string,\n context?: Record<string, unknown>,\n cause?: Error,\n): ConversationalistError {\n return new ConversationalistError('error:validation', message, { context, cause });\n}\n\n/**\n * Creates an integrity error (ERR_INTEGRITY).\n * Thrown when conversation invariants are violated.\n */\nexport function createIntegrityError(\n message: string,\n context?: Record<string, unknown>,\n): ConversationalistError {\n return new ConversationalistError('error:integrity', message, { context });\n}\n",
51
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\nimport { z } from 'zod';\n\nimport type {\n Conversation,\n ConversationStatus,\n JSONValue,\n Message,\n MessageInput,\n MessageRole,\n TokenUsage,\n ToolCall,\n ToolResult,\n} from './types';\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (!value || typeof value !== 'object') return false;\n const prototype = Reflect.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n};\n\ntype RawMultiModalContent = {\n type: 'text' | 'image';\n text?: string | undefined;\n url?: string | undefined;\n mimeType?: string | undefined;\n};\n\nfunction toMultiModalContent(value: RawMultiModalContent): MultiModalContent {\n const result: MultiModalContent = { type: value.type };\n if (value.text !== undefined) result.text = value.text;\n if (value.url !== undefined) result.url = value.url;\n if (value.mimeType !== undefined) result.mimeType = value.mimeType;\n return result;\n}\n\n/**\n * Zod schema for JSON-serializable values.\n */\nexport const jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() => {\n const jsonObjectSchema = z.preprocess(\n (value, ctx) => {\n if (!isPlainObject(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'expected a plain object',\n });\n return z.NEVER;\n }\n return value;\n },\n z.record(z.string(), jsonValueSchema),\n );\n\n return z.union([\n z.string(),\n z.number().refine((value) => Number.isFinite(value), {\n message: 'expected a finite number',\n }),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n jsonObjectSchema,\n ]);\n}) satisfies z.ZodType<JSONValue>;\n\n/**\n * Zod schema for multi-modal content parts (text or image).\n */\nexport const multiModalContentSchema = z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('image'),\n url: z.string().url(),\n mimeType: z.string().optional(),\n text: z.string().optional(),\n }),\n ])\n .transform(toMultiModalContent) satisfies z.ZodType<MultiModalContent>;\n\n/**\n * Zod schema for valid message roles.\n */\nexport const messageRoleSchema = z.enum([\n 'user',\n 'assistant',\n 'system',\n 'developer',\n 'tool-use',\n 'tool-result',\n 'snapshot',\n]) satisfies z.ZodType<MessageRole>;\n\n/**\n * Zod schema for tool call metadata.\n */\nexport const toolCallSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n arguments: jsonValueSchema,\n })\n .strict() satisfies z.ZodType<ToolCall>;\n\n/**\n * Zod schema for tool result metadata.\n */\nexport const toolResultSchema = z\n .object({\n callId: z.string(),\n outcome: z.enum(['success', 'error']),\n content: jsonValueSchema,\n })\n .strict() satisfies z.ZodType<ToolResult>;\n\n/**\n * Zod schema for token usage accounting.\n */\nexport const tokenUsageSchema = z.object({\n prompt: z.number().int().min(0),\n completion: z.number().int().min(0),\n total: z.number().int().min(0),\n}) satisfies z.ZodType<TokenUsage>;\n\n/**\n * Zod schema for message input payloads.\n */\nexport const messageInputSchema = z\n .object({\n role: messageRoleSchema,\n content: z.union([z.string(), z.array(multiModalContentSchema)]),\n metadata: z.record(z.string(), jsonValueSchema).optional(),\n hidden: z.boolean().optional(),\n toolCall: toolCallSchema.optional(),\n toolResult: toolResultSchema.optional(),\n tokenUsage: tokenUsageSchema.optional(),\n goalCompleted: z.boolean().optional(),\n })\n .strict() satisfies z.ZodType<MessageInput>;\n\n/**\n * Zod schema for messages.\n */\nexport const messageSchema = z\n .object({\n id: z.string(),\n role: messageRoleSchema,\n content: z.union([z.string(), z.array(multiModalContentSchema)]),\n position: z.number().int().min(0),\n createdAt: z.string(),\n metadata: z.record(z.string(), jsonValueSchema),\n hidden: z.boolean(),\n toolCall: toolCallSchema.optional(),\n toolResult: toolResultSchema.optional(),\n tokenUsage: tokenUsageSchema.optional(),\n goalCompleted: z.boolean().optional(),\n })\n .strict() satisfies z.ZodType<Message>;\n\n/**\n * Zod schema for conversation status values.\n */\nexport const conversationStatusSchema = z.enum([\n 'active',\n 'archived',\n 'deleted',\n]) satisfies z.ZodType<ConversationStatus>;\n\n/**\n * Raw conversation shape for storage systems that need direct access to fields.\n */\nexport const conversationShape = {\n schemaVersion: z.number().int().min(1),\n id: z.string(),\n title: z.string().optional(),\n status: conversationStatusSchema,\n metadata: z.record(z.string(), jsonValueSchema),\n ids: z.array(z.string()),\n messages: z.record(z.string(), messageSchema),\n createdAt: z.string(),\n updatedAt: z.string(),\n} as const;\n\n/**\n * Zod schema for serialized conversations.\n */\nexport const conversationSchema = z\n .object(conversationShape)\n .strict() satisfies z.ZodType<Conversation>;\n",
52
+ "import { createIntegrityError } from '../errors';\nimport type { Conversation } from '../types';\n\nexport type IntegrityIssueCode =\n | 'integrity:missing-message'\n | 'integrity:unlisted-message'\n | 'integrity:duplicate-message-id'\n | 'integrity:orphan-tool-result'\n | 'integrity:tool-result-before-call'\n | 'integrity:duplicate-tool-call';\n\nexport interface IntegrityIssue {\n code: IntegrityIssueCode;\n message: string;\n data?: Record<string, unknown> | undefined;\n}\n\n/**\n * Validates conversation invariants and returns a list of issues.\n */\nexport function validateConversationIntegrity(\n conversation: Conversation,\n): IntegrityIssue[] {\n const issues: IntegrityIssue[] = [];\n const seenIds = new Set<string>();\n\n conversation.ids.forEach((id, index) => {\n if (seenIds.has(id)) {\n issues.push({\n code: 'integrity:duplicate-message-id',\n message: `duplicate message id in ids: ${id}`,\n data: { id, position: index },\n });\n } else {\n seenIds.add(id);\n }\n\n if (!conversation.messages[id]) {\n issues.push({\n code: 'integrity:missing-message',\n message: `missing message for id ${id}`,\n data: { id, position: index },\n });\n }\n });\n\n for (const id of Object.keys(conversation.messages)) {\n if (!seenIds.has(id)) {\n issues.push({\n code: 'integrity:unlisted-message',\n message: `message ${id} is not listed in ids`,\n data: { id },\n });\n }\n }\n\n const toolUses = new Map<string, { position: number; messageId: string }>();\n\n conversation.ids.forEach((id, index) => {\n const message = conversation.messages[id];\n if (!message) return;\n\n if (message.role === 'tool-use' && message.toolCall) {\n if (toolUses.has(message.toolCall.id)) {\n issues.push({\n code: 'integrity:duplicate-tool-call',\n message: `duplicate toolCall.id ${message.toolCall.id}`,\n data: { toolCallId: message.toolCall.id, messageId: message.id },\n });\n } else {\n toolUses.set(message.toolCall.id, { position: index, messageId: message.id });\n }\n }\n });\n\n conversation.ids.forEach((id, index) => {\n const message = conversation.messages[id];\n if (!message) return;\n\n if (message.role === 'tool-result' && message.toolResult) {\n const toolUse = toolUses.get(message.toolResult.callId);\n if (!toolUse) {\n issues.push({\n code: 'integrity:orphan-tool-result',\n message: `tool-result references missing tool-use ${message.toolResult.callId}`,\n data: { callId: message.toolResult.callId, messageId: message.id },\n });\n } else if (toolUse.position >= index) {\n issues.push({\n code: 'integrity:tool-result-before-call',\n message: `tool-result ${message.toolResult.callId} occurs before tool-use`,\n data: {\n callId: message.toolResult.callId,\n messageId: message.id,\n toolUseMessageId: toolUse.messageId,\n },\n });\n }\n }\n });\n\n return issues;\n}\n\n/**\n * Throws an integrity error if the conversation fails validation.\n */\nexport function assertConversationIntegrity(conversation: Conversation): void {\n const issues = validateConversationIntegrity(conversation);\n if (issues.length === 0) return;\n\n throw createIntegrityError('conversation integrity check failed', { issues });\n}\n",
53
+ "import { createValidationError } from '../errors';\nimport { conversationSchema } from '../schemas';\nimport type { Conversation } from '../types';\nimport { assertConversationIntegrity } from './integrity';\n\n/**\n * Ensures a conversation conforms to the schema (JSON-safe) and integrity rules.\n * Internal helper for public API enforcement points.\n */\nexport function assertConversationSafe(conversation: Conversation): void {\n const parsed = conversationSchema.safeParse(conversation);\n if (!parsed.success) {\n throw createValidationError('conversation failed schema validation', {\n issues: parsed.error.issues,\n });\n }\n\n assertConversationIntegrity(conversation);\n}\n\nexport function ensureConversationSafe(conversation: Conversation): Conversation {\n assertConversationSafe(conversation);\n return conversation;\n}\n",
50
54
  "import type { MultiModalContent } from '@lasercat/homogenaize';\n\n/**\n * Converts content to a multi-modal array format.\n * Wraps strings in a text content object, normalizes single items to arrays.\n */\nexport function toMultiModalArray(\n input: string | MultiModalContent | MultiModalContent[],\n): MultiModalContent[] {\n if (typeof input === 'string') return [{ type: 'text', text: input }];\n return Array.isArray(input) ? input : [input];\n}\n\n/**\n * Normalizes content to either a string or multi-modal array.\n * Single MultiModalContent items are wrapped in an array.\n */\nexport function normalizeContent(\n content?: string | MultiModalContent | MultiModalContent[],\n): string | MultiModalContent[] | undefined {\n if (content === undefined) return undefined;\n if (typeof content === 'string') return content;\n return Array.isArray(content) ? content : [content];\n}\n",
51
55
  "/**\n * Re-exports multi-modal types from @lasercat/homogenaize\n */\n\nimport type { MultiModalContent } from '@lasercat/homogenaize';\n\nexport type { Message, MultiModalContent } from '@lasercat/homogenaize';\n\n/**\n * TextContent and ImageContent are convenience types for discriminating MultiModalContent.\n */\nexport interface TextContent {\n type: 'text';\n text: string;\n}\n\n/**\n * ImageContent is a convenience type for image parts in multi-modal content.\n */\nexport interface ImageContent {\n type: 'image';\n url: string;\n mimeType?: string;\n text?: string;\n}\n\n/**\n * Creates a shallow copy of a MultiModalContent item.\n */\nexport function copyMultiModalContent(item: MultiModalContent): MultiModalContent {\n if (item.type === 'text') {\n const result: MultiModalContent = { type: 'text' };\n if (item.text !== undefined) result.text = item.text;\n return result;\n }\n const result: MultiModalContent = { type: 'image' };\n if (item.url !== undefined) result.url = item.url;\n if (item.mimeType !== undefined) result.mimeType = item.mimeType;\n if (item.text !== undefined) result.text = item.text;\n return result;\n}\n\n/**\n * Copies content, ensuring a mutable array is returned for multi-modal content.\n */\nexport function copyContent(\n content: string | ReadonlyArray<MultiModalContent>,\n): string | MultiModalContent[] {\n if (typeof content === 'string') {\n return content;\n }\n return content.map(copyMultiModalContent);\n}\n",
52
56
  "/**\n * Type-safe hasOwnProperty check.\n * Narrows the type to include the checked property.\n */\nexport function hasOwnProperty<X extends object, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Casts a value to its readonly variant.\n * Used to enforce immutability at the type level.\n */\nexport function toReadonly<T>(value: T): Readonly<T> {\n return value as Readonly<T>;\n}\n",
53
57
  "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport { copyContent } from '../multi-modal';\nimport type { AssistantMessage, Message } from '../types';\nimport { toReadonly } from './type-helpers';\n\n/**\n * Creates an immutable Message from a JSON representation.\n * Deep copies nested objects and arrays to ensure immutability.\n */\nexport function createMessage(props: AssistantMessage): AssistantMessage;\nexport function createMessage(props: Message): Message;\nexport function createMessage(\n props: Message | AssistantMessage,\n): Message | AssistantMessage {\n const content =\n typeof props.content === 'string'\n ? props.content\n : toReadonly(props.content.map((part) => part));\n\n const message: Message = {\n id: props.id,\n role: props.role,\n content,\n position: props.position,\n createdAt: props.createdAt,\n metadata: toReadonly({ ...props.metadata }),\n hidden: props.hidden,\n toolCall: props.toolCall ? toReadonly({ ...props.toolCall }) : undefined,\n toolResult: props.toolResult ? toReadonly({ ...props.toolResult }) : undefined,\n tokenUsage: props.tokenUsage ? toReadonly({ ...props.tokenUsage }) : undefined,\n };\n\n if (isAssistantMessage(props)) {\n return toReadonly({\n ...message,\n role: 'assistant',\n goalCompleted: props.goalCompleted,\n });\n }\n\n return toReadonly(message);\n}\n\n/**\n * Converts an immutable Message to a mutable JSON representation.\n * Creates deep copies of all nested objects.\n */\nexport function messageToJSON(message: AssistantMessage): AssistantMessage;\nexport function messageToJSON(message: Message): Message;\nexport function messageToJSON(\n message: Message | AssistantMessage,\n): Message | AssistantMessage {\n const base: Message = {\n id: message.id,\n role: message.role,\n content: copyContent(message.content),\n position: message.position,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n toolCall: message.toolCall ? { ...message.toolCall } : undefined,\n toolResult: message.toolResult ? { ...message.toolResult } : undefined,\n tokenUsage: message.tokenUsage ? { ...message.tokenUsage } : undefined,\n };\n\n if (isAssistantMessage(message)) {\n return {\n ...base,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n }\n\n return base;\n}\n\n/**\n * Extracts the content parts from a message as a multi-modal array.\n * String content is converted to a single text part.\n */\nexport function messageParts(message: Message): ReadonlyArray<MultiModalContent> {\n if (typeof message.content === 'string') {\n return message.content\n ? [{ type: 'text', text: message.content } as MultiModalContent]\n : [];\n }\n return message.content;\n}\n\n/**\n * Extracts all text content from a message, joined by the specified separator.\n * Non-text parts are excluded from the result.\n */\nexport function messageText(message: Message, joiner: string = '\\n\\n'): string {\n if (typeof message.content === 'string') return message.content;\n return messageParts(message)\n .filter((p) => p.type === 'text')\n .map((p: MultiModalContent) => (p.type === 'text' ? p.text : ''))\n .join(joiner);\n}\n\n/**\n * Checks if a message contains any image content.\n */\nexport function messageHasImages(message: Message): boolean {\n return messageParts(message).some((p) => p.type === 'image');\n}\n\n/**\n * Converts a message to a string representation.\n * Images are rendered as markdown image syntax.\n */\nexport function messageToString(message: Message): string {\n if (typeof message.content === 'string') return message.content;\n return messageParts(message)\n .map((part) =>\n part.type === 'text'\n ? part.text\n : `![${part.text ?? ''}](${(part as { url: string }).url})`,\n )\n .join('\\n\\n');\n}\n\n/**\n * Type guard for narrowing a Message to an AssistantMessage.\n */\nexport function isAssistantMessage(message: Message): message is AssistantMessage {\n return message.role === 'assistant';\n}\n",
54
58
  "import type { Conversation, Message } from '../types';\n\nexport function getOrderedMessages(conversation: Conversation): Message[] {\n const ordered: Message[] = [];\n for (const id of conversation.ids) {\n const message = conversation.messages[id];\n if (message) {\n ordered.push(message);\n }\n }\n return ordered;\n}\n\nexport function toIdRecord<T extends { id: string }>(\n items: readonly T[],\n): Record<string, T> {\n const record: Record<string, T> = {};\n for (const item of items) {\n record[item.id] = item;\n }\n return record;\n}\n",
55
- "import type { AssistantMessage, Conversation, JSONValue, Message } from '../types';\nimport { isAssistantMessage } from './message';\nimport { getOrderedMessages, toIdRecord } from './message-store';\nimport { toReadonly } from './type-helpers';\n\n/**\n * Checks if a metadata key is transient (starts with '_').\n * Transient metadata is intended for temporary UI state and should not be persisted.\n *\n * @param key - The metadata key to check\n * @returns true if the key starts with '_'\n *\n * @example\n * ```ts\n * isTransientKey('_tempId'); // true\n * isTransientKey('__internal'); // true\n * isTransientKey('source'); // false\n * ```\n */\nexport function isTransientKey(key: string): boolean {\n return key.startsWith('_');\n}\n\n/**\n * Strips transient metadata (keys starting with '_') from a metadata object.\n *\n * @param metadata - The metadata object to filter\n * @returns A new object with transient keys removed\n *\n * @example\n * ```ts\n * stripTransientFromRecord({ _temp: 1, source: 'web' });\n * // Returns: { source: 'web' }\n * ```\n */\nexport function stripTransientFromRecord(\n metadata: Record<string, JSONValue>,\n): Record<string, JSONValue> {\n const result: Record<string, JSONValue> = {};\n for (const [key, value] of Object.entries(metadata)) {\n if (!isTransientKey(key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * Strips all transient metadata from a conversation.\n * Transient metadata is identified by keys starting with '_'.\n * This is useful for persisting conversations without temporary UI state.\n *\n * @param conversation - The conversation to process\n * @returns A new conversation with transient metadata removed from both\n * the conversation and all messages\n *\n * @example\n * ```ts\n * const cleaned = stripTransientMetadata(conversation);\n * // conversation.metadata._tempState is removed\n * // message.metadata._deliveryStatus is removed\n * ```\n */\nexport function stripTransientMetadata(conversation: Conversation): Conversation {\n const strippedMessages = getOrderedMessages(conversation).map((message): Message => {\n const baseMessage = {\n id: message.id,\n role: message.role,\n content: message.content,\n position: message.position,\n createdAt: message.createdAt,\n metadata: toReadonly(stripTransientFromRecord({ ...message.metadata })),\n hidden: message.hidden,\n toolCall: message.toolCall,\n toolResult: message.toolResult,\n tokenUsage: message.tokenUsage,\n };\n\n if (isAssistantMessage(message)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n return toReadonly(assistantMessage);\n }\n\n return toReadonly(baseMessage);\n });\n\n return toReadonly({\n schemaVersion: conversation.schemaVersion,\n id: conversation.id,\n title: conversation.title,\n status: conversation.status,\n metadata: toReadonly(stripTransientFromRecord({ ...conversation.metadata })),\n ids: strippedMessages.map((message) => message.id),\n messages: toIdRecord(strippedMessages),\n createdAt: conversation.createdAt,\n updatedAt: conversation.updatedAt,\n });\n}\n",
59
+ "import { ensureConversationSafe } from '../conversation/validation';\nimport type { AssistantMessage, Conversation, JSONValue, Message } from '../types';\nimport { isAssistantMessage } from './message';\nimport { getOrderedMessages, toIdRecord } from './message-store';\nimport { toReadonly } from './type-helpers';\n\n/**\n * Checks if a metadata key is transient (starts with '_').\n * Transient metadata is intended for temporary UI state and should not be persisted.\n *\n * @param key - The metadata key to check\n * @returns true if the key starts with '_'\n *\n * @example\n * ```ts\n * isTransientKey('_tempId'); // true\n * isTransientKey('__internal'); // true\n * isTransientKey('source'); // false\n * ```\n */\nexport function isTransientKey(key: string): boolean {\n return key.startsWith('_');\n}\n\n/**\n * Strips transient metadata (keys starting with '_') from a metadata object.\n *\n * @param metadata - The metadata object to filter\n * @returns A new object with transient keys removed\n *\n * @example\n * ```ts\n * stripTransientFromRecord({ _temp: 1, source: 'web' });\n * // Returns: { source: 'web' }\n * ```\n */\nexport function stripTransientFromRecord(\n metadata: Record<string, JSONValue>,\n): Record<string, JSONValue> {\n const result: Record<string, JSONValue> = {};\n for (const [key, value] of Object.entries(metadata)) {\n if (!isTransientKey(key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * Strips all transient metadata from a conversation.\n * Transient metadata is identified by keys starting with '_'.\n * This is useful for persisting conversations without temporary UI state.\n *\n * @param conversation - The conversation to process\n * @returns A new conversation with transient metadata removed from both\n * the conversation and all messages\n *\n * @example\n * ```ts\n * const cleaned = stripTransientMetadata(conversation);\n * // conversation.metadata._tempState is removed\n * // message.metadata._deliveryStatus is removed\n * ```\n */\nexport function stripTransientMetadata(conversation: Conversation): Conversation {\n const strippedMessages = getOrderedMessages(conversation).map((message): Message => {\n const baseMessage = {\n id: message.id,\n role: message.role,\n content: message.content,\n position: message.position,\n createdAt: message.createdAt,\n metadata: toReadonly(stripTransientFromRecord({ ...message.metadata })),\n hidden: message.hidden,\n toolCall: message.toolCall,\n toolResult: message.toolResult,\n tokenUsage: message.tokenUsage,\n };\n\n if (isAssistantMessage(message)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n return toReadonly(assistantMessage);\n }\n\n return toReadonly(baseMessage);\n });\n\n return ensureConversationSafe(\n toReadonly({\n schemaVersion: conversation.schemaVersion,\n id: conversation.id,\n title: conversation.title,\n status: conversation.status,\n metadata: toReadonly(stripTransientFromRecord({ ...conversation.metadata })),\n ids: strippedMessages.map((message) => message.id),\n messages: toIdRecord(strippedMessages),\n createdAt: conversation.createdAt,\n updatedAt: conversation.updatedAt,\n }),\n );\n}\n",
56
60
  "import type { Message, MessagePlugin, TokenEstimator } from './types';\nimport { messageText } from './utilities';\n\n/**\n * Environment functions for conversation operations.\n * Allows dependency injection for testing and custom ID generation.\n */\nexport interface ConversationEnvironment {\n now: () => string;\n randomId: () => string;\n estimateTokens: TokenEstimator;\n plugins: MessagePlugin[];\n}\n\n/**\n * Simple character-based token estimator.\n * Approximates ~4 characters per token (rough average for English text).\n */\nexport function simpleTokenEstimator(message: Message): number {\n const text = messageText(message);\n return Math.ceil(text.length / 4);\n}\n\n/**\n * Default environment using Date.toISOString(), crypto.randomUUID(), and simple token estimation.\n */\nexport const defaultConversationEnvironment: ConversationEnvironment = {\n now: () => new Date().toISOString(),\n randomId: () => crypto.randomUUID(),\n estimateTokens: simpleTokenEstimator,\n plugins: [],\n};\n\n/**\n * Merges a partial environment with defaults.\n * Returns a complete environment with all required functions.\n */\nexport function resolveConversationEnvironment(\n environment?: Partial<ConversationEnvironment>,\n): ConversationEnvironment {\n return {\n now: environment?.now ?? defaultConversationEnvironment.now,\n randomId: environment?.randomId ?? defaultConversationEnvironment.randomId,\n estimateTokens:\n environment?.estimateTokens ?? defaultConversationEnvironment.estimateTokens,\n plugins: [...(environment?.plugins ?? defaultConversationEnvironment.plugins)],\n };\n}\n\n/**\n * Type guard to distinguish environment objects from message inputs.\n * Returns true if the value has environment functions but no role property.\n */\nexport function isConversationEnvironmentParameter(\n value: unknown,\n): value is Partial<ConversationEnvironment> {\n if (!value || typeof value !== 'object' || value === null) return false;\n if ('role' in (value as Record<string, unknown>)) return false;\n\n const candidate = value as Record<string, unknown>;\n return (\n typeof candidate['now'] === 'function' ||\n typeof candidate['randomId'] === 'function' ||\n typeof candidate['estimateTokens'] === 'function' ||\n (Array.isArray(candidate['plugins']) && candidate['plugins'].length > 0)\n );\n}\n\n/**\n * Binds a partial environment to a function that accepts an environment as its last argument.\n */\nexport function withEnvironment<T extends unknown[], R>(\n environment: Partial<ConversationEnvironment>,\n fn: (...args: [...T, Partial<ConversationEnvironment>?]) => R,\n): (...args: T) => R {\n return (...args: T) => fn(...args, environment);\n}\n",
57
- "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport {\n type ConversationEnvironment,\n isConversationEnvironmentParameter,\n resolveConversationEnvironment,\n simpleTokenEstimator,\n} from './environment';\nimport { copyContent } from './multi-modal';\nimport type { AssistantMessage, Conversation, Message, TokenEstimator } from './types';\nimport { createMessage, isAssistantMessage, toReadonly } from './utilities';\nimport { getOrderedMessages, toIdRecord } from './utilities/message-store';\n\nexport { simpleTokenEstimator };\n\nconst cloneMessageWithPosition = (\n message: Message,\n position: number,\n content: string | ReadonlyArray<MultiModalContent>,\n): Message => {\n const baseMessage = {\n id: message.id,\n role: message.role,\n content,\n position,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n toolCall: message.toolCall ? { ...message.toolCall } : undefined,\n toolResult: message.toolResult ? { ...message.toolResult } : undefined,\n tokenUsage: message.tokenUsage ? { ...message.tokenUsage } : undefined,\n };\n\n if (isAssistantMessage(message)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n return createMessage(assistantMessage);\n }\n\n return createMessage(baseMessage);\n};\n\n/**\n * Estimates total tokens in a conversation using the provided estimator function.\n * If no estimator is provided, the environment's default estimator is used.\n */\nexport function estimateConversationTokens(\n conversation: Conversation,\n estimateTokens?: TokenEstimator,\n environment?: Partial<ConversationEnvironment>,\n): number {\n let estimator = estimateTokens;\n let env = environment;\n\n if (\n !environment &&\n estimateTokens &&\n isConversationEnvironmentParameter(estimateTokens)\n ) {\n env = estimateTokens;\n estimator = undefined;\n }\n\n const resolvedEnvironment = resolveConversationEnvironment(env);\n const finalEstimator =\n typeof estimator === 'function' ? estimator : resolvedEnvironment.estimateTokens;\n\n return getOrderedMessages(conversation).reduce(\n (total, message) => total + finalEstimator(message),\n 0,\n );\n}\n\n/**\n * Options for truncateToTokenLimit.\n */\nexport interface TruncateOptions {\n estimateTokens?: TokenEstimator;\n preserveSystemMessages?: boolean;\n preserveLastN?: number;\n}\n\n/**\n * Truncates conversation to fit within an estimated token limit.\n * Removes oldest messages first while preserving system messages and optionally the last N messages.\n * If no estimator is provided, the environment's default estimator is used.\n */\nexport function truncateToTokenLimit(\n conversation: Conversation,\n maxTokens: number,\n optionsOrEstimator?: TruncateOptions | TokenEstimator,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n // Handle overloaded arguments\n let options: TruncateOptions = {};\n let env = environment;\n\n if (typeof optionsOrEstimator === 'function') {\n options = { estimateTokens: optionsOrEstimator };\n } else if (optionsOrEstimator) {\n // If environment was not explicitly passed, check if optionsOrEstimator IS the environment\n if (!environment && isConversationEnvironmentParameter(optionsOrEstimator)) {\n // Disambiguate between TruncateOptions and ConversationEnvironment.\n // Environment fields (now, randomId, non-empty plugins) take priority because they're\n // exclusive to ConversationEnvironment, while estimateTokens exists in both types.\n const candidate = optionsOrEstimator as Record<string, unknown>;\n const hasEnvFields = !!(\n candidate['now'] ||\n candidate['randomId'] ||\n (Array.isArray(candidate['plugins']) && candidate['plugins'].length > 0)\n );\n\n if (hasEnvFields) {\n // Treat as environment, not options\n env = optionsOrEstimator;\n } else {\n // Has estimateTokens but no exclusive environment fields, treat as options\n options = optionsOrEstimator;\n }\n } else {\n options = optionsOrEstimator;\n }\n }\n\n const resolvedEnvironment = resolveConversationEnvironment(env);\n const estimator = options.estimateTokens ?? resolvedEnvironment.estimateTokens;\n const preserveSystem = options.preserveSystemMessages ?? true;\n const preserveLastN = options.preserveLastN ?? 0;\n\n // Calculate current token count\n const currentTokens = estimateConversationTokens(\n conversation,\n estimator,\n resolvedEnvironment,\n );\n if (currentTokens <= maxTokens) {\n return conversation;\n }\n\n const now = resolvedEnvironment.now();\n\n // Separate messages into categories\n const orderedMessages = getOrderedMessages(conversation);\n const systemMessages = preserveSystem\n ? orderedMessages.filter((m) => m.role === 'system')\n : [];\n\n const nonSystemMessages = orderedMessages.filter((m) => m.role !== 'system');\n\n // Preserve the last N non-system messages\n const protectedMessages =\n preserveLastN > 0 ? nonSystemMessages.slice(-preserveLastN) : [];\n\n const removableMessages =\n preserveLastN > 0 ? nonSystemMessages.slice(0, -preserveLastN) : nonSystemMessages;\n\n // Calculate tokens for protected content\n const systemTokens = systemMessages.reduce((sum, m) => sum + estimator(m), 0);\n const protectedTokens = protectedMessages.reduce((sum, m) => sum + estimator(m), 0);\n const availableTokens = maxTokens - systemTokens - protectedTokens;\n\n if (availableTokens <= 0) {\n // Can only fit system and protected messages\n const allMessages = [...systemMessages, ...protectedMessages];\n const renumbered = allMessages.map((message, index) =>\n cloneMessageWithPosition(message, index, copyContent(message.content)),\n );\n\n return toReadonly({\n ...conversation,\n ids: renumbered.map((message) => message.id),\n messages: toIdRecord(renumbered),\n updatedAt: now,\n });\n }\n\n // Keep as many removable messages as possible, starting from the end (most recent)\n const keptRemovable: Message[] = [];\n let usedTokens = 0;\n\n for (let i = removableMessages.length - 1; i >= 0; i--) {\n const message = removableMessages[i]!;\n const messageTokens = estimator(message);\n if (usedTokens + messageTokens <= availableTokens) {\n keptRemovable.unshift(message);\n usedTokens += messageTokens;\n } else {\n break;\n }\n }\n\n // Combine: system messages + kept removable + protected\n const allMessages = [...systemMessages, ...keptRemovable, ...protectedMessages];\n\n // Sort by original position then renumber\n allMessages.sort((a, b) => a.position - b.position);\n\n const renumbered = allMessages.map((message, index) =>\n cloneMessageWithPosition(message, index, copyContent(message.content)),\n );\n\n return toReadonly({\n ...conversation,\n ids: renumbered.map((message) => message.id),\n messages: toIdRecord(renumbered),\n updatedAt: now,\n });\n}\n\n/**\n * Returns the last N messages from the conversation.\n * By default excludes system messages and hidden messages.\n */\nexport function getRecentMessages(\n conversation: Conversation,\n count: number,\n options?: {\n includeHidden?: boolean;\n includeSystem?: boolean;\n },\n): ReadonlyArray<Message> {\n const includeHidden = options?.includeHidden ?? false;\n const includeSystem = options?.includeSystem ?? false;\n\n const filtered = getOrderedMessages(conversation).filter((m) => {\n if (!includeHidden && m.hidden) return false;\n if (!includeSystem && m.role === 'system') return false;\n return true;\n });\n\n return filtered.slice(-count);\n}\n\n/**\n * Truncates conversation to keep only messages from the specified position onwards.\n * Optionally preserves system messages regardless of position.\n */\nexport function truncateFromPosition(\n conversation: Conversation,\n position: number,\n options?: {\n preserveSystemMessages?: boolean;\n },\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const preserveSystem = options?.preserveSystemMessages ?? true;\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const ordered = getOrderedMessages(conversation);\n const systemMessages = preserveSystem\n ? ordered.filter((m) => m.role === 'system' && m.position < position)\n : [];\n\n const keptMessages = ordered.filter((m) => m.position >= position);\n const allMessages = [...systemMessages, ...keptMessages];\n\n // Renumber positions\n const renumbered = allMessages.map((message, index) =>\n cloneMessageWithPosition(message, index, copyContent(message.content)),\n );\n\n return toReadonly({\n ...conversation,\n ids: renumbered.map((message) => message.id),\n messages: toIdRecord(renumbered),\n updatedAt: now,\n });\n}\n",
58
- "/**\n * Error codes for Conversationalist errors (kebab-case with `error:` prefix).\n */\nexport type ConversationalistErrorCode =\n | 'error:locked'\n | 'error:invalid-input'\n | 'error:invalid-position'\n | 'error:invalid-tool-reference'\n | 'error:duplicate-id'\n | 'error:not-found'\n | 'error:serialization'\n | 'error:validation';\n\n/**\n * Base error class for all Conversationalist errors.\n *\n * Provides structured error information with error codes, context data,\n * and cause chains for better debugging.\n */\nexport class ConversationalistError extends Error {\n /** Structured error code */\n readonly code: ConversationalistErrorCode;\n\n /** Additional context data */\n readonly context?: Record<string, unknown> | undefined;\n\n /** Underlying cause (if any) */\n override readonly cause?: Error | undefined;\n\n constructor(\n code: ConversationalistErrorCode,\n message: string,\n options?: {\n context?: Record<string, unknown> | undefined;\n cause?: Error | undefined;\n },\n ) {\n super(message);\n this.name = 'ConversationalistError';\n this.code = code;\n this.context = options?.context;\n this.cause = options?.cause;\n\n // Maintain proper stack trace in V8 environments\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ConversationalistError);\n }\n }\n\n /**\n * Formats the error as a detailed string with code and context.\n */\n toDetailedString(): string {\n const parts = [`[${this.code}] ${this.message}`];\n\n if (this.context && Object.keys(this.context).length > 0) {\n parts.push(`Context: ${JSON.stringify(this.context, null, 2)}`);\n }\n\n if (this.cause) {\n parts.push(`Caused by: ${this.cause.message}`);\n }\n\n return parts.join('\\n');\n }\n}\n\n/**\n * Creates a lock error (ERR_LOCKED).\n * Thrown when a conversation is already being modified.\n */\nexport function createLockedError(conversationId: string): ConversationalistError {\n return new ConversationalistError(\n 'error:locked',\n `conversation ${conversationId} is locked (concurrent modification detected)`,\n { context: { conversationId } },\n );\n}\n\n/**\n * Creates an invalid input error (ERR_INVALID_INPUT).\n * Thrown when message input data is invalid.\n */\nexport function createInvalidInputError(\n message: string,\n context?: Record<string, unknown>,\n): ConversationalistError {\n return new ConversationalistError('error:invalid-input', message, { context });\n}\n\n/**\n * Creates an invalid position error (ERR_INVALID_POSITION).\n * Thrown when positions are non-contiguous or invalid.\n */\nexport function createInvalidPositionError(\n expected: number,\n actual: number,\n): ConversationalistError {\n return new ConversationalistError(\n 'error:invalid-position',\n `invalid position: expected ${expected}, got ${actual}`,\n { context: { expected, actual } },\n );\n}\n\n/**\n * Creates an invalid tool reference error (ERR_INVALID_TOOL_REFERENCE).\n * Thrown when a tool result references a non-existent tool-use message.\n */\nexport function createInvalidToolReferenceError(callId: string): ConversationalistError {\n return new ConversationalistError(\n 'error:invalid-tool-reference',\n `tool result references non-existent tool-use: ${callId}`,\n { context: { callId } },\n );\n}\n\n/**\n * Creates a duplicate ID error (ERR_DUPLICATE_ID).\n * Thrown when a conversation with the given ID already exists.\n */\nexport function createDuplicateIdError(id: string): ConversationalistError {\n return new ConversationalistError(\n 'error:duplicate-id',\n `conversation with id ${id} already exists`,\n { context: { id } },\n );\n}\n\n/**\n * Creates a not found error (ERR_NOT_FOUND).\n * Thrown when a conversation cannot be found.\n */\nexport function createNotFoundError(id: string): ConversationalistError {\n return new ConversationalistError(\n 'error:not-found',\n `conversation with id ${id} not found`,\n {\n context: { id },\n },\n );\n}\n\n/**\n * Creates a serialization error (ERR_SERIALIZATION).\n * Thrown when JSON serialization/deserialization fails.\n */\nexport function createSerializationError(\n message: string,\n cause?: Error,\n): ConversationalistError {\n return new ConversationalistError('error:serialization', message, { cause });\n}\n\n/**\n * Creates a validation error (ERR_VALIDATION).\n * Thrown when data validation fails (e.g., Zod schema validation).\n */\nexport function createValidationError(\n message: string,\n context?: Record<string, unknown>,\n cause?: Error,\n): ConversationalistError {\n return new ConversationalistError('error:validation', message, { context, cause });\n}\n",
59
- "import type { MultiModalContent } from '@lasercat/homogenaize';\n\n/**\n * Current schema version for serialized conversation data.\n * Increment when making breaking changes to the schema.\n */\nexport const CURRENT_SCHEMA_VERSION = 3;\n\n/**\n * JSON-serializable value types.\n */\nexport type JSONPrimitive = string | number | boolean | null;\nexport type JSONValue = JSONPrimitive | JSONValue[] | { [key: string]: JSONValue };\n\n/**\n * Supported message roles in a conversation.\n */\nexport type MessageRole =\n | 'user'\n | 'assistant'\n | 'system'\n | 'developer'\n | 'tool-use'\n | 'tool-result'\n | 'snapshot';\n\n/**\n * Tool call metadata for tool-use messages.\n */\nexport interface ToolCall {\n id: string;\n name: string;\n arguments: JSONValue;\n}\n\n/**\n * Tool execution result metadata for tool-result messages.\n */\nexport interface ToolResult {\n callId: string;\n outcome: 'success' | 'error';\n content: JSONValue;\n toolCallId?: string | undefined;\n toolName?: string | undefined;\n result?: JSONValue | undefined;\n error?: string | undefined;\n}\n\n/**\n * Token usage accounting for a message.\n */\nexport interface TokenUsage {\n prompt: number;\n completion: number;\n total: number;\n}\n\n/**\n * Mutable input shape for creating a message.\n */\nexport interface MessageInput {\n role: MessageRole;\n content: string | MultiModalContent[];\n metadata?: Record<string, JSONValue> | undefined;\n hidden?: boolean | undefined;\n toolCall?: ToolCall | undefined;\n toolResult?: ToolResult | undefined;\n tokenUsage?: TokenUsage | undefined;\n /** Indicates if this message represents goal completion (assistant only) */\n goalCompleted?: boolean | undefined;\n}\n\n/**\n * Immutable message shape exposed by the library.\n */\nexport interface Message {\n id: string;\n role: MessageRole;\n content: string | ReadonlyArray<MultiModalContent>;\n position: number;\n createdAt: string;\n metadata: Readonly<Record<string, JSONValue>>;\n hidden: boolean;\n toolCall?: Readonly<ToolCall> | undefined;\n toolResult?: Readonly<ToolResult> | undefined;\n tokenUsage?: Readonly<TokenUsage> | undefined;\n}\n\n/**\n * Assistant-only message shape with optional goal completion metadata.\n */\nexport interface AssistantMessage extends Message {\n role: 'assistant';\n /** Indicates if this message represents goal completion */\n goalCompleted?: boolean | undefined;\n}\n\n/**\n * Status values for a conversation lifecycle.\n */\nexport type ConversationStatus = 'active' | 'archived' | 'deleted';\n\n/**\n * Immutable conversation state.\n */\nexport interface Conversation {\n schemaVersion: number;\n id: string;\n title?: string | undefined;\n status: ConversationStatus;\n metadata: Readonly<Record<string, JSONValue>>;\n ids: ReadonlyArray<string>;\n messages: Readonly<Record<string, Message>>;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * A function that estimates the number of tokens in a message.\n */\nexport type TokenEstimator = (message: Message) => number;\n\n/**\n * A plugin that can transform a MessageInput before it is appended.\n */\nexport type MessagePlugin = (input: MessageInput) => MessageInput;\n\n/**\n * Serialized form of a single node in the conversation history tree.\n */\nexport interface HistoryNodeSnapshot {\n conversation: Conversation;\n children: HistoryNodeSnapshot[];\n}\n\n/**\n * Serialized form of the entire conversation history.\n */\nexport interface ConversationHistorySnapshot {\n root: HistoryNodeSnapshot;\n currentPath: number[];\n}\n\n/**\n * Base options for all export operations.\n */\nexport interface ExportOptions {\n /**\n * When true, strips transient metadata (keys starting with '_').\n * @default false\n */\n stripTransient?: boolean;\n\n /**\n * When false, hidden messages are omitted from export output.\n * @default true\n */\n includeHidden?: boolean;\n\n /**\n * When true, hidden message content is replaced with a redacted placeholder.\n * Only applies when includeHidden is true.\n * @default false\n */\n redactHiddenContent?: boolean;\n\n /**\n * Placeholder used when redacting tool or hidden content.\n * @default \"[REDACTED]\"\n */\n redactedPlaceholder?: string;\n\n /**\n * When true, redacts tool call arguments with '[REDACTED]'.\n * @default false\n */\n redactToolArguments?: boolean;\n\n /**\n * When true, redacts tool result content with '[REDACTED]'.\n * @default false\n */\n redactToolResults?: boolean;\n}\n\n/**\n * Options for exporting to markdown format.\n */\nexport interface ToMarkdownOptions extends ExportOptions {\n /**\n * When true, includes YAML frontmatter with full metadata for lossless round-trip.\n * Headers include message ID: `### Role (msg-id)`\n * @default false\n */\n includeMetadata?: boolean;\n}\n",
60
- "import type {\n Message as ExternalMessage,\n MultiModalContent,\n} from '@lasercat/homogenaize';\n\nimport {\n type ConversationEnvironment,\n isConversationEnvironmentParameter,\n resolveConversationEnvironment,\n} from './environment';\nimport {\n createInvalidPositionError,\n createInvalidToolReferenceError,\n createSerializationError,\n} from './errors';\nimport { copyContent } from './multi-modal';\nimport type {\n AssistantMessage,\n Conversation,\n ConversationStatus,\n JSONValue,\n Message,\n MessageInput,\n} from './types';\nimport { CURRENT_SCHEMA_VERSION } from './types';\nimport {\n createMessage,\n messageHasImages,\n normalizeContent,\n toReadonly,\n} from './utilities';\nimport { getOrderedMessages, toIdRecord } from './utilities/message-store';\n\nexport type { ConversationEnvironment } from './environment';\n\ntype ToolUseIndex = Map<string, { name: string }>;\n\nconst buildToolUseIndex = (messages: ReadonlyArray<Message>): ToolUseIndex =>\n messages.reduce((index, message) => {\n if (message.role === 'tool-use' && message.toolCall) {\n index.set(message.toolCall.id, { name: message.toolCall.name });\n }\n return index;\n }, new Map<string, { name: string }>());\n\nconst registerToolUse = (\n index: ToolUseIndex,\n toolCall: { id: string; name: string },\n): ToolUseIndex => {\n const next = new Map(index);\n next.set(toolCall.id, { name: toolCall.name });\n return next;\n};\n\nconst assertToolReference = (index: ToolUseIndex, callId: string): void => {\n if (!index.has(callId)) {\n throw createInvalidToolReferenceError(callId);\n }\n};\n\nfunction partitionAppendArgs(\n args: Array<MessageInput | Partial<ConversationEnvironment>>,\n): {\n inputs: MessageInput[];\n environment?: Partial<ConversationEnvironment> | undefined;\n} {\n if (args.length === 0) {\n return { inputs: [] };\n }\n\n const last = args[args.length - 1];\n if (isConversationEnvironmentParameter(last)) {\n return {\n inputs: args.slice(0, -1) as MessageInput[],\n environment: last,\n };\n }\n\n return { inputs: args as MessageInput[] };\n}\n\n/**\n * Creates a new immutable conversation with optional metadata and environment overrides.\n */\nexport function createConversation(\n options?: {\n id?: string;\n title?: string;\n status?: ConversationStatus;\n metadata?: Record<string, JSONValue>;\n },\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const conv: Conversation = {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n id: options?.id ?? resolvedEnvironment.randomId(),\n title: options?.title,\n status: options?.status ?? 'active',\n metadata: { ...(options?.metadata ?? {}) },\n ids: [],\n messages: {},\n createdAt: now,\n updatedAt: now,\n };\n return toReadonly(conv);\n}\n\n/**\n * Appends one or more messages to a conversation.\n * Validates tool-result references and returns a new immutable conversation.\n */\nexport function appendMessages(\n conversation: Conversation,\n ...inputs: MessageInput[]\n): Conversation;\nexport function appendMessages(\n conversation: Conversation,\n ...inputsAndEnvironment: [...MessageInput[], Partial<ConversationEnvironment>]\n): Conversation;\nexport function appendMessages(\n conversation: Conversation,\n ...args: (MessageInput | Partial<ConversationEnvironment>)[]\n): Conversation {\n const { inputs, environment } = partitionAppendArgs(args);\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const startPosition = conversation.ids.length;\n const initialToolUses = buildToolUseIndex(getOrderedMessages(conversation));\n\n const { messages } = inputs.reduce<{\n toolUses: ToolUseIndex;\n messages: Message[];\n }>(\n (state, input, index) => {\n // Apply plugins to the input\n const processedInput = resolvedEnvironment.plugins.reduce(\n (acc, plugin) => plugin(acc),\n input,\n );\n\n if (processedInput.role === 'tool-result' && processedInput.toolResult) {\n assertToolReference(state.toolUses, processedInput.toolResult.callId);\n }\n\n const normalizedContent = normalizeContent(processedInput.content) as\n | string\n | MultiModalContent[];\n\n const baseMessage = {\n id: resolvedEnvironment.randomId(),\n role: processedInput.role,\n content: normalizedContent,\n position: startPosition + index,\n createdAt: now,\n metadata: { ...(processedInput.metadata ?? {}) },\n hidden: processedInput.hidden ?? false,\n toolCall: processedInput.toolCall,\n toolResult: processedInput.toolResult,\n tokenUsage: processedInput.tokenUsage,\n };\n\n let message: Message;\n if (processedInput.role === 'assistant') {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: processedInput.goalCompleted,\n };\n message = createMessage(assistantMessage);\n } else {\n message = createMessage(baseMessage);\n }\n\n const toolUses =\n processedInput.role === 'tool-use' && processedInput.toolCall\n ? registerToolUse(state.toolUses, processedInput.toolCall)\n : state.toolUses;\n\n return {\n toolUses,\n messages: [...state.messages, message],\n };\n },\n { toolUses: initialToolUses, messages: [] },\n );\n\n const messageIds = messages.map((message) => message.id);\n const next: Conversation = {\n ...conversation,\n ids: [...conversation.ids, ...messageIds],\n messages: { ...conversation.messages, ...toIdRecord(messages) },\n updatedAt: now,\n };\n return toReadonly(next);\n}\n\n/**\n * Appends a user message to the conversation.\n */\nexport function appendUserMessage(\n conversation: Conversation,\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n return environment\n ? appendMessages(conversation, { role: 'user', content, metadata }, environment)\n : appendMessages(conversation, { role: 'user', content, metadata });\n}\n\n/**\n * Appends an assistant message to the conversation.\n */\nexport function appendAssistantMessage(\n conversation: Conversation,\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n return environment\n ? appendMessages(conversation, { role: 'assistant', content, metadata }, environment)\n : appendMessages(conversation, { role: 'assistant', content, metadata });\n}\n\n/**\n * Appends a system message to the conversation.\n */\nexport function appendSystemMessage(\n conversation: Conversation,\n content: string,\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n return environment\n ? appendMessages(conversation, { role: 'system', content, metadata }, environment)\n : appendMessages(conversation, { role: 'system', content, metadata });\n}\n\n/**\n * Returns messages from a conversation in order.\n * Hidden messages are excluded by default.\n */\nexport function getMessages(\n conversation: Conversation,\n options?: { includeHidden?: boolean },\n): Message[] {\n const includeHidden = options?.includeHidden ?? false;\n const ordered = getOrderedMessages(conversation);\n return includeHidden ? ordered : ordered.filter((m) => !m.hidden);\n}\n\n/**\n * Returns the message at a specific position index.\n */\nexport function getMessageAtPosition(\n conversation: Conversation,\n position: number,\n): Message | undefined {\n const id = conversation.ids[position];\n return id ? conversation.messages[id] : undefined;\n}\n\n/**\n * Returns all message IDs for the conversation in order.\n */\nexport function getMessageIds(conversation: Conversation): string[] {\n return [...conversation.ids];\n}\n\n/**\n * Finds a message by its unique identifier.\n */\nexport function getMessageById(\n conversation: Conversation,\n id: string,\n): Message | undefined {\n return conversation.messages[id];\n}\n\n/**\n * Filters messages using a predicate.\n */\nexport function searchConversationMessages(\n conversation: Conversation,\n predicate: (m: Message) => boolean,\n): Message[] {\n return getOrderedMessages(conversation).filter(predicate);\n}\n\n/**\n * Computes basic statistics about a conversation's messages.\n */\nexport function getStatistics(conversation: Conversation): {\n total: number;\n byRole: Record<string, number>;\n hidden: number;\n withImages: number;\n} {\n const ordered = getOrderedMessages(conversation);\n const stats = ordered.reduce(\n (acc, message) => {\n const byRole = {\n ...acc.byRole,\n [message.role]: (acc.byRole[message.role] ?? 0) + 1,\n };\n\n return {\n byRole,\n hidden: acc.hidden + (message.hidden ? 1 : 0),\n withImages: acc.withImages + (messageHasImages(message) ? 1 : 0),\n };\n },\n { byRole: {} as Record<string, number>, hidden: 0, withImages: 0 },\n );\n return { total: ordered.length, ...stats };\n}\n\n/**\n * Returns true if the conversation contains any system messages.\n */\nexport function hasSystemMessage(conversation: Conversation): boolean {\n return getOrderedMessages(conversation).some((m) => m.role === 'system');\n}\n\n/**\n * Returns the first system message in the conversation, if any.\n */\nexport function getFirstSystemMessage(conversation: Conversation): Message | undefined {\n return getOrderedMessages(conversation).find((m) => m.role === 'system');\n}\n\n/**\n * Returns all system messages in the conversation.\n */\nexport function getSystemMessages(conversation: Conversation): ReadonlyArray<Message> {\n return getOrderedMessages(conversation).filter((m) => m.role === 'system');\n}\n\n/**\n * Prepends a system message and renumbers existing messages.\n */\nexport function prependSystemMessage(\n conversation: Conversation,\n content: string,\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const newMessage: Message = createMessage({\n id: resolvedEnvironment.randomId(),\n role: 'system',\n content,\n position: 0,\n createdAt: now,\n metadata: { ...(metadata ?? {}) },\n hidden: false,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const ordered = getOrderedMessages(conversation);\n const renumberedMessages = ordered.map((message) =>\n createMessage({\n id: message.id,\n role: message.role,\n content: copyContent(message.content),\n position: message.position + 1,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n toolCall: message.toolCall,\n toolResult: message.toolResult,\n tokenUsage: message.tokenUsage,\n }),\n );\n\n return toReadonly({\n ...conversation,\n ids: [newMessage.id, ...ordered.map((message) => message.id)],\n messages: toIdRecord([newMessage, ...renumberedMessages]),\n updatedAt: now,\n });\n}\n\n/**\n * Replaces the first system message, or prepends one if none exist.\n */\nexport function replaceSystemMessage(\n conversation: Conversation,\n content: string,\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const ordered = getOrderedMessages(conversation);\n const firstSystemIndex = ordered.findIndex((m) => m.role === 'system');\n\n if (firstSystemIndex === -1) {\n return prependSystemMessage(conversation, content, metadata, resolvedEnvironment);\n }\n\n const original = ordered[firstSystemIndex]!;\n const replaced: Message = createMessage({\n id: original.id,\n role: 'system',\n content,\n position: original.position,\n createdAt: original.createdAt,\n metadata: { ...(metadata ?? original.metadata) },\n hidden: original.hidden,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const next: Conversation = {\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [replaced.id]: replaced },\n updatedAt: now,\n };\n return toReadonly(next);\n}\n\n/**\n * Collapses multiple system messages into a single deduplicated message.\n */\nexport function collapseSystemMessages(\n conversation: Conversation,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const ordered = getOrderedMessages(conversation);\n const systemMessages = ordered.filter((m) => m.role === 'system');\n\n if (systemMessages.length <= 1) {\n return conversation;\n }\n\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const { parts } = systemMessages.reduce(\n (state, message) => {\n const contentStr =\n typeof message.content === 'string'\n ? message.content\n : message.content\n .map((part) => (part.type === 'text' ? part.text : ''))\n .join('');\n\n if (!contentStr || state.seen.has(contentStr)) {\n return state;\n }\n\n const seen = new Set(state.seen);\n seen.add(contentStr);\n\n return { seen, parts: [...state.parts, contentStr] };\n },\n { seen: new Set<string>(), parts: [] as string[] },\n );\n\n const collapsedContent = parts.join('\\n');\n const firstSystemMsg = systemMessages[0]!;\n\n const collapsed: Message = createMessage({\n id: firstSystemMsg.id,\n role: 'system',\n content: collapsedContent,\n position: firstSystemMsg.position,\n createdAt: firstSystemMsg.createdAt,\n metadata: { ...firstSystemMsg.metadata },\n hidden: firstSystemMsg.hidden,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const systemIdsToRemove = systemMessages.slice(1).reduce((ids, message) => {\n const nextIds = new Set(ids);\n nextIds.add(message.id);\n return nextIds;\n }, new Set<string>());\n\n const messages = ordered\n .filter((m) => !systemIdsToRemove.has(m.id))\n .map((m) => (m.id === firstSystemMsg.id ? collapsed : m));\n\n const renumbered = messages.map((message, index) => {\n if (message.position === index) return message;\n return createMessage({\n id: message.id,\n role: message.role,\n content: copyContent(message.content),\n position: index,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n toolCall: message.toolCall,\n toolResult: message.toolResult,\n tokenUsage: message.tokenUsage,\n });\n });\n\n const next: Conversation = {\n ...conversation,\n ids: renumbered.map((message) => message.id),\n messages: toIdRecord(renumbered),\n updatedAt: now,\n };\n return toReadonly(next);\n}\n\n/**\n * Replaces message content at the specified position with a placeholder.\n * Clears tool and token metadata for the redacted message.\n */\nexport function redactMessageAtPosition(\n conversation: Conversation,\n position: number,\n placeholder: string = '[REDACTED]',\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n if (position < 0 || position >= conversation.ids.length) {\n throw createInvalidPositionError(conversation.ids.length - 1, position);\n }\n\n const id = conversation.ids[position];\n const original = id ? conversation.messages[id] : undefined;\n if (!original) {\n throw createInvalidPositionError(conversation.ids.length - 1, position);\n }\n const redacted: Message = createMessage({\n id: original.id,\n role: original.role,\n content: placeholder,\n position: original.position,\n createdAt: original.createdAt,\n metadata: { ...original.metadata },\n hidden: original.hidden,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const next: Conversation = {\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [redacted.id]: redacted },\n updatedAt: now,\n };\n return toReadonly(next);\n}\n\n/**\n * Migrates a conversation JSON object to the current schema version.\n * Handles data from older versions that may not have a schemaVersion field.\n */\nexport function migrateConversation(json: unknown): Conversation {\n // Handle non-object input\n if (typeof json !== 'object' || json === null || Array.isArray(json)) {\n return {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n id: '',\n status: 'active',\n metadata: {},\n ids: [],\n messages: {},\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n }\n\n const data = json as Conversation & { messages?: unknown };\n const rawMessages = data.messages;\n let messages: Record<string, Message> = {};\n let ids: string[] = [];\n const rawIds = (data as { ids?: unknown }).ids;\n const isStringArray = (value: unknown): value is string[] =>\n Array.isArray(value) && value.every((item) => typeof item === 'string');\n\n if (Array.isArray(rawMessages)) {\n const rawMessageArray = rawMessages as Message[];\n ids = rawMessageArray.map((message) => message.id);\n messages = Object.fromEntries(\n rawMessageArray.map((message) => [message.id, message]),\n );\n } else if (rawMessages && typeof rawMessages === 'object') {\n messages = { ...(rawMessages as Record<string, Message>) };\n if (isStringArray(rawIds) && rawIds.length > 0) {\n ids = [...rawIds];\n } else {\n ids = Object.values(messages)\n .sort((a, b) => a.position - b.position)\n .map((message) => message.id);\n }\n }\n\n if (ids.length > 0) {\n ids = ids.filter((id) => id in messages);\n const missing = Object.keys(messages).filter((id) => !ids.includes(id));\n if (missing.length > 0) {\n const sortedMissing = missing.sort(\n (a, b) => (messages[a]?.position ?? 0) - (messages[b]?.position ?? 0),\n );\n ids = [...ids, ...sortedMissing];\n }\n }\n\n // If no schemaVersion, assume pre-versioning data (version 0) and add it\n if (!('schemaVersion' in json)) {\n return {\n ...data,\n schemaVersion: CURRENT_SCHEMA_VERSION,\n ids,\n messages,\n };\n }\n\n // Future: add migration logic between versions here\n return { ...data, ids, messages };\n}\n\n/**\n * Reconstructs a conversation from a JSON object.\n * Automatically migrates data from older schema versions.\n * Validates message positions are contiguous and tool results reference valid calls.\n */\nexport function deserializeConversation(json: unknown): Conversation {\n // Migrate to current schema version\n const migrated = migrateConversation(json);\n\n try {\n const orderedMessages = migrated.ids.map((id, index) => {\n const message = migrated.messages[id];\n if (!message) {\n throw createSerializationError(`missing message for id ${id}`);\n }\n if (message.position !== index) {\n throw createInvalidPositionError(index, message.position);\n }\n return message;\n });\n\n orderedMessages.reduce<{ toolUses: ToolUseIndex }>(\n (state, message) => {\n if (message.role === 'tool-use' && message.toolCall) {\n return {\n toolUses: registerToolUse(state.toolUses, message.toolCall),\n };\n }\n\n if (message.role === 'tool-result' && message.toolResult) {\n assertToolReference(state.toolUses, message.toolResult.callId);\n }\n\n return state;\n },\n { toolUses: new Map<string, { name: string }>() },\n );\n\n const messageInstances: Message[] = orderedMessages.map((m) => createMessage(m));\n const conv: Conversation = {\n schemaVersion: migrated.schemaVersion,\n id: migrated.id,\n title: migrated.title,\n status: migrated.status,\n metadata: { ...migrated.metadata },\n ids: orderedMessages.map((message) => message.id),\n messages: toIdRecord(messageInstances),\n createdAt: migrated.createdAt,\n updatedAt: migrated.updatedAt,\n };\n return toReadonly(conv);\n } catch (error) {\n throw createSerializationError(\n `failed to deserialize conversation: ${\n error instanceof Error ? error.message : String(error)\n }`,\n error as Error,\n );\n }\n}\n\n/**\n * Converts a conversation into a provider-agnostic external message array.\n * Hidden messages are skipped and roles are normalized.\n */\nexport function toChatMessages(conversation: Conversation): ExternalMessage[] {\n const roleMap: Record<string, 'user' | 'assistant' | 'system'> = {\n user: 'user',\n assistant: 'assistant',\n system: 'system',\n developer: 'system',\n 'tool-use': 'assistant',\n 'tool-result': 'user',\n snapshot: 'system',\n };\n\n const result: ExternalMessage[] = [];\n for (const message of getOrderedMessages(conversation)) {\n if (message.hidden) continue;\n const externalRole = roleMap[message.role] as 'user' | 'assistant' | 'system';\n result.push({\n role: externalRole,\n content: message.content as string | MultiModalContent[],\n });\n }\n return result;\n}\n",
61
- "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport {\n type ConversationEnvironment,\n resolveConversationEnvironment,\n} from './environment';\nimport type {\n AssistantMessage,\n Conversation,\n JSONValue,\n Message,\n TokenUsage,\n} from './types';\nimport { createMessage, isAssistantMessage, toReadonly } from './utilities';\nimport { getOrderedMessages, toIdRecord } from './utilities/message-store';\n\nconst STREAMING_KEY = '__streaming';\n\nconst cloneMessage = (\n original: Message,\n overrides: {\n content?: string | MultiModalContent[];\n metadata?: Record<string, JSONValue>;\n position?: number;\n tokenUsage?: TokenUsage;\n } = {},\n): Message => {\n const baseMessage = {\n id: original.id,\n role: original.role,\n content:\n overrides.content ??\n (typeof original.content === 'string'\n ? original.content\n : [...(original.content as MultiModalContent[])]),\n position: overrides.position ?? original.position,\n createdAt: original.createdAt,\n metadata: overrides.metadata ?? { ...original.metadata },\n hidden: original.hidden,\n toolCall: original.toolCall ? { ...original.toolCall } : undefined,\n toolResult: original.toolResult ? { ...original.toolResult } : undefined,\n tokenUsage: overrides.tokenUsage,\n };\n\n if (isAssistantMessage(original)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: original.goalCompleted,\n };\n return createMessage(assistantMessage);\n }\n\n return createMessage(baseMessage);\n};\n\n/**\n * Checks if a message is currently streaming (has the streaming metadata flag).\n */\nexport function isStreamingMessage(message: Message): boolean {\n return message.metadata[STREAMING_KEY] === true;\n}\n\n/**\n * Gets the currently streaming message from a conversation, if any.\n */\nexport function getStreamingMessage(conversation: Conversation): Message | undefined {\n return getOrderedMessages(conversation).find(isStreamingMessage);\n}\n\n/**\n * Creates a pending/streaming message placeholder and appends it to the conversation.\n * Returns both the updated conversation and the ID of the new streaming message.\n */\nexport function appendStreamingMessage(\n conversation: Conversation,\n role: 'assistant' | 'user',\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): { conversation: Conversation; messageId: string } {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const messageId = resolvedEnvironment.randomId();\n\n const newMessage = createMessage({\n id: messageId,\n role,\n content: '',\n position: conversation.ids.length,\n createdAt: now,\n metadata: { ...(metadata ?? {}), [STREAMING_KEY]: true },\n hidden: false,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const updatedConversation = toReadonly({\n ...conversation,\n ids: [...conversation.ids, messageId],\n messages: { ...conversation.messages, [messageId]: newMessage },\n updatedAt: now,\n });\n\n return { conversation: updatedConversation, messageId };\n}\n\n/**\n * Updates the content of a streaming message.\n * This replaces the existing content (use for accumulating streamed tokens).\n */\nexport function updateStreamingMessage(\n conversation: Conversation,\n messageId: string,\n content: string | MultiModalContent[],\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const original = conversation.messages[messageId];\n if (!original) {\n return conversation;\n }\n\n const overrides: {\n content?: string | MultiModalContent[];\n tokenUsage?: TokenUsage;\n } = {\n content: typeof content === 'string' ? content : [...content],\n };\n if (original.tokenUsage) {\n overrides.tokenUsage = { ...original.tokenUsage };\n }\n\n const updated = cloneMessage(original, overrides);\n\n return toReadonly({\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [updated.id]: updated },\n updatedAt: now,\n });\n}\n\n/**\n * Marks a streaming message as complete, removing the streaming flag.\n * Optionally adds token usage and additional metadata.\n */\nexport function finalizeStreamingMessage(\n conversation: Conversation,\n messageId: string,\n options?: {\n tokenUsage?: TokenUsage;\n metadata?: Record<string, JSONValue>;\n },\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const original = conversation.messages[messageId];\n if (!original) {\n return conversation;\n }\n\n // Remove the streaming flag and merge in any new metadata\n const { [STREAMING_KEY]: _, ...restMetadata } = original.metadata as Record<\n string,\n JSONValue\n >;\n const finalMetadata: Record<string, JSONValue> = {\n ...restMetadata,\n ...(options?.metadata ?? {}),\n };\n\n const finalizeOverrides: {\n metadata?: Record<string, JSONValue>;\n tokenUsage?: TokenUsage;\n } = {\n metadata: finalMetadata,\n };\n if (options?.tokenUsage) {\n finalizeOverrides.tokenUsage = { ...options.tokenUsage };\n }\n\n const updated = cloneMessage(original, finalizeOverrides);\n\n return toReadonly({\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [updated.id]: updated },\n updatedAt: now,\n });\n}\n\n/**\n * Cancels a streaming message by removing it from the conversation.\n */\nexport function cancelStreamingMessage(\n conversation: Conversation,\n messageId: string,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n if (!conversation.messages[messageId]) {\n return conversation;\n }\n\n const messages = getOrderedMessages(conversation)\n .filter((m) => m.id !== messageId)\n .map((message, index) =>\n message.position === index\n ? message\n : (() => {\n const overrides: { position: number; tokenUsage?: TokenUsage } = {\n position: index,\n };\n if (message.tokenUsage) {\n overrides.tokenUsage = { ...message.tokenUsage };\n }\n return cloneMessage(message, overrides);\n })(),\n );\n\n return toReadonly({\n ...conversation,\n ids: messages.map((message) => message.id),\n messages: toIdRecord(messages),\n updatedAt: now,\n });\n}\n",
62
- "import type {\n AddEventListenerOptionsLike,\n EmissionEvent,\n EventListenerLike,\n EventListenerOptionsLike,\n EventTargetLike,\n} from 'event-emission';\nimport { createEventTarget } from 'event-emission';\n\nimport {\n estimateConversationTokens,\n getRecentMessages,\n truncateFromPosition,\n type TruncateOptions,\n truncateToTokenLimit,\n} from './context';\nimport {\n appendAssistantMessage,\n appendMessages,\n appendSystemMessage,\n appendUserMessage,\n collapseSystemMessages,\n createConversation,\n deserializeConversation,\n getFirstSystemMessage,\n getMessageAtPosition,\n getMessageById,\n getMessageIds,\n getMessages,\n getStatistics,\n getSystemMessages,\n hasSystemMessage,\n prependSystemMessage,\n redactMessageAtPosition,\n replaceSystemMessage,\n searchConversationMessages,\n toChatMessages,\n} from './conversation';\nimport {\n type ConversationEnvironment,\n resolveConversationEnvironment,\n} from './environment';\nimport {\n appendStreamingMessage,\n cancelStreamingMessage,\n finalizeStreamingMessage,\n getStreamingMessage,\n updateStreamingMessage,\n} from './streaming';\nimport type {\n Conversation,\n ConversationHistorySnapshot,\n HistoryNodeSnapshot,\n JSONValue,\n Message,\n MessageInput,\n TokenUsage,\n} from './types';\n\n/**\n * Event detail for conversation history changes.\n */\nexport interface ConversationHistoryEventDetail {\n type: ConversationHistoryActionType;\n conversation: Conversation;\n}\n\nexport type ConversationHistoryEvent = EmissionEvent<\n ConversationHistoryEventDetail,\n ConversationHistoryEventType\n>;\n\ntype ConversationHistoryActionType = 'push' | 'undo' | 'redo' | 'switch';\ntype ConversationHistoryEventType = 'change' | ConversationHistoryActionType;\ntype ConversationHistoryEventMap = Record<\n ConversationHistoryEventType,\n ConversationHistoryEventDetail\n>;\ntype ConversationHistoryEventTarget = EventTargetLike<ConversationHistoryEventMap>;\n\ninterface HistoryNode {\n conversation: Conversation;\n parent: HistoryNode | null;\n children: HistoryNode[];\n}\n\n/**\n * Manages a stack of conversation versions to support undo, redo, and branching.\n */\nexport class ConversationHistory extends EventTarget {\n private currentNode: HistoryNode;\n private environment: ConversationEnvironment;\n private readonly events: ConversationHistoryEventTarget;\n\n constructor(\n initial: Conversation = createConversation(),\n environment?: Partial<ConversationEnvironment>,\n ) {\n super();\n this.environment = resolveConversationEnvironment(environment);\n this.events = createEventTarget<ConversationHistoryEventMap>();\n this.currentNode = {\n conversation: initial,\n parent: null,\n children: [],\n };\n }\n\n /**\n * Dispatches a change event.\n */\n private notifyChange(type: ConversationHistoryActionType): void {\n const detail: ConversationHistoryEventDetail = {\n type,\n conversation: this.current,\n };\n this.events.dispatchEvent({ type: 'change', detail });\n this.events.dispatchEvent({ type, detail });\n }\n\n private toAddListenerOptions(\n options?: boolean | AddEventListenerOptions,\n ): AddEventListenerOptionsLike | boolean | undefined {\n if (typeof options === 'boolean' || options === undefined) return options;\n const mapped: AddEventListenerOptionsLike = {};\n if (options.capture !== undefined) mapped.capture = options.capture;\n if (options.once !== undefined) mapped.once = options.once;\n if (options.passive !== undefined) mapped.passive = options.passive;\n if (options.signal !== undefined) {\n mapped.signal = options.signal as NonNullable<\n AddEventListenerOptionsLike['signal']\n >;\n }\n return mapped;\n }\n\n private toRemoveListenerOptions(\n options?: boolean | EventListenerOptions,\n ): EventListenerOptionsLike | boolean | undefined {\n if (typeof options === 'boolean' || options === undefined) return options;\n const mapped: EventListenerOptionsLike = {};\n if (options.capture !== undefined) mapped.capture = options.capture;\n return mapped;\n }\n\n /**\n * Overrides addEventListener to optionally return an unsubscribe function.\n * This is a convenience for modern frontend frameworks.\n */\n override addEventListener(\n type: string,\n callback:\n | ((event: ConversationHistoryEvent) => void)\n | EventListenerOrEventListenerObject\n | null,\n options?: boolean | AddEventListenerOptions,\n ): void | (() => void) {\n if (!callback) return;\n return this.events.addEventListener(\n type as ConversationHistoryEventType,\n callback as EventListenerLike<ConversationHistoryEvent>,\n this.toAddListenerOptions(options),\n );\n }\n\n /**\n * Removes a listener registered with addEventListener.\n */\n override removeEventListener(\n type: string,\n callback:\n | ((event: ConversationHistoryEvent) => void)\n | EventListenerOrEventListenerObject\n | null,\n options?: boolean | EventListenerOptions,\n ): void {\n if (!callback) return;\n this.events.removeEventListener(\n type as ConversationHistoryEventType,\n callback as EventListenerLike<ConversationHistoryEvent>,\n this.toRemoveListenerOptions(options),\n );\n }\n\n /**\n * Dispatches a DOM-style event through the event-emission target.\n */\n override dispatchEvent(event: Event): boolean {\n return this.events.dispatchEvent(\n event as Parameters<ConversationHistoryEventTarget['dispatchEvent']>[0],\n );\n }\n\n /**\n * Subscribes to conversation changes.\n * This follows the Svelte store contract, making ConversationHistory a valid Svelte store.\n * @param run - Callback called with the current conversation whenever it changes.\n * @returns An unsubscribe function.\n */\n subscribe(run: (value: Conversation) => void): () => void {\n // Call immediately with current value (Svelte store contract)\n run(this.current);\n\n const handler = (event: ConversationHistoryEvent) => {\n if (event?.detail?.conversation) {\n run(event.detail.conversation);\n }\n };\n\n const unsubscribe = this.addEventListener(\n 'change',\n handler as (event: ConversationHistoryEvent) => void,\n );\n return (unsubscribe as () => void) || (() => {});\n }\n\n /**\n * Returns the current conversation.\n * Useful for useSyncExternalStore in React.\n */\n getSnapshot(): Conversation {\n return this.current;\n }\n\n /**\n * The current conversation state.\n */\n get current(): Conversation {\n return this.currentNode.conversation;\n }\n\n /**\n * Returns the message IDs for the current conversation.\n */\n get ids(): string[] {\n return getMessageIds(this.current);\n }\n\n /**\n * Whether an undo operation is possible.\n */\n get canUndo(): boolean {\n return this.currentNode.parent !== null;\n }\n\n /**\n * Whether a redo operation is possible.\n */\n get canRedo(): boolean {\n return this.currentNode.children.length > 0;\n }\n\n /**\n * Returns the environment associated with this history.\n */\n get env(): ConversationEnvironment {\n return this.environment;\n }\n\n /**\n * Returns the number of branches available at the current level.\n */\n get branchCount(): number {\n return this.currentNode.parent ? this.currentNode.parent.children.length : 1;\n }\n\n /**\n * Returns the index of the current branch at this level.\n */\n get branchIndex(): number {\n if (!this.currentNode.parent) return 0;\n return this.currentNode.parent.children.indexOf(this.currentNode);\n }\n\n /**\n * Returns the number of alternate paths available from the current state.\n */\n get redoCount(): number {\n return this.currentNode.children.length;\n }\n\n /**\n * Pushes a new conversation state onto the history.\n * If the current state is not a leaf, a new branch is created.\n */\n push(next: Conversation): void {\n const newNode: HistoryNode = {\n conversation: next,\n parent: this.currentNode,\n children: [],\n };\n this.currentNode.children.push(newNode);\n this.currentNode = newNode;\n this.notifyChange('push');\n }\n\n /**\n * Reverts to the previous conversation state.\n * @returns The conversation state after undo, or undefined if not possible.\n */\n undo(): Conversation | undefined {\n if (this.currentNode.parent) {\n this.currentNode = this.currentNode.parent;\n this.notifyChange('undo');\n return this.current;\n }\n return undefined;\n }\n\n /**\n * Advances to the next conversation state.\n * @param childIndex - The index of the branch to follow (default: 0).\n * @returns The conversation state after redo, or undefined if not possible.\n */\n redo(childIndex: number = 0): Conversation | undefined {\n const next = this.currentNode.children[childIndex];\n if (next) {\n this.currentNode = next;\n this.notifyChange('redo');\n return this.current;\n }\n return undefined;\n }\n\n /**\n * Switches to a different branch at the current level.\n * @param index - The index of the sibling branch to switch to.\n * @returns The new conversation state, or undefined if not possible.\n */\n switchToBranch(index: number): Conversation | undefined {\n if (this.currentNode.parent) {\n const target = this.currentNode.parent.children[index];\n if (target) {\n this.currentNode = target;\n this.notifyChange('switch');\n return this.current;\n }\n }\n return undefined;\n }\n\n /**\n * Returns the sequence of conversations from root to current.\n */\n getPath(): Conversation[] {\n const path: Conversation[] = [];\n let curr: HistoryNode | null = this.currentNode;\n while (curr) {\n path.unshift(curr.conversation);\n curr = curr.parent;\n }\n return path;\n }\n\n // --- QUERY METHODS ---\n\n /**\n * Returns messages from the current conversation.\n */\n getMessages(options?: { includeHidden?: boolean }): ReadonlyArray<Message> {\n return getMessages(this.current, options);\n }\n\n /**\n * Returns the message at the specified position.\n */\n getMessageAtPosition(position: number): Message | undefined {\n return getMessageAtPosition(this.current, position);\n }\n\n /**\n * Returns all message IDs for the current conversation in order.\n */\n getMessageIds(): string[] {\n return getMessageIds(this.current);\n }\n\n /**\n * Returns the message with the specified ID, if present.\n */\n getMessageById(id: string): Message | undefined {\n return getMessageById(this.current, id);\n }\n\n /**\n * Shorthand for getMessageById.\n */\n get(id: string): Message | undefined {\n return getMessageById(this.current, id);\n }\n\n /**\n * Filters messages using a predicate.\n */\n searchMessages(predicate: (m: Message) => boolean): Message[] {\n return searchConversationMessages(this.current, predicate);\n }\n\n /**\n * Computes basic statistics for the current conversation.\n */\n getStatistics() {\n return getStatistics(this.current);\n }\n\n /**\n * Returns true if any system message exists in the current conversation.\n */\n hasSystemMessage(): boolean {\n return hasSystemMessage(this.current);\n }\n\n /**\n * Returns the first system message in the current conversation, if any.\n */\n getFirstSystemMessage(): Message | undefined {\n return getFirstSystemMessage(this.current);\n }\n\n /**\n * Returns all system messages in the current conversation.\n */\n getSystemMessages(): ReadonlyArray<Message> {\n return getSystemMessages(this.current);\n }\n\n /**\n * Converts the current conversation to external chat message format.\n */\n toChatMessages() {\n return toChatMessages(this.current);\n }\n\n /**\n * Estimates tokens for the current conversation.\n */\n estimateTokens(estimator?: (message: Message) => number): number {\n return estimateConversationTokens(this.current, estimator, this.env);\n }\n\n /**\n * Returns the most recent messages, with optional filtering.\n */\n getRecentMessages(\n count: number,\n options?: { includeHidden?: boolean; includeSystem?: boolean },\n ): ReadonlyArray<Message> {\n return getRecentMessages(this.current, count, options);\n }\n\n /**\n * Returns the current streaming message, if any.\n */\n getStreamingMessage(): Message | undefined {\n return getStreamingMessage(this.current);\n }\n\n // --- MUTATION METHODS ---\n\n /**\n * Appends one or more messages to the history.\n */\n appendMessages(...inputs: MessageInput[]): void {\n this.push(appendMessages(this.current, ...inputs, this.env));\n }\n\n /**\n * Appends a user message to the history.\n */\n appendUserMessage(\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n ): void {\n this.push(appendUserMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Appends an assistant message to the history.\n */\n appendAssistantMessage(\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n ): void {\n this.push(appendAssistantMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Appends a system message to the history.\n */\n appendSystemMessage(content: string, metadata?: Record<string, JSONValue>): void {\n this.push(appendSystemMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Prepends a system message to the history.\n */\n prependSystemMessage(content: string, metadata?: Record<string, JSONValue>): void {\n this.push(prependSystemMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Replaces the first system message or prepends one if none exist.\n */\n replaceSystemMessage(content: string, metadata?: Record<string, JSONValue>): void {\n this.push(replaceSystemMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Collapses multiple system messages into a single message.\n */\n collapseSystemMessages(): void {\n this.push(collapseSystemMessages(this.current, this.env));\n }\n\n /**\n * Redacts the message at the given position.\n */\n redactMessageAtPosition(position: number, placeholder?: string): void {\n this.push(redactMessageAtPosition(this.current, position, placeholder, this.env));\n }\n\n /**\n * Truncates the conversation from a specific position.\n */\n truncateFromPosition(\n position: number,\n options?: { preserveSystemMessages?: boolean },\n ): void {\n this.push(truncateFromPosition(this.current, position, options, this.env));\n }\n\n /**\n * Truncates the conversation to fit within a token limit.\n */\n truncateToTokenLimit(maxTokens: number, options?: TruncateOptions): void {\n this.push(truncateToTokenLimit(this.current, maxTokens, options, this.env));\n }\n\n /**\n * Appends a streaming message placeholder and returns its ID.\n */\n appendStreamingMessage(\n role: 'assistant' | 'user',\n metadata?: Record<string, JSONValue>,\n ): string {\n const { conversation, messageId } = appendStreamingMessage(\n this.current,\n role,\n metadata,\n this.env,\n );\n this.push(conversation);\n return messageId;\n }\n\n /**\n * Updates a streaming message's content.\n */\n updateStreamingMessage(messageId: string, content: string): void {\n this.push(updateStreamingMessage(this.current, messageId, content, this.env));\n }\n\n /**\n * Finalizes a streaming message and optionally adds metadata or token usage.\n */\n finalizeStreamingMessage(\n messageId: string,\n options?: { tokenUsage?: TokenUsage; metadata?: Record<string, JSONValue> },\n ): void {\n this.push(finalizeStreamingMessage(this.current, messageId, options, this.env));\n }\n\n /**\n * Cancels a streaming message by removing it from the conversation.\n */\n cancelStreamingMessage(messageId: string): void {\n this.push(cancelStreamingMessage(this.current, messageId, this.env));\n }\n\n /**\n * Captures the entire history tree and current state in a plain snapshot.\n */\n snapshot(): ConversationHistorySnapshot {\n const getPath = (node: HistoryNode): number[] => {\n const path: number[] = [];\n let curr = node;\n while (curr.parent) {\n path.unshift(curr.parent.children.indexOf(curr));\n curr = curr.parent;\n }\n return path;\n };\n\n const serializeNode = (node: HistoryNode): HistoryNodeSnapshot => ({\n conversation: node.conversation,\n children: node.children.map(serializeNode),\n });\n\n let root = this.currentNode;\n while (root.parent) {\n root = root.parent;\n }\n\n return {\n root: serializeNode(root),\n currentPath: getPath(this.currentNode),\n };\n }\n\n /**\n * Reconstructs a ConversationHistory instance from JSON.\n */\n static from(\n json: ConversationHistorySnapshot,\n environment?: Partial<ConversationEnvironment>,\n ): ConversationHistory {\n const rootConv = deserializeConversation(json.root.conversation);\n const history = new ConversationHistory(rootConv, environment);\n\n // Recursive function to build the tree\n const buildTree = (\n nodeJSON: HistoryNodeSnapshot,\n parentNode: HistoryNode,\n ): HistoryNode => {\n const nodeConv = deserializeConversation(nodeJSON.conversation);\n const node: HistoryNode = {\n conversation: nodeConv,\n parent: parentNode,\n children: [],\n };\n node.children = nodeJSON.children.map((child) => buildTree(child, node));\n return node;\n };\n\n const h = history as unknown as { currentNode: HistoryNode };\n const rootNode = h.currentNode;\n rootNode.children = json.root.children.map((child) => buildTree(child, rootNode));\n\n // Traverse to find the current node\n let current: HistoryNode = rootNode;\n for (const index of json.currentPath) {\n const target = current.children[index];\n if (target) {\n current = target;\n }\n }\n h.currentNode = current;\n\n return history;\n }\n\n /**\n * Binds a function to this history instance.\n * The first argument of the function must be a Conversation.\n * If the function returns a new Conversation, it is automatically pushed to the history.\n */\n bind<T extends unknown[], R>(\n fn: (\n conversation: Conversation,\n ...args: [...T, Partial<ConversationEnvironment>?]\n ) => R,\n ): (...args: T) => R {\n return (...args: T): R => {\n // We pass the history's environment as the last argument if the function supports it\n const boundFn = fn as (conversation: Conversation, ...args: unknown[]) => R;\n const result = boundFn(this.current, ...args, this.env);\n\n if (isConversation(result)) {\n this.push(result);\n }\n\n return result;\n };\n }\n\n /**\n * Cleans up all listeners and resources.\n */\n [Symbol.dispose](): void {\n // Clear references to help GC\n let root: HistoryNode | null = this.currentNode;\n while (root?.parent) {\n root = root.parent;\n }\n\n const clearNode = (node: HistoryNode) => {\n for (const child of node.children) {\n clearNode(child);\n }\n node.children = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n const n = node as any;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n n.parent = null;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n n.conversation = null;\n };\n\n if (root) clearNode(root);\n this.events.clear();\n }\n}\n\n/**\n * Simple type guard to check if a value is a Conversation.\n */\nfunction isConversation(value: unknown): value is Conversation {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Conversation).schemaVersion === 'number' &&\n typeof (value as Conversation).id === 'string' &&\n typeof (value as Conversation).status === 'string' &&\n (value as Conversation).metadata !== null &&\n typeof (value as Conversation).metadata === 'object' &&\n Array.isArray((value as Conversation).ids) &&\n typeof (value as Conversation).messages === 'object' &&\n (value as Conversation).messages !== null &&\n !Array.isArray((value as Conversation).messages) &&\n typeof (value as Conversation).createdAt === 'string' &&\n typeof (value as Conversation).updatedAt === 'string'\n );\n}\n",
63
- "import type { MultiModalContent } from '@lasercat/homogenaize';\nimport matter from 'gray-matter';\n\nimport { copyContent } from '../multi-modal';\nimport type {\n AssistantMessage,\n Conversation,\n ConversationStatus,\n JSONValue,\n Message,\n MessageRole,\n TokenUsage,\n ToMarkdownOptions,\n ToolCall,\n ToolResult,\n} from '../types';\nimport { CURRENT_SCHEMA_VERSION } from '../types';\nimport { isAssistantMessage, messageParts } from './message';\nimport { getOrderedMessages, toIdRecord } from './message-store';\nimport { copyToolResult, redactToolResult } from './tool-results';\nimport { stripTransientFromRecord } from './transient';\nimport { toReadonly } from './type-helpers';\n\n/**\n * Maps message roles to human-readable display labels.\n *\n * @example\n * ```ts\n * ROLE_LABELS['tool-use']; // 'Tool Use'\n * ROLE_LABELS.assistant; // 'Assistant'\n * ```\n */\nexport const ROLE_LABELS: Record<MessageRole, string> = {\n user: 'User',\n assistant: 'Assistant',\n system: 'System',\n developer: 'Developer',\n 'tool-use': 'Tool Use',\n 'tool-result': 'Tool Result',\n snapshot: 'Snapshot',\n};\n\n// Internal alias for backward compatibility\nconst ROLE_DISPLAY_NAMES = ROLE_LABELS;\n\n/**\n * Maps display labels back to message roles.\n *\n * @example\n * ```ts\n * LABEL_TO_ROLE['Tool Use']; // 'tool-use'\n * LABEL_TO_ROLE.User; // 'user'\n * ```\n */\nexport const LABEL_TO_ROLE: Record<string, MessageRole> = {\n User: 'user',\n Assistant: 'assistant',\n System: 'system',\n Developer: 'developer',\n 'Tool Use': 'tool-use',\n 'Tool Result': 'tool-result',\n Snapshot: 'snapshot',\n};\n\n// Internal alias for backward compatibility\nconst DISPLAY_NAME_TO_ROLE = LABEL_TO_ROLE;\n\n/**\n * Gets the human-readable display label for a message role.\n *\n * @param role - The message role\n * @returns The display label for the role\n *\n * @example\n * ```ts\n * getRoleLabel('assistant'); // 'Assistant'\n * getRoleLabel('tool-use'); // 'Tool Use'\n * ```\n */\nexport function getRoleLabel(role: MessageRole): string {\n return ROLE_LABELS[role];\n}\n\n/**\n * Gets the message role from a display label.\n *\n * @param label - The display label\n * @returns The message role, or undefined if the label is not recognized\n *\n * @example\n * ```ts\n * getRoleFromLabel('Assistant'); // 'assistant'\n * getRoleFromLabel('Tool Use'); // 'tool-use'\n * getRoleFromLabel('Unknown'); // undefined\n * ```\n */\nexport function getRoleFromLabel(label: string): MessageRole | undefined {\n return LABEL_TO_ROLE[label];\n}\n\n/** Placeholder used when redacting sensitive data */\nconst DEFAULT_REDACTED_PLACEHOLDER = '[REDACTED]';\n\ntype ResolvedMarkdownOptions = Required<\n Pick<\n ToMarkdownOptions,\n | 'includeMetadata'\n | 'stripTransient'\n | 'includeHidden'\n | 'redactHiddenContent'\n | 'redactToolArguments'\n | 'redactToolResults'\n | 'redactedPlaceholder'\n >\n>;\n\nfunction resolveMarkdownOptions(\n options: ToMarkdownOptions = {},\n): ResolvedMarkdownOptions {\n return {\n includeMetadata: options.includeMetadata ?? false,\n stripTransient: options.stripTransient ?? false,\n includeHidden: options.includeHidden ?? true,\n redactHiddenContent: options.redactHiddenContent ?? false,\n redactToolArguments: options.redactToolArguments ?? false,\n redactToolResults: options.redactToolResults ?? false,\n redactedPlaceholder: options.redactedPlaceholder ?? DEFAULT_REDACTED_PLACEHOLDER,\n };\n}\n\nfunction sanitizeMessage(message: Message, options: ResolvedMarkdownOptions): Message {\n const metadata = options.stripTransient\n ? stripTransientFromRecord({ ...message.metadata })\n : { ...message.metadata };\n\n const content =\n options.redactHiddenContent && message.hidden\n ? options.redactedPlaceholder\n : copyContent(message.content);\n\n const toolCall = message.toolCall\n ? {\n ...message.toolCall,\n arguments: options.redactToolArguments\n ? options.redactedPlaceholder\n : message.toolCall.arguments,\n }\n : undefined;\n\n const toolResult = message.toolResult\n ? options.redactToolResults\n ? redactToolResult(message.toolResult, options.redactedPlaceholder)\n : copyToolResult(message.toolResult)\n : undefined;\n\n const baseMessage = {\n id: message.id,\n role: message.role,\n content,\n position: message.position,\n createdAt: message.createdAt,\n metadata: toReadonly(metadata),\n hidden: message.hidden,\n toolCall: toolCall ? toReadonly(toolCall) : undefined,\n toolResult: toolResult ? toReadonly(toolResult) : undefined,\n tokenUsage: message.tokenUsage ? toReadonly({ ...message.tokenUsage }) : undefined,\n };\n\n if (isAssistantMessage(message)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n return assistantMessage;\n }\n\n return baseMessage;\n}\n\nfunction prepareConversationForMarkdown(\n conversation: Conversation,\n options: ResolvedMarkdownOptions,\n): Conversation {\n const metadata = options.stripTransient\n ? stripTransientFromRecord({ ...conversation.metadata })\n : { ...conversation.metadata };\n\n const messages = getOrderedMessages(conversation)\n .filter((message) => options.includeHidden || !message.hidden)\n .map((message) => sanitizeMessage(message, options));\n\n return {\n schemaVersion: conversation.schemaVersion,\n id: conversation.id,\n title: conversation.title,\n status: conversation.status,\n metadata: toReadonly(metadata),\n ids: toReadonly(messages.map((message) => message.id)),\n messages: toReadonly(toIdRecord(messages)),\n createdAt: conversation.createdAt,\n updatedAt: conversation.updatedAt,\n };\n}\n\n/**\n * Formats a message's content for markdown output.\n * Text parts are appended in order, images are rendered as markdown image syntax on their own lines.\n */\nfunction formatMessageContent(message: Message): string {\n if (typeof message.content === 'string') return message.content;\n\n const parts = messageParts(message);\n const lines: string[] = [];\n\n for (const part of parts) {\n if (part.type === 'text' && part.text) {\n lines.push(part.text);\n } else if (part.type === 'image') {\n const imageUrl = (part as { url: string }).url;\n const altText = part.text ?? 'image';\n lines.push(`![${altText}](${imageUrl})`);\n }\n }\n\n return lines.join('\\n\\n');\n}\n\n/**\n * Metadata stored for each message in the YAML frontmatter.\n * Content is only included for multi-modal messages to preserve image metadata.\n */\ninterface MessageFrontmatter {\n position: number;\n createdAt: string;\n metadata: Record<string, JSONValue>;\n hidden: boolean;\n content?: MultiModalContent[];\n toolCall?: ToolCall;\n toolResult?: ToolResult;\n tokenUsage?: TokenUsage;\n goalCompleted?: boolean;\n}\n\n/**\n * Metadata stored in YAML frontmatter for conversation-level data.\n */\ninterface ConversationFrontmatter {\n schemaVersion?: number;\n id: string;\n title?: string;\n status: ConversationStatus;\n metadata: Record<string, JSONValue>;\n createdAt: string;\n updatedAt: string;\n messages: Record<string, MessageFrontmatter>;\n}\n\n/**\n * Converts a conversation to a Markdown string representation.\n *\n * By default, outputs clean, human-readable markdown with:\n * - Each message with a header containing only the role: `### Role`\n * - Message content rendered as markdown\n *\n * When `options.includeMetadata` is `true`, outputs markdown with full metadata\n * for lossless round-trip conversion:\n * - YAML frontmatter with conversation metadata and all message metadata keyed by message ID\n * - Headers include message ID: `### Role (msg-id)`\n * - Full content array preserved for multi-modal messages\n *\n * For multi-modal content:\n * - Text parts are appended in order\n * - Image parts are rendered as `![alt]({url})` on their own line\n *\n * @param conversation - The conversation to convert\n * @param options - Options for markdown output\n * @returns A Markdown string representation of the conversation\n */\nexport function toMarkdown(\n conversation: Conversation,\n options: ToMarkdownOptions = {},\n): string {\n const resolved = resolveMarkdownOptions(options);\n const prepared = prepareConversationForMarkdown(conversation, resolved);\n\n if (resolved.includeMetadata) {\n return toMarkdownWithMetadata(prepared, resolved);\n }\n\n return toMarkdownSimple(prepared);\n}\n\n/**\n * Outputs simple, human-readable markdown without metadata.\n */\nfunction toMarkdownSimple(conversation: Conversation): string {\n const sections: string[] = [];\n\n for (const message of getOrderedMessages(conversation)) {\n const roleName = ROLE_DISPLAY_NAMES[message.role];\n const header = `### ${roleName}`;\n const content = formatMessageContent(message);\n sections.push(`${header}\\n\\n${content}`);\n }\n\n return sections.join('\\n\\n');\n}\n\n/**\n * Outputs markdown with full metadata for lossless round-trip conversion.\n */\nfunction toMarkdownWithMetadata(\n conversation: Conversation,\n _options: ResolvedMarkdownOptions,\n): string {\n // Build messages metadata map\n const messagesMetadata: Record<string, MessageFrontmatter> = {};\n\n for (const message of getOrderedMessages(conversation)) {\n const messageMeta: MessageFrontmatter = {\n position: message.position,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n };\n\n // Include content in metadata only for multi-modal messages\n if (Array.isArray(message.content)) {\n messageMeta.content = copyContent(message.content) as MultiModalContent[];\n }\n\n if (message.toolCall) {\n messageMeta.toolCall = { ...message.toolCall };\n }\n if (message.toolResult) {\n messageMeta.toolResult = { ...message.toolResult };\n }\n if (message.tokenUsage) {\n messageMeta.tokenUsage = { ...message.tokenUsage };\n }\n if (isAssistantMessage(message) && message.goalCompleted !== undefined) {\n messageMeta.goalCompleted = message.goalCompleted;\n }\n\n messagesMetadata[message.id] = messageMeta;\n }\n\n const frontmatterData: ConversationFrontmatter = {\n schemaVersion: conversation.schemaVersion,\n id: conversation.id,\n status: conversation.status,\n metadata: { ...conversation.metadata },\n createdAt: conversation.createdAt,\n updatedAt: conversation.updatedAt,\n messages: messagesMetadata,\n };\n\n // Only add title if it's defined\n if (conversation.title !== undefined) {\n frontmatterData.title = conversation.title;\n }\n\n // Build message body\n const messageSections: string[] = [];\n\n for (const message of getOrderedMessages(conversation)) {\n const roleName = ROLE_DISPLAY_NAMES[message.role];\n const header = `### ${roleName} (${message.id})`;\n const content = formatMessageContent(message);\n messageSections.push(`${header}\\n\\n${content}`);\n }\n\n const body = messageSections.join('\\n\\n');\n\n // Use gray-matter to stringify with YAML frontmatter\n return matter.stringify(body, frontmatterData);\n}\n\n/**\n * Error thrown when markdown parsing fails.\n */\nexport class MarkdownParseError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'MarkdownParseError';\n }\n}\n\n/**\n * Generates a simple unique ID for use when metadata is not available.\n */\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\n}\n\n/**\n * Parses a Markdown string back into a Conversation object.\n *\n * This is the inverse of `toMarkdown` and supports both:\n * - Lossless round-trip conversion when markdown includes metadata\n * (generated by `toMarkdown` with `includeMetadata: true`)\n * - Best-effort parsing of simple markdown without metadata\n * (generated by `toMarkdown` with `includeMetadata: false` or hand-written)\n *\n * When metadata is present:\n * - YAML frontmatter provides conversation and message metadata\n * - Headers include message ID: `### Role (msg-id)`\n * - Full fidelity is preserved\n *\n * When metadata is absent:\n * - Conversation ID and timestamps are generated\n * - Message IDs are generated, positions are inferred from order\n * - Content is parsed from markdown body\n * - Defaults: status='active', hidden=false, empty metadata\n *\n * @param markdown - The markdown string to parse\n * @returns A Conversation object\n * @throws {MarkdownParseError} If the markdown format is invalid (e.g., unknown role)\n */\nexport function fromMarkdown(markdown: string): Conversation {\n const trimmed = markdown.trim();\n\n // Check if frontmatter exists\n const hasFrontmatter = trimmed.startsWith('---');\n\n if (hasFrontmatter) {\n return parseMarkdownWithMetadata(trimmed);\n }\n\n return parseMarkdownSimple(trimmed);\n}\n\n/**\n * Parses markdown with full metadata (YAML frontmatter with message metadata).\n */\nfunction parseMarkdownWithMetadata(trimmed: string): Conversation {\n let parsed: matter.GrayMatterFile<string>;\n try {\n parsed = matter(trimmed);\n } catch {\n throw new MarkdownParseError('Invalid frontmatter: failed to parse YAML');\n }\n\n const frontmatter = parsed.data as ConversationFrontmatter;\n const body = parsed.content.trim();\n\n // Validate required frontmatter fields\n if (!frontmatter.id) {\n throw new MarkdownParseError('Invalid frontmatter: missing required field \"id\"');\n }\n\n // Parse messages from body using header pattern: ### Role (message-id)\n const messages: Message[] = [];\n const messagePattern = /^### ([\\w\\s]+) \\(([^)]+)\\)\\n\\n([\\s\\S]*?)(?=\\n\\n### |\\n*$)/gm;\n\n let match;\n while ((match = messagePattern.exec(body)) !== null) {\n const [, roleDisplay, messageId, contentBody] = match;\n\n const role = DISPLAY_NAME_TO_ROLE[roleDisplay!];\n if (!role) {\n throw new MarkdownParseError(`Unknown role: ${roleDisplay}`);\n }\n\n // Get message metadata from frontmatter\n const messageMeta = frontmatter.messages?.[messageId!];\n if (!messageMeta) {\n throw new MarkdownParseError(`Missing metadata for message: ${messageId}`);\n }\n\n // Determine content: use metadata.content if present (multi-modal), otherwise parse body\n let content: string | ReadonlyArray<MultiModalContent>;\n if (messageMeta.content) {\n content = toReadonly([...messageMeta.content]);\n } else {\n content = contentBody?.trim() ?? '';\n }\n\n const baseMessage = {\n id: messageId!,\n role,\n content,\n position: messageMeta.position,\n createdAt: messageMeta.createdAt,\n metadata: toReadonly({ ...messageMeta.metadata }),\n hidden: messageMeta.hidden,\n toolCall: messageMeta.toolCall\n ? toReadonly({ ...messageMeta.toolCall })\n : undefined,\n toolResult: messageMeta.toolResult\n ? toReadonly({ ...messageMeta.toolResult })\n : undefined,\n tokenUsage: messageMeta.tokenUsage\n ? toReadonly({ ...messageMeta.tokenUsage })\n : undefined,\n };\n let message: Message | AssistantMessage = baseMessage;\n if (role === 'assistant') {\n message = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: messageMeta.goalCompleted,\n };\n }\n\n messages.push(toReadonly(message) as Message);\n }\n\n const conversation: Conversation = {\n schemaVersion: frontmatter.schemaVersion ?? CURRENT_SCHEMA_VERSION,\n id: frontmatter.id,\n title: frontmatter.title,\n status: frontmatter.status ?? 'active',\n metadata: toReadonly({ ...frontmatter.metadata }),\n ids: toReadonly(messages.map((message) => message.id)),\n messages: toReadonly(toIdRecord(messages)),\n createdAt: frontmatter.createdAt,\n updatedAt: frontmatter.updatedAt,\n };\n\n return toReadonly(conversation) as Conversation;\n}\n\n/**\n * Parses simple markdown without metadata, using sensible defaults.\n */\nfunction parseMarkdownSimple(body: string): Conversation {\n const now = new Date().toISOString();\n const messages: Message[] = [];\n\n // Pattern for simple messages (no ID in header): ### Role\n // The role must end at the newline\n const messagePattern = /^### ([^\\n]+)\\n\\n([\\s\\S]*?)(?=\\n\\n### |\\n*$)/gm;\n\n let match;\n let position = 0;\n while ((match = messagePattern.exec(body)) !== null) {\n const [, roleDisplay, contentBody] = match;\n\n const role = DISPLAY_NAME_TO_ROLE[roleDisplay!];\n if (!role) {\n throw new MarkdownParseError(`Unknown role: ${roleDisplay}`);\n }\n\n const message: Message = {\n id: generateId(),\n role,\n content: contentBody?.trim() ?? '',\n position,\n createdAt: now,\n metadata: toReadonly({}),\n hidden: false,\n };\n\n messages.push(toReadonly(message) as Message);\n position++;\n }\n\n const conversation: Conversation = {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n id: generateId(),\n status: 'active',\n metadata: toReadonly({}),\n ids: toReadonly(messages.map((message) => message.id)),\n messages: toReadonly(toIdRecord(messages)),\n createdAt: now,\n updatedAt: now,\n };\n\n return toReadonly(conversation) as Conversation;\n}\n",
64
- "import type { ToolResult } from '../types';\n\n/**\n * Returns a shallow copy of a tool result.\n */\nexport function copyToolResult(toolResult: ToolResult): ToolResult {\n return { ...toolResult };\n}\n\n/**\n * Redacts tool result payload fields while preserving the original shape.\n */\nexport function redactToolResult(\n toolResult: ToolResult,\n placeholder: string,\n): ToolResult {\n const result = { ...toolResult, content: placeholder };\n if (result.result !== undefined) {\n result.result = placeholder;\n }\n if (result.error !== undefined) {\n result.error = placeholder;\n }\n return result;\n}\n",
61
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport {\n assertConversationSafe,\n ensureConversationSafe,\n} from './conversation/validation';\nimport {\n type ConversationEnvironment,\n isConversationEnvironmentParameter,\n resolveConversationEnvironment,\n simpleTokenEstimator,\n} from './environment';\nimport { ConversationalistError, createIntegrityError } from './errors';\nimport { copyContent } from './multi-modal';\nimport type { AssistantMessage, Conversation, Message, TokenEstimator } from './types';\nimport { createMessage, isAssistantMessage, toReadonly } from './utilities';\nimport { getOrderedMessages, toIdRecord } from './utilities/message-store';\n\nexport { simpleTokenEstimator };\n\nconst cloneMessageWithPosition = (\n message: Message,\n position: number,\n content: string | ReadonlyArray<MultiModalContent>,\n): Message => {\n const baseMessage = {\n id: message.id,\n role: message.role,\n content,\n position,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n toolCall: message.toolCall ? { ...message.toolCall } : undefined,\n toolResult: message.toolResult ? { ...message.toolResult } : undefined,\n tokenUsage: message.tokenUsage ? { ...message.tokenUsage } : undefined,\n };\n\n if (isAssistantMessage(message)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n return createMessage(assistantMessage);\n }\n\n return createMessage(baseMessage);\n};\n\ntype MessageBlock = {\n messages: Message[];\n minPosition: number;\n maxPosition: number;\n tokenCount: number;\n orphanToolResult?: boolean;\n};\n\nconst createMessageBlock = (\n message: Message,\n estimator: TokenEstimator,\n): MessageBlock => ({\n messages: [message],\n minPosition: message.position,\n maxPosition: message.position,\n tokenCount: estimator(message),\n});\n\nconst buildMessageBlocks = (\n messages: ReadonlyArray<Message>,\n estimator: TokenEstimator,\n preserveToolPairs: boolean,\n): {\n blocks: MessageBlock[];\n messageToBlock: Map<string, MessageBlock>;\n} => {\n if (!preserveToolPairs) {\n const blocks = messages.map((message) => createMessageBlock(message, estimator));\n const messageToBlock = new Map<string, MessageBlock>();\n for (const block of blocks) {\n const message = block.messages[0];\n if (message) {\n messageToBlock.set(message.id, block);\n }\n }\n return { blocks, messageToBlock };\n }\n\n const blocks: MessageBlock[] = [];\n const toolUses = new Map<string, MessageBlock>();\n\n for (const message of messages) {\n if (message.role === 'tool-use' && message.toolCall) {\n const block = createMessageBlock(message, estimator);\n toolUses.set(message.toolCall.id, block);\n blocks.push(block);\n continue;\n }\n\n if (message.role === 'tool-result' && message.toolResult) {\n const existing = toolUses.get(message.toolResult.callId);\n if (existing) {\n existing.messages.push(message);\n existing.maxPosition = Math.max(existing.maxPosition, message.position);\n existing.tokenCount += estimator(message);\n continue;\n }\n\n const orphanBlock = createMessageBlock(message, estimator);\n orphanBlock.orphanToolResult = true;\n blocks.push(orphanBlock);\n continue;\n }\n\n blocks.push(createMessageBlock(message, estimator));\n }\n\n const filteredBlocks = blocks.filter((block) => !block.orphanToolResult);\n const messageToBlock = new Map<string, MessageBlock>();\n for (const block of filteredBlocks) {\n for (const message of block.messages) {\n messageToBlock.set(message.id, block);\n }\n }\n\n return { blocks: filteredBlocks, messageToBlock };\n};\n\nconst collectBlocksForMessages = (\n messages: ReadonlyArray<Message>,\n messageToBlock: Map<string, MessageBlock>,\n): MessageBlock[] => {\n const blocks: MessageBlock[] = [];\n const seen = new Set<MessageBlock>();\n\n for (const message of messages) {\n const block = messageToBlock.get(message.id);\n if (block && !seen.has(block)) {\n seen.add(block);\n blocks.push(block);\n }\n }\n\n return blocks;\n};\n\nconst collectMessagesFromBlocks = (blocks: ReadonlyArray<MessageBlock>): Message[] => {\n const messages: Message[] = [];\n const seen = new Set<string>();\n\n for (const block of blocks) {\n for (const message of block.messages) {\n if (!seen.has(message.id)) {\n seen.add(message.id);\n messages.push(message);\n }\n }\n }\n\n messages.sort((a, b) => a.position - b.position);\n return messages;\n};\n\nconst ensureTruncationSafe = (\n conversation: Conversation,\n preserveToolPairs: boolean,\n operation: 'truncateToTokenLimit' | 'truncateFromPosition',\n): Conversation => {\n try {\n return ensureConversationSafe(conversation);\n } catch (error) {\n if (\n !preserveToolPairs &&\n error instanceof ConversationalistError &&\n error.code === 'error:integrity'\n )\n throw createIntegrityError(\n `${operation} produced invalid tool linkage; use preserveToolPairs: true to keep tool interactions intact`,\n { preserveToolPairs, issues: error.context?.['issues'] },\n );\n /* v8 ignore next */\n throw error;\n }\n};\n\n/**\n * Estimates total tokens in a conversation using the provided estimator function.\n * If no estimator is provided, the environment's default estimator is used.\n */\nexport function estimateConversationTokens(\n conversation: Conversation,\n estimateTokens?: TokenEstimator,\n environment?: Partial<ConversationEnvironment>,\n): number {\n let estimator = estimateTokens;\n let env = environment;\n\n if (\n !environment &&\n estimateTokens &&\n isConversationEnvironmentParameter(estimateTokens)\n ) {\n env = estimateTokens;\n estimator = undefined;\n }\n\n const resolvedEnvironment = resolveConversationEnvironment(env);\n const finalEstimator =\n typeof estimator === 'function' ? estimator : resolvedEnvironment.estimateTokens;\n\n return getOrderedMessages(conversation).reduce(\n (total, message) => total + finalEstimator(message),\n 0,\n );\n}\n\n/**\n * Options for truncateToTokenLimit.\n */\nexport interface TruncateOptions {\n estimateTokens?: TokenEstimator;\n preserveSystemMessages?: boolean;\n preserveLastN?: number;\n preserveToolPairs?: boolean;\n}\n\n/**\n * Truncates conversation to fit within an estimated token limit.\n * Removes oldest messages first while preserving system messages and optionally the last N messages.\n * If no estimator is provided, the environment's default estimator is used.\n * Tool interactions are preserved as atomic blocks by default.\n */\nexport function truncateToTokenLimit(\n conversation: Conversation,\n maxTokens: number,\n optionsOrEstimator?: TruncateOptions | TokenEstimator,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n assertConversationSafe(conversation);\n // Handle overloaded arguments\n let options: TruncateOptions = {};\n let env = environment;\n\n if (typeof optionsOrEstimator === 'function') {\n options = { estimateTokens: optionsOrEstimator };\n } else if (optionsOrEstimator) {\n // If environment was not explicitly passed, check if optionsOrEstimator IS the environment\n if (!environment && isConversationEnvironmentParameter(optionsOrEstimator)) {\n // Disambiguate between TruncateOptions and ConversationEnvironment.\n // Environment fields (now, randomId, non-empty plugins) take priority because they're\n // exclusive to ConversationEnvironment, while estimateTokens exists in both types.\n const candidate = optionsOrEstimator as Record<string, unknown>;\n const hasEnvFields = !!(\n candidate['now'] ||\n candidate['randomId'] ||\n (Array.isArray(candidate['plugins']) && candidate['plugins'].length > 0)\n );\n\n if (hasEnvFields) {\n // Treat as environment, not options\n env = optionsOrEstimator;\n } else {\n // Has estimateTokens but no exclusive environment fields, treat as options\n options = optionsOrEstimator;\n }\n } else {\n options = optionsOrEstimator;\n }\n }\n\n const resolvedEnvironment = resolveConversationEnvironment(env);\n const estimator = options.estimateTokens ?? resolvedEnvironment.estimateTokens;\n const preserveSystem = options.preserveSystemMessages ?? true;\n const preserveLastN = options.preserveLastN ?? 0;\n const preserveToolPairs = options.preserveToolPairs ?? true;\n\n // Calculate current token count\n const currentTokens = estimateConversationTokens(\n conversation,\n estimator,\n resolvedEnvironment,\n );\n if (currentTokens <= maxTokens) {\n return conversation;\n }\n\n const now = resolvedEnvironment.now();\n\n const orderedMessages = getOrderedMessages(conversation);\n const { blocks, messageToBlock } = buildMessageBlocks(\n orderedMessages,\n estimator,\n preserveToolPairs,\n );\n\n const systemMessages = preserveSystem\n ? orderedMessages.filter((m) => m.role === 'system')\n : [];\n const nonSystemMessages = orderedMessages.filter((m) => m.role !== 'system');\n const protectedMessages =\n preserveLastN > 0 ? nonSystemMessages.slice(-preserveLastN) : [];\n\n const systemBlocks = collectBlocksForMessages(systemMessages, messageToBlock);\n const protectedBlocks = collectBlocksForMessages(protectedMessages, messageToBlock);\n const lockedBlocks = new Set([...systemBlocks, ...protectedBlocks]);\n const removableBlocks = blocks.filter((block) => !lockedBlocks.has(block));\n\n const systemTokens = systemBlocks.reduce((sum, block) => sum + block.tokenCount, 0);\n const protectedTokens = protectedBlocks.reduce(\n (sum, block) => sum + block.tokenCount,\n 0,\n );\n const availableTokens = maxTokens - systemTokens - protectedTokens;\n\n let selectedBlocks: MessageBlock[] = [];\n if (availableTokens <= 0) {\n selectedBlocks = [...systemBlocks, ...protectedBlocks];\n } else {\n const sortedRemovable = [...removableBlocks].sort(\n (a, b) => a.maxPosition - b.maxPosition,\n );\n const keptRemovable: MessageBlock[] = [];\n let usedTokens = 0;\n\n for (let i = sortedRemovable.length - 1; i >= 0; i--) {\n const block = sortedRemovable[i]!;\n if (usedTokens + block.tokenCount <= availableTokens) {\n keptRemovable.unshift(block);\n usedTokens += block.tokenCount;\n } else {\n break;\n }\n }\n\n selectedBlocks = [...systemBlocks, ...keptRemovable, ...protectedBlocks];\n }\n\n const allMessages = collectMessagesFromBlocks(selectedBlocks);\n const renumbered = allMessages.map((message, index) =>\n cloneMessageWithPosition(message, index, copyContent(message.content)),\n );\n\n const next = toReadonly({\n ...conversation,\n ids: renumbered.map((message) => message.id),\n messages: toIdRecord(renumbered),\n updatedAt: now,\n });\n return ensureTruncationSafe(next, preserveToolPairs, 'truncateToTokenLimit');\n}\n\n/**\n * Returns the last N messages from the conversation.\n * By default excludes system messages and hidden messages.\n * Tool interactions are preserved as atomic blocks by default.\n */\nexport function getRecentMessages(\n conversation: Conversation,\n count: number,\n options?: {\n includeHidden?: boolean;\n includeSystem?: boolean;\n preserveToolPairs?: boolean;\n },\n): ReadonlyArray<Message> {\n const includeHidden = options?.includeHidden ?? false;\n const includeSystem = options?.includeSystem ?? false;\n const preserveToolPairs = options?.preserveToolPairs ?? true;\n\n const filtered = getOrderedMessages(conversation).filter((m) => {\n if (!includeHidden && m.hidden) return false;\n if (!includeSystem && m.role === 'system') return false;\n return true;\n });\n\n if (!preserveToolPairs) {\n return filtered.slice(-count);\n }\n\n const { messageToBlock } = buildMessageBlocks(filtered, () => 0, preserveToolPairs);\n const tail = filtered.slice(-count);\n const blocks = collectBlocksForMessages(tail, messageToBlock);\n return collectMessagesFromBlocks(blocks);\n}\n\n/**\n * Truncates conversation to keep only messages from the specified position onwards.\n * Optionally preserves system messages regardless of position.\n * Tool interactions are preserved as atomic blocks by default.\n */\nexport function truncateFromPosition(\n conversation: Conversation,\n position: number,\n options?: {\n preserveSystemMessages?: boolean;\n preserveToolPairs?: boolean;\n },\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n assertConversationSafe(conversation);\n const preserveSystem = options?.preserveSystemMessages ?? true;\n const preserveToolPairs = options?.preserveToolPairs ?? true;\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const ordered = getOrderedMessages(conversation);\n const { messageToBlock } = buildMessageBlocks(ordered, () => 0, preserveToolPairs);\n const systemMessages = preserveSystem\n ? ordered.filter((m) => m.role === 'system' && m.position < position)\n : [];\n const keptMessages = ordered.filter((m) => m.position >= position);\n const systemBlocks = collectBlocksForMessages(systemMessages, messageToBlock);\n const keptBlocks = collectBlocksForMessages(keptMessages, messageToBlock);\n const allMessages = collectMessagesFromBlocks([...systemBlocks, ...keptBlocks]);\n\n // Renumber positions\n const renumbered = allMessages.map((message, index) =>\n cloneMessageWithPosition(message, index, copyContent(message.content)),\n );\n\n const next = toReadonly({\n ...conversation,\n ids: renumbered.map((message) => message.id),\n messages: toIdRecord(renumbered),\n updatedAt: now,\n });\n return ensureTruncationSafe(next, preserveToolPairs, 'truncateFromPosition');\n}\n",
62
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\n\n/**\n * Current schema version for serialized conversation data.\n * Increment when making breaking changes to the schema.\n */\nexport const CURRENT_SCHEMA_VERSION = 3;\n\n/**\n * JSON-serializable value types.\n */\nexport type JSONPrimitive = string | number | boolean | null;\nexport type JSONValue = JSONPrimitive | JSONValue[] | { [key: string]: JSONValue };\n\n/**\n * Supported message roles in a conversation.\n */\nexport type MessageRole =\n | 'user'\n | 'assistant'\n | 'system'\n | 'developer'\n | 'tool-use'\n | 'tool-result'\n | 'snapshot';\n\n/**\n * Tool call metadata for tool-use messages.\n */\nexport interface ToolCall {\n id: string;\n name: string;\n arguments: JSONValue;\n}\n\n/**\n * Tool execution result metadata for tool-result messages.\n */\nexport interface ToolResult {\n callId: string;\n outcome: 'success' | 'error';\n content: JSONValue;\n}\n\n/**\n * Token usage accounting for a message.\n */\nexport interface TokenUsage {\n prompt: number;\n completion: number;\n total: number;\n}\n\n/**\n * Mutable input shape for creating a message.\n */\nexport interface MessageInput {\n role: MessageRole;\n content: string | MultiModalContent[];\n metadata?: Record<string, JSONValue> | undefined;\n hidden?: boolean | undefined;\n toolCall?: ToolCall | undefined;\n toolResult?: ToolResult | undefined;\n tokenUsage?: TokenUsage | undefined;\n /** Indicates if this message represents goal completion (assistant only) */\n goalCompleted?: boolean | undefined;\n}\n\n/**\n * Immutable message shape exposed by the library.\n */\nexport interface Message {\n id: string;\n role: MessageRole;\n content: string | ReadonlyArray<MultiModalContent>;\n position: number;\n createdAt: string;\n metadata: Readonly<Record<string, JSONValue>>;\n hidden: boolean;\n toolCall?: Readonly<ToolCall> | undefined;\n toolResult?: Readonly<ToolResult> | undefined;\n tokenUsage?: Readonly<TokenUsage> | undefined;\n}\n\n/**\n * Assistant-only message shape with optional goal completion metadata.\n */\nexport interface AssistantMessage extends Message {\n role: 'assistant';\n /** Indicates if this message represents goal completion */\n goalCompleted?: boolean | undefined;\n}\n\n/**\n * Status values for a conversation lifecycle.\n */\nexport type ConversationStatus = 'active' | 'archived' | 'deleted';\n\n/**\n * Immutable conversation state.\n */\nexport interface Conversation {\n schemaVersion: number;\n id: string;\n title?: string | undefined;\n status: ConversationStatus;\n metadata: Readonly<Record<string, JSONValue>>;\n ids: ReadonlyArray<string>;\n messages: Readonly<Record<string, Message>>;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * A function that estimates the number of tokens in a message.\n */\nexport type TokenEstimator = (message: Message) => number;\n\n/**\n * A plugin that can transform a MessageInput before it is appended.\n */\nexport type MessagePlugin = (input: MessageInput) => MessageInput;\n\n/**\n * Serialized form of a single node in the conversation history tree.\n */\nexport interface HistoryNodeSnapshot {\n conversation: Conversation;\n children: HistoryNodeSnapshot[];\n}\n\n/**\n * Serialized form of the entire conversation history.\n */\nexport interface ConversationHistorySnapshot {\n root: HistoryNodeSnapshot;\n currentPath: number[];\n}\n\n/**\n * Base options for all export operations.\n */\nexport interface ExportOptions {\n /**\n * When true, strips transient metadata (keys starting with '_').\n * @default false\n */\n stripTransient?: boolean;\n\n /**\n * When false, hidden messages are omitted from export output.\n * @default true\n */\n includeHidden?: boolean;\n\n /**\n * When true, hidden message content is replaced with a redacted placeholder.\n * Only applies when includeHidden is true.\n * @default false\n */\n redactHiddenContent?: boolean;\n\n /**\n * Placeholder used when redacting tool or hidden content.\n * @default \"[REDACTED]\"\n */\n redactedPlaceholder?: string;\n\n /**\n * When true, redacts tool call arguments with '[REDACTED]'.\n * @default false\n */\n redactToolArguments?: boolean;\n\n /**\n * When true, redacts tool result content with '[REDACTED]'.\n * @default false\n */\n redactToolResults?: boolean;\n}\n\n/**\n * Options for exporting to markdown format.\n */\nexport interface ToMarkdownOptions extends ExportOptions {\n /**\n * When true, includes YAML frontmatter with full metadata for lossless round-trip.\n * Headers include message ID: `### Role (msg-id)`\n * @default false\n */\n includeMetadata?: boolean;\n}\n",
63
+ "import {\n type ConversationEnvironment,\n resolveConversationEnvironment,\n} from '../environment';\nimport type { Conversation, ConversationStatus, JSONValue } from '../types';\nimport { CURRENT_SCHEMA_VERSION } from '../types';\nimport { toReadonly } from '../utilities';\nimport { ensureConversationSafe } from './validation';\n\n/**\n * Creates a new empty conversation with the specified options.\n * Returns an immutable conversation object with timestamps set to the current time.\n */\nexport function createConversation(\n options?: {\n id?: string;\n title?: string;\n status?: ConversationStatus;\n metadata?: Record<string, JSONValue>;\n },\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const conv: Conversation = {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n id: options?.id ?? resolvedEnvironment.randomId(),\n title: options?.title,\n status: options?.status ?? 'active',\n metadata: { ...(options?.metadata ?? {}) },\n ids: [],\n messages: {},\n createdAt: now,\n updatedAt: now,\n };\n return ensureConversationSafe(toReadonly(conv));\n}\n\n/**\n * Creates a new empty conversation without validating schema or integrity.\n */\nexport function createConversationUnsafe(\n options?: {\n id?: string;\n title?: string;\n status?: ConversationStatus;\n metadata?: Record<string, JSONValue>;\n },\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const conv: Conversation = {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n id: options?.id ?? resolvedEnvironment.randomId(),\n title: options?.title,\n status: options?.status ?? 'active',\n metadata: { ...(options?.metadata ?? {}) },\n ids: [],\n messages: {},\n createdAt: now,\n updatedAt: now,\n };\n return toReadonly(conv);\n}\n",
64
+ "import { createInvalidToolReferenceError } from '../errors';\nimport type { Message } from '../types';\n\n/**\n * A map of tool use IDs to their names, used for tracking tool calls\n * and validating tool results reference valid calls.\n */\nexport type ToolUseIndex = Map<string, { name: string }>;\n\n/**\n * Builds an index of all tool use messages from a list of messages.\n * Used to validate that tool results reference existing tool uses.\n */\nexport const buildToolUseIndex = (messages: ReadonlyArray<Message>): ToolUseIndex =>\n messages.reduce((index, message) => {\n if (message.role === 'tool-use' && message.toolCall) {\n index.set(message.toolCall.id, { name: message.toolCall.name });\n }\n return index;\n }, new Map<string, { name: string }>());\n\n/**\n * Registers a new tool use in the index, returning a new immutable index.\n */\nexport const registerToolUse = (\n index: ToolUseIndex,\n toolCall: { id: string; name: string },\n): ToolUseIndex => {\n const next = new Map(index);\n next.set(toolCall.id, { name: toolCall.name });\n return next;\n};\n\n/**\n * Throws an error if the given call ID does not exist in the tool use index.\n * Used to ensure tool results reference valid tool uses.\n */\nexport const assertToolReference = (index: ToolUseIndex, callId: string): void => {\n if (!index.has(callId)) {\n throw createInvalidToolReferenceError(callId);\n }\n};\n",
65
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport {\n type ConversationEnvironment,\n isConversationEnvironmentParameter,\n resolveConversationEnvironment,\n} from '../environment';\nimport { createIntegrityError } from '../errors';\nimport type {\n AssistantMessage,\n Conversation,\n JSONValue,\n Message,\n MessageInput,\n} from '../types';\nimport { createMessage, normalizeContent, toReadonly } from '../utilities';\nimport { getOrderedMessages, toIdRecord } from '../utilities/message-store';\nimport {\n assertToolReference,\n buildToolUseIndex,\n registerToolUse,\n type ToolUseIndex,\n} from './tool-tracking';\nimport { ensureConversationSafe } from './validation';\n\n/**\n * Separates message inputs from an optional trailing environment argument.\n */\nfunction partitionAppendArgs(\n args: Array<MessageInput | Partial<ConversationEnvironment> | undefined>,\n): {\n inputs: MessageInput[];\n environment?: Partial<ConversationEnvironment> | undefined;\n} {\n const filtered = args.filter((arg) => arg !== undefined);\n\n if (filtered.length === 0) {\n return { inputs: [] };\n }\n\n const last = filtered[filtered.length - 1];\n if (isConversationEnvironmentParameter(last)) {\n return {\n inputs: filtered.slice(0, -1) as MessageInput[],\n environment: last,\n };\n }\n\n return { inputs: filtered as MessageInput[] };\n}\n\n/**\n * Appends one or more messages to a conversation.\n * Validates that tool results reference existing function calls.\n * Returns a new immutable conversation with the messages added.\n */\nexport function appendMessages(\n conversation: Conversation,\n ...inputs: MessageInput[]\n): Conversation;\nexport function appendMessages(\n conversation: Conversation,\n ...inputsAndEnvironment: [\n ...MessageInput[],\n Partial<ConversationEnvironment> | undefined,\n ]\n): Conversation;\nexport function appendMessages(\n conversation: Conversation,\n ...args: (MessageInput | Partial<ConversationEnvironment> | undefined)[]\n): Conversation {\n return appendMessagesInternal(conversation, args, true);\n}\n\n/**\n * Appends a message without validating conversation integrity or JSON-safety.\n * Use only when you have already validated the conversation yourself.\n */\nexport function appendUnsafeMessage(\n conversation: Conversation,\n input: MessageInput,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n return appendMessagesInternal(conversation, [input, environment], false);\n}\n\nconst appendMessagesInternal = (\n conversation: Conversation,\n args: Array<MessageInput | Partial<ConversationEnvironment> | undefined>,\n validate: boolean,\n): Conversation => {\n const { inputs, environment } = partitionAppendArgs(args);\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n const startPosition = conversation.ids.length;\n const initialToolUses = validate\n ? buildToolUseIndex(getOrderedMessages(conversation))\n : new Map<string, { name: string }>();\n\n const { messages } = inputs.reduce<{\n toolUses: ToolUseIndex;\n messages: Message[];\n }>(\n (state, input, index) => {\n const processedInput = resolvedEnvironment.plugins.reduce(\n (acc, plugin) => plugin(acc),\n input,\n );\n\n if (\n validate &&\n processedInput.role === 'tool-result' &&\n processedInput.toolResult\n ) {\n assertToolReference(state.toolUses, processedInput.toolResult.callId);\n }\n\n const normalizedContent = normalizeContent(processedInput.content) as\n | string\n | MultiModalContent[];\n\n const baseMessage = {\n id: resolvedEnvironment.randomId(),\n role: processedInput.role,\n content: normalizedContent,\n position: startPosition + index,\n createdAt: now,\n metadata: { ...(processedInput.metadata ?? {}) },\n hidden: processedInput.hidden ?? false,\n toolCall: processedInput.toolCall,\n toolResult: processedInput.toolResult,\n tokenUsage: processedInput.tokenUsage,\n };\n\n let message: Message;\n if (processedInput.role === 'assistant') {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: processedInput.goalCompleted,\n };\n message = createMessage(assistantMessage);\n } else {\n message = createMessage(baseMessage);\n }\n\n let toolUses = state.toolUses;\n if (processedInput.role === 'tool-use' && processedInput.toolCall) {\n if (validate && state.toolUses.has(processedInput.toolCall.id)) {\n throw createIntegrityError('duplicate toolCall.id in conversation', {\n toolCallId: processedInput.toolCall.id,\n messageId: baseMessage.id,\n });\n }\n\n toolUses = validate\n ? registerToolUse(state.toolUses, processedInput.toolCall)\n : state.toolUses;\n }\n\n return {\n toolUses,\n messages: [...state.messages, message],\n };\n },\n { toolUses: initialToolUses, messages: [] },\n );\n\n const messageIds = messages.map((message) => message.id);\n const next: Conversation = {\n ...conversation,\n ids: [...conversation.ids, ...messageIds],\n messages: { ...conversation.messages, ...toIdRecord(messages) },\n updatedAt: now,\n };\n const readonly = toReadonly(next);\n return validate ? ensureConversationSafe(readonly) : readonly;\n};\n\n/**\n * Appends a user message to the conversation.\n */\nexport function appendUserMessage(\n conversation: Conversation,\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = isConversationEnvironmentParameter(metadata)\n ? metadata\n : environment;\n const resolvedMetadata = isConversationEnvironmentParameter(metadata)\n ? undefined\n : metadata;\n return appendMessages(\n conversation,\n { role: 'user', content, metadata: resolvedMetadata },\n resolvedEnvironment,\n );\n}\n\n/**\n * Appends an assistant message to the conversation.\n */\nexport function appendAssistantMessage(\n conversation: Conversation,\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = isConversationEnvironmentParameter(metadata)\n ? metadata\n : environment;\n const resolvedMetadata = isConversationEnvironmentParameter(metadata)\n ? undefined\n : metadata;\n return appendMessages(\n conversation,\n { role: 'assistant', content, metadata: resolvedMetadata },\n resolvedEnvironment,\n );\n}\n\n/**\n * Appends a system message to the conversation.\n */\nexport function appendSystemMessage(\n conversation: Conversation,\n content: string,\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = isConversationEnvironmentParameter(metadata)\n ? metadata\n : environment;\n const resolvedMetadata = isConversationEnvironmentParameter(metadata)\n ? undefined\n : metadata;\n return appendMessages(\n conversation,\n { role: 'system', content, metadata: resolvedMetadata },\n resolvedEnvironment,\n );\n}\n",
66
+ "import type { Conversation, Message } from '../types';\nimport { messageHasImages } from '../utilities';\nimport { getOrderedMessages } from '../utilities/message-store';\n\n/**\n * Returns all messages from a conversation in order.\n * By default excludes hidden messages unless includeHidden is true.\n */\nexport function getMessages(\n conversation: Conversation,\n options?: { includeHidden?: boolean },\n): Message[] {\n const includeHidden = options?.includeHidden ?? false;\n const ordered = getOrderedMessages(conversation);\n return includeHidden ? ordered : ordered.filter((m) => !m.hidden);\n}\n\n/**\n * Returns the message at the specified position index.\n * Returns undefined if no message exists at that position.\n */\nexport function getMessageAtPosition(\n conversation: Conversation,\n position: number,\n): Message | undefined {\n const id = conversation.ids[position];\n return id ? conversation.messages[id] : undefined;\n}\n\n/**\n * Returns all message IDs for the conversation in order.\n */\nexport function getMessageIds(conversation: Conversation): string[] {\n return [...conversation.ids];\n}\n\n/**\n * Finds a message by its unique identifier.\n * Returns undefined if no message with that ID exists.\n */\nexport function getMessageById(\n conversation: Conversation,\n id: string,\n): Message | undefined {\n return conversation.messages[id];\n}\n\n/**\n * Filters messages using a custom predicate function.\n * Returns all messages for which the predicate returns true.\n */\nexport function searchConversationMessages(\n conversation: Conversation,\n predicate: (m: Message) => boolean,\n): Message[] {\n return getOrderedMessages(conversation).filter(predicate);\n}\n\n/**\n * Computes statistics about a conversation's messages.\n * Returns totals, counts by role, hidden message count, and image count.\n */\nexport function getStatistics(conversation: Conversation): {\n total: number;\n byRole: Record<string, number>;\n hidden: number;\n withImages: number;\n} {\n const ordered = getOrderedMessages(conversation);\n const stats = ordered.reduce(\n (acc, message) => {\n const byRole = {\n ...acc.byRole,\n [message.role]: (acc.byRole[message.role] ?? 0) + 1,\n };\n\n return {\n byRole,\n hidden: acc.hidden + (message.hidden ? 1 : 0),\n withImages: acc.withImages + (messageHasImages(message) ? 1 : 0),\n };\n },\n { byRole: {} as Record<string, number>, hidden: 0, withImages: 0 },\n );\n return { total: ordered.length, ...stats };\n}\n",
67
+ "import {\n type ConversationEnvironment,\n isConversationEnvironmentParameter,\n resolveConversationEnvironment,\n} from '../environment';\nimport { copyContent } from '../multi-modal';\nimport type { Conversation, JSONValue, Message } from '../types';\nimport { createMessage, toReadonly } from '../utilities';\nimport { getOrderedMessages, toIdRecord } from '../utilities/message-store';\nimport { ensureConversationSafe } from './validation';\n\n/**\n * Checks if a conversation contains any system messages.\n */\nexport function hasSystemMessage(conversation: Conversation): boolean {\n return getOrderedMessages(conversation).some((m) => m.role === 'system');\n}\n\n/**\n * Returns the first system message in the conversation.\n * Returns undefined if no system message exists.\n */\nexport function getFirstSystemMessage(conversation: Conversation): Message | undefined {\n return getOrderedMessages(conversation).find((m) => m.role === 'system');\n}\n\n/**\n * Returns all system messages in the conversation.\n */\nexport function getSystemMessages(conversation: Conversation): ReadonlyArray<Message> {\n return getOrderedMessages(conversation).filter((m) => m.role === 'system');\n}\n\n/**\n * Inserts a system message at the beginning of the conversation.\n * Renumbers all existing message positions.\n */\nexport function prependSystemMessage(\n conversation: Conversation,\n content: string,\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(\n isConversationEnvironmentParameter(metadata) ? metadata : environment,\n );\n const resolvedMetadata = isConversationEnvironmentParameter(metadata)\n ? undefined\n : metadata;\n const now = resolvedEnvironment.now();\n\n const newMessage: Message = createMessage({\n id: resolvedEnvironment.randomId(),\n role: 'system',\n content,\n position: 0,\n createdAt: now,\n metadata: { ...(resolvedMetadata ?? {}) },\n hidden: false,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const ordered = getOrderedMessages(conversation);\n const renumberedMessages = ordered.map((message) =>\n createMessage({\n id: message.id,\n role: message.role,\n content: copyContent(message.content),\n position: message.position + 1,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n toolCall: message.toolCall,\n toolResult: message.toolResult,\n tokenUsage: message.tokenUsage,\n }),\n );\n\n return ensureConversationSafe(\n toReadonly({\n ...conversation,\n ids: [newMessage.id, ...ordered.map((message) => message.id)],\n messages: toIdRecord([newMessage, ...renumberedMessages]),\n updatedAt: now,\n }),\n );\n}\n\n/**\n * Replaces the first system message with new content.\n * If no system message exists, prepends a new one.\n */\nexport function replaceSystemMessage(\n conversation: Conversation,\n content: string,\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(\n isConversationEnvironmentParameter(metadata) ? metadata : environment,\n );\n const resolvedMetadata = isConversationEnvironmentParameter(metadata)\n ? undefined\n : metadata;\n const now = resolvedEnvironment.now();\n const ordered = getOrderedMessages(conversation);\n const firstSystemIndex = ordered.findIndex((m) => m.role === 'system');\n\n if (firstSystemIndex === -1) {\n return prependSystemMessage(\n conversation,\n content,\n resolvedMetadata,\n resolvedEnvironment,\n );\n }\n\n const original = ordered[firstSystemIndex]!;\n const replaced: Message = createMessage({\n id: original.id,\n role: 'system',\n content,\n position: original.position,\n createdAt: original.createdAt,\n metadata: { ...(resolvedMetadata ?? original.metadata) },\n hidden: original.hidden,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const next: Conversation = {\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [replaced.id]: replaced },\n updatedAt: now,\n };\n return ensureConversationSafe(toReadonly(next));\n}\n\n/**\n * Merges all system messages into a single message at the first position.\n * Duplicate content is removed. Returns unchanged if 0 or 1 system messages.\n */\nexport function collapseSystemMessages(\n conversation: Conversation,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const ordered = getOrderedMessages(conversation);\n const systemMessages = ordered.filter((m) => m.role === 'system');\n\n if (systemMessages.length <= 1) {\n return ensureConversationSafe(conversation);\n }\n\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const { parts } = systemMessages.reduce(\n (state, message) => {\n const contentStr =\n typeof message.content === 'string'\n ? message.content\n : message.content\n .map((part) => (part.type === 'text' ? part.text : ''))\n .join('');\n\n if (!contentStr || state.seen.has(contentStr)) {\n return state;\n }\n\n const seen = new Set(state.seen);\n seen.add(contentStr);\n\n return { seen, parts: [...state.parts, contentStr] };\n },\n { seen: new Set<string>(), parts: [] as string[] },\n );\n\n const collapsedContent = parts.join('\\n');\n const firstSystemMsg = systemMessages[0]!;\n\n const collapsed: Message = createMessage({\n id: firstSystemMsg.id,\n role: 'system',\n content: collapsedContent,\n position: firstSystemMsg.position,\n createdAt: firstSystemMsg.createdAt,\n metadata: { ...firstSystemMsg.metadata },\n hidden: firstSystemMsg.hidden,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const systemIdsToRemove = systemMessages.slice(1).reduce((ids, message) => {\n const nextIds = new Set(ids);\n nextIds.add(message.id);\n return nextIds;\n }, new Set<string>());\n\n const messages = ordered\n .filter((m) => !systemIdsToRemove.has(m.id))\n .map((m) => (m.id === firstSystemMsg.id ? collapsed : m));\n\n const renumbered = messages.map((message, index) => {\n if (message.position === index) return message;\n return createMessage({\n id: message.id,\n role: message.role,\n content: copyContent(message.content),\n position: index,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n toolCall: message.toolCall,\n toolResult: message.toolResult,\n tokenUsage: message.tokenUsage,\n });\n });\n\n const next: Conversation = {\n ...conversation,\n ids: renumbered.map((message) => message.id),\n messages: toIdRecord(renumbered),\n updatedAt: now,\n };\n return ensureConversationSafe(toReadonly(next));\n}\n",
68
+ "import type { ToolResult } from '../types';\n\n/**\n * Returns a shallow copy of a tool result.\n */\nexport function copyToolResult(toolResult: ToolResult): ToolResult {\n return { ...toolResult };\n}\n\n/**\n * Redacts tool result payload fields while preserving the original shape.\n */\nexport function redactToolResult(\n toolResult: ToolResult,\n placeholder: string,\n): ToolResult {\n return { ...toolResult, content: placeholder };\n}\n",
69
+ "import {\n type ConversationEnvironment,\n isConversationEnvironmentParameter,\n resolveConversationEnvironment,\n} from '../environment';\nimport { createInvalidPositionError } from '../errors';\nimport type { Conversation, Message } from '../types';\nimport { createMessage, toReadonly } from '../utilities';\nimport { redactToolResult } from '../utilities/tool-results';\nimport { ensureConversationSafe } from './validation';\n\nexport interface RedactMessageOptions {\n placeholder?: string;\n redactToolArguments?: boolean;\n redactToolResults?: boolean;\n clearToolMetadata?: boolean;\n}\n\nconst isRedactMessageOptions = (value: unknown): value is RedactMessageOptions => {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as Record<string, unknown>;\n return (\n 'placeholder' in candidate ||\n 'redactToolArguments' in candidate ||\n 'redactToolResults' in candidate ||\n 'clearToolMetadata' in candidate\n );\n};\n\n/**\n * Replaces the content of a message at the specified position with a placeholder.\n * By default preserves tool identifiers/outcomes while redacting tool payloads.\n * Throws if the position is out of bounds.\n */\nexport function redactMessageAtPosition(\n conversation: Conversation,\n position: number,\n placeholderOrOptions?: string | RedactMessageOptions | Partial<ConversationEnvironment>,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n let placeholder = '[REDACTED]';\n let options: RedactMessageOptions = {};\n let env = environment;\n\n if (typeof placeholderOrOptions === 'string') {\n placeholder = placeholderOrOptions;\n } else if (placeholderOrOptions) {\n if (!environment && isConversationEnvironmentParameter(placeholderOrOptions)) {\n env = placeholderOrOptions;\n } else if (isRedactMessageOptions(placeholderOrOptions)) {\n options = placeholderOrOptions;\n if (options.placeholder) {\n placeholder = options.placeholder;\n }\n }\n }\n\n const redactToolArguments = options.redactToolArguments ?? true;\n const redactToolResults = options.redactToolResults ?? true;\n const clearToolMetadata = options.clearToolMetadata ?? false;\n\n if (position < 0 || position >= conversation.ids.length) {\n throw createInvalidPositionError(conversation.ids.length - 1, position);\n }\n\n const id = conversation.ids[position];\n const original = id ? conversation.messages[id] : undefined;\n if (!original) {\n throw createInvalidPositionError(conversation.ids.length - 1, position);\n }\n\n let toolCall = original.toolCall ? { ...original.toolCall } : undefined;\n let toolResult = original.toolResult ? { ...original.toolResult } : undefined;\n\n if (clearToolMetadata) {\n toolCall = undefined;\n toolResult = undefined;\n } else {\n if (original.role === 'tool-use' && toolCall) {\n toolCall = {\n ...toolCall,\n arguments: redactToolArguments ? placeholder : toolCall.arguments,\n };\n }\n\n if (original.role === 'tool-result' && toolResult) {\n toolResult = redactToolResults\n ? redactToolResult(toolResult, placeholder)\n : { ...toolResult };\n }\n }\n\n const redacted: Message = createMessage({\n id: original.id,\n role: original.role,\n content: placeholder,\n position: original.position,\n createdAt: original.createdAt,\n metadata: { ...original.metadata },\n hidden: original.hidden,\n toolCall,\n toolResult,\n tokenUsage: original.tokenUsage ? { ...original.tokenUsage } : undefined,\n });\n\n const resolvedEnvironment = resolveConversationEnvironment(env);\n const now = resolvedEnvironment.now();\n const next: Conversation = {\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [redacted.id]: redacted },\n updatedAt: now,\n };\n return ensureConversationSafe(toReadonly(next));\n}\n",
70
+ "import { createInvalidPositionError, createSerializationError } from '../errors';\nimport { conversationSchema } from '../schemas';\nimport type { AssistantMessage, Conversation, Message, ToolResult } from '../types';\nimport { createMessage, isAssistantMessage, toReadonly } from '../utilities';\nimport { toIdRecord } from '../utilities/message-store';\nimport { assertConversationIntegrity } from './integrity';\nimport { assertToolReference, registerToolUse, type ToolUseIndex } from './tool-tracking';\n\nfunction normalizeToolResult(toolResult: Message['toolResult']): ToolResult | undefined {\n if (!toolResult) return undefined;\n return {\n callId: toolResult.callId,\n outcome: toolResult.outcome,\n content: toolResult.content,\n };\n}\n\nfunction normalizeMessage(message: Message): Message | AssistantMessage {\n const base: Message = {\n id: message.id,\n role: message.role,\n content: message.content,\n position: message.position,\n createdAt: message.createdAt,\n metadata: message.metadata,\n hidden: message.hidden,\n toolCall: message.toolCall ? { ...message.toolCall } : undefined,\n toolResult: normalizeToolResult(message.toolResult),\n tokenUsage: message.tokenUsage ? { ...message.tokenUsage } : undefined,\n };\n\n if (isAssistantMessage(message)) {\n return {\n ...base,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n }\n\n return base;\n}\n\n/**\n * Reconstructs a conversation from a JSON object.\n * Validates message positions are contiguous and tool results reference valid calls.\n * Throws a serialization error if validation fails.\n *\n * @param json - The conversation JSON to deserialize (may be from an older version)\n * @returns A Conversation object\n * @throws {SerializationError} If validation fails\n */\nexport function deserializeConversation(json: unknown): Conversation {\n const parsed = conversationSchema.safeParse(json);\n if (!parsed.success) {\n throw createSerializationError('failed to deserialize conversation: invalid data');\n }\n const data = parsed.data;\n\n try {\n const messageIds = new Set(Object.keys(data.messages));\n const orderedMessages = data.ids.map((id, index) => {\n const message = data.messages[id];\n if (!message) {\n throw createSerializationError(`missing message for id ${id}`);\n }\n if (message.position !== index) {\n throw createInvalidPositionError(index, message.position);\n }\n messageIds.delete(id);\n return normalizeMessage(message);\n });\n\n if (messageIds.size > 0) {\n throw createSerializationError(\n `messages not listed in ids: ${[...messageIds].join(', ')}`,\n );\n }\n\n orderedMessages.reduce<{ toolUses: ToolUseIndex }>(\n (state, message) => {\n if (message.role === 'tool-use' && message.toolCall) {\n return {\n toolUses: registerToolUse(state.toolUses, message.toolCall),\n };\n }\n\n if (message.role === 'tool-result' && message.toolResult) {\n assertToolReference(state.toolUses, message.toolResult.callId);\n }\n\n return state;\n },\n { toolUses: new Map<string, { name: string }>() },\n );\n\n const messageInstances: Message[] = orderedMessages.map((message) =>\n createMessage(message),\n );\n const conv: Conversation = {\n schemaVersion: data.schemaVersion,\n id: data.id,\n title: data.title,\n status: data.status,\n metadata: { ...data.metadata },\n ids: orderedMessages.map((message) => message.id),\n messages: toIdRecord(messageInstances),\n createdAt: data.createdAt,\n updatedAt: data.updatedAt,\n };\n const readonly = toReadonly(conv);\n assertConversationIntegrity(readonly);\n return readonly;\n } catch (error) {\n throw createSerializationError(\n `failed to deserialize conversation: ${\n error instanceof Error ? error.message : String(error)\n }`,\n error as Error,\n );\n }\n}\n",
71
+ "import type {\n Message as ExternalMessage,\n MultiModalContent,\n} from '@lasercat/homogenaize';\n\nimport type { Conversation } from '../types';\nimport { getOrderedMessages } from '../utilities/message-store';\nimport { assertConversationSafe } from './validation';\n\n/**\n * Converts conversation messages to the external chat message format.\n * Maps internal roles to standard user/assistant/system roles.\n * Hidden messages are excluded from the output.\n */\nexport function toChatMessages(conversation: Conversation): ExternalMessage[] {\n assertConversationSafe(conversation);\n const roleMap: Record<string, 'user' | 'assistant' | 'system'> = {\n user: 'user',\n assistant: 'assistant',\n system: 'system',\n developer: 'system',\n 'tool-use': 'assistant',\n 'tool-result': 'user',\n snapshot: 'system',\n };\n\n const result: ExternalMessage[] = [];\n for (const message of getOrderedMessages(conversation)) {\n if (message.hidden) continue;\n const externalRole = roleMap[message.role] as 'user' | 'assistant' | 'system';\n result.push({\n role: externalRole,\n content: message.content as string | MultiModalContent[],\n });\n }\n return result;\n}\n",
72
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport { ensureConversationSafe } from './conversation/validation';\nimport {\n type ConversationEnvironment,\n isConversationEnvironmentParameter,\n resolveConversationEnvironment,\n} from './environment';\nimport type {\n AssistantMessage,\n Conversation,\n JSONValue,\n Message,\n TokenUsage,\n} from './types';\nimport { createMessage, isAssistantMessage, toReadonly } from './utilities';\nimport { getOrderedMessages, toIdRecord } from './utilities/message-store';\n\nconst STREAMING_KEY = '__streaming';\n\nconst cloneMessage = (\n original: Message,\n overrides: {\n content?: string | MultiModalContent[];\n metadata?: Record<string, JSONValue>;\n position?: number;\n tokenUsage?: TokenUsage;\n } = {},\n): Message => {\n const baseMessage = {\n id: original.id,\n role: original.role,\n content:\n overrides.content ??\n (typeof original.content === 'string'\n ? original.content\n : [...(original.content as MultiModalContent[])]),\n position: overrides.position ?? original.position,\n createdAt: original.createdAt,\n metadata: overrides.metadata ?? { ...original.metadata },\n hidden: original.hidden,\n toolCall: original.toolCall ? { ...original.toolCall } : undefined,\n toolResult: original.toolResult ? { ...original.toolResult } : undefined,\n tokenUsage: overrides.tokenUsage,\n };\n\n if (isAssistantMessage(original)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: original.goalCompleted,\n };\n return createMessage(assistantMessage);\n }\n\n return createMessage(baseMessage);\n};\n\n/**\n * Checks if a message is currently streaming (has the streaming metadata flag).\n */\nexport function isStreamingMessage(message: Message): boolean {\n return message.metadata[STREAMING_KEY] === true;\n}\n\n/**\n * Gets the currently streaming message from a conversation, if any.\n */\nexport function getStreamingMessage(conversation: Conversation): Message | undefined {\n return getOrderedMessages(conversation).find(isStreamingMessage);\n}\n\n/**\n * Creates a pending/streaming message placeholder and appends it to the conversation.\n * Returns both the updated conversation and the ID of the new streaming message.\n */\nexport function appendStreamingMessage(\n conversation: Conversation,\n role: 'assistant' | 'user',\n metadata?: Record<string, JSONValue>,\n environment?: Partial<ConversationEnvironment>,\n): { conversation: Conversation; messageId: string } {\n const resolvedEnvironment = resolveConversationEnvironment(\n isConversationEnvironmentParameter(metadata) ? metadata : environment,\n );\n const resolvedMetadata = isConversationEnvironmentParameter(metadata)\n ? undefined\n : metadata;\n const now = resolvedEnvironment.now();\n const messageId = resolvedEnvironment.randomId();\n\n const newMessage = createMessage({\n id: messageId,\n role,\n content: '',\n position: conversation.ids.length,\n createdAt: now,\n metadata: { ...(resolvedMetadata ?? {}), [STREAMING_KEY]: true },\n hidden: false,\n toolCall: undefined,\n toolResult: undefined,\n tokenUsage: undefined,\n });\n\n const updatedConversation = toReadonly({\n ...conversation,\n ids: [...conversation.ids, messageId],\n messages: { ...conversation.messages, [messageId]: newMessage },\n updatedAt: now,\n });\n\n return { conversation: ensureConversationSafe(updatedConversation), messageId };\n}\n\n/**\n * Updates the content of a streaming message.\n * This replaces the existing content (use for accumulating streamed tokens).\n */\nexport function updateStreamingMessage(\n conversation: Conversation,\n messageId: string,\n content: string | MultiModalContent[],\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n const original = conversation.messages[messageId];\n if (!original) {\n return ensureConversationSafe(conversation);\n }\n\n const overrides: {\n content?: string | MultiModalContent[];\n tokenUsage?: TokenUsage;\n } = {\n content: typeof content === 'string' ? content : [...content],\n };\n if (original.tokenUsage) {\n overrides.tokenUsage = { ...original.tokenUsage };\n }\n\n const updated = cloneMessage(original, overrides);\n\n return ensureConversationSafe(\n toReadonly({\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [updated.id]: updated },\n updatedAt: now,\n }),\n );\n}\n\n/**\n * Marks a streaming message as complete, removing the streaming flag.\n * Optionally adds token usage and additional metadata.\n */\nexport function finalizeStreamingMessage(\n conversation: Conversation,\n messageId: string,\n options?: {\n tokenUsage?: TokenUsage;\n metadata?: Record<string, JSONValue>;\n },\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(\n isConversationEnvironmentParameter(options) ? options : environment,\n );\n const resolvedOptions = isConversationEnvironmentParameter(options)\n ? undefined\n : options;\n const now = resolvedEnvironment.now();\n\n const original = conversation.messages[messageId];\n if (!original) {\n return ensureConversationSafe(conversation);\n }\n\n // Remove the streaming flag and merge in any new metadata\n const { [STREAMING_KEY]: _, ...restMetadata } = original.metadata as Record<\n string,\n JSONValue\n >;\n const finalMetadata: Record<string, JSONValue> = {\n ...restMetadata,\n ...(resolvedOptions?.metadata ?? {}),\n };\n\n const finalizeOverrides: {\n metadata?: Record<string, JSONValue>;\n tokenUsage?: TokenUsage;\n } = {\n metadata: finalMetadata,\n };\n if (resolvedOptions?.tokenUsage) {\n finalizeOverrides.tokenUsage = { ...resolvedOptions.tokenUsage };\n }\n\n const updated = cloneMessage(original, finalizeOverrides);\n\n return ensureConversationSafe(\n toReadonly({\n ...conversation,\n ids: [...conversation.ids],\n messages: { ...conversation.messages, [updated.id]: updated },\n updatedAt: now,\n }),\n );\n}\n\n/**\n * Cancels a streaming message by removing it from the conversation.\n */\nexport function cancelStreamingMessage(\n conversation: Conversation,\n messageId: string,\n environment?: Partial<ConversationEnvironment>,\n): Conversation {\n const resolvedEnvironment = resolveConversationEnvironment(environment);\n const now = resolvedEnvironment.now();\n\n if (!conversation.messages[messageId]) {\n return ensureConversationSafe(conversation);\n }\n\n const messages = getOrderedMessages(conversation)\n .filter((m) => m.id !== messageId)\n .map((message, index) =>\n message.position === index\n ? message\n : (() => {\n const overrides: { position: number; tokenUsage?: TokenUsage } = {\n position: index,\n };\n if (message.tokenUsage) {\n overrides.tokenUsage = { ...message.tokenUsage };\n }\n return cloneMessage(message, overrides);\n })(),\n );\n\n return ensureConversationSafe(\n toReadonly({\n ...conversation,\n ids: messages.map((message) => message.id),\n messages: toIdRecord(messages),\n updatedAt: now,\n }),\n );\n}\n",
73
+ "import type {\n AddEventListenerOptionsLike,\n EmissionEvent,\n EventListenerLike,\n EventListenerOptionsLike,\n EventTargetLike,\n} from 'event-emission';\nimport { createEventTarget } from 'event-emission';\n\nimport {\n estimateConversationTokens,\n getRecentMessages,\n truncateFromPosition,\n type TruncateOptions,\n truncateToTokenLimit,\n} from './context';\nimport type { RedactMessageOptions } from './conversation/index';\nimport {\n appendAssistantMessage,\n appendMessages,\n appendSystemMessage,\n appendUserMessage,\n collapseSystemMessages,\n createConversation,\n deserializeConversation,\n getFirstSystemMessage,\n getMessageAtPosition,\n getMessageById,\n getMessageIds,\n getMessages,\n getStatistics,\n getSystemMessages,\n hasSystemMessage,\n prependSystemMessage,\n redactMessageAtPosition,\n replaceSystemMessage,\n searchConversationMessages,\n toChatMessages,\n} from './conversation/index';\nimport { ensureConversationSafe } from './conversation/validation';\nimport {\n type ConversationEnvironment,\n resolveConversationEnvironment,\n} from './environment';\nimport {\n appendStreamingMessage,\n cancelStreamingMessage,\n finalizeStreamingMessage,\n getStreamingMessage,\n updateStreamingMessage,\n} from './streaming';\nimport type {\n Conversation,\n ConversationHistorySnapshot,\n HistoryNodeSnapshot,\n JSONValue,\n Message,\n MessageInput,\n TokenUsage,\n} from './types';\n\n/**\n * Event detail for conversation history changes.\n */\nexport interface ConversationHistoryEventDetail {\n type: ConversationHistoryActionType;\n conversation: Conversation;\n}\n\nexport type ConversationHistoryEvent = EmissionEvent<\n ConversationHistoryEventDetail,\n ConversationHistoryEventType\n>;\n\ntype ConversationHistoryActionType = 'push' | 'undo' | 'redo' | 'switch';\ntype ConversationHistoryEventType = 'change' | ConversationHistoryActionType;\ntype ConversationHistoryEventMap = Record<\n ConversationHistoryEventType,\n ConversationHistoryEventDetail\n>;\ntype ConversationHistoryEventTarget = EventTargetLike<ConversationHistoryEventMap>;\n\ninterface HistoryNode {\n conversation: Conversation;\n parent: HistoryNode | null;\n children: HistoryNode[];\n}\n\n/**\n * Manages a stack of conversation versions to support undo, redo, and branching.\n */\nexport class ConversationHistory extends EventTarget {\n private currentNode: HistoryNode;\n private environment: ConversationEnvironment;\n private readonly events: ConversationHistoryEventTarget;\n\n constructor(\n initial: Conversation = createConversation(),\n environment?: Partial<ConversationEnvironment>,\n ) {\n super();\n this.environment = resolveConversationEnvironment(environment);\n this.events = createEventTarget<ConversationHistoryEventMap>();\n const safeInitial = ensureConversationSafe(initial);\n this.currentNode = {\n conversation: safeInitial,\n parent: null,\n children: [],\n };\n }\n\n /**\n * Dispatches a change event.\n */\n private notifyChange(type: ConversationHistoryActionType): void {\n const detail: ConversationHistoryEventDetail = {\n type,\n conversation: this.current,\n };\n this.events.dispatchEvent({ type: 'change', detail });\n this.events.dispatchEvent({ type, detail });\n }\n\n private toAddListenerOptions(\n options?: boolean | AddEventListenerOptions,\n ): AddEventListenerOptionsLike | boolean | undefined {\n if (typeof options === 'boolean' || options === undefined) return options;\n const mapped: AddEventListenerOptionsLike = {};\n if (options.capture !== undefined) mapped.capture = options.capture;\n if (options.once !== undefined) mapped.once = options.once;\n if (options.passive !== undefined) mapped.passive = options.passive;\n if (options.signal !== undefined) {\n mapped.signal = options.signal as NonNullable<\n AddEventListenerOptionsLike['signal']\n >;\n }\n return mapped;\n }\n\n private toRemoveListenerOptions(\n options?: boolean | EventListenerOptions,\n ): EventListenerOptionsLike | boolean | undefined {\n if (typeof options === 'boolean' || options === undefined) return options;\n const mapped: EventListenerOptionsLike = {};\n if (options.capture !== undefined) mapped.capture = options.capture;\n return mapped;\n }\n\n /**\n * Overrides addEventListener to optionally return an unsubscribe function.\n * This is a convenience for modern frontend frameworks.\n */\n override addEventListener(\n type: string,\n callback:\n | ((event: ConversationHistoryEvent) => void)\n | EventListenerOrEventListenerObject\n | null,\n options?: boolean | AddEventListenerOptions,\n ): void | (() => void) {\n if (!callback) return;\n return this.events.addEventListener(\n type as ConversationHistoryEventType,\n callback as EventListenerLike<ConversationHistoryEvent>,\n this.toAddListenerOptions(options),\n );\n }\n\n /**\n * Removes a listener registered with addEventListener.\n */\n override removeEventListener(\n type: string,\n callback:\n | ((event: ConversationHistoryEvent) => void)\n | EventListenerOrEventListenerObject\n | null,\n options?: boolean | EventListenerOptions,\n ): void {\n if (!callback) return;\n this.events.removeEventListener(\n type as ConversationHistoryEventType,\n callback as EventListenerLike<ConversationHistoryEvent>,\n this.toRemoveListenerOptions(options),\n );\n }\n\n /**\n * Dispatches a DOM-style event through the event-emission target.\n */\n override dispatchEvent(event: Event): boolean {\n return this.events.dispatchEvent(\n event as Parameters<ConversationHistoryEventTarget['dispatchEvent']>[0],\n );\n }\n\n /**\n * Subscribes to conversation changes.\n * This follows the Svelte store contract, making ConversationHistory a valid Svelte store.\n * @param run - Callback called with the current conversation whenever it changes.\n * @returns An unsubscribe function.\n */\n subscribe(run: (value: Conversation) => void): () => void {\n // Call immediately with current value (Svelte store contract)\n run(this.current);\n\n const handler = (event: ConversationHistoryEvent) => {\n if (event?.detail?.conversation) {\n run(event.detail.conversation);\n }\n };\n\n const unsubscribe = this.addEventListener(\n 'change',\n handler as (event: ConversationHistoryEvent) => void,\n );\n return (unsubscribe as () => void) || (() => {});\n }\n\n /**\n * Returns the current conversation.\n * Useful for useSyncExternalStore in React.\n */\n getSnapshot(): Conversation {\n return this.current;\n }\n\n /**\n * The current conversation state.\n */\n get current(): Conversation {\n return this.currentNode.conversation;\n }\n\n /**\n * Returns the message IDs for the current conversation.\n */\n get ids(): string[] {\n return getMessageIds(this.current);\n }\n\n /**\n * Whether an undo operation is possible.\n */\n get canUndo(): boolean {\n return this.currentNode.parent !== null;\n }\n\n /**\n * Whether a redo operation is possible.\n */\n get canRedo(): boolean {\n return this.currentNode.children.length > 0;\n }\n\n /**\n * Returns the environment associated with this history.\n */\n get env(): ConversationEnvironment {\n return this.environment;\n }\n\n /**\n * Returns the number of branches available at the current level.\n */\n get branchCount(): number {\n return this.currentNode.parent ? this.currentNode.parent.children.length : 1;\n }\n\n /**\n * Returns the index of the current branch at this level.\n */\n get branchIndex(): number {\n if (!this.currentNode.parent) return 0;\n return this.currentNode.parent.children.indexOf(this.currentNode);\n }\n\n /**\n * Returns the number of alternate paths available from the current state.\n */\n get redoCount(): number {\n return this.currentNode.children.length;\n }\n\n /**\n * Pushes a new conversation state onto the history.\n * If the current state is not a leaf, a new branch is created.\n */\n push(next: Conversation): void {\n const newNode: HistoryNode = {\n conversation: next,\n parent: this.currentNode,\n children: [],\n };\n this.currentNode.children.push(newNode);\n this.currentNode = newNode;\n this.notifyChange('push');\n }\n\n /**\n * Reverts to the previous conversation state.\n * @returns The conversation state after undo, or undefined if not possible.\n */\n undo(): Conversation | undefined {\n if (this.currentNode.parent) {\n this.currentNode = this.currentNode.parent;\n this.notifyChange('undo');\n return this.current;\n }\n return undefined;\n }\n\n /**\n * Advances to the next conversation state.\n * @param childIndex - The index of the branch to follow (default: 0).\n * @returns The conversation state after redo, or undefined if not possible.\n */\n redo(childIndex: number = 0): Conversation | undefined {\n const next = this.currentNode.children[childIndex];\n if (next) {\n this.currentNode = next;\n this.notifyChange('redo');\n return this.current;\n }\n return undefined;\n }\n\n /**\n * Switches to a different branch at the current level.\n * @param index - The index of the sibling branch to switch to.\n * @returns The new conversation state, or undefined if not possible.\n */\n switchToBranch(index: number): Conversation | undefined {\n if (this.currentNode.parent) {\n const target = this.currentNode.parent.children[index];\n if (target) {\n this.currentNode = target;\n this.notifyChange('switch');\n return this.current;\n }\n }\n return undefined;\n }\n\n /**\n * Returns the sequence of conversations from root to current.\n */\n getPath(): Conversation[] {\n const path: Conversation[] = [];\n let curr: HistoryNode | null = this.currentNode;\n while (curr) {\n path.unshift(curr.conversation);\n curr = curr.parent;\n }\n return path;\n }\n\n // --- QUERY METHODS ---\n\n /**\n * Returns messages from the current conversation.\n */\n getMessages(options?: { includeHidden?: boolean }): ReadonlyArray<Message> {\n return getMessages(this.current, options);\n }\n\n /**\n * Returns the message at the specified position.\n */\n getMessageAtPosition(position: number): Message | undefined {\n return getMessageAtPosition(this.current, position);\n }\n\n /**\n * Returns all message IDs for the current conversation in order.\n */\n getMessageIds(): string[] {\n return getMessageIds(this.current);\n }\n\n /**\n * Returns the message with the specified ID, if present.\n */\n getMessageById(id: string): Message | undefined {\n return getMessageById(this.current, id);\n }\n\n /**\n * Shorthand for getMessageById.\n */\n get(id: string): Message | undefined {\n return getMessageById(this.current, id);\n }\n\n /**\n * Filters messages using a predicate.\n */\n searchMessages(predicate: (m: Message) => boolean): Message[] {\n return searchConversationMessages(this.current, predicate);\n }\n\n /**\n * Computes basic statistics for the current conversation.\n */\n getStatistics() {\n return getStatistics(this.current);\n }\n\n /**\n * Returns true if any system message exists in the current conversation.\n */\n hasSystemMessage(): boolean {\n return hasSystemMessage(this.current);\n }\n\n /**\n * Returns the first system message in the current conversation, if any.\n */\n getFirstSystemMessage(): Message | undefined {\n return getFirstSystemMessage(this.current);\n }\n\n /**\n * Returns all system messages in the current conversation.\n */\n getSystemMessages(): ReadonlyArray<Message> {\n return getSystemMessages(this.current);\n }\n\n /**\n * Converts the current conversation to external chat message format.\n */\n toChatMessages() {\n return toChatMessages(this.current);\n }\n\n /**\n * Estimates tokens for the current conversation.\n */\n estimateTokens(estimator?: (message: Message) => number): number {\n return estimateConversationTokens(this.current, estimator, this.env);\n }\n\n /**\n * Returns the most recent messages, with optional filtering.\n */\n getRecentMessages(\n count: number,\n options?: {\n includeHidden?: boolean;\n includeSystem?: boolean;\n preserveToolPairs?: boolean;\n },\n ): ReadonlyArray<Message> {\n return getRecentMessages(this.current, count, options);\n }\n\n /**\n * Returns the current streaming message, if any.\n */\n getStreamingMessage(): Message | undefined {\n return getStreamingMessage(this.current);\n }\n\n // --- MUTATION METHODS ---\n\n /**\n * Appends one or more messages to the history.\n */\n appendMessages(...inputs: MessageInput[]): void {\n this.push(appendMessages(this.current, ...inputs, this.env));\n }\n\n /**\n * Appends a user message to the history.\n */\n appendUserMessage(\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n ): void {\n this.push(appendUserMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Appends an assistant message to the history.\n */\n appendAssistantMessage(\n content: MessageInput['content'],\n metadata?: Record<string, JSONValue>,\n ): void {\n this.push(appendAssistantMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Appends a system message to the history.\n */\n appendSystemMessage(content: string, metadata?: Record<string, JSONValue>): void {\n this.push(appendSystemMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Prepends a system message to the history.\n */\n prependSystemMessage(content: string, metadata?: Record<string, JSONValue>): void {\n this.push(prependSystemMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Replaces the first system message or prepends one if none exist.\n */\n replaceSystemMessage(content: string, metadata?: Record<string, JSONValue>): void {\n this.push(replaceSystemMessage(this.current, content, metadata, this.env));\n }\n\n /**\n * Collapses multiple system messages into a single message.\n */\n collapseSystemMessages(): void {\n this.push(collapseSystemMessages(this.current, this.env));\n }\n\n /**\n * Redacts the message at the given position.\n */\n redactMessageAtPosition(\n position: number,\n placeholderOrOptions?: string | RedactMessageOptions,\n ): void {\n this.push(\n redactMessageAtPosition(this.current, position, placeholderOrOptions, this.env),\n );\n }\n\n /**\n * Truncates the conversation from a specific position.\n */\n truncateFromPosition(\n position: number,\n options?: { preserveSystemMessages?: boolean; preserveToolPairs?: boolean },\n ): void {\n this.push(truncateFromPosition(this.current, position, options, this.env));\n }\n\n /**\n * Truncates the conversation to fit within a token limit.\n */\n truncateToTokenLimit(maxTokens: number, options?: TruncateOptions): void {\n this.push(truncateToTokenLimit(this.current, maxTokens, options, this.env));\n }\n\n /**\n * Appends a streaming message placeholder and returns its ID.\n */\n appendStreamingMessage(\n role: 'assistant' | 'user',\n metadata?: Record<string, JSONValue>,\n ): string {\n const { conversation, messageId } = appendStreamingMessage(\n this.current,\n role,\n metadata,\n this.env,\n );\n this.push(conversation);\n return messageId;\n }\n\n /**\n * Updates a streaming message's content.\n */\n updateStreamingMessage(messageId: string, content: string): void {\n this.push(updateStreamingMessage(this.current, messageId, content, this.env));\n }\n\n /**\n * Finalizes a streaming message and optionally adds metadata or token usage.\n */\n finalizeStreamingMessage(\n messageId: string,\n options?: { tokenUsage?: TokenUsage; metadata?: Record<string, JSONValue> },\n ): void {\n this.push(finalizeStreamingMessage(this.current, messageId, options, this.env));\n }\n\n /**\n * Cancels a streaming message by removing it from the conversation.\n */\n cancelStreamingMessage(messageId: string): void {\n this.push(cancelStreamingMessage(this.current, messageId, this.env));\n }\n\n /**\n * Captures the entire history tree and current state in a plain snapshot.\n */\n snapshot(): ConversationHistorySnapshot {\n const getPath = (node: HistoryNode): number[] => {\n const path: number[] = [];\n let curr = node;\n while (curr.parent) {\n path.unshift(curr.parent.children.indexOf(curr));\n curr = curr.parent;\n }\n return path;\n };\n\n const serializeNode = (node: HistoryNode): HistoryNodeSnapshot => ({\n conversation: node.conversation,\n children: node.children.map(serializeNode),\n });\n\n let root = this.currentNode;\n while (root.parent) {\n root = root.parent;\n }\n\n return {\n root: serializeNode(root),\n currentPath: getPath(this.currentNode),\n };\n }\n\n /**\n * Reconstructs a ConversationHistory instance from JSON.\n */\n static from(\n json: ConversationHistorySnapshot,\n environment?: Partial<ConversationEnvironment>,\n ): ConversationHistory {\n const rootConv = deserializeConversation(json.root.conversation);\n const history = new ConversationHistory(rootConv, environment);\n\n // Recursive function to build the tree\n const buildTree = (\n nodeJSON: HistoryNodeSnapshot,\n parentNode: HistoryNode,\n ): HistoryNode => {\n const nodeConv = deserializeConversation(nodeJSON.conversation);\n const node: HistoryNode = {\n conversation: nodeConv,\n parent: parentNode,\n children: [],\n };\n node.children = nodeJSON.children.map((child) => buildTree(child, node));\n return node;\n };\n\n const h = history as unknown as { currentNode: HistoryNode };\n const rootNode = h.currentNode;\n rootNode.children = json.root.children.map((child) => buildTree(child, rootNode));\n\n // Traverse to find the current node\n let current: HistoryNode = rootNode;\n for (const index of json.currentPath) {\n const target = current.children[index];\n if (target) {\n current = target;\n }\n }\n h.currentNode = current;\n\n return history;\n }\n\n /**\n * Binds a function to this history instance.\n * The first argument of the function must be a Conversation.\n * If the function returns a new Conversation, it is automatically pushed to the history.\n */\n bind<T extends unknown[], R>(\n fn: (\n conversation: Conversation,\n ...args: [...T, Partial<ConversationEnvironment>?]\n ) => R,\n ): (...args: T) => R {\n return (...args: T): R => {\n // We pass the history's environment as the last argument if the function supports it\n const boundFn = fn as (conversation: Conversation, ...args: unknown[]) => R;\n const result = boundFn(this.current, ...args, this.env);\n\n if (isConversation(result)) {\n this.push(result);\n }\n\n return result;\n };\n }\n\n /**\n * Cleans up all listeners and resources.\n */\n [Symbol.dispose](): void {\n // Clear references to help GC\n let root: HistoryNode | null = this.currentNode;\n while (root?.parent) {\n root = root.parent;\n }\n\n const clearNode = (node: HistoryNode) => {\n for (const child of node.children) {\n clearNode(child);\n }\n node.children = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n const n = node as any;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n n.parent = null;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n n.conversation = null;\n };\n\n if (root) clearNode(root);\n this.events.clear();\n }\n}\n\n/**\n * Simple type guard to check if a value is a Conversation.\n */\nfunction isConversation(value: unknown): value is Conversation {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as Conversation).schemaVersion === 'number' &&\n typeof (value as Conversation).id === 'string' &&\n typeof (value as Conversation).status === 'string' &&\n (value as Conversation).metadata !== null &&\n typeof (value as Conversation).metadata === 'object' &&\n Array.isArray((value as Conversation).ids) &&\n typeof (value as Conversation).messages === 'object' &&\n (value as Conversation).messages !== null &&\n !Array.isArray((value as Conversation).messages) &&\n typeof (value as Conversation).createdAt === 'string' &&\n typeof (value as Conversation).updatedAt === 'string'\n );\n}\n",
74
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\nimport matter from 'gray-matter';\n\nimport { assertConversationSafe } from '../conversation/validation';\nimport { copyContent } from '../multi-modal';\nimport type {\n AssistantMessage,\n Conversation,\n ConversationStatus,\n JSONValue,\n Message,\n MessageRole,\n TokenUsage,\n ToMarkdownOptions,\n ToolCall,\n ToolResult,\n} from '../types';\nimport { CURRENT_SCHEMA_VERSION } from '../types';\nimport { isAssistantMessage, messageParts } from './message';\nimport { getOrderedMessages, toIdRecord } from './message-store';\nimport { copyToolResult, redactToolResult } from './tool-results';\nimport { stripTransientFromRecord } from './transient';\nimport { toReadonly } from './type-helpers';\n\n/**\n * Maps message roles to human-readable display labels.\n *\n * @example\n * ```ts\n * ROLE_LABELS['tool-use']; // 'Tool Use'\n * ROLE_LABELS.assistant; // 'Assistant'\n * ```\n */\nexport const ROLE_LABELS: Record<MessageRole, string> = {\n user: 'User',\n assistant: 'Assistant',\n system: 'System',\n developer: 'Developer',\n 'tool-use': 'Tool Use',\n 'tool-result': 'Tool Result',\n snapshot: 'Snapshot',\n};\n\n/**\n * Maps display labels back to message roles.\n *\n * @example\n * ```ts\n * LABEL_TO_ROLE['Tool Use']; // 'tool-use'\n * LABEL_TO_ROLE.User; // 'user'\n * ```\n */\nexport const LABEL_TO_ROLE: Record<string, MessageRole> = {\n User: 'user',\n Assistant: 'assistant',\n System: 'system',\n Developer: 'developer',\n 'Tool Use': 'tool-use',\n 'Tool Result': 'tool-result',\n Snapshot: 'snapshot',\n};\n\n/**\n * Gets the human-readable display label for a message role.\n *\n * @param role - The message role\n * @returns The display label for the role\n *\n * @example\n * ```ts\n * getRoleLabel('assistant'); // 'Assistant'\n * getRoleLabel('tool-use'); // 'Tool Use'\n * ```\n */\nexport function getRoleLabel(role: MessageRole): string {\n return ROLE_LABELS[role];\n}\n\n/**\n * Gets the message role from a display label.\n *\n * @param label - The display label\n * @returns The message role, or undefined if the label is not recognized\n *\n * @example\n * ```ts\n * getRoleFromLabel('Assistant'); // 'assistant'\n * getRoleFromLabel('Tool Use'); // 'tool-use'\n * getRoleFromLabel('Unknown'); // undefined\n * ```\n */\nexport function getRoleFromLabel(label: string): MessageRole | undefined {\n return LABEL_TO_ROLE[label];\n}\n\n/** Placeholder used when redacting sensitive data */\nconst DEFAULT_REDACTED_PLACEHOLDER = '[REDACTED]';\n\ntype ResolvedMarkdownOptions = Required<\n Pick<\n ToMarkdownOptions,\n | 'includeMetadata'\n | 'stripTransient'\n | 'includeHidden'\n | 'redactHiddenContent'\n | 'redactToolArguments'\n | 'redactToolResults'\n | 'redactedPlaceholder'\n >\n>;\n\nfunction resolveMarkdownOptions(\n options: ToMarkdownOptions = {},\n): ResolvedMarkdownOptions {\n return {\n includeMetadata: options.includeMetadata ?? false,\n stripTransient: options.stripTransient ?? false,\n includeHidden: options.includeHidden ?? true,\n redactHiddenContent: options.redactHiddenContent ?? false,\n redactToolArguments: options.redactToolArguments ?? false,\n redactToolResults: options.redactToolResults ?? false,\n redactedPlaceholder: options.redactedPlaceholder ?? DEFAULT_REDACTED_PLACEHOLDER,\n };\n}\n\nfunction sanitizeMessage(message: Message, options: ResolvedMarkdownOptions): Message {\n const metadata = options.stripTransient\n ? stripTransientFromRecord({ ...message.metadata })\n : { ...message.metadata };\n\n const content =\n options.redactHiddenContent && message.hidden\n ? options.redactedPlaceholder\n : copyContent(message.content);\n\n const toolCall = message.toolCall\n ? {\n ...message.toolCall,\n arguments: options.redactToolArguments\n ? options.redactedPlaceholder\n : message.toolCall.arguments,\n }\n : undefined;\n\n const toolResult = message.toolResult\n ? options.redactToolResults\n ? redactToolResult(message.toolResult, options.redactedPlaceholder)\n : copyToolResult(message.toolResult)\n : undefined;\n\n const baseMessage = {\n id: message.id,\n role: message.role,\n content,\n position: message.position,\n createdAt: message.createdAt,\n metadata: toReadonly(metadata),\n hidden: message.hidden,\n toolCall: toolCall ? toReadonly(toolCall) : undefined,\n toolResult: toolResult ? toReadonly(toolResult) : undefined,\n tokenUsage: message.tokenUsage ? toReadonly({ ...message.tokenUsage }) : undefined,\n };\n\n if (isAssistantMessage(message)) {\n const assistantMessage: AssistantMessage = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: message.goalCompleted,\n };\n return assistantMessage;\n }\n\n return baseMessage;\n}\n\nfunction prepareConversationForMarkdown(\n conversation: Conversation,\n options: ResolvedMarkdownOptions,\n): Conversation {\n const metadata = options.stripTransient\n ? stripTransientFromRecord({ ...conversation.metadata })\n : { ...conversation.metadata };\n\n const messages = getOrderedMessages(conversation)\n .filter((message) => options.includeHidden || !message.hidden)\n .map((message) => sanitizeMessage(message, options));\n\n return {\n schemaVersion: conversation.schemaVersion,\n id: conversation.id,\n title: conversation.title,\n status: conversation.status,\n metadata: toReadonly(metadata),\n ids: toReadonly(messages.map((message) => message.id)),\n messages: toReadonly(toIdRecord(messages)),\n createdAt: conversation.createdAt,\n updatedAt: conversation.updatedAt,\n };\n}\n\n/**\n * Formats a message's content for markdown output.\n * Text parts are appended in order, images are rendered as markdown image syntax on their own lines.\n */\nfunction formatMessageContent(message: Message): string {\n if (typeof message.content === 'string') return message.content;\n\n const parts = messageParts(message);\n const lines: string[] = [];\n\n for (const part of parts) {\n if (part.type === 'text' && part.text) {\n lines.push(part.text);\n } else if (part.type === 'image') {\n const imageUrl = (part as { url: string }).url;\n const altText = part.text ?? 'image';\n lines.push(`![${altText}](${imageUrl})`);\n }\n }\n\n return lines.join('\\n\\n');\n}\n\n/**\n * Metadata stored for each message in the YAML frontmatter.\n * Content is only included for multi-modal messages to preserve image metadata.\n */\ninterface MessageFrontmatter {\n position: number;\n createdAt: string;\n metadata: Record<string, JSONValue>;\n hidden: boolean;\n content?: MultiModalContent[];\n toolCall?: ToolCall;\n toolResult?: ToolResult;\n tokenUsage?: TokenUsage;\n goalCompleted?: boolean;\n}\n\n/**\n * Metadata stored in YAML frontmatter for conversation-level data.\n */\ninterface ConversationFrontmatter {\n schemaVersion?: number;\n id: string;\n title?: string;\n status: ConversationStatus;\n metadata: Record<string, JSONValue>;\n createdAt: string;\n updatedAt: string;\n messages: Record<string, MessageFrontmatter>;\n}\n\n/**\n * Converts a conversation to a Markdown string representation.\n *\n * By default, outputs clean, human-readable markdown with:\n * - Each message with a header containing only the role: `### Role`\n * - Message content rendered as markdown\n *\n * When `options.includeMetadata` is `true`, outputs markdown with full metadata\n * for lossless round-trip conversion:\n * - YAML frontmatter with conversation metadata and all message metadata keyed by message ID\n * - Headers include message ID: `### Role (msg-id)`\n * - Full content array preserved for multi-modal messages\n *\n * For multi-modal content:\n * - Text parts are appended in order\n * - Image parts are rendered as `![alt]({url})` on their own line\n *\n * @param conversation - The conversation to convert\n * @param options - Options for markdown output\n * @returns A Markdown string representation of the conversation\n */\nexport function toMarkdown(\n conversation: Conversation,\n options: ToMarkdownOptions = {},\n): string {\n assertConversationSafe(conversation);\n const resolved = resolveMarkdownOptions(options);\n const prepared = prepareConversationForMarkdown(conversation, resolved);\n\n if (resolved.includeMetadata) {\n return toMarkdownWithMetadata(prepared, resolved);\n }\n\n return toMarkdownSimple(prepared);\n}\n\n/**\n * Outputs simple, human-readable markdown without metadata.\n */\nfunction toMarkdownSimple(conversation: Conversation): string {\n const sections: string[] = [];\n\n for (const message of getOrderedMessages(conversation)) {\n const roleName = ROLE_LABELS[message.role];\n const header = `### ${roleName}`;\n const content = formatMessageContent(message);\n sections.push(`${header}\\n\\n${content}`);\n }\n\n return sections.join('\\n\\n');\n}\n\n/**\n * Outputs markdown with full metadata for lossless round-trip conversion.\n */\nfunction toMarkdownWithMetadata(\n conversation: Conversation,\n _options: ResolvedMarkdownOptions,\n): string {\n // Build messages metadata map\n const messagesMetadata: Record<string, MessageFrontmatter> = {};\n\n for (const message of getOrderedMessages(conversation)) {\n const messageMeta: MessageFrontmatter = {\n position: message.position,\n createdAt: message.createdAt,\n metadata: { ...message.metadata },\n hidden: message.hidden,\n };\n\n // Include content in metadata only for multi-modal messages\n if (Array.isArray(message.content)) {\n messageMeta.content = copyContent(message.content) as MultiModalContent[];\n }\n\n if (message.toolCall) {\n messageMeta.toolCall = { ...message.toolCall };\n }\n if (message.toolResult) {\n messageMeta.toolResult = { ...message.toolResult };\n }\n if (message.tokenUsage) {\n messageMeta.tokenUsage = { ...message.tokenUsage };\n }\n if (isAssistantMessage(message) && message.goalCompleted !== undefined) {\n messageMeta.goalCompleted = message.goalCompleted;\n }\n\n messagesMetadata[message.id] = messageMeta;\n }\n\n const frontmatterData: ConversationFrontmatter = {\n schemaVersion: conversation.schemaVersion,\n id: conversation.id,\n status: conversation.status,\n metadata: { ...conversation.metadata },\n createdAt: conversation.createdAt,\n updatedAt: conversation.updatedAt,\n messages: messagesMetadata,\n };\n\n // Only add title if it's defined\n if (conversation.title !== undefined) {\n frontmatterData.title = conversation.title;\n }\n\n // Build message body\n const messageSections: string[] = [];\n\n for (const message of getOrderedMessages(conversation)) {\n const roleName = ROLE_LABELS[message.role];\n const header = `### ${roleName} (${message.id})`;\n const content = formatMessageContent(message);\n messageSections.push(`${header}\\n\\n${content}`);\n }\n\n const body = messageSections.join('\\n\\n');\n\n // Use gray-matter to stringify with YAML frontmatter\n return matter.stringify(body, frontmatterData);\n}\n\n/**\n * Error thrown when markdown parsing fails.\n */\nexport class MarkdownParseError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'MarkdownParseError';\n }\n}\n\n/**\n * Generates a simple unique ID for use when metadata is not available.\n */\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\n}\n\n/**\n * Parses a Markdown string back into a Conversation object.\n *\n * This is the inverse of `toMarkdown` and supports both:\n * - Lossless round-trip conversion when markdown includes metadata\n * (generated by `toMarkdown` with `includeMetadata: true`)\n * - Best-effort parsing of simple markdown without metadata\n * (generated by `toMarkdown` with `includeMetadata: false` or hand-written)\n *\n * When metadata is present:\n * - YAML frontmatter provides conversation and message metadata\n * - Headers include message ID: `### Role (msg-id)`\n * - Full fidelity is preserved\n *\n * When metadata is absent:\n * - Conversation ID and timestamps are generated\n * - Message IDs are generated, positions are inferred from order\n * - Content is parsed from markdown body\n * - Defaults: status='active', hidden=false, empty metadata\n *\n * @param markdown - The markdown string to parse\n * @returns A Conversation object\n * @throws {MarkdownParseError} If the markdown format is invalid (e.g., unknown role)\n */\nexport function fromMarkdown(markdown: string): Conversation {\n const trimmed = markdown.trim();\n\n // Check if frontmatter exists\n const hasFrontmatter = trimmed.startsWith('---');\n\n const conversation = hasFrontmatter\n ? parseMarkdownWithMetadata(trimmed)\n : parseMarkdownSimple(trimmed);\n\n try {\n assertConversationSafe(conversation);\n } catch (error) {\n throw new MarkdownParseError(\n `Invalid markdown conversation: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n\n return conversation;\n}\n\n/**\n * Parses markdown with full metadata (YAML frontmatter with message metadata).\n */\nfunction parseMarkdownWithMetadata(trimmed: string): Conversation {\n let parsed: matter.GrayMatterFile<string>;\n try {\n parsed = matter(trimmed);\n } catch {\n throw new MarkdownParseError('Invalid frontmatter: failed to parse YAML');\n }\n\n const frontmatter = parsed.data as ConversationFrontmatter;\n const body = parsed.content.trim();\n\n // Validate required frontmatter fields\n if (!frontmatter.id) {\n throw new MarkdownParseError('Invalid frontmatter: missing required field \"id\"');\n }\n\n // Parse messages from body using header pattern: ### Role (message-id)\n const messages: Message[] = [];\n const messagePattern = /^### ([\\w\\s]+) \\(([^)]+)\\)\\n\\n([\\s\\S]*?)(?=\\n\\n### |\\n*$)/gm;\n\n let match;\n while ((match = messagePattern.exec(body)) !== null) {\n const [, roleDisplay, messageId, contentBody] = match;\n\n const role = LABEL_TO_ROLE[roleDisplay!];\n if (!role) {\n throw new MarkdownParseError(`Unknown role: ${roleDisplay}`);\n }\n\n // Get message metadata from frontmatter\n const messageMeta = frontmatter.messages?.[messageId!];\n if (!messageMeta) {\n throw new MarkdownParseError(`Missing metadata for message: ${messageId}`);\n }\n\n // Determine content: use metadata.content if present (multi-modal), otherwise parse body\n let content: string | ReadonlyArray<MultiModalContent>;\n if (messageMeta.content) {\n content = toReadonly([...messageMeta.content]);\n } else {\n content = contentBody?.trim() ?? '';\n }\n\n const baseMessage = {\n id: messageId!,\n role,\n content,\n position: messageMeta.position,\n createdAt: messageMeta.createdAt,\n metadata: toReadonly({ ...messageMeta.metadata }),\n hidden: messageMeta.hidden,\n toolCall: messageMeta.toolCall\n ? toReadonly({ ...messageMeta.toolCall })\n : undefined,\n toolResult: messageMeta.toolResult\n ? toReadonly({ ...messageMeta.toolResult })\n : undefined,\n tokenUsage: messageMeta.tokenUsage\n ? toReadonly({ ...messageMeta.tokenUsage })\n : undefined,\n };\n let message: Message | AssistantMessage = baseMessage;\n if (role === 'assistant') {\n message = {\n ...baseMessage,\n role: 'assistant',\n goalCompleted: messageMeta.goalCompleted,\n };\n }\n\n messages.push(toReadonly(message) as Message);\n }\n\n const conversation: Conversation = {\n schemaVersion: frontmatter.schemaVersion ?? CURRENT_SCHEMA_VERSION,\n id: frontmatter.id,\n title: frontmatter.title,\n status: frontmatter.status ?? 'active',\n metadata: toReadonly({ ...frontmatter.metadata }),\n ids: toReadonly(messages.map((message) => message.id)),\n messages: toReadonly(toIdRecord(messages)),\n createdAt: frontmatter.createdAt,\n updatedAt: frontmatter.updatedAt,\n };\n\n return toReadonly(conversation) as Conversation;\n}\n\n/**\n * Parses simple markdown without metadata, using sensible defaults.\n */\nfunction parseMarkdownSimple(body: string): Conversation {\n const now = new Date().toISOString();\n const messages: Message[] = [];\n\n // Pattern for simple messages (no ID in header): ### Role\n // The role must end at the newline\n const messagePattern = /^### ([^\\n]+)\\n\\n([\\s\\S]*?)(?=\\n\\n### |\\n*$)/gm;\n\n let match;\n let position = 0;\n while ((match = messagePattern.exec(body)) !== null) {\n const [, roleDisplay, contentBody] = match;\n\n const role = LABEL_TO_ROLE[roleDisplay!];\n if (!role) {\n throw new MarkdownParseError(`Unknown role: ${roleDisplay}`);\n }\n\n const message: Message = {\n id: generateId(),\n role,\n content: contentBody?.trim() ?? '',\n position,\n createdAt: now,\n metadata: toReadonly({}),\n hidden: false,\n };\n\n messages.push(toReadonly(message) as Message);\n position++;\n }\n\n const conversation: Conversation = {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n id: generateId(),\n status: 'active',\n metadata: toReadonly({}),\n ids: toReadonly(messages.map((message) => message.id)),\n messages: toReadonly(toIdRecord(messages)),\n createdAt: now,\n updatedAt: now,\n };\n\n return toReadonly(conversation) as Conversation;\n}\n",
65
75
  "import type { ConversationEnvironment } from '../environment';\nimport { ConversationHistory } from '../history';\nimport type { ToMarkdownOptions } from '../types';\nimport {\n fromMarkdown,\n getRoleFromLabel,\n getRoleLabel,\n LABEL_TO_ROLE,\n MarkdownParseError,\n ROLE_LABELS,\n toMarkdown,\n} from '../utilities/markdown';\n\nexport type { ToMarkdownOptions } from '../types';\n\nexport {\n fromMarkdown,\n getRoleFromLabel,\n getRoleLabel,\n LABEL_TO_ROLE,\n MarkdownParseError,\n ROLE_LABELS,\n toMarkdown,\n};\n\n/**\n * Converts a ConversationHistory instance to Markdown.\n */\nexport function conversationHistoryToMarkdown(\n history: ConversationHistory,\n options?: ToMarkdownOptions,\n): string {\n return toMarkdown(history.current, options);\n}\n\n/**\n * Creates a ConversationHistory instance from a Markdown string.\n */\nexport function conversationHistoryFromMarkdown(\n markdown: string,\n environment?: Partial<ConversationEnvironment>,\n): ConversationHistory {\n const conversation = fromMarkdown(markdown);\n return new ConversationHistory(conversation, environment);\n}\n"
66
76
  ],
67
- "mappings": "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",
68
- "debugId": "C64E71F05A5A314564756E2164756E21",
77
+ "mappings": "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",
78
+ "debugId": "C9F3624DCBE2A76564756E2164756E21",
69
79
  "names": []
70
80
  }