@dxos/plugin-assistant 0.8.4-main.1da679c → 0.8.4-main.1f223c7
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/{BlueprintContainer-6MZHBQ25.mjs → BlueprintContainer-BFNN6K46.mjs} +2 -2
- package/dist/lib/browser/{ChatCompanion-B4DLQE6Y.mjs → ChatCompanion-DOVN34C7.mjs} +6 -4
- package/dist/lib/{node-esm/ChatCompanion-DK6FULBU.mjs.map → browser/ChatCompanion-DOVN34C7.mjs.map} +1 -1
- package/dist/lib/browser/{ChatContainer-Z7A3RKOY.mjs → ChatContainer-XIVJTCC2.mjs} +4 -2
- package/dist/lib/browser/{ChatContainer-Z7A3RKOY.mjs.map → ChatContainer-XIVJTCC2.mjs.map} +1 -1
- package/dist/lib/browser/{ChatDialog-PL5TSGD5.mjs → ChatDialog-EJJMK3WL.mjs} +4 -2
- package/dist/lib/browser/{ChatDialog-PL5TSGD5.mjs.map → ChatDialog-EJJMK3WL.mjs.map} +1 -1
- package/dist/lib/browser/ai-service-YC2EQPHA.mjs +22 -0
- package/dist/lib/browser/ai-service-YC2EQPHA.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-BBDHBJXA.mjs → app-graph-builder-3C43MLCD.mjs} +4 -4
- package/dist/lib/browser/{app-graph-builder-BBDHBJXA.mjs.map → app-graph-builder-3C43MLCD.mjs.map} +1 -1
- package/dist/lib/browser/{blueprint-definition-3SATLYJW.mjs → blueprint-definition-VHFSRTEJ.mjs} +2 -2
- package/dist/lib/browser/{chunk-YOBHCEEI.mjs → chunk-C4Q2RYQM.mjs} +47 -14
- package/dist/lib/browser/chunk-C4Q2RYQM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YKODYEYR.mjs → chunk-EZUSNS2J.mjs} +4 -1
- package/dist/lib/browser/chunk-EZUSNS2J.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BBT6KNXA.mjs → chunk-GLWD66TA.mjs} +5 -9
- package/dist/lib/browser/chunk-GLWD66TA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JDI4FEKA.mjs → chunk-QD4UUISH.mjs} +6 -6
- package/dist/lib/browser/{chunk-TMKK6VCA.mjs → chunk-R6LRGW3I.mjs} +3 -3
- package/dist/lib/browser/chunk-R6LRGW3I.mjs.map +7 -0
- package/dist/lib/browser/compute-runtime-X6IREJN3.mjs +155 -0
- package/dist/lib/browser/compute-runtime-X6IREJN3.mjs.map +7 -0
- package/dist/lib/browser/{edge-model-resolver-6YWYDPTS.mjs → edge-model-resolver-JNEB355N.mjs} +9 -5
- package/dist/lib/browser/edge-model-resolver-JNEB355N.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +25 -21
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{intent-resolver-MRZJU255.mjs → intent-resolver-I6M3ZDAS.mjs} +5 -5
- package/dist/lib/browser/{intent-resolver-MRZJU255.mjs.map → intent-resolver-I6M3ZDAS.mjs.map} +1 -1
- package/dist/lib/browser/{local-model-resolver-QXLLTV2H.mjs → local-model-resolver-EUXSRZ7X.mjs} +9 -5
- package/dist/lib/browser/local-model-resolver-EUXSRZ7X.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-UKMOARXR.mjs → react-surface-E4NAGB6R.mjs} +8 -6
- package/dist/lib/{node-esm/react-surface-5NDJAWA2.mjs.map → browser/react-surface-E4NAGB6R.mjs.map} +1 -1
- package/dist/lib/browser/{settings-4AJ34FKF.mjs → settings-36V3VUMW.mjs} +3 -3
- package/dist/lib/browser/{settings-4AJ34FKF.mjs.map → settings-36V3VUMW.mjs.map} +1 -1
- package/dist/lib/browser/{state-ABR7YSSA.mjs → state-AINRYS5W.mjs} +4 -4
- package/dist/lib/browser/{state-ABR7YSSA.mjs.map → state-AINRYS5W.mjs.map} +1 -1
- package/dist/lib/browser/{toolkit-U7SKGAIC.mjs → toolkit-MPUS3U64.mjs} +3 -3
- package/dist/lib/browser/{toolkit-U7SKGAIC.mjs.map → toolkit-MPUS3U64.mjs.map} +1 -1
- package/dist/lib/node-esm/{BlueprintContainer-MUHW5HNY.mjs → BlueprintContainer-X4MRBKDR.mjs} +2 -2
- package/dist/lib/node-esm/{ChatCompanion-DK6FULBU.mjs → ChatCompanion-ICWYVPRD.mjs} +6 -4
- package/dist/lib/{browser/ChatCompanion-B4DLQE6Y.mjs.map → node-esm/ChatCompanion-ICWYVPRD.mjs.map} +1 -1
- package/dist/lib/node-esm/{ChatContainer-7IN7ZICQ.mjs → ChatContainer-LMMMQD4K.mjs} +4 -2
- package/dist/lib/node-esm/{ChatContainer-7IN7ZICQ.mjs.map → ChatContainer-LMMMQD4K.mjs.map} +1 -1
- package/dist/lib/node-esm/{ChatDialog-LPE653RZ.mjs → ChatDialog-UUE3F7BT.mjs} +4 -2
- package/dist/lib/node-esm/{ChatDialog-LPE653RZ.mjs.map → ChatDialog-UUE3F7BT.mjs.map} +1 -1
- package/dist/lib/node-esm/{ai-service-I5JU4JN2.mjs → ai-service-XUMZVFCK.mjs} +10 -6
- package/dist/lib/node-esm/ai-service-XUMZVFCK.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-EMR5JF6Z.mjs → app-graph-builder-NM3JDLQ2.mjs} +4 -4
- package/dist/lib/node-esm/{app-graph-builder-EMR5JF6Z.mjs.map → app-graph-builder-NM3JDLQ2.mjs.map} +1 -1
- package/dist/lib/node-esm/{blueprint-definition-B6UDX5U3.mjs → blueprint-definition-4E6XTLVN.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-GCNF3CQU.mjs → chunk-LVTG5JTW.mjs} +3 -3
- package/dist/lib/node-esm/chunk-LVTG5JTW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-5MYWJPYA.mjs → chunk-QG2KT3AT.mjs} +5 -9
- package/dist/lib/node-esm/chunk-QG2KT3AT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-X2YUKRBE.mjs → chunk-V44ZG7CU.mjs} +47 -14
- package/dist/lib/node-esm/chunk-V44ZG7CU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FHRJMZ7L.mjs → chunk-XD4CDA4R.mjs} +4 -1
- package/dist/lib/node-esm/chunk-XD4CDA4R.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-H3ZC4UL7.mjs → chunk-YU62ZWJN.mjs} +6 -6
- package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs +156 -0
- package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs.map +7 -0
- package/dist/lib/node-esm/{edge-model-resolver-A7B6QHLL.mjs → edge-model-resolver-UE5TLLJZ.mjs} +9 -5
- package/dist/lib/node-esm/edge-model-resolver-UE5TLLJZ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +25 -21
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{intent-resolver-CIXO3KMY.mjs → intent-resolver-VIINHFMT.mjs} +5 -5
- package/dist/lib/node-esm/{intent-resolver-CIXO3KMY.mjs.map → intent-resolver-VIINHFMT.mjs.map} +1 -1
- package/dist/lib/node-esm/{local-model-resolver-JCYDHAZY.mjs → local-model-resolver-JBEFVVZA.mjs} +9 -5
- package/dist/lib/node-esm/local-model-resolver-JBEFVVZA.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-5NDJAWA2.mjs → react-surface-5WQLRTCH.mjs} +8 -6
- package/dist/lib/{browser/react-surface-UKMOARXR.mjs.map → node-esm/react-surface-5WQLRTCH.mjs.map} +1 -1
- package/dist/lib/node-esm/{settings-K2QW4ATZ.mjs → settings-7ZCZ6AS5.mjs} +3 -3
- package/dist/lib/node-esm/{settings-K2QW4ATZ.mjs.map → settings-7ZCZ6AS5.mjs.map} +1 -1
- package/dist/lib/node-esm/{state-6UHESJI5.mjs → state-EQS5KP6M.mjs} +4 -4
- package/dist/lib/node-esm/{state-6UHESJI5.mjs.map → state-EQS5KP6M.mjs.map} +1 -1
- package/dist/lib/node-esm/{toolkit-LNLRBVDU.mjs → toolkit-PKVYDZ4H.mjs} +3 -3
- package/dist/lib/node-esm/{toolkit-LNLRBVDU.mjs.map → toolkit-PKVYDZ4H.mjs.map} +1 -1
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-service.d.ts +3 -2
- package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +21 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/compute-runtime.d.ts +5 -0
- package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -0
- package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +8 -0
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -0
- package/dist/types/src/stories/Chat.stories.d.ts +0 -1
- package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/stories/components/TriggersContainer.d.ts +12 -1
- package/dist/types/src/stories/components/TriggersContainer.d.ts.map +1 -1
- package/dist/types/src/stories/components/index.d.ts +2 -3
- package/dist/types/src/stories/components/index.d.ts.map +1 -1
- package/dist/types/src/stories/testing/testing.d.ts.map +1 -1
- package/dist/types/src/testing/test-data.d.ts +1 -1
- package/dist/types/src/testing/test-data.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +90 -91
- package/src/AssistantPlugin.tsx +9 -8
- package/src/capabilities/ai-service.ts +5 -3
- package/src/capabilities/blueprint-definition.ts +1 -4
- package/src/capabilities/capabilities.ts +53 -0
- package/src/capabilities/compute-runtime.ts +124 -0
- package/src/capabilities/edge-model-resolver.ts +4 -2
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/local-model-resolver.ts +4 -2
- package/src/components/TemplateEditor/TemplateEditor.tsx +2 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useChatServices.ts +2 -2
- package/src/hooks/useComputeRuntimeCallback.ts +25 -0
- package/src/stories/Chat.stories.tsx +4 -151
- package/src/stories/components/TriggersContainer.tsx +67 -4
- package/src/stories/components/index.ts +2 -3
- package/src/stories/testing/testing.tsx +1 -6
- package/src/testing/test-data.ts +26 -36
- package/dist/lib/browser/ai-service-4VESSFNB.mjs +0 -18
- package/dist/lib/browser/ai-service-4VESSFNB.mjs.map +0 -7
- package/dist/lib/browser/chunk-BBT6KNXA.mjs.map +0 -7
- package/dist/lib/browser/chunk-TMKK6VCA.mjs.map +0 -7
- package/dist/lib/browser/chunk-YKODYEYR.mjs.map +0 -7
- package/dist/lib/browser/chunk-YOBHCEEI.mjs.map +0 -7
- package/dist/lib/browser/edge-model-resolver-6YWYDPTS.mjs.map +0 -7
- package/dist/lib/browser/local-model-resolver-QXLLTV2H.mjs.map +0 -7
- package/dist/lib/node-esm/ai-service-I5JU4JN2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5MYWJPYA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FHRJMZ7L.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GCNF3CQU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-X2YUKRBE.mjs.map +0 -7
- package/dist/lib/node-esm/edge-model-resolver-A7B6QHLL.mjs.map +0 -7
- package/dist/lib/node-esm/local-model-resolver-JCYDHAZY.mjs.map +0 -7
- package/dist/types/src/stories/components/ProjectContainer.d.ts +0 -4
- package/dist/types/src/stories/components/ProjectContainer.d.ts.map +0 -1
- package/src/stories/components/ProjectContainer.tsx +0 -17
- /package/dist/lib/browser/{BlueprintContainer-6MZHBQ25.mjs.map → BlueprintContainer-BFNN6K46.mjs.map} +0 -0
- /package/dist/lib/browser/{blueprint-definition-3SATLYJW.mjs.map → blueprint-definition-VHFSRTEJ.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-JDI4FEKA.mjs.map → chunk-QD4UUISH.mjs.map} +0 -0
- /package/dist/lib/node-esm/{BlueprintContainer-MUHW5HNY.mjs.map → BlueprintContainer-X4MRBKDR.mjs.map} +0 -0
- /package/dist/lib/node-esm/{blueprint-definition-B6UDX5U3.mjs.map → blueprint-definition-4E6XTLVN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-H3ZC4UL7.mjs.map → chunk-YU62ZWJN.mjs.map} +0 -0
|
@@ -11,16 +11,9 @@ import React, { type FC, useCallback } from 'react';
|
|
|
11
11
|
import { EXA_API_KEY } from '@dxos/ai/testing';
|
|
12
12
|
import { Capabilities, Surface, useCapabilities } from '@dxos/app-framework';
|
|
13
13
|
import { AiContextBinder } from '@dxos/assistant';
|
|
14
|
-
import {
|
|
15
|
-
LINEAR_BLUEPRINT,
|
|
16
|
-
RESEARCH_BLUEPRINT,
|
|
17
|
-
ResearchDataTypes,
|
|
18
|
-
ResearchGraph,
|
|
19
|
-
ResearchOn,
|
|
20
|
-
agent,
|
|
21
|
-
} from '@dxos/assistant-testing';
|
|
14
|
+
import { LINEAR_BLUEPRINT, RESEARCH_BLUEPRINT, ResearchDataTypes, ResearchGraph, agent } from '@dxos/assistant-testing';
|
|
22
15
|
import { Blueprint, Prompt } from '@dxos/blueprints';
|
|
23
|
-
import { Filter, Obj, Query, Ref
|
|
16
|
+
import { Filter, Obj, Query, Ref } from '@dxos/echo';
|
|
24
17
|
import { FunctionTrigger, exampleFunctions, serializeFunction } from '@dxos/functions';
|
|
25
18
|
import { log } from '@dxos/log';
|
|
26
19
|
import { Board, BoardPlugin } from '@dxos/plugin-board';
|
|
@@ -32,7 +25,6 @@ import { Map, MapPlugin } from '@dxos/plugin-map';
|
|
|
32
25
|
import { createLocationSchema } from '@dxos/plugin-map/testing';
|
|
33
26
|
import { Markdown, MarkdownPlugin } from '@dxos/plugin-markdown';
|
|
34
27
|
import { PreviewPlugin } from '@dxos/plugin-preview';
|
|
35
|
-
import { ProjectPlugin } from '@dxos/plugin-project';
|
|
36
28
|
import { TablePlugin } from '@dxos/plugin-table';
|
|
37
29
|
import { ThreadPlugin } from '@dxos/plugin-thread';
|
|
38
30
|
import { TokenManagerPlugin } from '@dxos/plugin-token-manager';
|
|
@@ -43,7 +35,7 @@ import { useQuery, useSpace } from '@dxos/react-client/echo';
|
|
|
43
35
|
import { useAsyncEffect, useSignalsMemo } from '@dxos/react-ui';
|
|
44
36
|
import { Stack, StackItem } from '@dxos/react-ui-stack';
|
|
45
37
|
import { Table } from '@dxos/react-ui-table/types';
|
|
46
|
-
import { DataType
|
|
38
|
+
import { DataType } from '@dxos/schema';
|
|
47
39
|
import { render } from '@dxos/storybook-utils';
|
|
48
40
|
import { isNonNullable, trim } from '@dxos/util';
|
|
49
41
|
|
|
@@ -63,7 +55,6 @@ import {
|
|
|
63
55
|
InvocationsContainer,
|
|
64
56
|
LoggingContainer,
|
|
65
57
|
MessageContainer,
|
|
66
|
-
ProjectContainer,
|
|
67
58
|
PromptContainer,
|
|
68
59
|
ResearchInputStack,
|
|
69
60
|
ResearchOutputStack,
|
|
@@ -634,8 +625,7 @@ export const WithResearchQueue: Story = {
|
|
|
634
625
|
}),
|
|
635
626
|
output: Schema.Any,
|
|
636
627
|
|
|
637
|
-
instructions:
|
|
638
|
-
'Research the organization provided as input. Create a research note for it at the end. NOTE: Do mocked reseach (set mockSearch to true).',
|
|
628
|
+
instructions: 'Research the organization provided as input.',
|
|
639
629
|
blueprints: [Ref.make(RESEARCH_BLUEPRINT)],
|
|
640
630
|
}),
|
|
641
631
|
);
|
|
@@ -665,140 +655,3 @@ export const WithResearchQueue: Story = {
|
|
|
665
655
|
blueprints: [RESEARCH_BLUEPRINT.key],
|
|
666
656
|
},
|
|
667
657
|
};
|
|
668
|
-
|
|
669
|
-
export const WithProject: Story = {
|
|
670
|
-
decorators: getDecorators({
|
|
671
|
-
plugins: [InboxPlugin(), MarkdownPlugin(), ProjectPlugin()],
|
|
672
|
-
config: config.remote,
|
|
673
|
-
accessTokens: [Obj.make(DataType.AccessToken, { source: 'exa.ai', token: EXA_API_KEY })],
|
|
674
|
-
types: [
|
|
675
|
-
DataType.Employer,
|
|
676
|
-
DataType.HasConnection,
|
|
677
|
-
DataType.Message,
|
|
678
|
-
DataType.Organization,
|
|
679
|
-
DataType.Person,
|
|
680
|
-
DataType.Project,
|
|
681
|
-
DataType.View,
|
|
682
|
-
Mailbox.Mailbox,
|
|
683
|
-
ResearchOn,
|
|
684
|
-
],
|
|
685
|
-
onInit: async ({ space }) => {
|
|
686
|
-
await addTestData(space);
|
|
687
|
-
const { objects: people } = await space.db.query(Filter.type(DataType.Person)).run();
|
|
688
|
-
const { objects: organizations } = await space.db.query(Filter.type(DataType.Organization)).run();
|
|
689
|
-
|
|
690
|
-
people.slice(0, 4).forEach((person) => {
|
|
691
|
-
person.notes = 'Project';
|
|
692
|
-
});
|
|
693
|
-
|
|
694
|
-
const queue = space.queues.create();
|
|
695
|
-
const messages = createTestMailbox(people);
|
|
696
|
-
await queue.append(messages);
|
|
697
|
-
const mailbox = space.db.add(Mailbox.make({ name: 'Mailbox', queue: queue.dxn }));
|
|
698
|
-
|
|
699
|
-
const dxosResearch = space.db.add(
|
|
700
|
-
Markdown.makeDocument({
|
|
701
|
-
name: 'DXOS Research',
|
|
702
|
-
content: 'DXOS builds Composer, an open-source AI-powered malleable application.',
|
|
703
|
-
}),
|
|
704
|
-
);
|
|
705
|
-
const blueyardResearch = space.db.add(
|
|
706
|
-
Markdown.makeDocument({
|
|
707
|
-
name: 'Blue Yard Research',
|
|
708
|
-
content: 'Blue Yard is a venture capital firm that invests in early-stage startups.',
|
|
709
|
-
}),
|
|
710
|
-
);
|
|
711
|
-
|
|
712
|
-
const dxos = organizations.find((org) => org.name === 'DXOS')!;
|
|
713
|
-
const blueyard = organizations.find((org) => org.name === 'Blue Yard')!;
|
|
714
|
-
console.log(dxos, blueyard);
|
|
715
|
-
space.db.add(
|
|
716
|
-
Relation.make(ResearchOn, {
|
|
717
|
-
[Relation.Source]: dxosResearch,
|
|
718
|
-
[Relation.Target]: dxos,
|
|
719
|
-
completedAt: new Date().toISOString(),
|
|
720
|
-
}),
|
|
721
|
-
);
|
|
722
|
-
space.db.add(
|
|
723
|
-
Relation.make(ResearchOn, {
|
|
724
|
-
[Relation.Source]: blueyardResearch,
|
|
725
|
-
[Relation.Target]: blueyard,
|
|
726
|
-
completedAt: new Date().toISOString(),
|
|
727
|
-
}),
|
|
728
|
-
);
|
|
729
|
-
|
|
730
|
-
const contactsQuery = Query.select(Filter.type(DataType.Person, { notes: 'Project' }));
|
|
731
|
-
const organizationsQuery = contactsQuery.sourceOf(DataType.Employer, { active: true }).target();
|
|
732
|
-
const notesQuery = organizationsQuery.targetOf(ResearchOn).source();
|
|
733
|
-
|
|
734
|
-
const researchPrompt = space.db.add(
|
|
735
|
-
Prompt.make({
|
|
736
|
-
name: 'Research',
|
|
737
|
-
description: 'Research organization',
|
|
738
|
-
input: Schema.Struct({
|
|
739
|
-
org: Schema.Any,
|
|
740
|
-
}),
|
|
741
|
-
output: Schema.Any,
|
|
742
|
-
|
|
743
|
-
instructions:
|
|
744
|
-
'Research the organization provided as input. Absolutely, in all cases, create a research note for it at the end. NOTE: Do mocked reseach (set mockSearch to true).',
|
|
745
|
-
blueprints: [Ref.make(RESEARCH_BLUEPRINT)],
|
|
746
|
-
}),
|
|
747
|
-
);
|
|
748
|
-
|
|
749
|
-
const researchTrigger = Obj.make(FunctionTrigger, {
|
|
750
|
-
function: Ref.make(serializeFunction(agent)),
|
|
751
|
-
enabled: true,
|
|
752
|
-
spec: {
|
|
753
|
-
kind: 'subscription',
|
|
754
|
-
query: organizationsQuery.ast,
|
|
755
|
-
},
|
|
756
|
-
input: {
|
|
757
|
-
prompt: Ref.make(researchPrompt),
|
|
758
|
-
input: '{{event.subject}}',
|
|
759
|
-
},
|
|
760
|
-
});
|
|
761
|
-
space.db.add(researchTrigger);
|
|
762
|
-
|
|
763
|
-
const mailboxView = createView({
|
|
764
|
-
name: 'Mailbox',
|
|
765
|
-
query: Query.select(
|
|
766
|
-
Filter.type(DataType.Message, { properties: { labels: Filter.contains('Project') } }),
|
|
767
|
-
).options({
|
|
768
|
-
queues: [mailbox.queue.dxn.toString()],
|
|
769
|
-
}),
|
|
770
|
-
jsonSchema: Type.toJsonSchema(DataType.Message),
|
|
771
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
772
|
-
});
|
|
773
|
-
const contactsView = createView({
|
|
774
|
-
name: 'Contacts',
|
|
775
|
-
query: contactsQuery,
|
|
776
|
-
jsonSchema: Type.toJsonSchema(DataType.Person),
|
|
777
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
778
|
-
});
|
|
779
|
-
const organizationsView = createView({
|
|
780
|
-
name: 'Organizations',
|
|
781
|
-
query: organizationsQuery,
|
|
782
|
-
jsonSchema: Type.toJsonSchema(DataType.Organization),
|
|
783
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
784
|
-
});
|
|
785
|
-
const notesView = createView({
|
|
786
|
-
name: 'Notes',
|
|
787
|
-
query: notesQuery,
|
|
788
|
-
jsonSchema: Type.toJsonSchema(Markdown.Document),
|
|
789
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
790
|
-
});
|
|
791
|
-
|
|
792
|
-
space.db.add(
|
|
793
|
-
DataType.makeProject({
|
|
794
|
-
name: 'Investor Research',
|
|
795
|
-
collections: [mailboxView, contactsView, organizationsView, notesView].map((view) => Ref.make(view)),
|
|
796
|
-
}),
|
|
797
|
-
);
|
|
798
|
-
},
|
|
799
|
-
}),
|
|
800
|
-
args: {
|
|
801
|
-
deckComponents: [[ProjectContainer], [TriggersContainer, InvocationsContainer]],
|
|
802
|
-
blueprints: [],
|
|
803
|
-
},
|
|
804
|
-
};
|
|
@@ -2,11 +2,74 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { Effect } from 'effect';
|
|
5
6
|
import React from 'react';
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
8
|
+
import { Filter } from '@dxos/echo';
|
|
9
|
+
import { FunctionTrigger, TriggerDispatcher } from '@dxos/functions';
|
|
10
|
+
import { AutomationPanel } from '@dxos/plugin-automation';
|
|
11
|
+
import { type Space, useQuery } from '@dxos/react-client/echo';
|
|
12
|
+
import { Input, Toolbar, useAsyncState } from '@dxos/react-ui';
|
|
13
|
+
import { useTranslation } from '@dxos/react-ui';
|
|
9
14
|
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
import { useComputeRuntimeCallback } from '../../hooks';
|
|
16
|
+
import { meta } from '../../meta';
|
|
17
|
+
|
|
18
|
+
import type { ComponentProps } from './types';
|
|
19
|
+
|
|
20
|
+
export const TriggersContainer = ({ space }: ComponentProps) => {
|
|
21
|
+
const { t } = useTranslation(meta.id);
|
|
22
|
+
const { triggers, isRunning, start, stop } = useTriggerRuntimeControls(space);
|
|
23
|
+
return (
|
|
24
|
+
<div className='flex flex-col p-2'>
|
|
25
|
+
<Toolbar.Root>
|
|
26
|
+
<Input.Root>
|
|
27
|
+
<div>{isRunning ? t('trigger dispatcher running') : t('trigger dispatcher stopped')}</div>
|
|
28
|
+
<Input.Switch classNames='mis-2 mie-2' checked={isRunning} onCheckedChange={isRunning ? stop : start} />
|
|
29
|
+
</Input.Root>
|
|
30
|
+
</Toolbar.Root>
|
|
31
|
+
|
|
32
|
+
<AutomationPanel classNames='p-2' space={space} />
|
|
33
|
+
</div>
|
|
34
|
+
);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
interface TriggerRuntimeControls {
|
|
38
|
+
triggers: FunctionTrigger[];
|
|
39
|
+
isRunning: boolean;
|
|
40
|
+
start: () => void;
|
|
41
|
+
stop: () => void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const useTriggerRuntimeControls = (space: Space): TriggerRuntimeControls => {
|
|
45
|
+
const triggers = useQuery(space, Filter.type(FunctionTrigger));
|
|
46
|
+
|
|
47
|
+
const [isRunningState, setIsRunningState] = useAsyncState(
|
|
48
|
+
useComputeRuntimeCallback(space, () => TriggerDispatcher.pipe(Effect.map((t) => t.running))),
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const start = useComputeRuntimeCallback(
|
|
52
|
+
space,
|
|
53
|
+
Effect.fnUntraced(function* () {
|
|
54
|
+
const dispatcher = yield* TriggerDispatcher;
|
|
55
|
+
yield* dispatcher.start();
|
|
56
|
+
setIsRunningState(true);
|
|
57
|
+
}),
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const stop = useComputeRuntimeCallback(
|
|
61
|
+
space,
|
|
62
|
+
Effect.fnUntraced(function* () {
|
|
63
|
+
const dispatcher = yield* TriggerDispatcher;
|
|
64
|
+
yield* dispatcher.stop();
|
|
65
|
+
setIsRunningState(false);
|
|
66
|
+
}),
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
triggers,
|
|
71
|
+
isRunning: isRunningState ?? false,
|
|
72
|
+
start: () => void start(),
|
|
73
|
+
stop: () => void stop(),
|
|
74
|
+
};
|
|
12
75
|
};
|
|
@@ -6,16 +6,15 @@ export * from './types';
|
|
|
6
6
|
|
|
7
7
|
export * from './BlueprintContainer';
|
|
8
8
|
export * from './ChatContainer';
|
|
9
|
-
export * from './ChessContainer';
|
|
10
9
|
export * from './CommentsContainer';
|
|
11
10
|
export * from './GraphContainer';
|
|
12
11
|
export * from './InvocationsContainer';
|
|
13
12
|
export * from './LoggingContainer';
|
|
14
13
|
export * from './MessageContainer';
|
|
15
|
-
export * from './ProjectContainer';
|
|
16
|
-
export * from './PromptContainer';
|
|
17
14
|
export * from './ResearchInputStack';
|
|
18
15
|
export * from './ResearchOutputStack';
|
|
16
|
+
export * from './PromptContainer';
|
|
19
17
|
export * from './TasksContainer';
|
|
20
18
|
export * from './TokenManagerContainer';
|
|
21
19
|
export * from './TriggersContainer';
|
|
20
|
+
export * from './ChessContainer';
|
|
@@ -26,8 +26,6 @@ import { AiContextBinder, ArtifactId } from '@dxos/assistant';
|
|
|
26
26
|
import {
|
|
27
27
|
DESIGN_BLUEPRINT,
|
|
28
28
|
PLANNING_BLUEPRINT,
|
|
29
|
-
agent,
|
|
30
|
-
createResearchNote,
|
|
31
29
|
readDocument,
|
|
32
30
|
readTasks,
|
|
33
31
|
research,
|
|
@@ -40,7 +38,6 @@ import { Obj, Ref } from '@dxos/echo';
|
|
|
40
38
|
import { FunctionTrigger, FunctionType, exampleFunctions } from '@dxos/functions';
|
|
41
39
|
import { log } from '@dxos/log';
|
|
42
40
|
import { AttentionPlugin } from '@dxos/plugin-attention';
|
|
43
|
-
import { AutomationPlugin } from '@dxos/plugin-automation';
|
|
44
41
|
import { ClientCapabilities, ClientEvents, ClientPlugin } from '@dxos/plugin-client';
|
|
45
42
|
import { type ClientPluginOptions } from '@dxos/plugin-client/types';
|
|
46
43
|
import { DeckAction } from '@dxos/plugin-deck/types';
|
|
@@ -123,7 +120,6 @@ export const getDecorators = ({
|
|
|
123
120
|
plugins: [
|
|
124
121
|
// System plugins.
|
|
125
122
|
AttentionPlugin(),
|
|
126
|
-
AutomationPlugin(),
|
|
127
123
|
GraphPlugin(),
|
|
128
124
|
IntentPlugin(),
|
|
129
125
|
SettingsPlugin(),
|
|
@@ -184,10 +180,9 @@ export const getDecorators = ({
|
|
|
184
180
|
// TODO(burdon): Move into assistnat?
|
|
185
181
|
contributes(Capabilities.BlueprintDefinition, DESIGN_BLUEPRINT),
|
|
186
182
|
contributes(Capabilities.BlueprintDefinition, PLANNING_BLUEPRINT),
|
|
187
|
-
contributes(Capabilities.Functions, [agent]),
|
|
188
183
|
contributes(Capabilities.Functions, [readDocument, updateDocument]),
|
|
189
184
|
contributes(Capabilities.Functions, [readTasks, updateTasks]),
|
|
190
|
-
contributes(Capabilities.Functions, [research
|
|
185
|
+
contributes(Capabilities.Functions, [research]),
|
|
191
186
|
contributes(Capabilities.Functions, [exampleFunctions.reply]),
|
|
192
187
|
],
|
|
193
188
|
}),
|
package/src/testing/test-data.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type Live, type Space } from '@dxos/client/echo';
|
|
6
|
-
import { Obj,
|
|
6
|
+
import { Obj, Relation, type Type } from '@dxos/echo';
|
|
7
7
|
import { invariant } from '@dxos/invariant';
|
|
8
8
|
import { DataType } from '@dxos/schema';
|
|
9
9
|
|
|
@@ -41,7 +41,7 @@ export const organizations: (Type.Properties<DataType.Organization> & { id: stri
|
|
|
41
41
|
export const people: (Type.Properties<DataType.Person> & { id: string })[] = [
|
|
42
42
|
{ id: 'rich_burdon', fullName: 'Rich Burdon' },
|
|
43
43
|
{ id: 'josiah_witt', fullName: 'Josiah Witt' },
|
|
44
|
-
{ id: '
|
|
44
|
+
{ id: 'dima_dmaretskyi', fullName: 'Dima Maretskyi' },
|
|
45
45
|
{ id: 'chad_fowler', fullName: 'Chad Fowler' },
|
|
46
46
|
{ id: 'ciaran_oleary', fullName: "Ciarán O'Leary" },
|
|
47
47
|
{ id: 'jason_whitmire', fullName: 'Jason Whitmire' },
|
|
@@ -68,23 +68,23 @@ const testRelationships: Record<
|
|
|
68
68
|
> = {
|
|
69
69
|
[DataType.Employer.typename]: [
|
|
70
70
|
// prettier-ignore
|
|
71
|
-
{ source: 'rich_burdon', target: 'dxos'
|
|
71
|
+
{ source: 'rich_burdon', target: 'dxos' },
|
|
72
72
|
{ source: 'rich_burdon', target: 'google', active: false }, // TODO(burdon): Should not contribute to force.
|
|
73
73
|
{ source: 'rich_burdon', target: 'deshaw', active: false },
|
|
74
|
-
{ source: 'josiah_witt', target: 'dxos'
|
|
75
|
-
{ source: '
|
|
76
|
-
{ source: 'chad_fowler', target: 'blueyard'
|
|
74
|
+
{ source: 'josiah_witt', target: 'dxos' },
|
|
75
|
+
{ source: 'dima_dmaretskyi', target: 'dxos' },
|
|
76
|
+
{ source: 'chad_fowler', target: 'blueyard' },
|
|
77
77
|
{ source: 'chad_fowler', target: 'microsoft', active: false },
|
|
78
|
-
{ source: 'ciaran_oleary', target: 'blueyard'
|
|
79
|
-
{ source: 'jason_whitmire', target: 'blueyard'
|
|
80
|
-
{ source: 'juan_benet', target: 'protocol_labs'
|
|
81
|
-
{ source: 'alex_brunicki', target: 'backed'
|
|
82
|
-
{ source: 'andre_de_haes', target: 'backed'
|
|
83
|
-
{ source: 'scott_cohen', target: 'newlab'
|
|
84
|
-
{ source: 'satya_nadella', target: 'microsoft'
|
|
85
|
-
{ source: 'kevin_scott', target: 'microsoft'
|
|
78
|
+
{ source: 'ciaran_oleary', target: 'blueyard' },
|
|
79
|
+
{ source: 'jason_whitmire', target: 'blueyard' },
|
|
80
|
+
{ source: 'juan_benet', target: 'protocol_labs' },
|
|
81
|
+
{ source: 'alex_brunicki', target: 'backed' },
|
|
82
|
+
{ source: 'andre_de_haes', target: 'backed' },
|
|
83
|
+
{ source: 'scott_cohen', target: 'newlab' },
|
|
84
|
+
{ source: 'satya_nadella', target: 'microsoft' },
|
|
85
|
+
{ source: 'kevin_scott', target: 'microsoft' },
|
|
86
86
|
{ source: 'kevin_scott', target: 'google', active: false },
|
|
87
|
-
{ source: 'jeff_bezos', target: 'amazon'
|
|
87
|
+
{ source: 'jeff_bezos', target: 'amazon' },
|
|
88
88
|
{ source: 'jeff_bezos', target: 'deshaw', active: false },
|
|
89
89
|
],
|
|
90
90
|
|
|
@@ -193,61 +193,51 @@ export const createTestTranscription = (): DataType.Message[] => {
|
|
|
193
193
|
};
|
|
194
194
|
|
|
195
195
|
// TODO(wittjosiah): Find way to use data generator to generate substantive messages that could be summarized.
|
|
196
|
-
export const createTestMailbox = (
|
|
196
|
+
export const createTestMailbox = (): DataType.Message[] => {
|
|
197
197
|
const timeInterval = 1000;
|
|
198
198
|
const messages: DataType.Message[] = [
|
|
199
199
|
{
|
|
200
200
|
text: 'Subject: Project Kickoff\n\nHi team,\n\nWe are excited to announce the kickoff of the Apollo project. Please review the attached roadmap and be prepared for our first meeting on Monday.\n\nBest,\nAlice',
|
|
201
|
-
sender:
|
|
202
|
-
labels: ['Project'],
|
|
201
|
+
sender: 'alice.johnson@acme-corp.com',
|
|
203
202
|
},
|
|
204
203
|
{
|
|
205
204
|
text: 'Subject: Sales Update\n\nDear all,\n\nQ2 sales numbers have exceeded expectations. Congratulations to everyone for their hard work!\n\nRegards,\nBob',
|
|
206
|
-
sender:
|
|
207
|
-
labels: ['Project'],
|
|
205
|
+
sender: 'bob.smith@salesforce.biz',
|
|
208
206
|
},
|
|
209
207
|
{
|
|
210
208
|
text: 'Subject: Invoice Reminder\n\nHello,\n\nThis is a friendly reminder that invoice #12345 is due next week. Please let us know if you have any questions.\n\nThank you,\nCarol',
|
|
211
|
-
sender:
|
|
212
|
-
labels: ['Project'],
|
|
209
|
+
sender: 'carol.finance@invoicesolutions.com',
|
|
213
210
|
},
|
|
214
211
|
{
|
|
215
212
|
text: 'Subject: Meeting Rescheduled\n\nHi team,\n\nTomorrow’s product design meeting has been moved to Friday at 2pm. Please update your calendars.\n\nThanks,\nDavid',
|
|
216
|
-
sender:
|
|
217
|
-
labels: ['Project'],
|
|
213
|
+
sender: 'david.lee@productdesign.io',
|
|
218
214
|
},
|
|
219
215
|
{
|
|
220
216
|
text: 'Subject: Welcome Aboard!\n\nWelcome to the company, Emily! We are thrilled to have you join the marketing department.\n\nBest,\nFiona',
|
|
221
|
-
sender:
|
|
222
|
-
labels: [],
|
|
217
|
+
sender: 'fiona.hr@enterpriseco.com',
|
|
223
218
|
},
|
|
224
219
|
{
|
|
225
220
|
text: 'Subject: IT Maintenance\n\nDear colleagues,\n\nScheduled IT maintenance will occur this Saturday from 1am to 5am. Please save your work accordingly.\n\nSincerely,\nGreg',
|
|
226
|
-
sender:
|
|
227
|
-
labels: [],
|
|
221
|
+
sender: 'greg.it@supporthub.net',
|
|
228
222
|
},
|
|
229
223
|
{
|
|
230
224
|
text: 'Subject: Lunch & Learn\n\nJoin us for a Lunch & Learn session on cloud security this Thursday in the main conference room.\n\nSee you there,\nHelen',
|
|
231
|
-
sender:
|
|
232
|
-
labels: [],
|
|
225
|
+
sender: 'helen.training@acme-corp.com',
|
|
233
226
|
},
|
|
234
227
|
{
|
|
235
228
|
text: 'Subject: Client Feedback\n\nHi,\n\nOur client, InnovateX, sent positive feedback on the recent deployment. Great job, everyone!\n\nCheers,\nIvan',
|
|
236
|
-
sender:
|
|
237
|
-
labels: [],
|
|
229
|
+
sender: 'ivan.account@consultingpartners.org',
|
|
238
230
|
},
|
|
239
231
|
{
|
|
240
232
|
text: 'Subject: Policy Update\n\nPlease review the updated remote work policy attached to this email. Let us know if you have any questions.\n\nBest regards,\nJulia',
|
|
241
|
-
sender:
|
|
242
|
-
labels: [],
|
|
233
|
+
sender: 'julia.admin@acme-corp.com',
|
|
243
234
|
},
|
|
244
235
|
].map((message, index, array) => {
|
|
245
236
|
const created = new Date(Date.now() - (array.length - index) * timeInterval);
|
|
246
237
|
return Obj.make(DataType.Message, {
|
|
247
238
|
created: created.toISOString(),
|
|
248
239
|
blocks: [{ _tag: 'text', text: message.text }],
|
|
249
|
-
sender:
|
|
250
|
-
properties: { labels: message.labels },
|
|
240
|
+
sender: { email: message.sender },
|
|
251
241
|
});
|
|
252
242
|
});
|
|
253
243
|
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/capabilities/ai-service.ts
|
|
4
|
-
import { Effect, Layer } from "effect";
|
|
5
|
-
import { AiServiceRouter } from "@dxos/ai";
|
|
6
|
-
import { Capabilities, contributes } from "@dxos/app-framework";
|
|
7
|
-
var ai_service_default = ((context) => {
|
|
8
|
-
const resolvers = context.getCapabilities(Capabilities.AiModelResolver);
|
|
9
|
-
const combinedLayer = resolvers.reduce((acc, resolver) => resolver.pipe(Layer.provide(acc)), AiServiceRouter.AiModelResolver.fromModelMap(Effect.succeed({})));
|
|
10
|
-
return [
|
|
11
|
-
// TODO(dmaretskyi): Read config from settings.
|
|
12
|
-
contributes(Capabilities.AiServiceLayer, AiServiceRouter.AiModelResolver.buildAiService.pipe(Layer.provide(combinedLayer)))
|
|
13
|
-
];
|
|
14
|
-
});
|
|
15
|
-
export {
|
|
16
|
-
ai_service_default as default
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=ai-service-4VESSFNB.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/ai-service.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Effect, Layer } from 'effect';\n\nimport { AiServiceRouter } from '@dxos/ai';\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\n\nexport default (context: PluginContext) => {\n const resolvers = context.getCapabilities(Capabilities.AiModelResolver);\n\n // TODO(dmaretskyi): Extract function to reduce them.\n const combinedLayer = resolvers.reduce(\n (acc, resolver) => resolver.pipe(Layer.provide(acc)),\n AiServiceRouter.AiModelResolver.fromModelMap(Effect.succeed({})), // Empty resolver as fallback.\n );\n\n return [\n // TODO(dmaretskyi): Read config from settings.\n contributes(\n Capabilities.AiServiceLayer,\n AiServiceRouter.AiModelResolver.buildAiService.pipe(Layer.provide(combinedLayer)),\n ),\n ];\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,QAAQC,aAAa;AAE9B,SAASC,uBAAuB;AAChC,SAASC,cAAkCC,mBAAmB;AAE9D,IAAA,sBAAe,CAACC,YAAAA;AACd,QAAMC,YAAYD,QAAQE,gBAAgBC,aAAaC,eAAe;AAGtE,QAAMC,gBAAgBJ,UAAUK,OAC9B,CAACC,KAAKC,aAAaA,SAASC,KAAKC,MAAMC,QAAQJ,GAAAA,CAAAA,GAC/CK,gBAAgBR,gBAAgBS,aAAaC,OAAOC,QAAQ,CAAC,CAAA,CAAA,CAAA;AAG/D,SAAO;;IAELC,YACEb,aAAac,gBACbL,gBAAgBR,gBAAgBc,eAAeT,KAAKC,MAAMC,QAAQN,aAAAA,CAAAA,CAAAA;;AAGxE;",
|
|
6
|
-
"names": ["Effect", "Layer", "AiServiceRouter", "Capabilities", "contributes", "context", "resolvers", "getCapabilities", "Capabilities", "AiModelResolver", "combinedLayer", "reduce", "acc", "resolver", "pipe", "Layer", "provide", "AiServiceRouter", "fromModelMap", "Effect", "succeed", "contributes", "AiServiceLayer", "buildAiService"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/analysis.ts", "../../../src/functions/list.ts", "../../../src/functions/load.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { templates } from '@dxos/assistant';\nimport {\n DISCORD_BLUEPRINT,\n LINEAR_BLUEPRINT,\n RESEARCH_BLUEPRINT,\n agent,\n createResearchNote,\n fetchDiscordMessages,\n research,\n syncLinearIssues,\n} from '@dxos/assistant-testing';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\n\nimport { analysis, list, load } from '../functions';\n\nconst functions: FunctionDefinition[] = [analysis, list, load];\nconst tools = [\n 'add-to-context',\n // TODO(wittjosiah): Factor out to an ECHO blueprint.\n 'get-schemas',\n 'add-schema',\n 'create-record',\n // TODO(wittjosiah): Factor out to a generic app-framework blueprint.\n 'open-item',\n // TODO(burdon): Anthropic only.\n // https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/text-editor-tool#example-str-replace-command\n // AI_TOOL_NOT_FOUND: str_replace_based_edit_tool\n // 'str_replace_based_edit_tool',\n];\n\nexport const BLUEPRINT_KEY = 'dxos.org/blueprint/assistant';\n\nexport const createBlueprint = (): Blueprint.Blueprint =>\n Blueprint.make({\n key: BLUEPRINT_KEY,\n name: 'Assistant',\n tools: Blueprint.toolDefinitions({ functions, tools }),\n instructions: templates.system,\n });\n\nconst blueprint = createBlueprint();\n\n// TODO(dmaretskyi): Consider splitting into multiple modules.\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.Functions, [agent]),\n contributes(Capabilities.Functions, [research, createResearchNote]),\n contributes(Capabilities.BlueprintDefinition, blueprint),\n contributes(Capabilities.BlueprintDefinition, RESEARCH_BLUEPRINT),\n // TODO(burdon): Move out of assistant.\n contributes(Capabilities.Functions, [syncLinearIssues]),\n contributes(Capabilities.Functions, [fetchDiscordMessages]),\n contributes(Capabilities.BlueprintDefinition, LINEAR_BLUEPRINT),\n contributes(Capabilities.BlueprintDefinition, DISCORD_BLUEPRINT),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, Schema } from 'effect';\n\nimport { defineFunction } from '@dxos/functions';\nimport { log } from '@dxos/log';\n\nexport default defineFunction({\n name: 'dxos.org/function/assistant-analysis',\n description: 'Enter analysis analysis mode.',\n inputSchema: Schema.Struct({\n enable: Schema.Boolean.annotations({ description: 'Enable or disable analysis mode.' }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ context, data: { enable } }) {\n log.info('analysis mode', { space: context.space?.id, enable });\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, Schema } from 'effect';\n\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n name: 'dxos.org/function/assistant/list',\n description:\n // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.\n trim`\n Lists the objects of the given type.\n Check the list-schemas tool for available types before calling this function.\n `,\n inputSchema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The typename of the objects to list.',\n }),\n }),\n outputSchema: Schema.Struct({\n results: Schema.Array(\n Schema.Struct({\n dxn: Schema.String.annotations({ description: 'The DXN of the object.' }),\n label: Schema.optional(Schema.String.annotations({ description: 'The label of the object.' })),\n }),\n ),\n }),\n handler: Effect.fn(function* ({ data: { typename } }) {\n // TODO(wittjosiah): Typename query is not working for dynamic schemas.\n const [schema] = yield* DatabaseService.runSchemaQuery({ typename });\n const filter = schema ? Filter.type(schema) : Filter.typename(typename);\n\n const { objects } = yield* DatabaseService.runQuery(Query.select(filter));\n const results = objects.map((object) => ({\n dxn: Obj.getDXN(object).toString(),\n label: Obj.getLabel(object),\n }));\n\n return { results };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, Option, Schema, pipe } from 'effect';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\n// TODO(burdon): Common error handling.\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n name: 'dxos.org/function/assistant/load',\n description: 'Loads the object.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the object.',\n }),\n typename: Schema.String.annotations({\n description: 'The typename of the object.',\n }),\n }),\n outputSchema: Schema.Struct({\n // TODO(wittjosiah): Type.Obj.Any | Type.Relation.Any\n object: Schema.Any,\n }),\n handler: Effect.fn(function* ({ data: { id, typename } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id));\n return yield* pipe(\n Option.fromNullable(object),\n Option.flatMap((object) => (Obj.getTypename(object) === typename ? Option.some(object) : Option.none())),\n Option.match({\n onNone: () => Effect.fail('Object not found.'),\n onSome: (object) => {\n // log.info('object', { object });\n return Effect.succeed({ object });\n },\n }),\n );\n }),\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Capabilities", "contributes", "templates", "DISCORD_BLUEPRINT", "LINEAR_BLUEPRINT", "RESEARCH_BLUEPRINT", "agent", "createResearchNote", "fetchDiscordMessages", "research", "syncLinearIssues", "Blueprint", "Effect", "Schema", "defineFunction", "log", "name", "description", "inputSchema", "Struct", "enable", "Boolean", "annotations", "outputSchema", "Void", "handler", "fn", "context", "data", "info", "space", "id", "Effect", "Schema", "Filter", "Obj", "Query", "DatabaseService", "defineFunction", "trim", "defineFunction", "name", "description", "trim", "inputSchema", "Schema", "Struct", "typename", "String", "annotations", "outputSchema", "results", "Array", "dxn", "label", "optional", "handler", "Effect", "fn", "data", "schema", "DatabaseService", "runSchemaQuery", "filter", "Filter", "type", "objects", "runQuery", "Query", "select", "map", "object", "Obj", "getDXN", "toString", "getLabel", "Effect", "Option", "Schema", "pipe", "ArtifactId", "Obj", "DatabaseService", "defineFunction", "defineFunction", "name", "description", "inputSchema", "Schema", "Struct", "id", "ArtifactId", "annotations", "typename", "String", "outputSchema", "object", "Any", "handler", "Effect", "fn", "data", "DatabaseService", "resolve", "toDXN", "pipe", "Option", "fromNullable", "flatMap", "Obj", "getTypename", "some", "none", "match", "onNone", "fail", "onSome", "succeed", "functions", "analysis", "list", "load", "tools", "BLUEPRINT_KEY", "createBlueprint", "Blueprint", "make", "key", "name", "toolDefinitions", "instructions", "templates", "system", "blueprint", "contributes", "Capabilities", "Functions", "agent", "research", "createResearchNote", "BlueprintDefinition", "RESEARCH_BLUEPRINT", "syncLinearIssues", "fetchDiscordMessages", "LINEAR_BLUEPRINT", "DISCORD_BLUEPRINT"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/TemplateEditor/TemplateEditor.tsx", "../../../src/components/TemplateEditor/handlebars-extension.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Template } from '@dxos/blueprints';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nimport { handlebars } from './handlebars-extension';\n\nexport type TemplateEditorProps = ThemedClassName<{\n id: string;\n template: Template.Template;\n}>;\n\nexport const TemplateEditor = ({ id, classNames, template }: TemplateEditorProps) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor(() => {\n const text = template.source?.target;\n if (!text) {\n return {};\n }\n\n return {\n initialValue: text.content ?? '',\n extensions: [\n createDataExtensions({ id, text: createDocAccessor(text, ['content']) }),\n createBasicExtensions({\n bracketMatching: false,\n lineNumbers: true,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({ themeMode }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n handlebars(),\n ].filter(isNotFalsy),\n };\n }, [themeMode, template.source?.target]);\n\n return <div ref={parentRef} className={mx('bs-full overflow-hidden', classNames)} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type CompletionContext,\n type CompletionResult,\n autocompletion,\n completionKeymap,\n} from '@codemirror/autocomplete';\nimport { type Extension } from '@codemirror/state';\nimport { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';\n\nexport type HandlebarsOptions = {};\n\n/**\n * Simple Handlebars plugin for CodeMirror.\n * Supports:\n * - Comments: {{! comment }}\n * - Commands: {{#command}} {{/command}}\n * - Variables: {{var}}\n * - Commands with variables: {{#each items}} {{/each}}\n */\nexport const handlebars = (_: HandlebarsOptions = {}): Extension => {\n return [\n handlebarsHighlightPlugin,\n autocompletion({\n activateOnTyping: true,\n aboveCursor: true,\n closeOnBlur: true,\n override: [handlebarsCompletions],\n }),\n keymap.of(completionKeymap),\n ];\n};\n\nconst regex = {\n comment: /\\{\\{!\\s*[^}]*\\}\\}/g,\n brackets: /\\{\\{[^}]*\\}\\}/g,\n command: /\\{\\{[#/]([^}]+)\\}\\}/g,\n var: /\\{\\{(?!\\s*!)(\\w[^}]*)\\}\\}/g,\n};\n\n/**\n * ViewPlugin that decorates Handlebars syntax.\n */\nconst handlebarsHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n buildDecorations(view: EditorView) {\n const widgets: any[] = [];\n\n for (const { from, to } of view.visibleRanges) {\n const text = view.state.doc.sliceString(from, to);\n\n // Match comments: {{! comment }}\n {\n let match;\n while ((match = regex.comment.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n widgets.push(Decoration.mark({ class: 'text-subdued' }).range(start, end));\n }\n }\n\n // Match brackets: {{ and }}\n {\n let match;\n while ((match = regex.brackets.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n widgets.push(Decoration.mark({ class: 'text-subdued' }).range(start, end));\n }\n }\n\n // Match commands: {{#command}} and {{/command}}\n {\n let match;\n while ((match = regex.command.exec(text)) !== null) {\n const start = from + match.index + 2;\n let end = start + match[0].length - 4;\n const text = view.state.doc.sliceString(start, end);\n const parts = text.split(/\\s+/);\n if (parts.length > 1) {\n const idx = start + parts[0].length;\n widgets.push(Decoration.mark({ class: 'text-greenText' }).range(idx, end));\n end = idx;\n }\n widgets.push(Decoration.mark({ class: 'text-blueText' }).range(start, end));\n }\n }\n\n // Match variables: {{var}}\n {\n let match;\n while ((match = regex.var.exec(text)) !== null) {\n const start = from + match.index + 2;\n const end = start + match[0].length - 4;\n widgets.push(Decoration.mark({ class: 'text-greenText' }).range(start, end));\n }\n }\n }\n\n // Sort decorations by position to avoid \"Ranges must be added sorted\" error.\n widgets.sort((a, b) => a.from - b.from || a.startSide - b.startSide);\n return Decoration.set(widgets);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\n// TODO(burdon): Pass in variables.\nconst variables = ['this'];\nconst commands = ['this', 'each', 'if', 'unless', 'with'];\n\n/**\n * Provides completions for Handlebars variables.\n */\nfunction handlebarsCompletions(context: CompletionContext): CompletionResult | null {\n const match = context.matchBefore(/\\{\\{[^}]*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n let type = 'variable';\n let text = match.text.slice(2);\n let from = match.from + 2;\n let matches = [];\n if (text.startsWith('#') || text.startsWith('/')) {\n const idx = text.lastIndexOf(' ');\n if (idx !== -1) {\n type = 'variable';\n matches = variables;\n text = text.slice(idx + 1);\n from += idx + 1;\n } else {\n type = 'command';\n text = text.slice(1);\n matches = commands;\n from += 1;\n }\n } else {\n type = 'variable';\n matches = variables;\n }\n\n const options = matches.filter((name) => name.startsWith(text)).map((name) => ({ type, label: name }));\n return {\n from,\n options,\n };\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "createDocAccessor", "useThemeContext", "useTranslation", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "useTextEditor", "mx", "isNotFalsy", "autocompletion", "completionKeymap", "Decoration", "ViewPlugin", "keymap", "handlebars", "_", "handlebarsHighlightPlugin", "autocompletion", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "keymap", "of", "completionKeymap", "regex", "comment", "brackets", "command", "var", "ViewPlugin", "fromClass", "buildDecorations", "view", "widgets", "from", "to", "visibleRanges", "text", "state", "doc", "sliceString", "match", "exec", "start", "index", "end", "length", "push", "Decoration", "mark", "class", "range", "parts", "split", "idx", "sort", "a", "b", "startSide", "set", "update", "docChanged", "viewportChanged", "decorations", "v", "variables", "commands", "context", "matchBefore", "type", "slice", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "map", "label", "TemplateEditor", "id", "classNames", "template", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "text", "source", "target", "initialValue", "content", "extensions", "createDataExtensions", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineNumbers", "lineWrapping", "placeholder", "createThemeExtensions", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "filter", "isNotFalsy", "div", "ref", "className", "mx"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/capabilities.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type DeepReadonly } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport { type Assistant } from '../types';\n\nexport namespace AssistantCapabilities {\n export type AssistantState = {\n /** Map of primary object fq id to current chat. */\n currentChat: Record<string, Assistant.Chat>;\n };\n export const State = defineCapability<DeepReadonly<AssistantState>>(`${meta.id}/capability/state`);\n export const MutableState = defineCapability<AssistantState>(`${meta.id}/capability/state`);\n}\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,SAASA,wBAAwB;UAMhBC,wBAAAA;yBAKFC,QAAQC,iBAA+C,GAAGC,KAAKC,EAAE,mBAAmB;yBACpFC,eAAeH,iBAAiC,GAAGC,KAAKC,EAAE,mBAAmB;AAC5F,GAPiBJ,0BAAAA,wBAAAA,CAAAA,EAAAA;;",
|
|
6
|
-
"names": ["defineCapability", "AssistantCapabilities", "State", "defineCapability", "meta", "id", "MutableState"]
|
|
7
|
-
}
|