@dxos/assistant 0.8.2-main.2f9c567 → 0.8.2-main.5885341

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 (50) hide show
  1. package/dist/lib/browser/{chunk-OLO6SVOL.mjs → chunk-DEIGOD4U.mjs} +21 -21
  2. package/dist/lib/browser/chunk-DEIGOD4U.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +14 -14
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +27 -23
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/{chunk-CI5Q7FBG.cjs → chunk-7VH7NMIM.cjs} +6 -6
  9. package/dist/lib/node/chunk-7VH7NMIM.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +34 -34
  11. package/dist/lib/node/index.cjs.map +3 -3
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +18 -13
  14. package/dist/lib/node/testing/index.cjs.map +3 -3
  15. package/dist/lib/node-esm/{chunk-Y3SYOFFJ.mjs → chunk-7JI4MDGL.mjs} +21 -21
  16. package/dist/lib/node-esm/chunk-7JI4MDGL.mjs.map +7 -0
  17. package/dist/lib/node-esm/index.mjs +14 -14
  18. package/dist/lib/node-esm/index.mjs.map +3 -3
  19. package/dist/lib/node-esm/meta.json +1 -1
  20. package/dist/lib/node-esm/testing/index.mjs +27 -23
  21. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  22. package/dist/types/src/ai-service/types.d.ts +130 -130
  23. package/dist/types/src/ai-service/types.d.ts.map +1 -1
  24. package/dist/types/src/conversation/types.d.ts +9 -9
  25. package/dist/types/src/conversation/types.d.ts.map +1 -1
  26. package/dist/types/src/cypher/echo-data-source.d.ts.map +1 -1
  27. package/dist/types/src/session/session.d.ts +3 -3
  28. package/dist/types/src/session/session.d.ts.map +1 -1
  29. package/dist/types/src/testing/query-promts.d.ts +3 -3
  30. package/dist/types/src/testing/query-promts.d.ts.map +1 -1
  31. package/dist/types/src/testing/test-data.d.ts +4 -4
  32. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  33. package/dist/types/src/testing/test-schema.d.ts +23 -25
  34. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  35. package/package.json +13 -14
  36. package/src/ai-service/client.test.ts +5 -5
  37. package/src/ai-service/ollama-client.ts +7 -7
  38. package/src/ai-service/types.ts +14 -14
  39. package/src/conversation/conversation.test.ts +3 -3
  40. package/src/conversation/types.ts +10 -10
  41. package/src/cypher/echo-data-source.ts +5 -7
  42. package/src/session/session.test.ts +16 -22
  43. package/src/session/session.ts +14 -14
  44. package/src/testing/artifacts.test.ts +22 -22
  45. package/src/testing/query-promts.ts +5 -5
  46. package/src/testing/test-data.ts +4 -4
  47. package/src/testing/test-schema.ts +28 -27
  48. package/dist/lib/browser/chunk-OLO6SVOL.mjs.map +0 -7
  49. package/dist/lib/node/chunk-CI5Q7FBG.cjs.map +0 -7
  50. package/dist/lib/node-esm/chunk-Y3SYOFFJ.mjs.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/testing/defs.ts", "../../../../src/testing/logger.ts", "../../../../src/testing/ollama.ts", "../../../../src/testing/query-promts.ts", "../../../../src/testing/test-data.ts", "../../../../src/testing/test-schema.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// TODO(burdon): Remove/Reconcile with @dxos/assistant-testing.\nexport const AI_SERVICE_ENDPOINT = {\n LOCAL: 'http://localhost:8788',\n REMOTE: 'https://ai-service.dxos.workers.dev',\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { ImageSource, MessageContentBlock } from '@dxos/artifact';\n\nimport type { ConversationEvent } from '../conversation';\n\nexport const createLogger = ({\n stream,\n filter,\n onImage,\n}: {\n stream?: boolean;\n filter?: (event: ConversationEvent) => boolean;\n onImage?: (img: { id: string; description?: string; source: ImageSource }) => void;\n} = {}) => {\n const images: Record<string, any> = {};\n let currentText = '';\n\n return (event: ConversationEvent) => {\n if (typeof filter === 'function' && !filter(event)) {\n return;\n }\n\n const printContentBlock = (content: MessageContentBlock) => {\n switch (content.type) {\n case 'text':\n process.stdout.write(content.text);\n break;\n case 'tool_use':\n process.stdout.write(`⚙️ [Tool Use] ${content.name}\\n`);\n break;\n case 'image': {\n if (content.id && content.source) {\n images[content.id] = content.source;\n }\n process.stdout.write(`[Image id=${content.id} mediaType=${content.source?.mediaType}]`);\n break;\n }\n }\n };\n\n const onTextBlockPrinted = (text: string) => {\n const imageMatch = text.match(/<image id=\"([^\"]+)\"(?:\\s+prompt=\"([^\"]+)\")?\\s*\\/>/);\n if (imageMatch && onImage && images[imageMatch[1]]) {\n onImage({\n id: imageMatch[1],\n description: imageMatch[2], // Extract prompt as description if present\n source: images[imageMatch[1]],\n });\n }\n };\n\n if (stream) {\n switch (event.type) {\n case 'message_start': {\n process.stdout.write(`${event.message.role.toUpperCase()}\\n\\n`);\n for (const content of event.message.content) {\n printContentBlock(content);\n }\n break;\n }\n case 'content_block_start': {\n currentText = '';\n printContentBlock(event.content);\n break;\n }\n case 'content_block_delta': {\n switch (event.delta.type) {\n case 'text_delta': {\n currentText += event.delta.text;\n process.stdout.write(event.delta.text);\n break;\n }\n case 'input_json_delta': {\n process.stdout.write(event.delta.partial_json);\n break;\n }\n }\n break;\n }\n case 'content_block_stop': {\n process.stdout.write('\\n');\n onTextBlockPrinted(currentText);\n currentText = '';\n break;\n }\n case 'message_delta': {\n break;\n }\n case 'message_stop': {\n process.stdout.write('\\n\\n');\n break;\n }\n }\n }\n\n switch (event.type) {\n case 'message': {\n if (!stream || event.message.role !== 'assistant') {\n process.stdout.write(`${event.message.role.toUpperCase()}\\n\\n`);\n for (const block of event.message.content) {\n switch (block.type) {\n case 'text':\n process.stdout.write(block.text + '\\n');\n onTextBlockPrinted(block.text);\n break;\n case 'tool_use':\n process.stdout.write(`⚙️ [Tool Use] ${block.name}\\n`);\n process.stdout.write(` ${JSON.stringify(block.input)}\\n`);\n break;\n case 'tool_result':\n if (block.isError) {\n process.stdout.write('❌ [Tool Error]\\n');\n process.stdout.write(block.content + '\\n');\n } else {\n process.stdout.write('✅ [Tool Success]\\n');\n process.stdout.write(block.content + '\\n');\n }\n }\n process.stdout.write('\\n\\n');\n }\n }\n break;\n }\n }\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DEFAULT_OLLAMA_MODEL, OllamaClient, type OllamaClientParams } from '../ai-service';\n\n/**\n * Create a test client with small local model and no temperature for predictable results.\n */\nexport const createTestOllamaClient = (options?: Pick<OllamaClientParams, 'tools'>) => {\n return new OllamaClient({\n tools: options?.tools,\n overrides: { model: DEFAULT_OLLAMA_MODEL, temperature: 0 },\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { defineTool, ToolResult } from '@dxos/artifact';\nimport { toJsonSchema } from '@dxos/echo-schema';\nimport { log } from '@dxos/log';\n\nimport { executeQuery, formatJsonSchemaForLLM, type DataSource } from '../cypher';\nimport { trim } from '../util';\n\nexport const createCypherTool = (dataSource: DataSource, schemaTypes: Schema.Schema.Any[] = []) =>\n defineTool('dxos.org/echo', {\n name: 'query',\n description:\n 'Query the ECHO graph database in cypher query language. Returns data from the database.' +\n (schemaTypes.length > 0 ? `\\n\\n${createSystemPrompt(schemaTypes)}` : ''),\n schema: Schema.Struct({\n query: Schema.String.annotations({\n description: `\n A valid cypher query string to execute.\n Query must have one MATCH clause.\n Match clause can have multiple patterns but they must all be connected via a relationship chain.\n Query might have zero or one WHERE clauses.\n Query must have one RETURN clause.\n RETURN clause can have multiple expressions separated by commas.\n DISTINCT keyword is not allowed.\n\n <example>\n MATCH (n:Person) RETURN n.name\n </example>\n\n <example>\n MATCH (s:Studio)-[:PRODUCED]->(m:Movie)-[:PRODUCED_IN]->(c:City {name: \"Las Vegas\"}) RETURN s\n </example>\n \n <example>\n MATCH (a:Actor)-[:STARRED_IN]->(m:Movie)<-[:PRODUCED]-(s:Studio {name: \"Cinema Pictures\"}) WHERE m.name = \"Once upon a time\" RETURN m.name, a.name\n </example>\n `,\n }),\n }),\n execute: async ({ query }) => {\n try {\n log('cypher query', { query });\n const results = await executeQuery(dataSource, query);\n log('query complete', { results });\n return ToolResult.Success(results);\n } catch (e: any) {\n log.catch(e);\n return ToolResult.Error(e.message);\n }\n },\n });\n\nexport const createSystemPrompt = (schemaTypes: Schema.Schema.Any[]) => trim`\n You have access to ECHO graph database. You can query the database to get data to satisfy user prompts.\n\n Database schema is defined in pseud-cypher syntax. The schema is:\n\n <schema>\n ${formatJsonSchemaForLLM(schemaTypes.map((schema) => toJsonSchema(schema)))}\n <schema>\n\n Before replying always think step-by-step on how to proceed.\n Print your thoughts inside <cot> tags.\n \n <example>\n <cot>To answer the question I need to ...</cot>\n </example>\n\n Before answering the user's question, decide what tools you need to use to answer the question.\n`;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Schema } from 'effect';\n\nimport { raise } from '@dxos/debug';\nimport type { EchoDatabase } from '@dxos/echo-db';\nimport {\n JSON_SCHEMA_ECHO_REF_ID,\n ObjectId,\n toJsonSchema,\n type JsonSchemaType,\n type Ref,\n Ref as RefImpl,\n} from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { live } from '@dxos/live-object';\n\nimport {\n type DataSource,\n type Node,\n type Relationship,\n formatInferredRelationshipLabel,\n formatNodeLabel,\n} from '../cypher';\nimport { Contact, Organization, Project, Task } from '../testing';\n\nexport const seedTestData = (db: EchoDatabase) => {\n const contactRich = db.add(\n live(Contact, {\n name: 'Rich',\n }),\n );\n const contactJosiah = db.add(\n live(Contact, {\n name: 'Josiah',\n }),\n );\n const contactDima = db.add(\n live(Contact, {\n name: 'Dima',\n }),\n );\n const contactFred = db.add(\n live(Contact, {\n name: 'Fred',\n }),\n );\n\n const projectComposer = db.add(\n live(Project, {\n name: 'Composer',\n }),\n );\n const projectEcho = db.add(\n live(Project, {\n name: 'ECHO',\n }),\n );\n const projectDoodles = db.add(\n live(Project, {\n name: 'Doodles',\n }),\n );\n\n const _taskComposer1 = db.add(\n live(Task, {\n name: 'Optimize startup performance',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n }),\n );\n const _taskComposer2 = db.add(\n live(Task, {\n name: 'Create form builder',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n }),\n );\n const _taskComposer3 = db.add(\n live(Task, {\n name: 'Add support for custom themes',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n }),\n );\n const _taskComposer5 = db.add(\n live(Task, {\n name: 'Implement community plugin',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactFred),\n }),\n );\n const _taskComposer4 = db.add(\n live(Task, {\n name: 'Implement dark mode',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n }),\n );\n const _taskEcho1 = db.add(\n live(Task, {\n name: 'Implement cypher query engine',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactDima),\n }),\n );\n const _taskEcho2 = db.add(\n live(Task, {\n name: 'Add schema editor',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactRich),\n }),\n );\n const _taskDoodles1 = db.add(\n live(Task, {\n name: 'Add support for custom themes',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactFred),\n }),\n );\n const _taskDoodles2 = db.add(\n live(Task, {\n name: 'Implement dark mode',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactJosiah),\n }),\n );\n\n const _orgDxos = db.add(\n live(Organization, {\n name: 'DXOS',\n employees: [RefImpl.make(contactRich), RefImpl.make(contactJosiah), RefImpl.make(contactDima)],\n projects: [RefImpl.make(projectEcho)],\n }),\n );\n const _orgBraneframe = db.add(\n live(Organization, {\n name: 'Braneframe',\n employees: [RefImpl.make(contactJosiah), RefImpl.make(contactRich)],\n projects: [RefImpl.make(projectComposer)],\n }),\n );\n};\n\n// TODO(burdon): Use schema/testing.\nexport const createTestData = (): MockDataSource => {\n const dataSource = new MockDataSource();\n\n const contactRich = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Rich',\n });\n const contactJosiah = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Josiah',\n });\n const contactDima = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Dima',\n });\n const contactFred = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Fred',\n });\n\n const projectComposer = dataSource.add(Project, {\n id: ObjectId.random(),\n name: 'Composer',\n });\n const projectEcho = dataSource.add(Project, {\n id: ObjectId.random(),\n name: 'ECHO',\n });\n const projectDoodles = dataSource.add(Project, {\n id: ObjectId.random(),\n name: 'Doodles',\n });\n\n const _taskComposer1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Optimize startup performance',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n });\n const _taskComposer2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Create form builder',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n });\n const _taskComposer3 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add support for custom themes',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n });\n const _taskComposer5 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement community plugin',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactFred),\n });\n const _taskComposer4 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement dark mode',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n });\n const _taskEcho1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement cypher query engine',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactDima),\n });\n const _taskEcho2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add schema editor',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactRich),\n });\n const _taskDoodles1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add support for custom themes',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactFred),\n });\n const _taskDoodles2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement dark mode',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactJosiah),\n });\n\n const _orgDxos = dataSource.add(Organization, {\n id: ObjectId.random(),\n name: 'DXOS',\n employees: [RefImpl.make(contactRich), RefImpl.make(contactJosiah), RefImpl.make(contactDima)],\n projects: [RefImpl.make(projectEcho)],\n });\n const _orgBraneframe = dataSource.add(Organization, {\n id: ObjectId.random(),\n name: 'Braneframe',\n employees: [RefImpl.make(contactJosiah), RefImpl.make(contactRich)],\n projects: [RefImpl.make(projectComposer)],\n });\n dataSource.computeGraph();\n\n return dataSource;\n};\n\nexport class MockDataSource implements DataSource {\n objects: Record<\n string,\n {\n schema: Schema.Schema.All;\n typeDxn: string;\n id: string;\n data: unknown;\n }\n > = {};\n\n schema: Record<\n string,\n {\n json: JsonSchemaType;\n instance: Schema.Schema.All;\n }\n > = {};\n\n nodes: Node[] = [];\n relationships: Relationship[] = [];\n\n async getNodes({ label }: { label?: string }) {\n return this.nodes.filter((node) => !label || node.label === label);\n }\n\n async getRelationships({ label }: { label?: string }) {\n return this.relationships.filter((relationship) => !label || relationship.label === label);\n }\n\n add<S extends Schema.Schema.All>(schema: S, data: Schema.Schema.Type<S>) {\n invariant(typeof data.id === 'string', 'Data must have an id');\n const jsonSchema = toJsonSchema(schema);\n if (!this.schema[jsonSchema.$id!]) {\n this.schema[jsonSchema.$id!] = {\n json: jsonSchema,\n instance: schema,\n };\n }\n\n const typenameDxn = jsonSchema.$id ?? raise(new Error('Schema must have $id'));\n\n this.objects[data.id] = {\n schema,\n id: data.id,\n typeDxn: typenameDxn,\n data,\n };\n\n return data;\n }\n\n computeGraph() {\n this.nodes = [];\n this.relationships = [];\n\n for (const object of Object.values(this.objects)) {\n this.nodes.push({\n kind: 'node',\n id: object.id,\n label: formatNodeLabel(object.typeDxn),\n properties: object.data as any,\n });\n }\n\n for (const object of Object.values(this.objects)) {\n const schema = this.schema[object.typeDxn].json;\n const typenameDxn = schema.$id ?? raise(new Error('Schema must have $id'));\n\n for (const [name, propSchema] of Object.entries(schema.properties!)) {\n if (propSchema.$id === JSON_SCHEMA_ECHO_REF_ID) {\n const label = formatInferredRelationshipLabel(typenameDxn, name);\n\n const source = this.nodes.find((node) => node.id === object.id);\n if (!source) {\n continue;\n }\n\n const { id: targetId } = (object.data as any)[name].target;\n\n const target = this.nodes.find((node) => node.id === targetId);\n if (!target) {\n continue;\n }\n\n this.relationships.push({\n kind: 'relationship',\n id: `${object.id}-${name}-${target.id}`,\n label,\n properties: {},\n source,\n target,\n });\n } else if (\n propSchema.type === 'array' &&\n propSchema.items &&\n typeof propSchema.items === 'object' &&\n '$id' in propSchema.items &&\n propSchema.items.$id === JSON_SCHEMA_ECHO_REF_ID\n ) {\n const label = formatInferredRelationshipLabel(typenameDxn, name);\n\n const source = this.nodes.find((node) => node.id === object.id);\n if (!source) {\n continue;\n }\n\n for (const { id: targetId } of (object.data as any)[name].map((x: Ref<any>) => x.target)) {\n const target = this.nodes.find((node) => node.id === targetId);\n if (!target) {\n continue;\n }\n\n this.relationships.push({\n kind: 'relationship',\n id: `${object.id}-${name}-${targetId}`,\n label,\n properties: {},\n source,\n target,\n });\n }\n }\n }\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { EntityKind, TypeAnnotationId, Ref, ObjectId } from '@dxos/echo-schema';\n\n// TODO(burdon): Remove (use @dxos/schema DataType).\n\n/** @deprecated */\nexport const Contact = Schema.Struct({\n id: ObjectId,\n name: Schema.String.annotations({ description: 'The name of the person.' }),\n email: Schema.optional(Schema.String).annotations({ description: 'Email address.' }),\n})\n .pipe(Schema.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Contact',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Contact extends Schema.Schema.Type<typeof Contact> {}\n\n/** @deprecated */\nexport const Project = Schema.Struct({\n id: ObjectId,\n name: Schema.String.annotations({ description: 'The name of the project.' }),\n description: Schema.optional(Schema.String).annotations({ description: 'The description of the project.' }),\n})\n .pipe(Schema.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Project',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Project extends Schema.Schema.Type<typeof Project> {}\n\nexport const Task = Schema.Struct({\n id: ObjectId,\n name: Schema.String.annotations({ description: 'The name of the task.' }),\n description: Schema.optional(Schema.String).annotations({ description: 'The description of the task.' }),\n project: Ref(Project),\n assignee: Ref(Contact),\n})\n .pipe(Schema.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Task',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Task extends Schema.Schema.Type<typeof Task> {}\n\n/** @deprecated */\nexport const Organization = Schema.Struct({\n id: ObjectId,\n name: Schema.String.annotations({ description: 'The name of the organization.' }),\n projects: Schema.Array(Ref(Project)),\n employees: Schema.Array(Ref(Contact)),\n})\n .pipe(Schema.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Organization',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Organization extends Schema.Schema.Type<typeof Organization> {}\n"],
5
- "mappings": "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",
6
- "names": ["import_echo_schema", "import_effect", "AI_SERVICE_ENDPOINT", "LOCAL", "REMOTE", "createLogger", "stream", "filter", "onImage", "images", "currentText", "event", "printContentBlock", "content", "type", "process", "stdout", "write", "text", "name", "id", "source", "mediaType", "onTextBlockPrinted", "imageMatch", "match", "description", "message", "role", "toUpperCase", "delta", "partial_json", "block", "JSON", "stringify", "input", "isError", "createTestOllamaClient", "options", "OllamaClient", "tools", "overrides", "model", "DEFAULT_OLLAMA_MODEL", "temperature", "createCypherTool", "dataSource", "schemaTypes", "defineTool", "length", "createSystemPrompt", "schema", "Schema", "Struct", "query", "String", "annotations", "execute", "log", "results", "executeQuery", "ToolResult", "Success", "e", "catch", "Error", "trim", "formatJsonSchemaForLLM", "map", "toJsonSchema", "seedTestData", "db", "contactRich", "add", "live", "Contact", "contactJosiah", "contactDima", "contactFred", "projectComposer", "Project", "projectEcho", "projectDoodles", "_taskComposer1", "Task", "project", "RefImpl", "make", "assignee", "_taskComposer2", "_taskComposer3", "_taskComposer5", "_taskComposer4", "_taskEcho1", "_taskEcho2", "_taskDoodles1", "_taskDoodles2", "_orgDxos", "Organization", "employees", "projects", "_orgBraneframe", "createTestData", "MockDataSource", "ObjectId", "random", "computeGraph", "objects", "nodes", "relationships", "getNodes", "label", "node", "getRelationships", "relationship", "data", "invariant", "jsonSchema", "$id", "json", "instance", "typenameDxn", "raise", "typeDxn", "object", "Object", "values", "push", "kind", "formatNodeLabel", "properties", "propSchema", "entries", "JSON_SCHEMA_ECHO_REF_ID", "formatInferredRelationshipLabel", "find", "targetId", "target", "items", "x", "email", "optional", "pipe", "mutable", "TypeAnnotationId", "EntityKind", "typename", "version", "Ref", "Array"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// TODO(burdon): Remove/Reconcile with @dxos/assistant-testing.\nexport const AI_SERVICE_ENDPOINT = {\n LOCAL: 'http://localhost:8788',\n REMOTE: 'https://ai-service.dxos.workers.dev',\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { ImageSource, MessageContentBlock } from '@dxos/artifact';\n\nimport type { ConversationEvent } from '../conversation';\n\nexport const createLogger = ({\n stream,\n filter,\n onImage,\n}: {\n stream?: boolean;\n filter?: (event: ConversationEvent) => boolean;\n onImage?: (img: { id: string; description?: string; source: ImageSource }) => void;\n} = {}) => {\n const images: Record<string, any> = {};\n let currentText = '';\n\n return (event: ConversationEvent) => {\n if (typeof filter === 'function' && !filter(event)) {\n return;\n }\n\n const printContentBlock = (content: MessageContentBlock) => {\n switch (content.type) {\n case 'text':\n process.stdout.write(content.text);\n break;\n case 'tool_use':\n process.stdout.write(`⚙️ [Tool Use] ${content.name}\\n`);\n break;\n case 'image': {\n if (content.id && content.source) {\n images[content.id] = content.source;\n }\n process.stdout.write(`[Image id=${content.id} mediaType=${content.source?.mediaType}]`);\n break;\n }\n }\n };\n\n const onTextBlockPrinted = (text: string) => {\n const imageMatch = text.match(/<image id=\"([^\"]+)\"(?:\\s+prompt=\"([^\"]+)\")?\\s*\\/>/);\n if (imageMatch && onImage && images[imageMatch[1]]) {\n onImage({\n id: imageMatch[1],\n description: imageMatch[2], // Extract prompt as description if present\n source: images[imageMatch[1]],\n });\n }\n };\n\n if (stream) {\n switch (event.type) {\n case 'message_start': {\n process.stdout.write(`${event.message.role.toUpperCase()}\\n\\n`);\n for (const content of event.message.content) {\n printContentBlock(content);\n }\n break;\n }\n case 'content_block_start': {\n currentText = '';\n printContentBlock(event.content);\n break;\n }\n case 'content_block_delta': {\n switch (event.delta.type) {\n case 'text_delta': {\n currentText += event.delta.text;\n process.stdout.write(event.delta.text);\n break;\n }\n case 'input_json_delta': {\n process.stdout.write(event.delta.partial_json);\n break;\n }\n }\n break;\n }\n case 'content_block_stop': {\n process.stdout.write('\\n');\n onTextBlockPrinted(currentText);\n currentText = '';\n break;\n }\n case 'message_delta': {\n break;\n }\n case 'message_stop': {\n process.stdout.write('\\n\\n');\n break;\n }\n }\n }\n\n switch (event.type) {\n case 'message': {\n if (!stream || event.message.role !== 'assistant') {\n process.stdout.write(`${event.message.role.toUpperCase()}\\n\\n`);\n for (const block of event.message.content) {\n switch (block.type) {\n case 'text':\n process.stdout.write(block.text + '\\n');\n onTextBlockPrinted(block.text);\n break;\n case 'tool_use':\n process.stdout.write(`⚙️ [Tool Use] ${block.name}\\n`);\n process.stdout.write(` ${JSON.stringify(block.input)}\\n`);\n break;\n case 'tool_result':\n if (block.isError) {\n process.stdout.write('❌ [Tool Error]\\n');\n process.stdout.write(block.content + '\\n');\n } else {\n process.stdout.write('✅ [Tool Success]\\n');\n process.stdout.write(block.content + '\\n');\n }\n }\n process.stdout.write('\\n\\n');\n }\n }\n break;\n }\n }\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DEFAULT_OLLAMA_MODEL, OllamaClient, type OllamaClientParams } from '../ai-service';\n\n/**\n * Create a test client with small local model and no temperature for predictable results.\n */\nexport const createTestOllamaClient = (options?: Pick<OllamaClientParams, 'tools'>) => {\n return new OllamaClient({\n tools: options?.tools,\n overrides: { model: DEFAULT_OLLAMA_MODEL, temperature: 0 },\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema as S } from 'effect';\n\nimport { defineTool, ToolResult } from '@dxos/artifact';\nimport { toJsonSchema } from '@dxos/echo-schema';\nimport { log } from '@dxos/log';\n\nimport { executeQuery, formatJsonSchemaForLLM, type DataSource } from '../cypher';\nimport { trim } from '../util';\n\nexport const createCypherTool = (dataSource: DataSource, schemaTypes: S.Schema.Any[] = []) =>\n defineTool('dxos.org/echo', {\n name: 'query',\n description:\n 'Query the ECHO graph database in cypher query language. Returns data from the database.' +\n (schemaTypes.length > 0 ? `\\n\\n${createSystemPrompt(schemaTypes)}` : ''),\n schema: S.Struct({\n query: S.String.annotations({\n description: `\n A valid cypher query string to execute.\n Query must have one MATCH clause.\n Match clause can have multiple patterns but they must all be connected via a relationship chain.\n Query might have zero or one WHERE clauses.\n Query must have one RETURN clause.\n RETURN clause can have multiple expressions separated by commas.\n DISTINCT keyword is not allowed.\n\n <example>\n MATCH (n:Person) RETURN n.name\n </example>\n\n <example>\n MATCH (s:Studio)-[:PRODUCED]->(m:Movie)-[:PRODUCED_IN]->(c:City {name: \"Las Vegas\"}) RETURN s\n </example>\n \n <example>\n MATCH (a:Actor)-[:STARRED_IN]->(m:Movie)<-[:PRODUCED]-(s:Studio {name: \"Cinema Pictures\"}) WHERE m.name = \"Once upon a time\" RETURN m.name, a.name\n </example>\n `,\n }),\n }),\n execute: async ({ query }) => {\n try {\n log('cypher query', { query });\n const results = await executeQuery(dataSource, query);\n log('query complete', { results });\n return ToolResult.Success(results);\n } catch (e: any) {\n log.catch(e);\n return ToolResult.Error(e.message);\n }\n },\n });\n\nexport const createSystemPrompt = (schemaTypes: S.Schema.Any[]) => trim`\n You have access to ECHO graph database. You can query the database to get data to satisfy user prompts.\n\n Database schema is defined in pseud-cypher syntax. The schema is:\n\n <schema>\n ${formatJsonSchemaForLLM(schemaTypes.map((schema) => toJsonSchema(schema)))}\n <schema>\n\n Before replying always think step-by-step on how to proceed.\n Print your thoughts inside <cot> tags.\n \n <example>\n <cot>To answer the question I need to ...</cot>\n </example>\n\n Before answering the user's question, decide what tools you need to use to answer the question.\n`;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Schema as S } from 'effect';\n\nimport { raise } from '@dxos/debug';\nimport type { EchoDatabase } from '@dxos/echo-db';\nimport {\n JSON_SCHEMA_ECHO_REF_ID,\n ObjectId,\n toJsonSchema,\n type JsonSchemaType,\n type Ref,\n Ref as RefImpl,\n} from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { live } from '@dxos/live-object';\n\nimport {\n type DataSource,\n type Node,\n type Relationship,\n formatInferredRelationshipLabel,\n formatNodeLabel,\n} from '../cypher';\nimport { Contact, Organization, Project, Task } from '../testing';\n\nexport const seedTestData = (db: EchoDatabase) => {\n const contactRich = db.add(\n live(Contact, {\n name: 'Rich',\n }),\n );\n const contactJosiah = db.add(\n live(Contact, {\n name: 'Josiah',\n }),\n );\n const contactDima = db.add(\n live(Contact, {\n name: 'Dima',\n }),\n );\n const contactFred = db.add(\n live(Contact, {\n name: 'Fred',\n }),\n );\n\n const projectComposer = db.add(\n live(Project, {\n name: 'Composer',\n }),\n );\n const projectEcho = db.add(\n live(Project, {\n name: 'ECHO',\n }),\n );\n const projectDoodles = db.add(\n live(Project, {\n name: 'Doodles',\n }),\n );\n\n const _taskComposer1 = db.add(\n live(Task, {\n name: 'Optimize startup performance',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n }),\n );\n const _taskComposer2 = db.add(\n live(Task, {\n name: 'Create form builder',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n }),\n );\n const _taskComposer3 = db.add(\n live(Task, {\n name: 'Add support for custom themes',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n }),\n );\n const _taskComposer5 = db.add(\n live(Task, {\n name: 'Implement community plugin',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactFred),\n }),\n );\n const _taskComposer4 = db.add(\n live(Task, {\n name: 'Implement dark mode',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n }),\n );\n const _taskEcho1 = db.add(\n live(Task, {\n name: 'Implement cypher query engine',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactDima),\n }),\n );\n const _taskEcho2 = db.add(\n live(Task, {\n name: 'Add schema editor',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactRich),\n }),\n );\n const _taskDoodles1 = db.add(\n live(Task, {\n name: 'Add support for custom themes',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactFred),\n }),\n );\n const _taskDoodles2 = db.add(\n live(Task, {\n name: 'Implement dark mode',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactJosiah),\n }),\n );\n\n const _orgDxos = db.add(\n live(Organization, {\n name: 'DXOS',\n employees: [RefImpl.make(contactRich), RefImpl.make(contactJosiah), RefImpl.make(contactDima)],\n projects: [RefImpl.make(projectEcho)],\n }),\n );\n const _orgBraneframe = db.add(\n live(Organization, {\n name: 'Braneframe',\n employees: [RefImpl.make(contactJosiah), RefImpl.make(contactRich)],\n projects: [RefImpl.make(projectComposer)],\n }),\n );\n};\n\n// TODO(burdon): Use schema/testing.\nexport const createTestData = (): MockDataSource => {\n const dataSource = new MockDataSource();\n\n const contactRich = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Rich',\n });\n const contactJosiah = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Josiah',\n });\n const contactDima = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Dima',\n });\n const contactFred = dataSource.add(Contact, {\n id: ObjectId.random(),\n name: 'Fred',\n });\n\n const projectComposer = dataSource.add(Project, {\n id: ObjectId.random(),\n name: 'Composer',\n });\n const projectEcho = dataSource.add(Project, {\n id: ObjectId.random(),\n name: 'ECHO',\n });\n const projectDoodles = dataSource.add(Project, {\n id: ObjectId.random(),\n name: 'Doodles',\n });\n\n const _taskComposer1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Optimize startup performance',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n });\n const _taskComposer2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Create form builder',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n });\n const _taskComposer3 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add support for custom themes',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactJosiah),\n });\n const _taskComposer5 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement community plugin',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactFred),\n });\n const _taskComposer4 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement dark mode',\n project: RefImpl.make(projectComposer),\n assignee: RefImpl.make(contactRich),\n });\n const _taskEcho1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement cypher query engine',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactDima),\n });\n const _taskEcho2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add schema editor',\n project: RefImpl.make(projectEcho),\n assignee: RefImpl.make(contactRich),\n });\n const _taskDoodles1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add support for custom themes',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactFred),\n });\n const _taskDoodles2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement dark mode',\n project: RefImpl.make(projectDoodles),\n assignee: RefImpl.make(contactJosiah),\n });\n\n const _orgDxos = dataSource.add(Organization, {\n id: ObjectId.random(),\n name: 'DXOS',\n employees: [RefImpl.make(contactRich), RefImpl.make(contactJosiah), RefImpl.make(contactDima)],\n projects: [RefImpl.make(projectEcho)],\n });\n const _orgBraneframe = dataSource.add(Organization, {\n id: ObjectId.random(),\n name: 'Braneframe',\n employees: [RefImpl.make(contactJosiah), RefImpl.make(contactRich)],\n projects: [RefImpl.make(projectComposer)],\n });\n dataSource.computeGraph();\n\n return dataSource;\n};\n\nexport class MockDataSource implements DataSource {\n objects: Record<\n string,\n {\n schema: S.Schema.All;\n typeDxn: string;\n id: string;\n data: unknown;\n }\n > = {};\n\n schema: Record<\n string,\n {\n json: JsonSchemaType;\n instance: S.Schema.All;\n }\n > = {};\n\n nodes: Node[] = [];\n relationships: Relationship[] = [];\n\n async getNodes({ label }: { label?: string }) {\n return this.nodes.filter((node) => !label || node.label === label);\n }\n\n async getRelationships({ label }: { label?: string }) {\n return this.relationships.filter((relationship) => !label || relationship.label === label);\n }\n\n add<S extends S.Schema.All>(schema: S, data: S.Schema.Type<S>) {\n invariant(typeof data.id === 'string', 'Data must have an id');\n const jsonSchema = toJsonSchema(schema);\n if (!this.schema[jsonSchema.$id!]) {\n this.schema[jsonSchema.$id!] = {\n json: jsonSchema,\n instance: schema,\n };\n }\n\n const typenameDxn = jsonSchema.$id ?? raise(new Error('Schema must have $id'));\n\n this.objects[data.id] = {\n schema,\n id: data.id,\n typeDxn: typenameDxn,\n data,\n };\n\n return data;\n }\n\n computeGraph() {\n this.nodes = [];\n this.relationships = [];\n\n for (const object of Object.values(this.objects)) {\n this.nodes.push({\n kind: 'node',\n id: object.id,\n label: formatNodeLabel(object.typeDxn),\n properties: object.data as any,\n });\n }\n\n for (const object of Object.values(this.objects)) {\n const schema = this.schema[object.typeDxn].json;\n const typenameDxn = schema.$id ?? raise(new Error('Schema must have $id'));\n\n for (const [name, propSchema] of Object.entries(schema.properties!)) {\n if (propSchema.$id === JSON_SCHEMA_ECHO_REF_ID) {\n const label = formatInferredRelationshipLabel(typenameDxn, name);\n\n const source = this.nodes.find((node) => node.id === object.id);\n if (!source) {\n continue;\n }\n\n const { id: targetId } = (object.data as any)[name].target;\n\n const target = this.nodes.find((node) => node.id === targetId);\n if (!target) {\n continue;\n }\n\n this.relationships.push({\n kind: 'relationship',\n id: `${object.id}-${name}-${target.id}`,\n label,\n properties: {},\n source,\n target,\n });\n } else if (\n propSchema.type === 'array' &&\n propSchema.items &&\n typeof propSchema.items === 'object' &&\n '$id' in propSchema.items &&\n propSchema.items.$id === JSON_SCHEMA_ECHO_REF_ID\n ) {\n const label = formatInferredRelationshipLabel(typenameDxn, name);\n\n const source = this.nodes.find((node) => node.id === object.id);\n if (!source) {\n continue;\n }\n\n for (const { id: targetId } of (object.data as any)[name].map((x: Ref<any>) => x.target)) {\n const target = this.nodes.find((node) => node.id === targetId);\n if (!target) {\n continue;\n }\n\n this.relationships.push({\n kind: 'relationship',\n id: `${object.id}-${name}-${targetId}`,\n label,\n properties: {},\n source,\n target,\n });\n }\n }\n }\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema as S } from 'effect';\n\nimport { EntityKind, TypeAnnotationId, Ref } from '@dxos/echo-schema';\n\n// TODO(burdon): Reconcile with sdk/schema/testing.\n// TODO(burdon): Convert interface to type.\n\n// TODO(dmaretskyi): Extract.\nexport const ObjectId = S.String.annotations({ description: 'The unique object identifier.' });\n\nexport const Contact = S.Struct({\n id: ObjectId,\n name: S.String.annotations({ description: 'The name of the person.' }),\n email: S.optional(S.String).annotations({ description: 'Email address.' }),\n})\n .pipe(S.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Contact',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Contact extends S.Schema.Type<typeof Contact> {}\n\nexport const Project = S.Struct({\n id: ObjectId,\n name: S.String.annotations({ description: 'The name of the project.' }),\n description: S.optional(S.String).annotations({ description: 'The description of the project.' }),\n})\n .pipe(S.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Project',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Project extends S.Schema.Type<typeof Project> {}\n\nexport const Task = S.Struct({\n id: ObjectId,\n name: S.String.annotations({ description: 'The name of the task.' }),\n description: S.optional(S.String).annotations({ description: 'The description of the task.' }),\n project: Ref(Project),\n assignee: Ref(Contact),\n})\n .pipe(S.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Task',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Task extends S.Schema.Type<typeof Task> {}\n\nexport const Organization = S.Struct({\n id: ObjectId,\n name: S.String.annotations({ description: 'The name of the organization.' }),\n projects: S.Array(Ref(Project)),\n employees: S.Array(Ref(Contact)),\n})\n .pipe(S.mutable)\n .annotations({\n [TypeAnnotationId]: {\n kind: EntityKind.Object,\n typename: 'example.com/type/Organization',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Organization extends S.Schema.Type<typeof Organization> {}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_echo_schema", "import_effect", "AI_SERVICE_ENDPOINT", "LOCAL", "REMOTE", "createLogger", "stream", "filter", "onImage", "images", "currentText", "event", "printContentBlock", "content", "type", "process", "stdout", "write", "text", "name", "id", "source", "mediaType", "onTextBlockPrinted", "imageMatch", "match", "description", "message", "role", "toUpperCase", "delta", "partial_json", "block", "JSON", "stringify", "input", "isError", "createTestOllamaClient", "options", "OllamaClient", "tools", "overrides", "model", "DEFAULT_OLLAMA_MODEL", "temperature", "createCypherTool", "dataSource", "schemaTypes", "defineTool", "length", "createSystemPrompt", "schema", "S", "Struct", "query", "String", "annotations", "execute", "log", "results", "executeQuery", "ToolResult", "Success", "e", "catch", "Error", "trim", "formatJsonSchemaForLLM", "map", "toJsonSchema", "seedTestData", "db", "contactRich", "add", "live", "Contact", "contactJosiah", "contactDima", "contactFred", "projectComposer", "Project", "projectEcho", "projectDoodles", "_taskComposer1", "Task", "project", "RefImpl", "make", "assignee", "_taskComposer2", "_taskComposer3", "_taskComposer5", "_taskComposer4", "_taskEcho1", "_taskEcho2", "_taskDoodles1", "_taskDoodles2", "_orgDxos", "Organization", "employees", "projects", "_orgBraneframe", "createTestData", "MockDataSource", "ObjectId", "random", "computeGraph", "objects", "nodes", "relationships", "getNodes", "label", "node", "getRelationships", "relationship", "data", "invariant", "jsonSchema", "$id", "json", "instance", "typenameDxn", "raise", "typeDxn", "object", "Object", "values", "push", "kind", "formatNodeLabel", "properties", "propSchema", "entries", "JSON_SCHEMA_ECHO_REF_ID", "formatInferredRelationshipLabel", "find", "targetId", "target", "items", "x", "email", "optional", "pipe", "mutable", "TypeAnnotationId", "EntityKind", "typename", "version", "Ref", "Array"]
7
7
  }
@@ -495,44 +495,44 @@ function* emitMessageAsEvents(message) {
495
495
  }
496
496
 
497
497
  // packages/experimental/assistant/src/ai-service/types.ts
498
- import { Schema } from "effect";
498
+ import { Schema as S } from "effect";
499
499
  import { Tool, Message } from "@dxos/artifact";
500
500
  var createArtifactElement = (id) => `<artifact id=${id} />`;
501
- var LLMModel = Schema.Literal(...DEFAULT_EDGE_MODELS, ...DEFAULT_OLLAMA_MODELS);
501
+ var LLMModel = S.Literal(...DEFAULT_EDGE_MODELS, ...DEFAULT_OLLAMA_MODELS);
502
502
  var ToolTypes = Object.freeze({
503
503
  // TODO(dmaretskyi): Not implemented yet.
504
504
  // DatabaseQuery: 'database_query',
505
505
  TextToImage: "text_to_image"
506
506
  });
507
- var GenerateRequest = Schema.Struct({
507
+ var GenerateRequest = S.Struct({
508
508
  /**
509
509
  * Preferred model or system default.
510
510
  */
511
- model: Schema.optional(LLMModel),
511
+ model: S.optional(LLMModel),
512
512
  /**
513
513
  * Tools available for the LLM.
514
514
  */
515
- tools: Schema.optional(Schema.Array(Tool).pipe(Schema.mutable)),
515
+ tools: S.optional(S.Array(Tool).pipe(S.mutable)),
516
516
  /**
517
517
  * System instructions to the LLM.
518
518
  */
519
- systemPrompt: Schema.optional(Schema.String),
519
+ systemPrompt: S.optional(S.String),
520
520
  /**
521
521
  * History of messages to include in the context window.
522
522
  */
523
523
  // TODO(burdon): Rename messages.
524
- history: Schema.optional(Schema.Array(Message)),
524
+ history: S.optional(S.Array(Message)),
525
525
  /**
526
526
  * Current request.
527
527
  */
528
- prompt: Schema.optional(Message)
528
+ prompt: S.optional(Message)
529
529
  });
530
- var GenerateResponse = Schema.Struct({
531
- messages: Schema.Array(Message),
530
+ var GenerateResponse = S.Struct({
531
+ messages: S.Array(Message),
532
532
  /**
533
533
  * Number of tokens used in the response.
534
534
  */
535
- tokenCount: Schema.optional(Schema.Number)
535
+ tokenCount: S.optional(S.Number)
536
536
  });
537
537
 
538
538
  // packages/experimental/assistant/src/conversation/conversation.ts
@@ -844,7 +844,7 @@ var runTools = async ({ message, tools, extensions }) => {
844
844
  };
845
845
 
846
846
  // packages/experimental/assistant/src/ai-service/ollama-client.ts
847
- import { Schema as Schema2 } from "effect";
847
+ import { Schema as S2 } from "effect";
848
848
  import { defineTool, ToolResult as ToolResult2 } from "@dxos/artifact";
849
849
  import { ObjectId as ObjectId2 } from "@dxos/echo-schema";
850
850
  import { invariant as invariant3 } from "@dxos/invariant";
@@ -1150,8 +1150,8 @@ var WELL_KNOWN_TOOLS = {
1150
1150
  [ToolTypes.TextToImage]: defineTool("system", {
1151
1151
  name: "text-to-image",
1152
1152
  description: "Generate an image from a text prompt",
1153
- schema: Schema2.Struct({
1154
- prompt: Schema2.String.annotations({
1153
+ schema: S2.Struct({
1154
+ prompt: S2.String.annotations({
1155
1155
  description: "The text prompt describing the image to generate"
1156
1156
  })
1157
1157
  }),
@@ -1194,12 +1194,12 @@ var OllamaDecoderStream = class extends TransformStream {
1194
1194
  this._buffer = "";
1195
1195
  }
1196
1196
  };
1197
- var ModelDoesNotSupportToolsError = class extends Schema2.TaggedError()("ModelDoesNotSupportToolsError", {
1198
- model: Schema2.String
1197
+ var ModelDoesNotSupportToolsError = class extends S2.TaggedError()("ModelDoesNotSupportToolsError", {
1198
+ model: S2.String
1199
1199
  }) {
1200
1200
  };
1201
- var ModelNotFoundError = class extends Schema2.TaggedError()("ModelNotFoundError", {
1202
- model: Schema2.String
1201
+ var ModelNotFoundError = class extends S2.TaggedError()("ModelNotFoundError", {
1202
+ model: S2.String
1203
1203
  }) {
1204
1204
  };
1205
1205
  var parseOllamaError = (error) => {
@@ -2274,7 +2274,7 @@ var EchoDataSource = class {
2274
2274
  _ts_decorate([
2275
2275
  log8.method(void 0, void 0, {
2276
2276
  F: __dxlog_file8,
2277
- L: 18,
2277
+ L: 16,
2278
2278
  S: void 0,
2279
2279
  C: (f, a) => f(...a)
2280
2280
  })
@@ -2282,7 +2282,7 @@ _ts_decorate([
2282
2282
  _ts_decorate([
2283
2283
  log8.method(void 0, void 0, {
2284
2284
  F: __dxlog_file8,
2285
- L: 35,
2285
+ L: 33,
2286
2286
  S: void 0,
2287
2287
  C: (f, a) => f(...a)
2288
2288
  })
@@ -2321,4 +2321,4 @@ export {
2321
2321
  isReference,
2322
2322
  EchoDataSource
2323
2323
  };
2324
- //# sourceMappingURL=chunk-Y3SYOFFJ.mjs.map
2324
+ //# sourceMappingURL=chunk-7JI4MDGL.mjs.map