@dxos/assistant 0.7.4 → 0.7.5-labs.5f04cf6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/chunk-37SDA65J.mjs +565 -0
- package/dist/lib/browser/chunk-37SDA65J.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +936 -47
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +14 -8
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node/chunk-UYNIAO5N.cjs +577 -0
- package/dist/lib/node/chunk-UYNIAO5N.cjs.map +7 -0
- package/dist/lib/node/index.cjs +936 -54
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +20 -13
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/lib/node-esm/chunk-AR24K7TY.mjs +567 -0
- package/dist/lib/node-esm/chunk-AR24K7TY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +936 -47
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +14 -8
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/types/src/ai-service/client.d.ts +16 -32
- package/dist/types/src/ai-service/client.d.ts.map +1 -1
- package/dist/types/src/ai-service/defs.d.ts +134 -0
- package/dist/types/src/ai-service/defs.d.ts.map +1 -0
- package/dist/types/src/ai-service/index.d.ts +3 -1
- package/dist/types/src/ai-service/index.d.ts.map +1 -1
- package/dist/types/src/ai-service/parser.d.ts +40 -0
- package/dist/types/src/ai-service/parser.d.ts.map +1 -0
- package/dist/types/src/ai-service/stream.d.ts +35 -0
- package/dist/types/src/ai-service/stream.d.ts.map +1 -0
- package/dist/types/src/ai-service/stream.test.d.ts +2 -0
- package/dist/types/src/ai-service/stream.test.d.ts.map +1 -0
- package/dist/types/src/ai-service/util/index.d.ts +2 -0
- package/dist/types/src/ai-service/util/index.d.ts.map +1 -0
- package/dist/types/src/ai-service/{sse.d.ts → util/sse.d.ts} +5 -0
- package/dist/types/src/ai-service/util/sse.d.ts.map +1 -0
- package/dist/types/src/conversation/conversation.d.ts +56 -5
- package/dist/types/src/conversation/conversation.d.ts.map +1 -1
- package/dist/types/src/conversation/index.d.ts +0 -1
- package/dist/types/src/conversation/index.d.ts.map +1 -1
- package/dist/types/src/conversation/types.d.ts +44 -13
- package/dist/types/src/conversation/types.d.ts.map +1 -1
- package/dist/types/src/cypher/combinators.d.ts.map +1 -1
- package/dist/types/src/cypher/parjs.d.ts +1 -1
- package/dist/types/src/cypher/parjs.d.ts.map +1 -1
- package/dist/types/src/cypher/schema.d.ts.map +1 -1
- package/dist/types/src/testing/artifacts.test.d.ts +1 -0
- package/dist/types/src/testing/artifacts.test.d.ts.map +1 -0
- package/dist/types/src/testing/data.d.ts +2 -0
- package/dist/types/src/testing/data.d.ts.map +1 -0
- package/dist/types/src/testing/defs.d.ts +5 -0
- package/dist/types/src/testing/defs.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/logger.d.ts +1 -1
- package/dist/types/src/testing/logger.d.ts.map +1 -1
- package/dist/types/src/testing/query-promts.d.ts +1 -1
- package/dist/types/src/testing/query-promts.d.ts.map +1 -1
- package/dist/types/src/testing/test-data.d.ts +1 -1
- package/dist/types/src/testing/test-data.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +4 -4
- package/package.json +20 -18
- package/src/ai-service/client.test.ts +28 -28
- package/src/ai-service/client.ts +31 -177
- package/src/ai-service/defs.ts +98 -0
- package/src/ai-service/index.ts +3 -1
- package/src/ai-service/parser.ts +183 -0
- package/src/ai-service/stream.test.ts +106 -0
- package/src/ai-service/stream.test.txt +33 -0
- package/src/ai-service/stream.ts +182 -0
- package/src/ai-service/util/index.ts +5 -0
- package/src/ai-service/{sse.ts → util/sse.ts} +5 -0
- package/src/bin/chat.ts +8 -10
- package/src/conversation/conversation.test.ts +13 -17
- package/src/conversation/conversation.ts +113 -18
- package/src/conversation/index.ts +0 -1
- package/src/conversation/types.ts +55 -16
- package/src/cypher/combinators.test.ts +4 -4
- package/src/cypher/combinators.ts +0 -1
- package/src/cypher/execution-plan.test.ts +5 -3
- package/src/cypher/parjs-shims.d.ts +4 -0
- package/src/cypher/parjs.ts +2 -2
- package/src/cypher/query-executor.test.ts +1 -1
- package/src/cypher/schema.ts +0 -1
- package/src/index.ts +1 -1
- package/src/testing/artifacts.test.ts +182 -0
- package/src/testing/data.ts +13 -0
- package/src/testing/defs.ts +8 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/logger.ts +3 -2
- package/src/testing/query-promts.ts +3 -3
- package/src/testing/query.test.ts +11 -10
- package/src/testing/test-data.ts +1 -1
- package/vendor/parjs-browser.mjs +4 -0
- package/vendor/parjs-default.mjs +8 -0
- package/dist/lib/browser/chunk-AKP45LQH.mjs +0 -1394
- package/dist/lib/browser/chunk-AKP45LQH.mjs.map +0 -7
- package/dist/lib/node/chunk-G6CGWEMO.cjs +0 -1418
- package/dist/lib/node/chunk-G6CGWEMO.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-WUPUPEFB.mjs +0 -1396
- package/dist/lib/node-esm/chunk-WUPUPEFB.mjs.map +0 -7
- package/dist/types/src/ai-service/schema.d.ts +0 -296
- package/dist/types/src/ai-service/schema.d.ts.map +0 -1
- package/dist/types/src/ai-service/sse.d.ts.map +0 -1
- package/dist/types/src/sanity.test.d.ts +0 -2
- package/dist/types/src/sanity.test.d.ts.map +0 -1
- package/src/ai-service/schema.ts +0 -260
- package/src/sanity.test.ts +0 -9
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/cypher/parjs.ts", "../../../src/cypher/combinators.ts", "../../../src/cypher/parser.ts", "../../../src/cypher/query-executor.ts", "../../../src/cypher/execution-plan.ts", "../../../src/cypher/schema.ts", "../../../src/util/trim.ts", "../../../src/cypher/echo-data-source.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\n// Workaround for https://github.com/vitest-dev/vitest/issues/7174.\nimport type { Parjser } from 'parjs';\n\nimport { parjsCombinators, parjs } from '#parjs';\n\nexport { type Parjser, parjsCombinators, parjs };\n", "//\n// Copyright 2024 DXOS.org\n//\n\n/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/consistent-type-imports */\n\nimport type {\n CypherQuery,\n EqualsPredicate,\n GraphPattern,\n GraphPatternConnector,\n Identifier,\n MatchClause,\n MemberExpression,\n NodePattern,\n Properties,\n Property,\n RelationshipPattern,\n ReturnClause,\n StringLiteral,\n WhereClause,\n} from './ast';\nimport { Parjser, parjs, parjsCombinators } from './parjs';\n\n// Helper parsers\nconst ws = parjs.whitespace(); // Parses whitespace\n\nconst nothing = parjs.string('').pipe(parjsCombinators.map(() => null)); // Parses nothing\n\nconst optional = <T>(parser: Parjser<T>) =>\n parser.pipe(\n parjsCombinators.recover(() => ({ kind: 'Soft' })),\n parjsCombinators.or(nothing),\n ); // Makes a parser optional\n\nconst keyword = (word: string) => parjs.string(word).pipe(parjsCombinators.map(() => word)); // Parses specific keywords\n\n// Identifiers (node labels, relationship types, variables, etc.)\nexport const identifier = parjs.regexp(/[a-zA-Z_][a-zA-Z0-9_]*/).pipe(\n parjsCombinators.map((match): Identifier => ({ astKind: 'Identifier', name: match[0] })), // Extract the matched string\n);\n\n// Literals (numbers and strings)\nconst numberLiteral = parjs.regexp(/-?\\d+(\\.\\d+)?/).pipe(parjsCombinators.map(Number)); // Numbers\nconst stringLiteral = parjs.regexp(/\"([^\"]*)\"|'([^']*)'/).pipe(\n parjsCombinators.map((match): StringLiteral => ({ astKind: 'StringLiteral', value: match[1] || match[2] })), // Extract content without quotes\n);\n\n// Node pattern (e.g., \"(n:Person {name: 'John'})\"\nconst variableTag = identifier.pipe(parjsCombinators.map((variable) => variable)).expects('variable tag');\nexport const label = identifier.pipe(parjsCombinators.map((name) => name));\nexport const property = identifier.pipe(\n parjsCombinators.then(parjs.string(':'), ws, stringLiteral),\n parjsCombinators.map(([key, , , value]): Property => ({ key, value })),\n);\nexport const properties = property.pipe(\n parjsCombinators.manySepBy(','),\n parjsCombinators.between('{', '}'),\n parjsCombinators.map((properties): Properties => ({ astKind: 'Properties', properties })),\n);\nexport const nodePattern = optional(variableTag).pipe(\n parjsCombinators.then(':'),\n parjsCombinators.then(ws, label, ws),\n parjsCombinators.then(optional(properties)),\n parjsCombinators.between('(', ')'),\n parjsCombinators.map(\n ([[[variable], _, label], properties]): NodePattern => ({ astKind: 'NodePattern', variable, label, properties }),\n ),\n);\n\nexport const relationshipPattern = optional(variableTag).pipe(\n parjsCombinators.then(':'),\n parjsCombinators.then(ws, label, ws),\n parjsCombinators.then(optional(properties)),\n parjsCombinators.between('[', ']'),\n parjsCombinators.map(\n ([[[variable], _, label], properties]): RelationshipPattern => ({\n astKind: 'RelationshipPattern',\n variable,\n label,\n properties,\n }),\n ),\n);\n\nconst graphPatternConnector = parjs.string('->').pipe(\n parjsCombinators.or('<-' as const, '-' as const),\n parjsCombinators.map((x): GraphPatternConnector => ({ astKind: 'GraphPatternConnector', direction: x })),\n);\n\nexport const graphPattern = nodePattern.pipe(\n parjsCombinators.or(relationshipPattern),\n parjsCombinators.manySepBy(graphPatternConnector),\n parjsCombinators.map((segments): GraphPattern => ({ astKind: 'GraphPattern', segments })),\n);\n\nexport const matchClause = keyword('MATCH').pipe(\n parjsCombinators.then(ws),\n parjsCombinators.then(graphPattern),\n parjsCombinators.map(([, pattern]): MatchClause => ({ astKind: 'MatchClause', pattern })),\n);\n\nconst memberExpression = identifier.pipe(\n parjsCombinators.manySepBy('.'),\n parjsCombinators.map((path): MemberExpression => ({ astKind: 'MemberExpression', path })),\n);\n\nconst equalsPredicate = memberExpression.pipe(\n parjsCombinators.then(ws, parjs.string('='), ws, stringLiteral),\n parjsCombinators.map(([left, , , , right]): EqualsPredicate => ({ astKind: 'EqualsPredicate', left, right })),\n);\n\nexport const whereClause = keyword('WHERE').pipe(\n parjsCombinators.then(\n ws,\n equalsPredicate.pipe(parjsCombinators.between(ws, ws), parjsCombinators.manySepBy(parjs.string('AND'))),\n ws,\n ),\n parjsCombinators.map(([, , predicates]): WhereClause => ({ astKind: 'WhereClause', predicates })),\n);\n\nexport const returnClause = keyword('RETURN').pipe(\n parjsCombinators.then(\n ws,\n memberExpression.pipe(\n parjsCombinators.then(\n optional(parjs.string('AS').pipe(parjsCombinators.between(ws), parjsCombinators.then(identifier))),\n ws,\n ),\n parjsCombinators.manySepBy(parjs.string(',').pipe(parjsCombinators.then(ws))),\n ),\n ws,\n ),\n parjsCombinators.map(([, , fields]): ReturnClause => ({ astKind: 'ReturnClause', fields: fields.map(([f]) => f) })),\n);\n\nexport const cypherQuery = ws.pipe(\n parjsCombinators.then(matchClause, ws, optional(whereClause), ws, returnClause, ws),\n parjsCombinators.map(\n ([, matchClause, , whereClause, , returnClause]): CypherQuery => ({\n astKind: 'CypherQuery',\n matchClause,\n whereClause,\n returnClause,\n }),\n ),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { CypherQuery } from './ast';\nimport { cypherQuery } from './combinators';\n\nexport type ParsedQuery = {\n ast: CypherQuery;\n};\n\nexport const parseCypherQuery = (query: string): ParsedQuery => {\n const parseResult = cypherQuery.parse(query);\n if (parseResult.isOk) {\n return { ast: parseResult.value };\n } else {\n throw new Error(`Failed to parse query: ${parseResult}`);\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { JsonPath } from '@dxos/echo-schema';\nimport { log } from '@dxos/log';\nimport { mapValues } from '@dxos/util';\n\nimport { createExecutionPlan, type ExecutionPlan, type VariableName } from './execution-plan';\nimport { parseCypherQuery } from './parser';\n\nexport interface DataSource {\n getNodes: (params: { label?: string }) => Promise<Node[]>;\n getRelationships: (params: { label?: string }) => Promise<Relationship[]>;\n}\n\nexport type Node = {\n id: string;\n kind: 'node';\n label: string;\n properties: Record<string, unknown>;\n};\n\nexport type Relationship = {\n id: string;\n kind: 'relationship';\n label: string;\n properties: Record<string, unknown>;\n source: Node;\n target: Node;\n};\n\nexport const executeQueryPlan = async (\n dataSource: DataSource,\n plan: ExecutionPlan,\n): Promise<Record<string, unknown>[]> => {\n let buffer: Record<VariableName, Node | Relationship>[] = [];\n const results: Record<string, unknown>[] = [];\n\n for (const step of plan.steps) {\n log('begin step', { step });\n\n switch (step.type) {\n case 'NodeScan': {\n const nodes = await dataSource.getNodes({ label: step.label });\n buffer.push(...nodes.map((node) => ({ [step.into]: node })));\n break;\n }\n case 'FilterByLabel': {\n buffer = buffer.filter((item) => {\n const node = item[step.variable];\n return node && node.kind === 'node' && node.label === step.label;\n });\n break;\n }\n case 'FilterByProperty': {\n buffer = buffer.filter((item) => {\n const node = item[step.variable];\n return node && node.kind === 'node' && node.properties[step.property] === step.value;\n });\n break;\n }\n case 'RelationshipScan': {\n const relationships = await dataSource.getRelationships({ label: step.label });\n for (const tuple of [...buffer]) {\n if (tuple[step.anchor].kind !== 'node') {\n continue;\n }\n const filteredRelationships = relationships.filter((relationship) => {\n switch (step.direction) {\n case 'in':\n return relationship.target.id === tuple[step.anchor].id;\n case 'out':\n return relationship.source.id === tuple[step.anchor].id;\n case 'both':\n return (\n relationship.source.id === tuple[step.anchor].id || relationship.target.id === tuple[step.anchor].id\n );\n default:\n throw new Error(`Unknown direction: ${step.direction}`);\n }\n });\n for (let i = 0; i < filteredRelationships.length; i++) {\n const relationship = filteredRelationships[i];\n const newTuple = i === 0 ? tuple : { ...tuple };\n if (newTuple !== tuple) {\n buffer.push(newTuple);\n }\n newTuple[step.relationshipInto] = relationship;\n switch (step.direction) {\n case 'in':\n newTuple[step.nodeInto] = relationship.source;\n break;\n case 'out':\n newTuple[step.nodeInto] = relationship.target;\n break;\n case 'both':\n newTuple[step.nodeInto] =\n relationship.source.id === newTuple[step.anchor].id ? relationship.target : relationship.source;\n break;\n }\n }\n }\n break;\n }\n case 'ProduceResults': {\n for (const tuple of buffer) {\n const result: Record<string, unknown> = {};\n for (const field of step.fields) {\n result[field.name] = jsonPathGet(tuple[field.variable].properties, field.path);\n }\n results.push(result);\n }\n break;\n }\n }\n\n log('finish step', { buffer: buffer.map((tuple) => mapValues(tuple, (x) => x.id)), results });\n }\n\n return results;\n};\n\nexport const executeQuery = (dataSource: DataSource, query: string): Promise<Record<string, unknown>[]> => {\n const plan = createExecutionPlan(parseCypherQuery(query));\n return executeQueryPlan(dataSource, plan);\n};\n\n// TODO(dmaretskyi): Extract.\nconst jsonPathGet = (obj: Record<string, unknown>, path: JsonPath): unknown => {\n if (path === '' || path === '$') {\n return obj;\n }\n\n const parts = path.split('.');\n if (parts[0] === '$') {\n parts.shift();\n }\n\n let result: any = obj;\n for (const part of parts) {\n result = result?.[part];\n }\n return result;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { JsonPath } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport type { GraphPatternConnector, MatchClause, ReturnClause, WhereClause } from './ast';\nimport type { ParsedQuery } from './parser';\n\nexport type VariableName = string & { __VariableName: never };\n\nexport type ExecutionPlanStep =\n | {\n type: 'NodeScan';\n label: string;\n into: VariableName;\n }\n | {\n type: 'FilterByLabel';\n variable: VariableName;\n label: string;\n }\n | {\n type: 'FilterByProperty';\n variable: VariableName;\n property: JsonPath;\n value: unknown;\n }\n | {\n /**\n * Scans (anchor)-[relationshipInto:label]->(nodeInto).\n */\n type: 'RelationshipScan';\n label: string;\n anchor: VariableName;\n relationshipInto: VariableName;\n nodeInto: VariableName;\n\n /**\n * `in`: (anchor)<-[relationshipInto:label]-(nodeInto)\n * `out`: (anchor)-[relationshipInto:label]->(nodeInto)\n * `both`: (anchor)-[relationshipInto:label]-(nodeInto)\n */\n direction: 'in' | 'out' | 'both';\n }\n | {\n type: 'ProduceResults';\n fields: {\n name: string;\n variable: VariableName;\n path: JsonPath;\n }[];\n };\n\nexport type ExecutionPlan = {\n steps: ExecutionPlanStep[];\n output: {\n fields: string[];\n };\n};\n\nexport const createExecutionPlan = (query: ParsedQuery): ExecutionPlan => {\n return new ExecutionPlanBuilder().build(query);\n};\n\nclass ExecutionPlanBuilder {\n private counter = 0;\n\n newVariable(): VariableName {\n return `anon_${this.counter++}` as VariableName;\n }\n\n build(query: ParsedQuery): ExecutionPlan {\n log('Creating execution plan for query', { query });\n return {\n steps: [\n ...this.createStepsForMatchClause(query.ast.matchClause),\n ...(query.ast.whereClause ? this.createStepsForWhereClause(query.ast.whereClause) : []),\n ...this.createStepsForReturnClause(query.ast.returnClause),\n ],\n output: {\n fields: this.getOutputFields(query.ast.returnClause),\n },\n };\n }\n\n createStepsForMatchClause(match: MatchClause): ExecutionPlanStep[] {\n invariant(match.pattern.segments.length > 0);\n const firstSegment = match.pattern.segments[0];\n invariant(firstSegment.astKind === 'NodePattern');\n let lastNodeVariable = (firstSegment.variable?.name as VariableName) ?? this.newVariable();\n\n const steps: ExecutionPlanStep[] = [];\n steps.push({\n type: 'NodeScan',\n label: firstSegment.label.name,\n into: lastNodeVariable,\n });\n\n if (firstSegment.properties) {\n for (const property of firstSegment.properties.properties) {\n steps.push({\n type: 'FilterByProperty',\n variable: lastNodeVariable,\n property: property.key.name as JsonPath,\n value: property.value.value,\n });\n }\n }\n\n for (let i = 1; i < match.pattern.segments.length; i++) {\n const relationshipSegment = match.pattern.segments[i++];\n invariant(relationshipSegment.astKind === 'RelationshipPattern');\n const nodeSegment = match.pattern.segments[i];\n invariant(nodeSegment.astKind === 'NodePattern');\n const leftSeparator = match.pattern.segments.separators[i - 2];\n const rightSeparator = match.pattern.segments.separators[i - 1];\n const direction = getDirection(leftSeparator.direction, rightSeparator.direction);\n\n const relationshipVariable = (relationshipSegment.variable?.name as VariableName) ?? this.newVariable();\n const nodeVariable = (nodeSegment.variable?.name as VariableName) ?? this.newVariable();\n\n steps.push({\n type: 'RelationshipScan',\n label: relationshipSegment.label.name,\n direction,\n anchor: lastNodeVariable,\n relationshipInto: relationshipVariable,\n nodeInto: nodeVariable,\n });\n\n if (relationshipSegment.properties) {\n for (const property of relationshipSegment.properties.properties) {\n steps.push({\n type: 'FilterByProperty',\n variable: relationshipVariable,\n property: property.key.name as JsonPath,\n value: property.value.value,\n });\n }\n }\n if (nodeSegment.label) {\n steps.push({\n type: 'FilterByLabel',\n variable: nodeVariable,\n label: nodeSegment.label.name,\n });\n }\n if (nodeSegment.properties) {\n for (const property of nodeSegment.properties.properties) {\n steps.push({\n type: 'FilterByProperty',\n variable: nodeVariable,\n property: property.key.name as JsonPath,\n value: property.value.value,\n });\n }\n }\n\n lastNodeVariable = nodeVariable;\n }\n\n return steps;\n }\n\n createStepsForWhereClause(where: WhereClause): ExecutionPlanStep[] {\n return [];\n }\n\n createStepsForReturnClause(returnClause: ReturnClause): ExecutionPlanStep[] {\n return [\n {\n type: 'ProduceResults',\n fields: returnClause.fields.map((field) => ({\n name: field.path.map((p) => p.name).join('_'),\n variable: field.path[0].name as VariableName,\n path:\n field.path.length > 1\n ? (field.path\n .slice(1)\n .map((p) => p.name)\n .join('.') as JsonPath)\n : ('$' as JsonPath),\n })),\n },\n ];\n }\n\n getOutputFields(returnClause: ReturnClause): string[] {\n return returnClause.fields.map((field) => field.path.map((p) => p.name).join('_'));\n }\n}\n\nconst getDirection = (\n left: GraphPatternConnector['direction'],\n right: GraphPatternConnector['direction'],\n): 'in' | 'out' | 'both' => {\n if (left === '-' && right === '->') {\n return 'out';\n } else if (left === '<-' && right === '-') {\n return 'in';\n } else if (left === '-' && right === '-') {\n return 'both';\n }\n throw new Error(`Invalid direction: ()${left}[]${right}()`);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { raise } from '@dxos/debug';\nimport { JSON_SCHEMA_ECHO_REF_ID, type JsonSchemaType } from '@dxos/echo-schema';\n\nimport { trim } from '../util';\n\n/**\n * Formats ECHO schema to be consumed by LLM.\n * Schema is formatted in cypher format.\n * Objects are represented as nodes.\n * References are represented as relationships.\n */\nexport const formatJsonSchemaForLLM = (schemaTypes: JsonSchemaType[]): string[] => {\n return schemaTypes.flatMap((schema) => [\n formatNodeSchema(schema),\n ...formatInferredRelationships(schema, schemaTypes),\n ]);\n};\n\nconst formatNodeSchema = (schema: JsonSchemaType) => {\n const label = formatNodeLabel(schema.typename ?? raise(new Error('Schema must have $id')));\n const properties = Object.entries(schema.properties!).filter(([key, prop]) => key !== 'id' && !isReference(prop));\n\n return trim`\n <node>\n (:${label})\n\n <description>${schema.description}</description>\n\n <properties>\n ${properties.map(([key, value]) => {\n return trim`\n <${key}>\n <type>${value.type}</type>\n <description>${value.description}</description>\n </${key}>\n `;\n })}\n </properties>\n </node>\n `;\n};\n\nconst formatInferredRelationships = (schema: JsonSchemaType, allSchema: JsonSchemaType[]): string[] => {\n const nodeLabel = formatNodeLabel(schema.typename ?? raise(new Error('Schema must have $id')));\n const relationships = Object.entries(schema.properties!).filter(([key, prop]) => isReference(prop));\n\n return relationships.map(([key, value]) => {\n const relationshipLabel = formatInferredRelationshipLabel(\n schema.typename ?? raise(new Error('Schema must have $id')),\n key,\n );\n\n // TODO(dmaretskyi): Registered schema don't get reference types updated.\n const targetSchema = allSchema.find((schema) => `dxn:type/${schema.typename}` === value.reference?.schema.$ref);\n const targetLabel = targetSchema ? formatNodeLabel(targetSchema?.typename ?? '') : '';\n\n return trim`\n <relationship>\n (:${nodeLabel})-[:${relationshipLabel}]->(:${targetLabel})\n\n <description>${value.description}</description>\n </relationship>\n `;\n });\n};\n\nexport const formatNodeLabel = (typename: string) => {\n return typename.replace(/^example\\.com\\/type\\//g, '');\n};\n\nexport const formatInferredRelationshipLabel = (typename: string, property: string) => {\n const nodeLabel = formatNodeLabel(typename);\n return `${nodeLabel}_${property}`.toUpperCase();\n};\n\nexport const isReference = (schema: JsonSchemaType) =>\n schema.$id === JSON_SCHEMA_ECHO_REF_ID || (schema.type === 'array' && schema.items?.$id === JSON_SCHEMA_ECHO_REF_ID);\n", "//\n// Copyright 2024 DXOS.org\n//\n\n/**\n * Trims multiline strings.\n */\n// TODO(burdon): Move to util.\nexport const trim = (strings: TemplateStringsArray, ...values: any[]) => {\n const combined = strings.reduce((acc, str, i) => {\n return acc + str + (values[i] || '');\n }, '');\n\n return combined.replace('/^\\n/', '').replace(/\\n$/, '');\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { raise } from '@dxos/debug';\nimport { type EchoDatabase, Filter, type ReactiveEchoObject } from '@dxos/echo-db';\nimport { type S, getSchemaTypename, StoredSchema, toJsonSchema } from '@dxos/echo-schema';\nimport { getSchema } from '@dxos/live-object';\nimport { log } from '@dxos/log';\n\nimport type { DataSource, Node, Relationship } from './query-executor';\nimport { formatInferredRelationshipLabel, formatNodeLabel, isReference } from './schema';\n\nexport class EchoDataSource implements DataSource {\n constructor(private readonly _db: EchoDatabase) {}\n\n @log.method()\n async getNodes({ label }: { label?: string }): Promise<Node[]> {\n if (!label) {\n const { objects } = await this._db.query().run();\n return objects.map(this._objectToNode);\n }\n\n const schema = (await this._getAllSchema()).find((s) => getSchemaTypename(s)?.endsWith(label));\n\n if (!schema) {\n return [];\n }\n\n const { objects } = await this._db.query(Filter.schema(schema)).run();\n return objects.map(this._objectToNode);\n }\n\n @log.method()\n async getRelationships({ label }: { label?: string }): Promise<Relationship[]> {\n const syntheticRefRelationships = (await this._getAllSchema())\n .filter((schema) => getSchemaTypename(schema) !== StoredSchema.typename)\n .flatMap((schema) => {\n const jsonSchema = toJsonSchema(schema);\n const relationships = Object.entries(jsonSchema.properties!).filter(([key, prop]) => isReference(prop));\n\n return relationships.map(([key, value]) => {\n const relationshipLabel = formatInferredRelationshipLabel(\n jsonSchema.typename ?? raise(new Error('Schema must have typename')),\n key,\n );\n\n return {\n label: relationshipLabel,\n schema,\n property: key,\n };\n });\n });\n const relationship = syntheticRefRelationships.find((r) => r.label === label);\n if (!relationship) {\n return []; // TODO(dmaretskyi): Handle real relationships.\n }\n\n const { objects } = await this._db.query(Filter.schema(relationship.schema)).run();\n return (\n await Promise.all(objects.map((object) => this._projectRefRelationship(object, relationship.property)))\n ).flat();\n }\n\n private async _getAllSchema(): Promise<S.Schema.AnyNoContext[]> {\n return [\n ...(await this._db.schemaRegistry.query().run()),\n // TODO(dmaretskyi): Remove once we can serialize recursive schema.\n ...this._db.graph.schemaRegistry.schemas.filter((s) => getSchemaTypename(s)?.startsWith('example.org')),\n ].filter((schema) => getSchemaTypename(schema) !== StoredSchema.typename);\n }\n\n private _objectToNode(object: ReactiveEchoObject<any>): Node {\n const { id, ...properties } = object;\n return {\n id,\n kind: 'node',\n label: formatNodeLabel(getSchemaTypename(getSchema(object)!)!),\n properties,\n };\n }\n\n private async _projectRefRelationship(object: ReactiveEchoObject<any>, prop: string): Promise<Relationship[]> {\n if (!object[prop]) {\n return [];\n }\n\n const value = Array.isArray(object[prop]) ? object[prop] : [object[prop]];\n\n return Promise.all(\n value.map(async (ref): Promise<Relationship> => {\n const target = await ref.load();\n return {\n id: `${object.id}-${prop}-${target.id}`,\n kind: 'relationship',\n label: formatInferredRelationshipLabel(getSchemaTypename(getSchema(object)!)!, prop),\n properties: {},\n source: this._objectToNode(object),\n target: this._objectToNode(target),\n };\n }),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_log", "import_debug", "import_echo_schema", "ws", "parjs", "whitespace", "nothing", "string", "pipe", "parjsCombinators", "map", "optional", "parser", "recover", "kind", "or", "keyword", "word", "identifier", "regexp", "match", "astKind", "name", "numberLiteral", "Number", "stringLiteral", "value", "variableTag", "variable", "expects", "label", "property", "then", "key", "properties", "manySepBy", "between", "nodePattern", "_", "relationshipPattern", "graphPatternConnector", "x", "direction", "graphPattern", "segments", "matchClause", "pattern", "memberExpression", "path", "equalsPredicate", "left", "right", "whereClause", "predicates", "returnClause", "fields", "f", "cypherQuery", "parseCypherQuery", "query", "parseResult", "parse", "isOk", "ast", "Error", "createExecutionPlan", "ExecutionPlanBuilder", "build", "counter", "newVariable", "log", "steps", "createStepsForMatchClause", "createStepsForWhereClause", "createStepsForReturnClause", "output", "getOutputFields", "invariant", "length", "firstSegment", "lastNodeVariable", "push", "type", "into", "i", "relationshipSegment", "nodeSegment", "leftSeparator", "separators", "rightSeparator", "getDirection", "relationshipVariable", "nodeVariable", "anchor", "relationshipInto", "nodeInto", "where", "field", "p", "join", "slice", "executeQueryPlan", "dataSource", "plan", "buffer", "results", "step", "nodes", "getNodes", "node", "filter", "item", "relationships", "getRelationships", "tuple", "filteredRelationships", "relationship", "target", "id", "source", "newTuple", "result", "jsonPathGet", "mapValues", "executeQuery", "obj", "parts", "split", "shift", "part", "trim", "strings", "values", "combined", "reduce", "acc", "str", "replace", "formatJsonSchemaForLLM", "schemaTypes", "flatMap", "schema", "formatNodeSchema", "formatInferredRelationships", "formatNodeLabel", "typename", "raise", "Object", "entries", "prop", "isReference", "description", "allSchema", "nodeLabel", "relationshipLabel", "formatInferredRelationshipLabel", "targetSchema", "find", "reference", "$ref", "targetLabel", "toUpperCase", "$id", "JSON_SCHEMA_ECHO_REF_ID", "items", "EchoDataSource", "constructor", "_db", "objects", "run", "_objectToNode", "_getAllSchema", "s", "getSchemaTypename", "endsWith", "Filter", "syntheticRefRelationships", "StoredSchema", "jsonSchema", "toJsonSchema", "r", "Promise", "all", "object", "_projectRefRelationship", "flat", "schemaRegistry", "graph", "schemas", "startsWith", "getSchema", "Array", "isArray", "ref", "load", "method"]
|
|
7
|
+
}
|