@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.
- package/dist/lib/browser/{chunk-PND5VR6D.mjs → chunk-OLO6SVOL.mjs} +91 -84
- package/dist/lib/browser/chunk-OLO6SVOL.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +276 -154
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +98 -102
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-IBOBRBDF.cjs → chunk-CI5Q7FBG.cjs} +106 -98
- package/dist/lib/node/chunk-CI5Q7FBG.cjs.map +7 -0
- package/dist/lib/node/index.cjs +302 -183
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +88 -93
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/node-esm/{chunk-DCQJOLSR.mjs → chunk-Y3SYOFFJ.mjs} +91 -84
- package/dist/lib/node-esm/chunk-Y3SYOFFJ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +276 -154
- 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 +98 -102
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/ai-service/edge-client.d.ts +4 -5
- package/dist/types/src/ai-service/edge-client.d.ts.map +1 -1
- package/dist/types/src/ai-service/message-collector.d.ts +0 -6
- package/dist/types/src/ai-service/message-collector.d.ts.map +1 -1
- package/dist/types/src/ai-service/ollama-client.d.ts +6 -2
- package/dist/types/src/ai-service/ollama-client.d.ts.map +1 -1
- package/dist/types/src/ai-service/parser.d.ts +0 -3
- package/dist/types/src/ai-service/parser.d.ts.map +1 -1
- package/dist/types/src/ai-service/service.d.ts +18 -2
- package/dist/types/src/ai-service/service.d.ts.map +1 -1
- package/dist/types/src/ai-service/testing/mock.d.ts +6 -2
- package/dist/types/src/ai-service/testing/mock.d.ts.map +1 -1
- package/dist/types/src/ai-service/types.d.ts +144 -101
- package/dist/types/src/ai-service/types.d.ts.map +1 -1
- package/dist/types/src/conversation/conversation.d.ts +0 -3
- package/dist/types/src/conversation/conversation.d.ts.map +1 -1
- package/dist/types/src/conversation/types.d.ts +11 -12
- package/dist/types/src/conversation/types.d.ts.map +1 -1
- package/dist/types/src/cypher/echo-data-source.d.ts.map +1 -1
- package/dist/types/src/session/index.d.ts +1 -0
- package/dist/types/src/session/index.d.ts.map +1 -1
- package/dist/types/src/session/session.d.ts +32 -13
- package/dist/types/src/session/session.d.ts.map +1 -1
- package/dist/types/src/session/version-pin.d.ts +17 -0
- package/dist/types/src/session/version-pin.d.ts.map +1 -0
- package/dist/types/src/session/version-pin.test.d.ts +2 -0
- package/dist/types/src/session/version-pin.test.d.ts.map +1 -0
- package/dist/types/src/testing/query-promts.d.ts +3 -3
- package/dist/types/src/testing/query-promts.d.ts.map +1 -1
- package/dist/types/src/testing/test-data.d.ts +4 -4
- package/dist/types/src/testing/test-data.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +25 -23
- package/dist/types/src/testing/test-schema.d.ts.map +1 -1
- package/package.json +15 -14
- package/src/ai-service/client.test.ts +55 -73
- package/src/ai-service/edge-client.ts +13 -20
- package/src/ai-service/ollama-client.ts +16 -9
- package/src/ai-service/parser.ts +13 -2
- package/src/ai-service/service.ts +19 -3
- package/src/ai-service/testing/mock.ts +9 -1
- package/src/ai-service/types.ts +24 -15
- package/src/bin/chat.ts +3 -3
- package/src/conversation/conversation.test.ts +3 -3
- package/src/conversation/conversation.ts +5 -11
- package/src/conversation/types.ts +11 -14
- package/src/cypher/combinators.test.ts +4 -4
- package/src/cypher/echo-data-source.ts +7 -6
- package/src/cypher/execution-plan.test.ts +1 -1
- package/src/cypher/query-executor.test.ts +1 -1
- package/src/cypher/schema.test.ts +3 -3
- package/src/session/index.ts +1 -0
- package/src/session/session.test.ts +29 -22
- package/src/session/session.ts +286 -150
- package/src/session/version-pin.test.ts +26 -0
- package/src/session/version-pin.ts +43 -0
- package/src/testing/artifacts.test.ts +22 -22
- package/src/testing/query-promts.ts +5 -5
- package/src/testing/query.test.ts +17 -19
- package/src/testing/test-data.ts +78 -71
- package/src/testing/test-schema.ts +28 -29
- package/dist/lib/browser/chunk-PND5VR6D.mjs.map +0 -7
- package/dist/lib/node/chunk-IBOBRBDF.cjs.map +0 -7
- 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
|
-
|
|
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
|
|
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
|
|
166
|
+
return new import_chunk_CI5Q7FBG.OllamaClient({
|
|
168
167
|
tools: options?.tools,
|
|
169
168
|
overrides: {
|
|
170
|
-
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,
|
|
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) =>
|
|
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,
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
277
|
+
const _taskComposer1 = db.add((0, import_live_object.live)(Task, {
|
|
279
278
|
name: "Optimize startup performance",
|
|
280
|
-
project:
|
|
281
|
-
assignee:
|
|
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.
|
|
282
|
+
const _taskComposer2 = db.add((0, import_live_object.live)(Task, {
|
|
284
283
|
name: "Create form builder",
|
|
285
|
-
project:
|
|
286
|
-
assignee:
|
|
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.
|
|
287
|
+
const _taskComposer3 = db.add((0, import_live_object.live)(Task, {
|
|
289
288
|
name: "Add support for custom themes",
|
|
290
|
-
project:
|
|
291
|
-
assignee:
|
|
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.
|
|
292
|
+
const _taskComposer5 = db.add((0, import_live_object.live)(Task, {
|
|
294
293
|
name: "Implement community plugin",
|
|
295
|
-
project:
|
|
296
|
-
assignee:
|
|
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.
|
|
297
|
+
const _taskComposer4 = db.add((0, import_live_object.live)(Task, {
|
|
299
298
|
name: "Implement dark mode",
|
|
300
|
-
project:
|
|
301
|
-
assignee:
|
|
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.
|
|
302
|
+
const _taskEcho1 = db.add((0, import_live_object.live)(Task, {
|
|
304
303
|
name: "Implement cypher query engine",
|
|
305
|
-
project:
|
|
306
|
-
assignee:
|
|
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.
|
|
307
|
+
const _taskEcho2 = db.add((0, import_live_object.live)(Task, {
|
|
309
308
|
name: "Add schema editor",
|
|
310
|
-
project:
|
|
311
|
-
assignee:
|
|
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.
|
|
312
|
+
const _taskDoodles1 = db.add((0, import_live_object.live)(Task, {
|
|
314
313
|
name: "Add support for custom themes",
|
|
315
|
-
project:
|
|
316
|
-
assignee:
|
|
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.
|
|
317
|
+
const _taskDoodles2 = db.add((0, import_live_object.live)(Task, {
|
|
319
318
|
name: "Implement dark mode",
|
|
320
|
-
project:
|
|
321
|
-
assignee:
|
|
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.
|
|
322
|
+
const _orgDxos = db.add((0, import_live_object.live)(Organization, {
|
|
324
323
|
name: "DXOS",
|
|
325
324
|
employees: [
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
|
|
330
|
+
import_echo_schema2.Ref.make(projectEcho)
|
|
332
331
|
]
|
|
333
332
|
}));
|
|
334
|
-
const _orgBraneframe = db.add((0, import_live_object.
|
|
333
|
+
const _orgBraneframe = db.add((0, import_live_object.live)(Organization, {
|
|
335
334
|
name: "Braneframe",
|
|
336
335
|
employees: [
|
|
337
|
-
|
|
338
|
-
|
|
336
|
+
import_echo_schema2.Ref.make(contactJosiah),
|
|
337
|
+
import_echo_schema2.Ref.make(contactRich)
|
|
339
338
|
],
|
|
340
339
|
projects: [
|
|
341
|
-
|
|
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:
|
|
379
|
-
assignee:
|
|
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:
|
|
385
|
-
assignee:
|
|
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:
|
|
391
|
-
assignee:
|
|
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:
|
|
397
|
-
assignee:
|
|
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:
|
|
403
|
-
assignee:
|
|
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:
|
|
409
|
-
assignee:
|
|
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:
|
|
415
|
-
assignee:
|
|
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:
|
|
421
|
-
assignee:
|
|
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:
|
|
427
|
-
assignee:
|
|
425
|
+
project: import_echo_schema2.Ref.make(projectDoodles),
|
|
426
|
+
assignee: import_echo_schema2.Ref.make(contactJosiah)
|
|
428
427
|
});
|
|
429
|
-
const _orgDxos = dataSource.add(
|
|
428
|
+
const _orgDxos = dataSource.add(Organization, {
|
|
430
429
|
id: import_echo_schema2.ObjectId.random(),
|
|
431
430
|
name: "DXOS",
|
|
432
431
|
employees: [
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
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
|
-
|
|
437
|
+
import_echo_schema2.Ref.make(projectEcho)
|
|
439
438
|
]
|
|
440
439
|
});
|
|
441
|
-
const _orgBraneframe = dataSource.add(
|
|
440
|
+
const _orgBraneframe = dataSource.add(Organization, {
|
|
442
441
|
id: import_echo_schema2.ObjectId.random(),
|
|
443
442
|
name: "Braneframe",
|
|
444
443
|
employees: [
|
|
445
|
-
|
|
446
|
-
|
|
444
|
+
import_echo_schema2.Ref.make(contactJosiah),
|
|
445
|
+
import_echo_schema2.Ref.make(contactRich)
|
|
447
446
|
],
|
|
448
447
|
projects: [
|
|
449
|
-
|
|
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:
|
|
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,
|
|
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,
|
|
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,
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
607
|
-
id:
|
|
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/
|
|
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
|
-
|
|
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", "
|
|
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
|
}
|