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

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 (84) hide show
  1. package/dist/lib/browser/{chunk-PND5VR6D.mjs → chunk-OLO6SVOL.mjs} +91 -84
  2. package/dist/lib/browser/chunk-OLO6SVOL.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +276 -154
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +98 -102
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/{chunk-IBOBRBDF.cjs → chunk-CI5Q7FBG.cjs} +106 -98
  9. package/dist/lib/node/chunk-CI5Q7FBG.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +302 -183
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +88 -93
  14. package/dist/lib/node/testing/index.cjs.map +3 -3
  15. package/dist/lib/node-esm/{chunk-DCQJOLSR.mjs → chunk-Y3SYOFFJ.mjs} +91 -84
  16. package/dist/lib/node-esm/chunk-Y3SYOFFJ.mjs.map +7 -0
  17. package/dist/lib/node-esm/index.mjs +276 -154
  18. package/dist/lib/node-esm/index.mjs.map +4 -4
  19. package/dist/lib/node-esm/meta.json +1 -1
  20. package/dist/lib/node-esm/testing/index.mjs +98 -102
  21. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  22. package/dist/types/src/ai-service/edge-client.d.ts +4 -5
  23. package/dist/types/src/ai-service/edge-client.d.ts.map +1 -1
  24. package/dist/types/src/ai-service/message-collector.d.ts +0 -6
  25. package/dist/types/src/ai-service/message-collector.d.ts.map +1 -1
  26. package/dist/types/src/ai-service/ollama-client.d.ts +6 -2
  27. package/dist/types/src/ai-service/ollama-client.d.ts.map +1 -1
  28. package/dist/types/src/ai-service/parser.d.ts +0 -3
  29. package/dist/types/src/ai-service/parser.d.ts.map +1 -1
  30. package/dist/types/src/ai-service/service.d.ts +18 -2
  31. package/dist/types/src/ai-service/service.d.ts.map +1 -1
  32. package/dist/types/src/ai-service/testing/mock.d.ts +6 -2
  33. package/dist/types/src/ai-service/testing/mock.d.ts.map +1 -1
  34. package/dist/types/src/ai-service/types.d.ts +144 -101
  35. package/dist/types/src/ai-service/types.d.ts.map +1 -1
  36. package/dist/types/src/conversation/conversation.d.ts +0 -3
  37. package/dist/types/src/conversation/conversation.d.ts.map +1 -1
  38. package/dist/types/src/conversation/types.d.ts +11 -12
  39. package/dist/types/src/conversation/types.d.ts.map +1 -1
  40. package/dist/types/src/cypher/echo-data-source.d.ts.map +1 -1
  41. package/dist/types/src/session/index.d.ts +1 -0
  42. package/dist/types/src/session/index.d.ts.map +1 -1
  43. package/dist/types/src/session/session.d.ts +32 -13
  44. package/dist/types/src/session/session.d.ts.map +1 -1
  45. package/dist/types/src/session/version-pin.d.ts +17 -0
  46. package/dist/types/src/session/version-pin.d.ts.map +1 -0
  47. package/dist/types/src/session/version-pin.test.d.ts +2 -0
  48. package/dist/types/src/session/version-pin.test.d.ts.map +1 -0
  49. package/dist/types/src/testing/query-promts.d.ts +3 -3
  50. package/dist/types/src/testing/query-promts.d.ts.map +1 -1
  51. package/dist/types/src/testing/test-data.d.ts +4 -4
  52. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  53. package/dist/types/src/testing/test-schema.d.ts +25 -23
  54. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  55. package/package.json +15 -14
  56. package/src/ai-service/client.test.ts +55 -73
  57. package/src/ai-service/edge-client.ts +13 -20
  58. package/src/ai-service/ollama-client.ts +16 -9
  59. package/src/ai-service/parser.ts +13 -2
  60. package/src/ai-service/service.ts +19 -3
  61. package/src/ai-service/testing/mock.ts +9 -1
  62. package/src/ai-service/types.ts +24 -15
  63. package/src/bin/chat.ts +3 -3
  64. package/src/conversation/conversation.test.ts +3 -3
  65. package/src/conversation/conversation.ts +5 -11
  66. package/src/conversation/types.ts +11 -14
  67. package/src/cypher/combinators.test.ts +4 -4
  68. package/src/cypher/echo-data-source.ts +7 -6
  69. package/src/cypher/execution-plan.test.ts +1 -1
  70. package/src/cypher/query-executor.test.ts +1 -1
  71. package/src/cypher/schema.test.ts +3 -3
  72. package/src/session/index.ts +1 -0
  73. package/src/session/session.test.ts +29 -22
  74. package/src/session/session.ts +286 -150
  75. package/src/session/version-pin.test.ts +26 -0
  76. package/src/session/version-pin.ts +43 -0
  77. package/src/testing/artifacts.test.ts +22 -22
  78. package/src/testing/query-promts.ts +5 -5
  79. package/src/testing/query.test.ts +17 -19
  80. package/src/testing/test-data.ts +78 -71
  81. package/src/testing/test-schema.ts +28 -29
  82. package/dist/lib/browser/chunk-PND5VR6D.mjs.map +0 -7
  83. package/dist/lib/node/chunk-IBOBRBDF.cjs.map +0 -7
  84. package/dist/lib/node-esm/chunk-DCQJOLSR.mjs.map +0 -7
@@ -21,8 +21,7 @@ __export(testing_exports, {
21
21
  AI_SERVICE_ENDPOINT: () => AI_SERVICE_ENDPOINT,
22
22
  Contact: () => Contact,
23
23
  MockDataSource: () => MockDataSource,
24
- ObjectId: () => ObjectId2,
25
- Org: () => Org,
24
+ Organization: () => Organization,
26
25
  Project: () => Project,
27
26
  Task: () => Task,
28
27
  createCypherTool: () => createCypherTool,
@@ -33,7 +32,7 @@ __export(testing_exports, {
33
32
  seedTestData: () => seedTestData
34
33
  });
35
34
  module.exports = __toCommonJS(testing_exports);
36
- var import_chunk_IBOBRBDF = require("../chunk-IBOBRBDF.cjs");
35
+ var import_chunk_CI5Q7FBG = require("../chunk-CI5Q7FBG.cjs");
37
36
  var import_effect = require("effect");
38
37
  var import_artifact = require("@dxos/artifact");
39
38
  var import_echo_schema = require("@dxos/echo-schema");
@@ -164,10 +163,10 @@ var createLogger = ({ stream, filter, onImage } = {}) => {
164
163
  };
165
164
  };
166
165
  var createTestOllamaClient = (options) => {
167
- return new import_chunk_IBOBRBDF.OllamaClient({
166
+ return new import_chunk_CI5Q7FBG.OllamaClient({
168
167
  tools: options?.tools,
169
168
  overrides: {
170
- model: import_chunk_IBOBRBDF.DEFAULT_OLLAMA_MODEL,
169
+ model: import_chunk_CI5Q7FBG.DEFAULT_OLLAMA_MODEL,
171
170
  temperature: 0
172
171
  }
173
172
  });
@@ -213,7 +212,7 @@ ${createSystemPrompt(schemaTypes)}` : ""),
213
212
  S: void 0,
214
213
  C: (f, a) => f(...a)
215
214
  });
216
- const results = await (0, import_chunk_IBOBRBDF.executeQuery)(dataSource, query);
215
+ const results = await (0, import_chunk_CI5Q7FBG.executeQuery)(dataSource, query);
217
216
  (0, import_log.log)("query complete", {
218
217
  results
219
218
  }, {
@@ -234,13 +233,13 @@ ${createSystemPrompt(schemaTypes)}` : ""),
234
233
  }
235
234
  }
236
235
  });
237
- var createSystemPrompt = (schemaTypes) => import_chunk_IBOBRBDF.trim`
236
+ var createSystemPrompt = (schemaTypes) => import_chunk_CI5Q7FBG.trim`
238
237
  You have access to ECHO graph database. You can query the database to get data to satisfy user prompts.
239
238
 
240
239
  Database schema is defined in pseud-cypher syntax. The schema is:
241
240
 
242
241
  <schema>
243
- ${(0, import_chunk_IBOBRBDF.formatJsonSchemaForLLM)(schemaTypes.map((schema) => (0, import_echo_schema.toJsonSchema)(schema)))}
242
+ ${(0, import_chunk_CI5Q7FBG.formatJsonSchemaForLLM)(schemaTypes.map((schema) => (0, import_echo_schema.toJsonSchema)(schema)))}
244
243
  <schema>
245
244
 
246
245
  Before replying always think step-by-step on how to proceed.
@@ -254,91 +253,91 @@ var createSystemPrompt = (schemaTypes) => import_chunk_IBOBRBDF.trim`
254
253
  `;
255
254
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/experimental/assistant/src/testing/test-data.ts";
256
255
  var seedTestData = (db) => {
257
- const contactRich = db.add((0, import_live_object.create)(Contact, {
256
+ const contactRich = db.add((0, import_live_object.live)(Contact, {
258
257
  name: "Rich"
259
258
  }));
260
- const contactJosiah = db.add((0, import_live_object.create)(Contact, {
259
+ const contactJosiah = db.add((0, import_live_object.live)(Contact, {
261
260
  name: "Josiah"
262
261
  }));
263
- const contactDima = db.add((0, import_live_object.create)(Contact, {
262
+ const contactDima = db.add((0, import_live_object.live)(Contact, {
264
263
  name: "Dima"
265
264
  }));
266
- const contactFred = db.add((0, import_live_object.create)(Contact, {
265
+ const contactFred = db.add((0, import_live_object.live)(Contact, {
267
266
  name: "Fred"
268
267
  }));
269
- const projectComposer = db.add((0, import_live_object.create)(Project, {
268
+ const projectComposer = db.add((0, import_live_object.live)(Project, {
270
269
  name: "Composer"
271
270
  }));
272
- const projectEcho = db.add((0, import_live_object.create)(Project, {
271
+ const projectEcho = db.add((0, import_live_object.live)(Project, {
273
272
  name: "ECHO"
274
273
  }));
275
- const projectDoodles = db.add((0, import_live_object.create)(Project, {
274
+ const projectDoodles = db.add((0, import_live_object.live)(Project, {
276
275
  name: "Doodles"
277
276
  }));
278
- const _taskComposer1 = db.add((0, import_live_object.create)(Task, {
277
+ const _taskComposer1 = db.add((0, import_live_object.live)(Task, {
279
278
  name: "Optimize startup performance",
280
- project: (0, import_live_object.makeRef)(projectComposer),
281
- assignee: (0, import_live_object.makeRef)(contactJosiah)
279
+ project: import_echo_schema2.Ref.make(projectComposer),
280
+ assignee: import_echo_schema2.Ref.make(contactJosiah)
282
281
  }));
283
- const _taskComposer2 = db.add((0, import_live_object.create)(Task, {
282
+ const _taskComposer2 = db.add((0, import_live_object.live)(Task, {
284
283
  name: "Create form builder",
285
- project: (0, import_live_object.makeRef)(projectComposer),
286
- assignee: (0, import_live_object.makeRef)(contactRich)
284
+ project: import_echo_schema2.Ref.make(projectComposer),
285
+ assignee: import_echo_schema2.Ref.make(contactRich)
287
286
  }));
288
- const _taskComposer3 = db.add((0, import_live_object.create)(Task, {
287
+ const _taskComposer3 = db.add((0, import_live_object.live)(Task, {
289
288
  name: "Add support for custom themes",
290
- project: (0, import_live_object.makeRef)(projectComposer),
291
- assignee: (0, import_live_object.makeRef)(contactJosiah)
289
+ project: import_echo_schema2.Ref.make(projectComposer),
290
+ assignee: import_echo_schema2.Ref.make(contactJosiah)
292
291
  }));
293
- const _taskComposer5 = db.add((0, import_live_object.create)(Task, {
292
+ const _taskComposer5 = db.add((0, import_live_object.live)(Task, {
294
293
  name: "Implement community plugin",
295
- project: (0, import_live_object.makeRef)(projectComposer),
296
- assignee: (0, import_live_object.makeRef)(contactFred)
294
+ project: import_echo_schema2.Ref.make(projectComposer),
295
+ assignee: import_echo_schema2.Ref.make(contactFred)
297
296
  }));
298
- const _taskComposer4 = db.add((0, import_live_object.create)(Task, {
297
+ const _taskComposer4 = db.add((0, import_live_object.live)(Task, {
299
298
  name: "Implement dark mode",
300
- project: (0, import_live_object.makeRef)(projectComposer),
301
- assignee: (0, import_live_object.makeRef)(contactRich)
299
+ project: import_echo_schema2.Ref.make(projectComposer),
300
+ assignee: import_echo_schema2.Ref.make(contactRich)
302
301
  }));
303
- const _taskEcho1 = db.add((0, import_live_object.create)(Task, {
302
+ const _taskEcho1 = db.add((0, import_live_object.live)(Task, {
304
303
  name: "Implement cypher query engine",
305
- project: (0, import_live_object.makeRef)(projectEcho),
306
- assignee: (0, import_live_object.makeRef)(contactDima)
304
+ project: import_echo_schema2.Ref.make(projectEcho),
305
+ assignee: import_echo_schema2.Ref.make(contactDima)
307
306
  }));
308
- const _taskEcho2 = db.add((0, import_live_object.create)(Task, {
307
+ const _taskEcho2 = db.add((0, import_live_object.live)(Task, {
309
308
  name: "Add schema editor",
310
- project: (0, import_live_object.makeRef)(projectEcho),
311
- assignee: (0, import_live_object.makeRef)(contactRich)
309
+ project: import_echo_schema2.Ref.make(projectEcho),
310
+ assignee: import_echo_schema2.Ref.make(contactRich)
312
311
  }));
313
- const _taskDoodles1 = db.add((0, import_live_object.create)(Task, {
312
+ const _taskDoodles1 = db.add((0, import_live_object.live)(Task, {
314
313
  name: "Add support for custom themes",
315
- project: (0, import_live_object.makeRef)(projectDoodles),
316
- assignee: (0, import_live_object.makeRef)(contactFred)
314
+ project: import_echo_schema2.Ref.make(projectDoodles),
315
+ assignee: import_echo_schema2.Ref.make(contactFred)
317
316
  }));
318
- const _taskDoodles2 = db.add((0, import_live_object.create)(Task, {
317
+ const _taskDoodles2 = db.add((0, import_live_object.live)(Task, {
319
318
  name: "Implement dark mode",
320
- project: (0, import_live_object.makeRef)(projectDoodles),
321
- assignee: (0, import_live_object.makeRef)(contactJosiah)
319
+ project: import_echo_schema2.Ref.make(projectDoodles),
320
+ assignee: import_echo_schema2.Ref.make(contactJosiah)
322
321
  }));
323
- const _orgDxos = db.add((0, import_live_object.create)(Org, {
322
+ const _orgDxos = db.add((0, import_live_object.live)(Organization, {
324
323
  name: "DXOS",
325
324
  employees: [
326
- (0, import_live_object.makeRef)(contactRich),
327
- (0, import_live_object.makeRef)(contactJosiah),
328
- (0, import_live_object.makeRef)(contactDima)
325
+ import_echo_schema2.Ref.make(contactRich),
326
+ import_echo_schema2.Ref.make(contactJosiah),
327
+ import_echo_schema2.Ref.make(contactDima)
329
328
  ],
330
329
  projects: [
331
- (0, import_live_object.makeRef)(projectEcho)
330
+ import_echo_schema2.Ref.make(projectEcho)
332
331
  ]
333
332
  }));
334
- const _orgBraneframe = db.add((0, import_live_object.create)(Org, {
333
+ const _orgBraneframe = db.add((0, import_live_object.live)(Organization, {
335
334
  name: "Braneframe",
336
335
  employees: [
337
- (0, import_live_object.makeRef)(contactJosiah),
338
- (0, import_live_object.makeRef)(contactRich)
336
+ import_echo_schema2.Ref.make(contactJosiah),
337
+ import_echo_schema2.Ref.make(contactRich)
339
338
  ],
340
339
  projects: [
341
- (0, import_live_object.makeRef)(projectComposer)
340
+ import_echo_schema2.Ref.make(projectComposer)
342
341
  ]
343
342
  }));
344
343
  };
@@ -375,78 +374,78 @@ var createTestData = () => {
375
374
  const _taskComposer1 = dataSource.add(Task, {
376
375
  id: import_echo_schema2.ObjectId.random(),
377
376
  name: "Optimize startup performance",
378
- project: (0, import_live_object.makeRef)(projectComposer),
379
- assignee: (0, import_live_object.makeRef)(contactJosiah)
377
+ project: import_echo_schema2.Ref.make(projectComposer),
378
+ assignee: import_echo_schema2.Ref.make(contactJosiah)
380
379
  });
381
380
  const _taskComposer2 = dataSource.add(Task, {
382
381
  id: import_echo_schema2.ObjectId.random(),
383
382
  name: "Create form builder",
384
- project: (0, import_live_object.makeRef)(projectComposer),
385
- assignee: (0, import_live_object.makeRef)(contactRich)
383
+ project: import_echo_schema2.Ref.make(projectComposer),
384
+ assignee: import_echo_schema2.Ref.make(contactRich)
386
385
  });
387
386
  const _taskComposer3 = dataSource.add(Task, {
388
387
  id: import_echo_schema2.ObjectId.random(),
389
388
  name: "Add support for custom themes",
390
- project: (0, import_live_object.makeRef)(projectComposer),
391
- assignee: (0, import_live_object.makeRef)(contactJosiah)
389
+ project: import_echo_schema2.Ref.make(projectComposer),
390
+ assignee: import_echo_schema2.Ref.make(contactJosiah)
392
391
  });
393
392
  const _taskComposer5 = dataSource.add(Task, {
394
393
  id: import_echo_schema2.ObjectId.random(),
395
394
  name: "Implement community plugin",
396
- project: (0, import_live_object.makeRef)(projectComposer),
397
- assignee: (0, import_live_object.makeRef)(contactFred)
395
+ project: import_echo_schema2.Ref.make(projectComposer),
396
+ assignee: import_echo_schema2.Ref.make(contactFred)
398
397
  });
399
398
  const _taskComposer4 = dataSource.add(Task, {
400
399
  id: import_echo_schema2.ObjectId.random(),
401
400
  name: "Implement dark mode",
402
- project: (0, import_live_object.makeRef)(projectComposer),
403
- assignee: (0, import_live_object.makeRef)(contactRich)
401
+ project: import_echo_schema2.Ref.make(projectComposer),
402
+ assignee: import_echo_schema2.Ref.make(contactRich)
404
403
  });
405
404
  const _taskEcho1 = dataSource.add(Task, {
406
405
  id: import_echo_schema2.ObjectId.random(),
407
406
  name: "Implement cypher query engine",
408
- project: (0, import_live_object.makeRef)(projectEcho),
409
- assignee: (0, import_live_object.makeRef)(contactDima)
407
+ project: import_echo_schema2.Ref.make(projectEcho),
408
+ assignee: import_echo_schema2.Ref.make(contactDima)
410
409
  });
411
410
  const _taskEcho2 = dataSource.add(Task, {
412
411
  id: import_echo_schema2.ObjectId.random(),
413
412
  name: "Add schema editor",
414
- project: (0, import_live_object.makeRef)(projectEcho),
415
- assignee: (0, import_live_object.makeRef)(contactRich)
413
+ project: import_echo_schema2.Ref.make(projectEcho),
414
+ assignee: import_echo_schema2.Ref.make(contactRich)
416
415
  });
417
416
  const _taskDoodles1 = dataSource.add(Task, {
418
417
  id: import_echo_schema2.ObjectId.random(),
419
418
  name: "Add support for custom themes",
420
- project: (0, import_live_object.makeRef)(projectDoodles),
421
- assignee: (0, import_live_object.makeRef)(contactFred)
419
+ project: import_echo_schema2.Ref.make(projectDoodles),
420
+ assignee: import_echo_schema2.Ref.make(contactFred)
422
421
  });
423
422
  const _taskDoodles2 = dataSource.add(Task, {
424
423
  id: import_echo_schema2.ObjectId.random(),
425
424
  name: "Implement dark mode",
426
- project: (0, import_live_object.makeRef)(projectDoodles),
427
- assignee: (0, import_live_object.makeRef)(contactJosiah)
425
+ project: import_echo_schema2.Ref.make(projectDoodles),
426
+ assignee: import_echo_schema2.Ref.make(contactJosiah)
428
427
  });
429
- const _orgDxos = dataSource.add(Org, {
428
+ const _orgDxos = dataSource.add(Organization, {
430
429
  id: import_echo_schema2.ObjectId.random(),
431
430
  name: "DXOS",
432
431
  employees: [
433
- (0, import_live_object.makeRef)(contactRich),
434
- (0, import_live_object.makeRef)(contactJosiah),
435
- (0, import_live_object.makeRef)(contactDima)
432
+ import_echo_schema2.Ref.make(contactRich),
433
+ import_echo_schema2.Ref.make(contactJosiah),
434
+ import_echo_schema2.Ref.make(contactDima)
436
435
  ],
437
436
  projects: [
438
- (0, import_live_object.makeRef)(projectEcho)
437
+ import_echo_schema2.Ref.make(projectEcho)
439
438
  ]
440
439
  });
441
- const _orgBraneframe = dataSource.add(Org, {
440
+ const _orgBraneframe = dataSource.add(Organization, {
442
441
  id: import_echo_schema2.ObjectId.random(),
443
442
  name: "Braneframe",
444
443
  employees: [
445
- (0, import_live_object.makeRef)(contactJosiah),
446
- (0, import_live_object.makeRef)(contactRich)
444
+ import_echo_schema2.Ref.make(contactJosiah),
445
+ import_echo_schema2.Ref.make(contactRich)
447
446
  ],
448
447
  projects: [
449
- (0, import_live_object.makeRef)(projectComposer)
448
+ import_echo_schema2.Ref.make(projectComposer)
450
449
  ]
451
450
  });
452
451
  dataSource.computeGraph();
@@ -468,7 +467,7 @@ var MockDataSource = class {
468
467
  add(schema, data) {
469
468
  (0, import_invariant.invariant)(typeof data.id === "string", "Data must have an id", {
470
469
  F: __dxlog_file2,
471
- L: 277,
470
+ L: 284,
472
471
  S: this,
473
472
  A: [
474
473
  "typeof data.id === 'string'",
@@ -498,7 +497,7 @@ var MockDataSource = class {
498
497
  this.nodes.push({
499
498
  kind: "node",
500
499
  id: object.id,
501
- label: (0, import_chunk_IBOBRBDF.formatNodeLabel)(object.typeDxn),
500
+ label: (0, import_chunk_CI5Q7FBG.formatNodeLabel)(object.typeDxn),
502
501
  properties: object.data
503
502
  });
504
503
  }
@@ -507,7 +506,7 @@ var MockDataSource = class {
507
506
  const typenameDxn = schema.$id ?? (0, import_debug.raise)(new Error("Schema must have $id"));
508
507
  for (const [name, propSchema] of Object.entries(schema.properties)) {
509
508
  if (propSchema.$id === import_echo_schema2.JSON_SCHEMA_ECHO_REF_ID) {
510
- const label = (0, import_chunk_IBOBRBDF.formatInferredRelationshipLabel)(typenameDxn, name);
509
+ const label = (0, import_chunk_CI5Q7FBG.formatInferredRelationshipLabel)(typenameDxn, name);
511
510
  const source = this.nodes.find((node) => node.id === object.id);
512
511
  if (!source) {
513
512
  continue;
@@ -526,7 +525,7 @@ var MockDataSource = class {
526
525
  target
527
526
  });
528
527
  } else if (propSchema.type === "array" && propSchema.items && typeof propSchema.items === "object" && "$id" in propSchema.items && propSchema.items.$id === import_echo_schema2.JSON_SCHEMA_ECHO_REF_ID) {
529
- const label = (0, import_chunk_IBOBRBDF.formatInferredRelationshipLabel)(typenameDxn, name);
528
+ const label = (0, import_chunk_CI5Q7FBG.formatInferredRelationshipLabel)(typenameDxn, name);
530
529
  const source = this.nodes.find((node) => node.id === object.id);
531
530
  if (!source) {
532
531
  continue;
@@ -550,11 +549,8 @@ var MockDataSource = class {
550
549
  }
551
550
  }
552
551
  };
553
- var ObjectId2 = import_effect2.Schema.String.annotations({
554
- description: "The unique object identifier."
555
- });
556
552
  var Contact = import_effect2.Schema.Struct({
557
- id: ObjectId2,
553
+ id: import_echo_schema3.ObjectId,
558
554
  name: import_effect2.Schema.String.annotations({
559
555
  description: "The name of the person."
560
556
  }),
@@ -570,7 +566,7 @@ var Contact = import_effect2.Schema.Struct({
570
566
  description: "Contact information."
571
567
  });
572
568
  var Project = import_effect2.Schema.Struct({
573
- id: ObjectId2,
569
+ id: import_echo_schema3.ObjectId,
574
570
  name: import_effect2.Schema.String.annotations({
575
571
  description: "The name of the project."
576
572
  }),
@@ -586,7 +582,7 @@ var Project = import_effect2.Schema.Struct({
586
582
  description: "Contact information."
587
583
  });
588
584
  var Task = import_effect2.Schema.Struct({
589
- id: ObjectId2,
585
+ id: import_echo_schema3.ObjectId,
590
586
  name: import_effect2.Schema.String.annotations({
591
587
  description: "The name of the task."
592
588
  }),
@@ -603,8 +599,8 @@ var Task = import_effect2.Schema.Struct({
603
599
  },
604
600
  description: "Contact information."
605
601
  });
606
- var Org = import_effect2.Schema.Struct({
607
- id: ObjectId2,
602
+ var Organization = import_effect2.Schema.Struct({
603
+ id: import_echo_schema3.ObjectId,
608
604
  name: import_effect2.Schema.String.annotations({
609
605
  description: "The name of the organization."
610
606
  }),
@@ -613,7 +609,7 @@ var Org = import_effect2.Schema.Struct({
613
609
  }).pipe(import_effect2.Schema.mutable).annotations({
614
610
  [import_echo_schema3.TypeAnnotationId]: {
615
611
  kind: import_echo_schema3.EntityKind.Object,
616
- typename: "example.com/type/Org",
612
+ typename: "example.com/type/Organization",
617
613
  version: "0.1.0"
618
614
  },
619
615
  description: "Contact information."
@@ -623,8 +619,7 @@ var Org = import_effect2.Schema.Struct({
623
619
  AI_SERVICE_ENDPOINT,
624
620
  Contact,
625
621
  MockDataSource,
626
- ObjectId,
627
- Org,
622
+ Organization,
628
623
  Project,
629
624
  Task,
630
625
  createCypherTool,
@@ -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 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 { JSON_SCHEMA_ECHO_REF_ID, ObjectId, toJsonSchema, type JsonSchemaType, type Ref } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { create, makeRef } from '@dxos/live-object';\n\nimport {\n type DataSource,\n type Node,\n type Relationship,\n formatInferredRelationshipLabel,\n formatNodeLabel,\n} from '../cypher';\nimport { Contact, Org, Project, Task } from '../testing';\n\nexport const seedTestData = (db: EchoDatabase) => {\n const contactRich = db.add(\n create(Contact, {\n name: 'Rich',\n }),\n );\n const contactJosiah = db.add(\n create(Contact, {\n name: 'Josiah',\n }),\n );\n const contactDima = db.add(\n create(Contact, {\n name: 'Dima',\n }),\n );\n const contactFred = db.add(\n create(Contact, {\n name: 'Fred',\n }),\n );\n\n const projectComposer = db.add(\n create(Project, {\n name: 'Composer',\n }),\n );\n const projectEcho = db.add(\n create(Project, {\n name: 'ECHO',\n }),\n );\n const projectDoodles = db.add(\n create(Project, {\n name: 'Doodles',\n }),\n );\n\n const _taskComposer1 = db.add(\n create(Task, {\n name: 'Optimize startup performance',\n project: makeRef(projectComposer),\n assignee: makeRef(contactJosiah),\n }),\n );\n const _taskComposer2 = db.add(\n create(Task, {\n name: 'Create form builder',\n project: makeRef(projectComposer),\n assignee: makeRef(contactRich),\n }),\n );\n const _taskComposer3 = db.add(\n create(Task, {\n name: 'Add support for custom themes',\n project: makeRef(projectComposer),\n assignee: makeRef(contactJosiah),\n }),\n );\n const _taskComposer5 = db.add(\n create(Task, {\n name: 'Implement community plugin',\n project: makeRef(projectComposer),\n assignee: makeRef(contactFred),\n }),\n );\n const _taskComposer4 = db.add(\n create(Task, {\n name: 'Implement dark mode',\n project: makeRef(projectComposer),\n assignee: makeRef(contactRich),\n }),\n );\n const _taskEcho1 = db.add(\n create(Task, {\n name: 'Implement cypher query engine',\n project: makeRef(projectEcho),\n assignee: makeRef(contactDima),\n }),\n );\n const _taskEcho2 = db.add(\n create(Task, {\n name: 'Add schema editor',\n project: makeRef(projectEcho),\n assignee: makeRef(contactRich),\n }),\n );\n const _taskDoodles1 = db.add(\n create(Task, {\n name: 'Add support for custom themes',\n project: makeRef(projectDoodles),\n assignee: makeRef(contactFred),\n }),\n );\n const _taskDoodles2 = db.add(\n create(Task, {\n name: 'Implement dark mode',\n project: makeRef(projectDoodles),\n assignee: makeRef(contactJosiah),\n }),\n );\n\n const _orgDxos = db.add(\n create(Org, {\n name: 'DXOS',\n employees: [makeRef(contactRich), makeRef(contactJosiah), makeRef(contactDima)],\n projects: [makeRef(projectEcho)],\n }),\n );\n const _orgBraneframe = db.add(\n create(Org, {\n name: 'Braneframe',\n employees: [makeRef(contactJosiah), makeRef(contactRich)],\n projects: [makeRef(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: makeRef(projectComposer),\n assignee: makeRef(contactJosiah),\n });\n const _taskComposer2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Create form builder',\n project: makeRef(projectComposer),\n assignee: makeRef(contactRich),\n });\n const _taskComposer3 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add support for custom themes',\n project: makeRef(projectComposer),\n assignee: makeRef(contactJosiah),\n });\n const _taskComposer5 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement community plugin',\n project: makeRef(projectComposer),\n assignee: makeRef(contactFred),\n });\n const _taskComposer4 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement dark mode',\n project: makeRef(projectComposer),\n assignee: makeRef(contactRich),\n });\n const _taskEcho1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement cypher query engine',\n project: makeRef(projectEcho),\n assignee: makeRef(contactDima),\n });\n const _taskEcho2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add schema editor',\n project: makeRef(projectEcho),\n assignee: makeRef(contactRich),\n });\n const _taskDoodles1 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Add support for custom themes',\n project: makeRef(projectDoodles),\n assignee: makeRef(contactFred),\n });\n const _taskDoodles2 = dataSource.add(Task, {\n id: ObjectId.random(),\n name: 'Implement dark mode',\n project: makeRef(projectDoodles),\n assignee: makeRef(contactJosiah),\n });\n\n const _orgDxos = dataSource.add(Org, {\n id: ObjectId.random(),\n name: 'DXOS',\n employees: [makeRef(contactRich), makeRef(contactJosiah), makeRef(contactDima)],\n projects: [makeRef(projectEcho)],\n });\n const _orgBraneframe = dataSource.add(Org, {\n id: ObjectId.random(),\n name: 'Braneframe',\n employees: [makeRef(contactJosiah), makeRef(contactRich)],\n projects: [makeRef(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 Org = 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/Org',\n version: '0.1.0',\n },\n description: 'Contact information.',\n });\nexport interface Org extends S.Schema.Type<typeof Org> {}\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", "create", "Contact", "contactJosiah", "contactDima", "contactFred", "projectComposer", "Project", "projectEcho", "projectDoodles", "_taskComposer1", "Task", "project", "makeRef", "assignee", "_taskComposer2", "_taskComposer3", "_taskComposer5", "_taskComposer4", "_taskEcho1", "_taskEcho2", "_taskDoodles1", "_taskDoodles2", "_orgDxos", "Org", "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 } 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"]
7
7
  }