@dxos/assistant 0.8.2-main.fbd8ed0 → 0.8.2-staging.4d6ad0f
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/index.mjs +1983 -64
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +1976 -63
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +1984 -64
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/{src/bin → bin}/chat.d.ts.map +1 -1
- package/dist/types/src/blueprint/blueprint.d.ts +79 -0
- package/dist/types/src/blueprint/blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprint/blueprint.test.d.ts +2 -0
- package/dist/types/src/blueprint/blueprint.test.d.ts.map +1 -0
- package/dist/types/src/blueprint/index.d.ts +4 -0
- package/dist/types/src/blueprint/index.d.ts.map +1 -0
- package/dist/types/src/blueprint/logger.d.ts +3 -0
- package/dist/types/src/blueprint/logger.d.ts.map +1 -0
- package/dist/types/src/{ai-service/parser.d.ts → blueprint/machine.d.ts} +46 -68
- package/dist/types/src/blueprint/machine.d.ts.map +1 -0
- package/dist/types/src/blueprint/test-data.d.ts +3 -0
- package/dist/types/src/blueprint/test-data.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.d.ts +4 -0
- package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.test.d.ts +2 -0
- package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.test.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-llm-function/index.d.ts +2 -0
- package/dist/types/src/extraction/extraction-llm-function/index.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.d.ts +210 -0
- package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.test.d.ts +2 -0
- package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.test.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-ner-function/index.d.ts +3 -0
- package/dist/types/src/extraction/extraction-ner-function/index.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.d.ts +14 -0
- package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.test.d.ts +2 -0
- package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.test.d.ts.map +1 -0
- package/dist/types/src/extraction/extraction.d.ts +242 -0
- package/dist/types/src/extraction/extraction.d.ts.map +1 -0
- package/dist/types/src/extraction/index.d.ts +5 -0
- package/dist/types/src/extraction/index.d.ts.map +1 -0
- package/dist/types/src/extraction/quotes.d.ts +15 -0
- package/dist/types/src/extraction/quotes.d.ts.map +1 -0
- package/dist/types/src/extraction/quotes.test.d.ts +2 -0
- package/dist/types/src/extraction/quotes.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +4 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/research/exa.d.ts +7 -0
- package/dist/types/src/research/exa.d.ts.map +1 -0
- package/dist/types/src/research/graph.d.ts +39 -0
- package/dist/types/src/research/graph.d.ts.map +1 -0
- package/dist/types/src/research/graph.test.d.ts +2 -0
- package/dist/types/src/research/graph.test.d.ts.map +1 -0
- package/dist/types/src/research/index.d.ts +4 -0
- package/dist/types/src/research/index.d.ts.map +1 -0
- package/dist/types/src/research/research.d.ts +10 -0
- package/dist/types/src/research/research.d.ts.map +1 -0
- package/dist/types/src/research/research.test.d.ts.map +1 -0
- package/dist/types/src/session/index.d.ts +0 -1
- package/dist/types/src/session/index.d.ts.map +1 -1
- package/dist/types/src/session/session.d.ts +47 -22
- package/dist/types/src/session/session.d.ts.map +1 -1
- package/dist/types/src/session/version-pin.d.ts +3 -4
- package/dist/types/src/session/version-pin.d.ts.map +1 -1
- package/dist/types/src/summarization/summarization.test.d.ts +2 -0
- package/dist/types/src/summarization/summarization.test.d.ts.map +1 -0
- package/dist/types/src/testing/exa-search-1748337321991.d.ts +38 -0
- package/dist/types/src/testing/exa-search-1748337321991.d.ts.map +1 -0
- package/dist/types/src/testing/exa-search-1748337331526.d.ts +37 -0
- package/dist/types/src/testing/exa-search-1748337331526.d.ts.map +1 -0
- package/dist/types/src/testing/exa-search-1748337344119.d.ts +58 -0
- package/dist/types/src/testing/exa-search-1748337344119.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +2 -7
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +3 -0
- package/dist/types/src/types.d.ts.map +1 -0
- package/package.json +22 -38
- package/src/blueprint/blueprint.test.ts +142 -0
- package/src/blueprint/blueprint.ts +95 -0
- package/src/blueprint/index.ts +7 -0
- package/src/blueprint/logger.ts +66 -0
- package/src/blueprint/machine.ts +208 -0
- package/src/blueprint/test-data.ts +55 -0
- package/src/extraction/extraction-llm-function/extraction-llm-function.test.ts +95 -0
- package/src/extraction/extraction-llm-function/extraction-llm-function.ts +64 -0
- package/src/extraction/extraction-llm-function/index.ts +5 -0
- package/src/extraction/extraction-llm-function/instructions.tpl +28 -0
- package/src/extraction/extraction-ner-function/extraction-ner-function.test.ts +115 -0
- package/src/extraction/extraction-ner-function/extraction-ner-function.ts +54 -0
- package/src/extraction/extraction-ner-function/index.ts +6 -0
- package/src/extraction/extraction-ner-function/named-entity-recognition.test.ts +94 -0
- package/src/extraction/extraction-ner-function/named-entity-recognition.ts +97 -0
- package/src/extraction/extraction.ts +75 -0
- package/src/extraction/index.ts +8 -0
- package/src/extraction/quotes.test.ts +27 -0
- package/src/extraction/quotes.ts +57 -0
- package/src/index.ts +4 -4
- package/src/research/exa.ts +100 -0
- package/src/research/graph.test.ts +15 -0
- package/src/research/graph.ts +291 -0
- package/src/research/index.ts +7 -0
- package/src/research/instructions-research.tpl +97 -0
- package/src/research/research.test.ts +189 -0
- package/src/research/research.ts +89 -0
- package/src/session/index.ts +0 -1
- package/src/session/session.test.ts +7 -7
- package/src/session/session.ts +46 -19
- package/src/session/version-pin.ts +2 -3
- package/src/summarization/summarization.test.ts +216 -0
- package/src/testing/exa-search-1748337321991.ts +131 -0
- package/src/testing/exa-search-1748337331526.ts +144 -0
- package/src/testing/exa-search-1748337344119.ts +133 -0
- package/src/testing/index.ts +8 -8
- package/src/types.ts +8 -0
- package/src/typings.d.ts +8 -0
- package/dist/lib/browser/chunk-B4HAWUFW.mjs +0 -2786
- package/dist/lib/browser/chunk-B4HAWUFW.mjs.map +0 -7
- package/dist/lib/browser/testing/index.mjs +0 -658
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node/chunk-NOB7CIIC.cjs +0 -2791
- package/dist/lib/node/chunk-NOB7CIIC.cjs.map +0 -7
- package/dist/lib/node/testing/index.cjs +0 -672
- package/dist/lib/node/testing/index.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-SAWYU3V5.mjs +0 -2788
- package/dist/lib/node-esm/chunk-SAWYU3V5.mjs.map +0 -7
- package/dist/lib/node-esm/testing/index.mjs +0 -659
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/ai-service/client.test.d.ts +0 -2
- package/dist/types/src/ai-service/client.test.d.ts.map +0 -1
- package/dist/types/src/ai-service/defs.d.ts +0 -9
- package/dist/types/src/ai-service/defs.d.ts.map +0 -1
- package/dist/types/src/ai-service/edge-client.d.ts +0 -18
- package/dist/types/src/ai-service/edge-client.d.ts.map +0 -1
- package/dist/types/src/ai-service/index.d.ts +0 -10
- package/dist/types/src/ai-service/index.d.ts.map +0 -1
- package/dist/types/src/ai-service/message-collector.d.ts +0 -82
- package/dist/types/src/ai-service/message-collector.d.ts.map +0 -1
- package/dist/types/src/ai-service/ollama-client.d.ts +0 -43
- package/dist/types/src/ai-service/ollama-client.d.ts.map +0 -1
- package/dist/types/src/ai-service/parser.d.ts.map +0 -1
- package/dist/types/src/ai-service/service.d.ts +0 -25
- package/dist/types/src/ai-service/service.d.ts.map +0 -1
- package/dist/types/src/ai-service/stream.d.ts +0 -40
- package/dist/types/src/ai-service/stream.d.ts.map +0 -1
- package/dist/types/src/ai-service/stream.test.d.ts +0 -2
- package/dist/types/src/ai-service/stream.test.d.ts.map +0 -1
- package/dist/types/src/ai-service/testing/index.d.ts +0 -3
- package/dist/types/src/ai-service/testing/index.d.ts.map +0 -1
- package/dist/types/src/ai-service/testing/mock.d.ts +0 -11
- package/dist/types/src/ai-service/testing/mock.d.ts.map +0 -1
- package/dist/types/src/ai-service/testing/test-stream.d.ts +0 -7
- package/dist/types/src/ai-service/testing/test-stream.d.ts.map +0 -1
- package/dist/types/src/ai-service/transform.d.ts +0 -27
- package/dist/types/src/ai-service/transform.d.ts.map +0 -1
- package/dist/types/src/ai-service/types.d.ts +0 -210
- package/dist/types/src/ai-service/types.d.ts.map +0 -1
- package/dist/types/src/ai-service/util/index.d.ts +0 -2
- package/dist/types/src/ai-service/util/index.d.ts.map +0 -1
- package/dist/types/src/ai-service/util/sse.d.ts +0 -39
- package/dist/types/src/ai-service/util/sse.d.ts.map +0 -1
- package/dist/types/src/experimental/conversation/conversation.d.ts +0 -61
- package/dist/types/src/experimental/conversation/conversation.d.ts.map +0 -1
- package/dist/types/src/experimental/conversation/conversation.test.d.ts +0 -2
- package/dist/types/src/experimental/conversation/conversation.test.d.ts.map +0 -1
- package/dist/types/src/experimental/conversation/index.d.ts +0 -2
- package/dist/types/src/experimental/conversation/index.d.ts.map +0 -1
- package/dist/types/src/experimental/conversation/types.d.ts +0 -78
- package/dist/types/src/experimental/conversation/types.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/ast.d.ts +0 -56
- package/dist/types/src/experimental/cypher/ast.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/combinators.d.ts +0 -14
- package/dist/types/src/experimental/cypher/combinators.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/combinators.test.d.ts +0 -2
- package/dist/types/src/experimental/cypher/combinators.test.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/echo-data-source.d.ts +0 -16
- package/dist/types/src/experimental/cypher/echo-data-source.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/execution-plan.d.ts +0 -49
- package/dist/types/src/experimental/cypher/execution-plan.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/execution-plan.test.d.ts +0 -2
- package/dist/types/src/experimental/cypher/execution-plan.test.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/index.d.ts +0 -5
- package/dist/types/src/experimental/cypher/index.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/parjs.d.ts +0 -4
- package/dist/types/src/experimental/cypher/parjs.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/parser.d.ts +0 -6
- package/dist/types/src/experimental/cypher/parser.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/query-executor.d.ts +0 -26
- package/dist/types/src/experimental/cypher/query-executor.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/query-executor.test.d.ts +0 -2
- package/dist/types/src/experimental/cypher/query-executor.test.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/schema.d.ts +0 -12
- package/dist/types/src/experimental/cypher/schema.d.ts.map +0 -1
- package/dist/types/src/experimental/cypher/schema.test.d.ts +0 -2
- package/dist/types/src/experimental/cypher/schema.test.d.ts.map +0 -1
- package/dist/types/src/experimental/index.d.ts +0 -3
- package/dist/types/src/experimental/index.d.ts.map +0 -1
- package/dist/types/src/experimental/ner/ner.test.d.ts +0 -2
- package/dist/types/src/experimental/ner/ner.test.d.ts.map +0 -1
- package/dist/types/src/experimental/research/exa.d.ts +0 -6
- package/dist/types/src/experimental/research/exa.d.ts.map +0 -1
- package/dist/types/src/experimental/research/research.test.d.ts.map +0 -1
- package/dist/types/src/session/tools.d.ts +0 -18
- package/dist/types/src/session/tools.d.ts.map +0 -1
- package/dist/types/src/testing/artifacts.test.d.ts +0 -1
- package/dist/types/src/testing/artifacts.test.d.ts.map +0 -1
- package/dist/types/src/testing/data.d.ts +0 -2
- package/dist/types/src/testing/data.d.ts.map +0 -1
- package/dist/types/src/testing/defs.d.ts +0 -5
- package/dist/types/src/testing/defs.d.ts.map +0 -1
- package/dist/types/src/testing/logger.d.ts +0 -12
- package/dist/types/src/testing/logger.d.ts.map +0 -1
- package/dist/types/src/testing/object-extraction.test.d.ts +0 -1
- package/dist/types/src/testing/object-extraction.test.d.ts.map +0 -1
- package/dist/types/src/testing/ollama.d.ts +0 -6
- package/dist/types/src/testing/ollama.d.ts.map +0 -1
- package/dist/types/src/testing/printer.d.ts +0 -6
- package/dist/types/src/testing/printer.d.ts.map +0 -1
- package/dist/types/src/testing/query-promts.d.ts +0 -5
- package/dist/types/src/testing/query-promts.d.ts.map +0 -1
- package/dist/types/src/testing/query.test.d.ts +0 -2
- package/dist/types/src/testing/query.test.d.ts.map +0 -1
- package/dist/types/src/testing/test-data.d.ts +0 -29
- package/dist/types/src/testing/test-data.d.ts.map +0 -1
- package/dist/types/src/testing/test-schema.d.ts +0 -52
- package/dist/types/src/testing/test-schema.d.ts.map +0 -1
- package/dist/types/src/util/index.d.ts +0 -2
- package/dist/types/src/util/index.d.ts.map +0 -1
- package/dist/types/src/util/trim.d.ts +0 -5
- package/dist/types/src/util/trim.d.ts.map +0 -1
- package/src/ai-service/client.test.ts +0 -247
- package/src/ai-service/defs.ts +0 -39
- package/src/ai-service/edge-client.ts +0 -60
- package/src/ai-service/index.ts +0 -13
- package/src/ai-service/message-collector.ts +0 -84
- package/src/ai-service/ollama-client.ts +0 -506
- package/src/ai-service/parser.ts +0 -369
- package/src/ai-service/service.ts +0 -31
- package/src/ai-service/stream.test.ts +0 -125
- package/src/ai-service/stream.ts +0 -118
- package/src/ai-service/testing/index.ts +0 -6
- package/src/ai-service/testing/mock.ts +0 -30
- package/src/ai-service/testing/test-stream.ts +0 -93
- package/src/ai-service/transform.ts +0 -121
- package/src/ai-service/types.ts +0 -112
- package/src/ai-service/util/index.ts +0 -5
- package/src/ai-service/util/sse.ts +0 -341
- package/src/bin/chat.ts +0 -79
- package/src/experimental/conversation/conversation.test.ts +0 -73
- package/src/experimental/conversation/conversation.ts +0 -142
- package/src/experimental/conversation/index.ts +0 -5
- package/src/experimental/conversation/types.ts +0 -126
- package/src/experimental/cypher/ast.ts +0 -75
- package/src/experimental/cypher/combinators.test.ts +0 -137
- package/src/experimental/cypher/combinators.ts +0 -148
- package/src/experimental/cypher/echo-data-source.ts +0 -105
- package/src/experimental/cypher/execution-plan.test.ts +0 -44
- package/src/experimental/cypher/execution-plan.ts +0 -208
- package/src/experimental/cypher/index.ts +0 -8
- package/src/experimental/cypher/parjs-shims.d.ts +0 -10
- package/src/experimental/cypher/parjs.ts +0 -10
- package/src/experimental/cypher/parser.ts +0 -19
- package/src/experimental/cypher/query-executor.test.ts +0 -47
- package/src/experimental/cypher/query-executor.ts +0 -145
- package/src/experimental/cypher/schema.test.ts +0 -17
- package/src/experimental/cypher/schema.ts +0 -86
- package/src/experimental/index.ts +0 -6
- package/src/experimental/ner/ner.test.ts +0 -163
- package/src/experimental/research/exa.ts +0 -38
- package/src/experimental/research/instructions.tpl +0 -64
- package/src/experimental/research/research.test.ts +0 -263
- package/src/session/tools.ts +0 -117
- package/src/testing/artifacts.test.ts +0 -182
- package/src/testing/data.ts +0 -13
- package/src/testing/defs.ts +0 -9
- package/src/testing/logger.ts +0 -129
- package/src/testing/object-extraction.test.ts +0 -71
- package/src/testing/ollama.ts +0 -15
- package/src/testing/printer.ts +0 -41
- package/src/testing/query-promts.ts +0 -75
- package/src/testing/query.test.ts +0 -88
- package/src/testing/test-data.ts +0 -379
- package/src/testing/test-schema.ts +0 -79
- package/src/util/index.ts +0 -5
- package/src/util/trim.ts +0 -15
- package/vendor/parjs-browser.mjs +0 -4
- package/vendor/parjs-default.mjs +0 -8
- /package/dist/types/{src/bin → bin}/chat.d.ts +0 -0
- /package/dist/types/src/{experimental/research → research}/research.test.d.ts +0 -0
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { Option, Schema, SchemaAST } from 'effect';
|
|
6
|
-
import { describe, test } from 'vitest';
|
|
7
|
-
|
|
8
|
-
import { structuredOutputParser } from '@dxos/artifact';
|
|
9
|
-
import { isEncodedReference } from '@dxos/echo-protocol';
|
|
10
|
-
import { create, getSchemaDXN, ObjectId, ReferenceAnnotationId } from '@dxos/echo-schema';
|
|
11
|
-
import { mapAst } from '@dxos/effect';
|
|
12
|
-
import { log } from '@dxos/log';
|
|
13
|
-
import { DataType } from '@dxos/schema';
|
|
14
|
-
import { deepMapValues } from '@dxos/util';
|
|
15
|
-
|
|
16
|
-
import { createExaTool } from './exa';
|
|
17
|
-
import INSTRUCTIONS from './instructions.tpl?raw';
|
|
18
|
-
import { AIServiceEdgeClient, OllamaClient } from '../../ai-service';
|
|
19
|
-
import { AISession } from '../../session';
|
|
20
|
-
import { AI_SERVICE_ENDPOINT, ConsolePrinter } from '../../testing';
|
|
21
|
-
|
|
22
|
-
const EXA_API_KEY = '9c7e17ff-0c85-4cd5-827a-8b489f139e03';
|
|
23
|
-
const REMOTE_AI = true;
|
|
24
|
-
|
|
25
|
-
const aiService = REMOTE_AI
|
|
26
|
-
? new AIServiceEdgeClient({
|
|
27
|
-
endpoint: AI_SERVICE_ENDPOINT.REMOTE,
|
|
28
|
-
})
|
|
29
|
-
: new OllamaClient({
|
|
30
|
-
overrides: {
|
|
31
|
-
model: 'llama3.1:8b',
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
const TYPES = [DataType.Event, DataType.Organization, DataType.Person, DataType.Project, DataType.Task, DataType.Text];
|
|
36
|
-
|
|
37
|
-
describe.skip('Research', () => {
|
|
38
|
-
test('should generate a research report', { timeout: 1000000 }, async () => {
|
|
39
|
-
const searchTool = createExaTool({ apiKey: EXA_API_KEY });
|
|
40
|
-
|
|
41
|
-
const session = new AISession({ operationModel: 'configured' });
|
|
42
|
-
|
|
43
|
-
const printer = new ConsolePrinter();
|
|
44
|
-
session.message.on((message) => printer.printMessage(message));
|
|
45
|
-
session.userMessage.on((message) => printer.printMessage(message));
|
|
46
|
-
session.block.on((block) => printer.printContentBlock(block));
|
|
47
|
-
|
|
48
|
-
// TODO(dmaretskyi): Consider adding this pattern as the "Graph" output mode for the session.
|
|
49
|
-
const outputSchema = createExtractionSchema(TYPES);
|
|
50
|
-
const result = await session.runStructured(outputSchema, {
|
|
51
|
-
client: aiService,
|
|
52
|
-
systemPrompt: INSTRUCTIONS,
|
|
53
|
-
artifacts: [],
|
|
54
|
-
tools: [searchTool],
|
|
55
|
-
generationOptions: {
|
|
56
|
-
model: '@anthropic/claude-3-5-sonnet-20241022',
|
|
57
|
-
},
|
|
58
|
-
history: [],
|
|
59
|
-
prompt: 'Find projects that are in the space of AI and personal knowledge management',
|
|
60
|
-
});
|
|
61
|
-
const data = sanitizeObjects(TYPES, result as any);
|
|
62
|
-
|
|
63
|
-
log.info('result', { data });
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
describe.skip('misc', () => {
|
|
68
|
-
test('createExtractionSchema', () => {
|
|
69
|
-
const schema = createExtractionSchema(TYPES);
|
|
70
|
-
log.info('schema', { schema });
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
test('extract schema json schema', () => {
|
|
74
|
-
const schema = createExtractionSchema(TYPES);
|
|
75
|
-
const parser = structuredOutputParser(schema);
|
|
76
|
-
log.info('schema', { json: parser.tool.parameters });
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
test('getSanitizedSchemaName', () => {
|
|
80
|
-
const names = TYPES.map(getSanitizedSchemaName);
|
|
81
|
-
log.info('names', { names });
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
test('getTypeAnnotation', () => {
|
|
85
|
-
for (const schema of TYPES) {
|
|
86
|
-
const dxn = getSchemaDXN(schema);
|
|
87
|
-
log.info('dxn', { schema, dxn });
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
test('sanitizeObjects', () => {
|
|
92
|
-
const TEST_DATA = {
|
|
93
|
-
objects_dxos_org_type_Project: [
|
|
94
|
-
{
|
|
95
|
-
name: 'Reor',
|
|
96
|
-
description:
|
|
97
|
-
'A private & local AI personal knowledge management app focused on high entropy thinkers. Features include Q&A chat with full context of notes, automatic connection of ideas, semantic search, and local-first architecture with LLMs and vector databases.',
|
|
98
|
-
image: 'https://reorhomepage-2-cwy0zagzg-reor-team.vercel.app/opengraph-image.jpg',
|
|
99
|
-
id: 'reor-project-01',
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
name: 'Personal AI',
|
|
103
|
-
description:
|
|
104
|
-
'A platform for creating personal AI models with unlimited memory capabilities. Features include memory stacking, data uploads, and personalized language models that can be trained on individual knowledge bases.',
|
|
105
|
-
image: 'https://cdn.prod.website-files.com/5ff65c460ce39f5ec5681c6a/663d12aab1b425e1ad40d3a6_Memory-min.jpg',
|
|
106
|
-
id: 'personal-ai-project-01',
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: 'IKI AI',
|
|
110
|
-
description:
|
|
111
|
-
'An AI-native workspace for research, strategy, and creative work. Offers features like AI summarization, content analysis, and team knowledge sharing capabilities.',
|
|
112
|
-
image: 'https://framerusercontent.com/assets/cI6Uo7x4q0W3uxzOt2preXjv6aE.jpg',
|
|
113
|
-
id: 'iki-ai-project-01',
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
name: 'Forethink',
|
|
117
|
-
description:
|
|
118
|
-
'A privacy-first, on-device AI system that proactively links current activities to relevant knowledge. Features real-time learning across teams and local data processing.',
|
|
119
|
-
image: 'https://framerusercontent.com/assets/XDhN6tICnlElB134JWcWXOuXc.jpeg',
|
|
120
|
-
id: 'forethink-project-01',
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
name: 'Amurex',
|
|
124
|
-
description:
|
|
125
|
-
'An invisible AI companion that handles tasks, remembers important information, and supports workflow. Includes features for meeting automation, email categorization, and cross-platform search.',
|
|
126
|
-
image: 'https://amurex.ai/ogimages/og_amurex.jpg',
|
|
127
|
-
id: 'amurex-project-01',
|
|
128
|
-
},
|
|
129
|
-
],
|
|
130
|
-
objects_dxos_org_type_Organization: [
|
|
131
|
-
{
|
|
132
|
-
name: 'Reor',
|
|
133
|
-
description:
|
|
134
|
-
'A technology company focused on developing local-first AI solutions for personal knowledge management.',
|
|
135
|
-
status: 'active',
|
|
136
|
-
website: 'https://www.reorproject.org',
|
|
137
|
-
id: 'reor-org-01',
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
name: 'Personal.ai',
|
|
141
|
-
description: 'A company specializing in personal AI development and memory management solutions.',
|
|
142
|
-
status: 'active',
|
|
143
|
-
website: 'https://www.personal.ai',
|
|
144
|
-
id: 'personal-ai-org-01',
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
name: 'IKI AI',
|
|
148
|
-
description: 'A startup backed by 500 Global, developing AI-native workspaces for knowledge workers.',
|
|
149
|
-
status: 'active',
|
|
150
|
-
website: 'https://iki.ai',
|
|
151
|
-
id: 'iki-ai-org-01',
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
name: 'Forethink.ai',
|
|
155
|
-
description:
|
|
156
|
-
'A company focused on privacy-first AI solutions for knowledge management and team collaboration.',
|
|
157
|
-
status: 'active',
|
|
158
|
-
website: 'https://www.forethink.ai',
|
|
159
|
-
id: 'forethink-org-01',
|
|
160
|
-
},
|
|
161
|
-
],
|
|
162
|
-
objects_dxos_org_type_Text: [
|
|
163
|
-
{
|
|
164
|
-
content:
|
|
165
|
-
'Current trends in AI-powered Personal Knowledge Management (PKM) systems include: 1) Shift from document-based to graph-based systems for better knowledge connection, 2) Integration of large language models for enhanced content understanding and retrieval, 3) Focus on privacy-first and local-first architectures, 4) Emphasis on automatic knowledge connection and discovery, 5) Implementation of semantic search capabilities.',
|
|
166
|
-
id: 'pkm-trends-text-01',
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
content:
|
|
170
|
-
'Key features emerging across modern PKM tools include: automated content categorization, semantic analysis and linking, personalized AI models that learn from user interaction, integration with existing workflows, and robust privacy protection. These tools are increasingly focusing on proactive knowledge surfacing rather than passive storage.',
|
|
171
|
-
id: 'pkm-features-text-01',
|
|
172
|
-
},
|
|
173
|
-
],
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
const data = sanitizeObjects(TYPES, TEST_DATA);
|
|
177
|
-
log.info('data', { data });
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
const createExtractionSchema = (types: Schema.Schema.AnyNoContext[]) => {
|
|
182
|
-
return Schema.Struct({
|
|
183
|
-
...Object.fromEntries(
|
|
184
|
-
types.map(preprocessSchema).map((schema, index) => [
|
|
185
|
-
`objects_${getSanitizedSchemaName(types[index])}`,
|
|
186
|
-
Schema.optional(Schema.Array(schema)).annotations({
|
|
187
|
-
description: `The objects to answer the query of type: ${getSchemaDXN(types[index])?.asTypeDXN()!.type}`,
|
|
188
|
-
}),
|
|
189
|
-
]),
|
|
190
|
-
),
|
|
191
|
-
});
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
const getSanitizedSchemaName = (schema: Schema.Schema.AnyNoContext) => {
|
|
195
|
-
return getSchemaDXN(schema)!
|
|
196
|
-
.asTypeDXN()!
|
|
197
|
-
.type.replaceAll(/[^a-zA-Z0-9]+/g, '_');
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
const sanitizeObjects = (types: Schema.Schema.AnyNoContext[], data: Record<string, readonly unknown[]>) => {
|
|
201
|
-
const entries = types
|
|
202
|
-
.map(
|
|
203
|
-
(type) =>
|
|
204
|
-
data[`objects_${getSanitizedSchemaName(type)}`]?.map((object: any) => ({
|
|
205
|
-
data: object,
|
|
206
|
-
schema: type,
|
|
207
|
-
})) ?? [],
|
|
208
|
-
)
|
|
209
|
-
.flat();
|
|
210
|
-
|
|
211
|
-
const idMap = new Map<string, string>();
|
|
212
|
-
|
|
213
|
-
return entries
|
|
214
|
-
.map((entry) => {
|
|
215
|
-
idMap.set(entry.data.id, ObjectId.random());
|
|
216
|
-
entry.data.id = idMap.get(entry.data.id);
|
|
217
|
-
return entry;
|
|
218
|
-
})
|
|
219
|
-
.map((entry) => {
|
|
220
|
-
const data = deepMapValues(entry.data, (value, recurse) => {
|
|
221
|
-
if (isEncodedReference(value)) {
|
|
222
|
-
const ref = value['/'];
|
|
223
|
-
if (idMap.has(ref)) {
|
|
224
|
-
// TODO(dmaretskyi): Whats the best way to represent a local url.
|
|
225
|
-
return { '/': `dxn:echo:@:${idMap.get(ref)}` };
|
|
226
|
-
} else {
|
|
227
|
-
// Search URIs?
|
|
228
|
-
return { '/': `search:?q=${encodeURIComponent(ref)}` };
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
return recurse(value);
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
return create(entry.schema, data);
|
|
236
|
-
});
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
const SoftRef = Schema.Struct({
|
|
240
|
-
'/': Schema.String,
|
|
241
|
-
}).annotations({
|
|
242
|
-
description: 'Reference to another object.',
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
const preprocessSchema = (schema: Schema.Schema.AnyNoContext) => {
|
|
246
|
-
const go = (ast: SchemaAST.AST): SchemaAST.AST => {
|
|
247
|
-
if (SchemaAST.getAnnotation(ast, ReferenceAnnotationId).pipe(Option.isSome)) {
|
|
248
|
-
return SoftRef.ast;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
return mapAst(ast, go);
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
const processed = Schema.make<any, any, never>(mapAst(schema.ast, go));
|
|
255
|
-
return Schema.extend(
|
|
256
|
-
processed.pipe(Schema.omit('id')),
|
|
257
|
-
Schema.Struct({
|
|
258
|
-
id: Schema.String.annotations({
|
|
259
|
-
description: 'The id of this object. Come up with a unique id based on your judgement.',
|
|
260
|
-
}),
|
|
261
|
-
}),
|
|
262
|
-
);
|
|
263
|
-
};
|
package/src/session/tools.ts
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { Message, type Tool, ToolResult } from '@dxos/artifact';
|
|
6
|
-
import { create } from '@dxos/echo-schema';
|
|
7
|
-
import { invariant } from '@dxos/invariant';
|
|
8
|
-
import { log } from '@dxos/log';
|
|
9
|
-
|
|
10
|
-
export const isToolUse = (message: Message, { onlyToolNames }: { onlyToolNames?: string[] } = {}) => {
|
|
11
|
-
const block = message.content.at(-1);
|
|
12
|
-
invariant(block);
|
|
13
|
-
return block.type === 'tool_use' && (!onlyToolNames || onlyToolNames.includes(block.name));
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export type RunToolsOptions = {
|
|
17
|
-
message: Message;
|
|
18
|
-
tools: Tool[];
|
|
19
|
-
extensions?: ToolContextExtensions;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export type RunToolsResult =
|
|
23
|
-
| {
|
|
24
|
-
type: 'continue';
|
|
25
|
-
message: Message;
|
|
26
|
-
}
|
|
27
|
-
| {
|
|
28
|
-
type: 'break';
|
|
29
|
-
result: unknown;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export const runTools = async ({ message, tools, extensions }: RunToolsOptions): Promise<RunToolsResult> => {
|
|
33
|
-
const toolCalls = message.content.filter((block) => block.type === 'tool_use');
|
|
34
|
-
invariant(toolCalls.length === 1);
|
|
35
|
-
const toolCall = toolCalls[0];
|
|
36
|
-
const tool = tools.find((tool) => tool.name === toolCall.name);
|
|
37
|
-
if (!tool) {
|
|
38
|
-
const resultMessage = create(Message, {
|
|
39
|
-
role: 'user',
|
|
40
|
-
content: [
|
|
41
|
-
{
|
|
42
|
-
type: 'tool_result',
|
|
43
|
-
toolUseId: toolCall.id,
|
|
44
|
-
content: `Tool not found: ${toolCall.name}`,
|
|
45
|
-
isError: true,
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// TODO(burdon): Retry count?
|
|
51
|
-
return {
|
|
52
|
-
type: 'continue',
|
|
53
|
-
message: resultMessage,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
let toolResult: ToolResult;
|
|
58
|
-
try {
|
|
59
|
-
invariant(tool.execute);
|
|
60
|
-
toolResult = await tool.execute(toolCall.input, { extensions });
|
|
61
|
-
} catch (error: any) {
|
|
62
|
-
log('tool error', { error });
|
|
63
|
-
toolResult = ToolResult.Error(error.message);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
switch (toolResult.kind) {
|
|
67
|
-
case 'error': {
|
|
68
|
-
log('tool error', { message: toolResult.message });
|
|
69
|
-
const resultMessage = create(Message, {
|
|
70
|
-
role: 'user',
|
|
71
|
-
content: [
|
|
72
|
-
{
|
|
73
|
-
type: 'tool_result',
|
|
74
|
-
toolUseId: toolCall.id,
|
|
75
|
-
content: toolResult.message,
|
|
76
|
-
isError: true,
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
// TODO(burdon): Retry count?
|
|
82
|
-
return {
|
|
83
|
-
type: 'continue',
|
|
84
|
-
message: resultMessage,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
case 'success': {
|
|
89
|
-
log('tool success', { result: toolResult.result });
|
|
90
|
-
const resultMessage = create(Message, {
|
|
91
|
-
role: 'user',
|
|
92
|
-
content: [
|
|
93
|
-
{
|
|
94
|
-
type: 'tool_result',
|
|
95
|
-
toolUseId: toolCall.id,
|
|
96
|
-
content:
|
|
97
|
-
typeof toolResult.result === 'string' ? toolResult.result : JSON.stringify(toolResult.result) ?? '',
|
|
98
|
-
},
|
|
99
|
-
...(toolResult.extractContentBlocks ?? []),
|
|
100
|
-
],
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
return {
|
|
104
|
-
type: 'continue',
|
|
105
|
-
message: resultMessage,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
case 'break': {
|
|
110
|
-
log('tool break', { result: toolResult.result });
|
|
111
|
-
return {
|
|
112
|
-
type: 'break',
|
|
113
|
-
result: toolResult.result,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
};
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
import { Schema } from '@effect/schema';
|
|
7
|
-
import { describe, test } from 'vitest';
|
|
8
|
-
|
|
9
|
-
import { ObjectId, toJsonSchema } from '@dxos/echo-schema';
|
|
10
|
-
import { invariant } from '@dxos/invariant';
|
|
11
|
-
import { SpaceId } from '@dxos/keys';
|
|
12
|
-
import { log } from '@dxos/log';
|
|
13
|
-
|
|
14
|
-
import { AIServiceEdgeClient, Tool } from '../ai-service';
|
|
15
|
-
import { defineTool, ToolResult } from '../conversation';
|
|
16
|
-
|
|
17
|
-
// TODO(dmaretskyi): Effect schema.
|
|
18
|
-
const ArtifactDef = Schema.Struct({
|
|
19
|
-
typename: Schema.String,
|
|
20
|
-
description: Schema.String,
|
|
21
|
-
schema: Schema.Any,
|
|
22
|
-
actions: Schema.Array(Tool),
|
|
23
|
-
}).pipe(Schema.mutable);
|
|
24
|
-
|
|
25
|
-
type ArtifactDef = Schema.Schema.Type<typeof ArtifactDef>;
|
|
26
|
-
|
|
27
|
-
const ListItem = Schema.Struct({
|
|
28
|
-
name: Schema.String,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
const ListSchema = Schema.Struct({
|
|
32
|
-
id: ObjectId,
|
|
33
|
-
title: Schema.String,
|
|
34
|
-
items: Schema.Array(ListItem).pipe(Schema.mutable),
|
|
35
|
-
}).pipe(Schema.mutable);
|
|
36
|
-
|
|
37
|
-
type ListSchema = Schema.Schema.Type<typeof ListSchema>;
|
|
38
|
-
|
|
39
|
-
const list: ArtifactDef = {
|
|
40
|
-
typename: 'example.com/type/List',
|
|
41
|
-
description: 'Ordered set of text items.',
|
|
42
|
-
schema: ListSchema,
|
|
43
|
-
actions: [
|
|
44
|
-
defineTool('list', {
|
|
45
|
-
name: 'query',
|
|
46
|
-
description: 'Query all lists',
|
|
47
|
-
schema: Schema.Struct({}),
|
|
48
|
-
execute: async ({}, context) => {
|
|
49
|
-
return ToolResult.Success(LISTS[id]);
|
|
50
|
-
},
|
|
51
|
-
}),
|
|
52
|
-
defineTool('list', {
|
|
53
|
-
name: 'inspect',
|
|
54
|
-
description: 'Get contents of the list',
|
|
55
|
-
schema: Schema.Struct({
|
|
56
|
-
id: ObjectId.annotations({ description: 'The list to inspect' }),
|
|
57
|
-
}),
|
|
58
|
-
execute: async ({ id }, context) => {
|
|
59
|
-
return ToolResult.Success(LISTS[id]);
|
|
60
|
-
},
|
|
61
|
-
}),
|
|
62
|
-
defineTool('list', {
|
|
63
|
-
name: 'create',
|
|
64
|
-
description: 'Add one or more items to an existing list',
|
|
65
|
-
schema: Schema.Struct({
|
|
66
|
-
id: ObjectId.annotations({ description: 'The list to add items to' }),
|
|
67
|
-
items: Schema.Array(ListItem).annotations({ description: 'The items to add to the list' }),
|
|
68
|
-
}),
|
|
69
|
-
execute: async ({ id, items }, context) => {
|
|
70
|
-
LISTS[id].items.push(...items);
|
|
71
|
-
return ToolResult.Success(LISTS[id]);
|
|
72
|
-
},
|
|
73
|
-
}),
|
|
74
|
-
],
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
const LISTS: Record<ObjectId, ListSchema> = {};
|
|
78
|
-
|
|
79
|
-
const artifacts = [list];
|
|
80
|
-
|
|
81
|
-
const getArtifactDefinitions = defineTool('system', {
|
|
82
|
-
name: 'getArtifactDefinitions',
|
|
83
|
-
description: 'Queries the definitions and metadata of artifacts defined in the system',
|
|
84
|
-
schema: Schema.Any,
|
|
85
|
-
execute: async (_, context) => {
|
|
86
|
-
return ToolResult.Success(
|
|
87
|
-
artifacts.map((artifact) => ({
|
|
88
|
-
typename: artifact.typename,
|
|
89
|
-
description: artifact.description,
|
|
90
|
-
schema: toJsonSchema(artifact.schema),
|
|
91
|
-
actions: artifact.actions.map((action) => ({
|
|
92
|
-
name: action.name,
|
|
93
|
-
description: action.description,
|
|
94
|
-
})),
|
|
95
|
-
})),
|
|
96
|
-
);
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
const ARTIFACT_INSTRUCTIONS = `
|
|
101
|
-
You have ability to interact with artifacts.
|
|
102
|
-
Artifacts are persistent structured objects that have actions associated with them.
|
|
103
|
-
|
|
104
|
-
Before replying to the user you should first query the artifact definitions and metadata.
|
|
105
|
-
If there's
|
|
106
|
-
|
|
107
|
-
`;
|
|
108
|
-
|
|
109
|
-
describe('Artifacts', () => {
|
|
110
|
-
test('shopping list', async () => {
|
|
111
|
-
const client = new AIServiceEdgeClient({
|
|
112
|
-
endpoint: ENDPOINT,
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
const custodian: Tool = {
|
|
116
|
-
name: 'custodian',
|
|
117
|
-
description: 'Custodian can tell you the password if you say the magic word',
|
|
118
|
-
parameters: toJsonSchema(
|
|
119
|
-
Schema.Struct({
|
|
120
|
-
magicWord: Schema.String.annotations({ description: 'The magic word. Should be exactly "pretty please"' }),
|
|
121
|
-
}),
|
|
122
|
-
),
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
const spaceId = SpaceId.random();
|
|
126
|
-
const threadId = ObjectId.random();
|
|
127
|
-
|
|
128
|
-
await client.appendMessages([
|
|
129
|
-
{
|
|
130
|
-
id: ObjectId.random(),
|
|
131
|
-
spaceId,
|
|
132
|
-
threadId,
|
|
133
|
-
role: 'user',
|
|
134
|
-
content: [{ type: 'text', text: 'What is the password? Ask the custodian' }],
|
|
135
|
-
},
|
|
136
|
-
]);
|
|
137
|
-
|
|
138
|
-
const stream = await client.generate({
|
|
139
|
-
model: DEFAULT_EDGE_MODEL,
|
|
140
|
-
spaceId,
|
|
141
|
-
threadId,
|
|
142
|
-
systemPrompt: 'You are a helpful assistant.',
|
|
143
|
-
tools: [custodian],
|
|
144
|
-
});
|
|
145
|
-
for await (const event of stream) {
|
|
146
|
-
log('event', event);
|
|
147
|
-
}
|
|
148
|
-
const [message] = await stream.complete();
|
|
149
|
-
log('full message', {
|
|
150
|
-
message,
|
|
151
|
-
});
|
|
152
|
-
await client.appendMessages([message]);
|
|
153
|
-
|
|
154
|
-
const toolUse = message.content.find(({ type }) => type === 'tool_use')!;
|
|
155
|
-
invariant(toolUse.type === 'tool_use');
|
|
156
|
-
await client.appendMessages([
|
|
157
|
-
{
|
|
158
|
-
id: ObjectId.random(),
|
|
159
|
-
spaceId,
|
|
160
|
-
threadId,
|
|
161
|
-
role: 'user',
|
|
162
|
-
content: [{ type: 'tool_result', toolUseId: toolUse.id, content: 'password="The sky is gray"' }],
|
|
163
|
-
},
|
|
164
|
-
]);
|
|
165
|
-
|
|
166
|
-
const stream2 = await client.generate({
|
|
167
|
-
model: DEFAULT_EDGE_MODEL,
|
|
168
|
-
spaceId,
|
|
169
|
-
threadId,
|
|
170
|
-
systemPrompt: 'You are a helpful assistant.',
|
|
171
|
-
tools: [custodian],
|
|
172
|
-
});
|
|
173
|
-
for await (const event of stream2) {
|
|
174
|
-
log('event', event);
|
|
175
|
-
}
|
|
176
|
-
const [message2] = await stream2.complete();
|
|
177
|
-
log('full message', {
|
|
178
|
-
message: message2,
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
*/
|
package/src/testing/data.ts
DELETED
package/src/testing/defs.ts
DELETED