@dxos/plugin-daily-summary 0.8.4-main.bcb3aa67d6 → 0.8.4-main.dfabb4ec29
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/neutral/DailySummaryPlugin.mjs +21 -0
- package/dist/lib/neutral/DailySummaryPlugin.mjs.map +7 -0
- package/dist/lib/neutral/DailySummarySettings-RO4ZS7HJ.mjs +49 -0
- package/dist/lib/neutral/DailySummarySettings-RO4ZS7HJ.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-BTDLYMIG.mjs +32 -0
- package/dist/lib/neutral/app-graph-builder-BTDLYMIG.mjs.map +7 -0
- package/dist/lib/neutral/blueprint-definition-QLGURVVR.mjs +13 -0
- package/dist/lib/neutral/blueprint-definition-QLGURVVR.mjs.map +7 -0
- package/dist/lib/neutral/blueprints/index.mjs +15 -0
- package/dist/lib/neutral/blueprints/index.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +11 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-7Q6EW2T4.mjs +45 -0
- package/dist/lib/neutral/chunk-7Q6EW2T4.mjs.map +7 -0
- package/dist/lib/neutral/chunk-N62WIXKJ.mjs +40 -0
- package/dist/lib/neutral/chunk-N62WIXKJ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-PDAIPXYM.mjs +21 -0
- package/dist/lib/neutral/chunk-PDAIPXYM.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +7 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/generate-GMQ2UTV4.mjs +183 -0
- package/dist/lib/neutral/generate-GMQ2UTV4.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +19 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +7 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +11 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-2Y7H4PUA.mjs +27 -0
- package/dist/lib/neutral/react-surface-2Y7H4PUA.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +18 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/types/src/DailySummaryPlugin.d.ts +1 -0
- package/dist/types/src/DailySummaryPlugin.d.ts.map +1 -1
- package/dist/types/src/DailySummaryPlugin.test.d.ts +2 -0
- package/dist/types/src/DailySummaryPlugin.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/daily-summary-blueprint.d.ts +2 -2
- package/dist/types/src/blueprints/daily-summary-blueprint.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/definitions.d.ts +2 -2
- package/dist/types/src/blueprints/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/generate.d.ts +2 -2
- package/dist/types/src/blueprints/functions/generate.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/index.d.ts +1 -1
- package/dist/types/src/blueprints/functions/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +2 -2
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +2 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/containers/DailySummarySettings/DailySummarySettings.d.ts +2 -5
- package/dist/types/src/containers/DailySummarySettings/DailySummarySettings.d.ts.map +1 -1
- package/dist/types/src/containers/DailySummarySettings/index.d.ts +1 -2
- package/dist/types/src/containers/DailySummarySettings/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +3 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +5 -6
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +68 -33
- package/src/DailySummaryPlugin.test.ts +31 -0
- package/src/DailySummaryPlugin.tsx +4 -3
- package/src/blueprints/daily-summary-blueprint.ts +2 -3
- package/src/blueprints/functions/definitions.ts +1 -1
- package/src/blueprints/functions/generate.test.ts +11 -12
- package/src/blueprints/functions/generate.ts +14 -9
- package/src/blueprints/functions/index.ts +1 -1
- package/src/capabilities/app-graph-builder.ts +6 -7
- package/src/capabilities/blueprint-definition.ts +2 -0
- package/src/capabilities/index.ts +2 -0
- package/src/capabilities/react-surface.tsx +3 -4
- package/src/containers/DailySummarySettings/DailySummarySettings.tsx +10 -14
- package/src/containers/DailySummarySettings/index.ts +1 -3
- package/src/index.ts +2 -2
- package/src/meta.test.ts +2 -2
- package/src/meta.ts +1 -1
- package/src/plugin.ts +9 -0
- package/src/translations.test.ts +1 -1
- package/dist/lib/browser/index.mjs +0 -53
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-daily-summary",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.dfabb4ec29",
|
|
4
4
|
"description": "Daily activity summary plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -13,16 +13,52 @@
|
|
|
13
13
|
"sideEffects": true,
|
|
14
14
|
"type": "module",
|
|
15
15
|
"imports": {
|
|
16
|
-
"#blueprints":
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
"#blueprints": {
|
|
17
|
+
"source": "./src/blueprints/index.ts",
|
|
18
|
+
"types": "./dist/types/src/blueprints/index.d.ts",
|
|
19
|
+
"default": "./dist/lib/neutral/blueprints/index.mjs"
|
|
20
|
+
},
|
|
21
|
+
"#capabilities": {
|
|
22
|
+
"source": "./src/capabilities/index.ts",
|
|
23
|
+
"types": "./dist/types/src/capabilities/index.d.ts",
|
|
24
|
+
"default": "./dist/lib/neutral/capabilities/index.mjs"
|
|
25
|
+
},
|
|
26
|
+
"#containers": {
|
|
27
|
+
"source": "./src/containers/index.ts",
|
|
28
|
+
"types": "./dist/types/src/containers/index.d.ts",
|
|
29
|
+
"default": "./dist/lib/neutral/containers/index.mjs"
|
|
30
|
+
},
|
|
31
|
+
"#meta": {
|
|
32
|
+
"source": "./src/meta.ts",
|
|
33
|
+
"types": "./dist/types/src/meta.d.ts",
|
|
34
|
+
"default": "./dist/lib/neutral/meta.mjs"
|
|
35
|
+
},
|
|
36
|
+
"#plugin": {
|
|
37
|
+
"source": "./src/DailySummaryPlugin.tsx",
|
|
38
|
+
"types": "./dist/types/src/DailySummaryPlugin.d.ts",
|
|
39
|
+
"default": "./dist/lib/neutral/DailySummaryPlugin.mjs"
|
|
40
|
+
},
|
|
41
|
+
"#translations": {
|
|
42
|
+
"source": "./src/translations.ts",
|
|
43
|
+
"types": "./dist/types/src/translations.d.ts",
|
|
44
|
+
"default": "./dist/lib/neutral/translations.mjs"
|
|
45
|
+
}
|
|
20
46
|
},
|
|
21
47
|
"exports": {
|
|
22
48
|
".": {
|
|
23
49
|
"source": "./src/index.ts",
|
|
24
50
|
"types": "./dist/types/src/index.d.ts",
|
|
25
|
-
"
|
|
51
|
+
"default": "./dist/lib/neutral/index.mjs"
|
|
52
|
+
},
|
|
53
|
+
"./plugin": {
|
|
54
|
+
"source": "./src/plugin.ts",
|
|
55
|
+
"types": "./dist/types/src/plugin.d.ts",
|
|
56
|
+
"default": "./dist/lib/neutral/plugin.mjs"
|
|
57
|
+
},
|
|
58
|
+
"./translations": {
|
|
59
|
+
"source": "./src/translations.ts",
|
|
60
|
+
"types": "./dist/types/src/translations.d.ts",
|
|
61
|
+
"default": "./dist/lib/neutral/translations.mjs"
|
|
26
62
|
}
|
|
27
63
|
},
|
|
28
64
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -33,44 +69,43 @@
|
|
|
33
69
|
"dependencies": {
|
|
34
70
|
"@effect/ai": "0.33.2",
|
|
35
71
|
"effect": "3.20.0",
|
|
36
|
-
"@dxos/ai": "0.8.4-main.
|
|
37
|
-
"@dxos/app-framework": "0.8.4-main.
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/plugin-graph": "0.8.4-main.
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/types": "0.8.4-main.bcb3aa67d6",
|
|
55
|
-
"@dxos/keys": "0.8.4-main.bcb3aa67d6",
|
|
56
|
-
"@dxos/util": "0.8.4-main.bcb3aa67d6"
|
|
72
|
+
"@dxos/ai": "0.8.4-main.dfabb4ec29",
|
|
73
|
+
"@dxos/app-framework": "0.8.4-main.dfabb4ec29",
|
|
74
|
+
"@dxos/assistant": "0.8.4-main.dfabb4ec29",
|
|
75
|
+
"@dxos/client-protocol": "0.8.4-main.dfabb4ec29",
|
|
76
|
+
"@dxos/app-toolkit": "0.8.4-main.dfabb4ec29",
|
|
77
|
+
"@dxos/client": "0.8.4-main.dfabb4ec29",
|
|
78
|
+
"@dxos/effect": "0.8.4-main.dfabb4ec29",
|
|
79
|
+
"@dxos/invariant": "0.8.4-main.dfabb4ec29",
|
|
80
|
+
"@dxos/keys": "0.8.4-main.dfabb4ec29",
|
|
81
|
+
"@dxos/echo": "0.8.4-main.dfabb4ec29",
|
|
82
|
+
"@dxos/plugin-graph": "0.8.4-main.dfabb4ec29",
|
|
83
|
+
"@dxos/plugin-space": "0.8.4-main.dfabb4ec29",
|
|
84
|
+
"@dxos/react-client": "0.8.4-main.dfabb4ec29",
|
|
85
|
+
"@dxos/react-ui-form": "0.8.4-main.dfabb4ec29",
|
|
86
|
+
"@dxos/schema": "0.8.4-main.dfabb4ec29",
|
|
87
|
+
"@dxos/types": "0.8.4-main.dfabb4ec29",
|
|
88
|
+
"@dxos/util": "0.8.4-main.dfabb4ec29",
|
|
89
|
+
"@dxos/compute": "0.8.4-main.dfabb4ec29"
|
|
57
90
|
},
|
|
58
91
|
"devDependencies": {
|
|
59
|
-
"@storybook/react-vite": "^10.
|
|
92
|
+
"@storybook/react-vite": "^10.3.6",
|
|
60
93
|
"@types/react": "~19.2.7",
|
|
61
94
|
"@types/react-dom": "~19.2.3",
|
|
62
95
|
"react": "~19.2.3",
|
|
63
96
|
"react-dom": "~19.2.3",
|
|
64
|
-
"vite": "^
|
|
65
|
-
"@dxos/echo-db": "0.8.4-main.
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
97
|
+
"vite": "^8.0.10",
|
|
98
|
+
"@dxos/echo-db": "0.8.4-main.dfabb4ec29",
|
|
99
|
+
"@dxos/plugin-testing": "0.8.4-main.dfabb4ec29",
|
|
100
|
+
"@dxos/functions-runtime": "0.8.4-main.dfabb4ec29",
|
|
101
|
+
"@dxos/react-ui": "0.8.4-main.dfabb4ec29",
|
|
102
|
+
"@dxos/storybook-utils": "0.8.4-main.dfabb4ec29"
|
|
68
103
|
},
|
|
69
104
|
"peerDependencies": {
|
|
70
105
|
"effect": "3.20.0",
|
|
71
106
|
"react": "~19.2.3",
|
|
72
107
|
"react-dom": "~19.2.3",
|
|
73
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
108
|
+
"@dxos/react-ui": "0.8.4-main.dfabb4ec29"
|
|
74
109
|
},
|
|
75
110
|
"publishConfig": {
|
|
76
111
|
"access": "public"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { describe, test } from 'vitest';
|
|
6
|
+
|
|
7
|
+
import { AppActivationEvents } from '@dxos/app-toolkit';
|
|
8
|
+
import { createComposerTestApp } from '@dxos/plugin-testing/harness';
|
|
9
|
+
|
|
10
|
+
import { DailySummaryPlugin } from '#plugin';
|
|
11
|
+
|
|
12
|
+
import { meta } from './meta';
|
|
13
|
+
|
|
14
|
+
const moduleId = (name: string) => `${meta.id}.module.${name}`;
|
|
15
|
+
|
|
16
|
+
describe('DailySummaryPlugin', () => {
|
|
17
|
+
test('modules activate on the expected events', async ({ expect }) => {
|
|
18
|
+
await using harness = await createComposerTestApp({
|
|
19
|
+
plugins: [DailySummaryPlugin()],
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Modules expected to be active after a normal startup.
|
|
23
|
+
expect(harness.manager.getActive()).toEqual(
|
|
24
|
+
expect.arrayContaining([moduleId('AppGraphBuilder'), moduleId('ReactSurface')]),
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
// SetupArtifactDefinition is fired by AssistantPlugin, which can't be included here due to a workspace cycle.
|
|
28
|
+
await harness.fire(AppActivationEvents.SetupArtifactDefinition);
|
|
29
|
+
expect(harness.manager.getActive()).toContain(moduleId('BlueprintDefinition'));
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
import { Plugin } from '@dxos/app-framework';
|
|
6
6
|
import { AppPlugin } from '@dxos/app-toolkit';
|
|
7
7
|
|
|
8
|
-
import { meta } from '#meta';
|
|
9
|
-
import { translations } from './translations';
|
|
10
|
-
|
|
11
8
|
import { AppGraphBuilder, BlueprintDefinition, ReactSurface } from '#capabilities';
|
|
9
|
+
import { meta } from '#meta';
|
|
10
|
+
import { translations } from '#translations';
|
|
12
11
|
|
|
13
12
|
export const DailySummaryPlugin = Plugin.define(meta).pipe(
|
|
14
13
|
AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),
|
|
@@ -17,3 +16,5 @@ export const DailySummaryPlugin = Plugin.define(meta).pipe(
|
|
|
17
16
|
AppPlugin.addTranslationsModule({ translations }),
|
|
18
17
|
Plugin.make,
|
|
19
18
|
);
|
|
19
|
+
|
|
20
|
+
export default DailySummaryPlugin;
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
// Copyright 2026 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import { Blueprint, Template } from '@dxos/blueprints';
|
|
5
|
+
import { Blueprint, Template } from '@dxos/compute';
|
|
7
6
|
import { trim } from '@dxos/util';
|
|
8
7
|
|
|
9
8
|
import { DailySummaryHandlers, GenerateSummary } from './functions';
|
|
@@ -29,7 +28,7 @@ const make = () =>
|
|
|
29
28
|
}),
|
|
30
29
|
});
|
|
31
30
|
|
|
32
|
-
const blueprint:
|
|
31
|
+
const blueprint: Blueprint.Definition = {
|
|
33
32
|
key: BLUEPRINT_KEY,
|
|
34
33
|
make,
|
|
35
34
|
};
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
7
|
import { AiService } from '@dxos/ai';
|
|
8
|
+
import { Operation } from '@dxos/compute';
|
|
8
9
|
import { Database } from '@dxos/echo';
|
|
9
|
-
import { Operation } from '@dxos/operation';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Generates a daily summary of recently modified objects using AI.
|
|
@@ -3,21 +3,19 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { describe, expect, it } from '@effect/vitest';
|
|
6
|
-
import * as Schema from 'effect/Schema';
|
|
7
6
|
import * as Effect from 'effect/Effect';
|
|
7
|
+
import * as Schema from 'effect/Schema';
|
|
8
8
|
|
|
9
|
-
import { AssistantTestLayer } from '@dxos/assistant/testing';
|
|
10
|
-
import { Blueprint } from '@dxos/blueprints';
|
|
11
9
|
import { SpaceProperties } from '@dxos/client-protocol';
|
|
10
|
+
import { Blueprint, Operation } from '@dxos/compute';
|
|
12
11
|
import { Collection, DXN, Database, Obj, Query, Ref, Type } from '@dxos/echo';
|
|
13
12
|
import { TestHelpers } from '@dxos/effect/testing';
|
|
14
|
-
import {
|
|
13
|
+
import { AssistantTestLayer } from '@dxos/functions-runtime/testing';
|
|
15
14
|
import { ObjectId } from '@dxos/keys';
|
|
16
15
|
import { Text } from '@dxos/schema';
|
|
17
16
|
import { HasSubject } from '@dxos/types';
|
|
18
17
|
|
|
19
18
|
import { DailySummaryHandlers } from '../daily-summary-blueprint';
|
|
20
|
-
|
|
21
19
|
import { GenerateSummary } from './definitions';
|
|
22
20
|
|
|
23
21
|
ObjectId.dangerouslyDisableRandomness();
|
|
@@ -45,12 +43,13 @@ const TestLayer = AssistantTestLayer({
|
|
|
45
43
|
tracing: 'pretty',
|
|
46
44
|
});
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
// TODO: Requires a live ECHO database — not available in CI.
|
|
47
|
+
describe.skip('GenerateSummary', () => {
|
|
49
48
|
it.effect(
|
|
50
49
|
'creates a Markdown document with summary content',
|
|
51
50
|
Effect.fnUntraced(
|
|
52
51
|
function* (_) {
|
|
53
|
-
const result = yield*
|
|
52
|
+
const result = yield* Operation.invoke(GenerateSummary, {
|
|
54
53
|
lookbackHours: 24,
|
|
55
54
|
});
|
|
56
55
|
|
|
@@ -74,7 +73,7 @@ describe('GenerateSummary', () => {
|
|
|
74
73
|
'creates a "Summaries" collection if none exists',
|
|
75
74
|
Effect.fnUntraced(
|
|
76
75
|
function* (_) {
|
|
77
|
-
yield*
|
|
76
|
+
yield* Operation.invoke(GenerateSummary, {});
|
|
78
77
|
|
|
79
78
|
const collections = yield* Database.runQuery(Query.type(Collection.Collection, { name: 'Summaries' }));
|
|
80
79
|
expect(collections.length).toBe(1);
|
|
@@ -90,8 +89,8 @@ describe('GenerateSummary', () => {
|
|
|
90
89
|
'reuses existing "Summaries" collection on subsequent calls',
|
|
91
90
|
Effect.fnUntraced(
|
|
92
91
|
function* (_) {
|
|
93
|
-
yield*
|
|
94
|
-
yield*
|
|
92
|
+
yield* Operation.invoke(GenerateSummary, {});
|
|
93
|
+
yield* Operation.invoke(GenerateSummary, {});
|
|
95
94
|
|
|
96
95
|
const collections = yield* Database.runQuery(Query.type(Collection.Collection, { name: 'Summaries' }));
|
|
97
96
|
expect(collections.length).toBe(1);
|
|
@@ -108,7 +107,7 @@ describe('GenerateSummary', () => {
|
|
|
108
107
|
Effect.fnUntraced(
|
|
109
108
|
function* (_) {
|
|
110
109
|
const previousSummary = 'Yesterday was productive. 10 objects edited.';
|
|
111
|
-
const result = yield*
|
|
110
|
+
const result = yield* Operation.invoke(GenerateSummary, {
|
|
112
111
|
previousSummary,
|
|
113
112
|
lookbackHours: 24,
|
|
114
113
|
});
|
|
@@ -128,7 +127,7 @@ describe('GenerateSummary', () => {
|
|
|
128
127
|
'names document with today date',
|
|
129
128
|
Effect.fnUntraced(
|
|
130
129
|
function* (_) {
|
|
131
|
-
const result = yield*
|
|
130
|
+
const result = yield* Operation.invoke(GenerateSummary, {});
|
|
132
131
|
const today = new Date().toISOString().slice(0, 10);
|
|
133
132
|
expect(result.date).toBe(today);
|
|
134
133
|
|
|
@@ -9,9 +9,8 @@ import * as Layer from 'effect/Layer';
|
|
|
9
9
|
import * as Schema from 'effect/Schema';
|
|
10
10
|
|
|
11
11
|
import { AiService, ToolExecutionService, ToolResolverService } from '@dxos/ai';
|
|
12
|
+
import { Trace, Operation, OperationRegistry } from '@dxos/compute';
|
|
12
13
|
import { Collection, Database, Filter, Obj, Query, Ref, Type } from '@dxos/echo';
|
|
13
|
-
import { FunctionInvocationService, TracingService } from '@dxos/functions';
|
|
14
|
-
import { Operation } from '@dxos/operation';
|
|
15
14
|
import { Text } from '@dxos/schema';
|
|
16
15
|
import { CollectionModel } from '@dxos/schema';
|
|
17
16
|
import { trim } from '@dxos/util';
|
|
@@ -58,7 +57,7 @@ const MarkdownDocument = Schema.Struct({
|
|
|
58
57
|
type MarkdownDoc = Schema.Schema.Type<typeof MarkdownDocument>;
|
|
59
58
|
|
|
60
59
|
const makeMarkdownDoc = ({ name, content }: { name: string; content: string }) => {
|
|
61
|
-
const doc = Obj.make(MarkdownDocument, { name, content: Ref.make(Text.make(content)) });
|
|
60
|
+
const doc = Obj.make(MarkdownDocument, { name, content: Ref.make(Text.make({ content })) });
|
|
62
61
|
Obj.setParent(doc.content.target!, doc);
|
|
63
62
|
return doc;
|
|
64
63
|
};
|
|
@@ -109,8 +108,14 @@ export default GenerateSummary.pipe(
|
|
|
109
108
|
AiService.model('@anthropic/claude-haiku-4-5'),
|
|
110
109
|
ToolResolverService.layerEmpty,
|
|
111
110
|
ToolExecutionService.layerEmpty,
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
Database.notAvailable,
|
|
112
|
+
Layer.succeed(Operation.Service, {
|
|
113
|
+
invoke: () => Effect.die('Not available.'),
|
|
114
|
+
schedule: () => Effect.die('Not available.'),
|
|
115
|
+
invokePromise: async () => ({ error: new Error('Not available.') }),
|
|
116
|
+
} as any),
|
|
117
|
+
Layer.succeed(OperationRegistry.Service, { resolve: () => Effect.succeed(undefined) } as any),
|
|
118
|
+
Trace.writerLayerNoop,
|
|
114
119
|
),
|
|
115
120
|
),
|
|
116
121
|
),
|
|
@@ -158,14 +163,14 @@ const updateDocContent = Effect.fn(function* (doc: MarkdownDoc, newContent: stri
|
|
|
158
163
|
if (Ref.isRef(textRef)) {
|
|
159
164
|
const text: Text.Text | undefined = yield* Effect.promise(() => textRef.load());
|
|
160
165
|
if (text) {
|
|
161
|
-
Obj.
|
|
162
|
-
|
|
166
|
+
Obj.update(text, (text) => {
|
|
167
|
+
text.content = newContent;
|
|
163
168
|
});
|
|
164
169
|
return;
|
|
165
170
|
}
|
|
166
171
|
}
|
|
167
|
-
Obj.
|
|
168
|
-
|
|
172
|
+
Obj.update(doc, (doc) => {
|
|
173
|
+
doc.content = Ref.make(Text.make({ content: newContent }));
|
|
169
174
|
});
|
|
170
175
|
});
|
|
171
176
|
|
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
import * as Effect from 'effect/Effect';
|
|
6
6
|
|
|
7
7
|
import { Capability } from '@dxos/app-framework';
|
|
8
|
-
import { AppCapabilities, AppNode } from '@dxos/app-toolkit';
|
|
9
|
-
import { GraphBuilder
|
|
10
|
-
import { meta as spaceMeta } from '@dxos/plugin-space/meta';
|
|
8
|
+
import { AppCapabilities, AppNode, AppNodeMatcher } from '@dxos/app-toolkit';
|
|
9
|
+
import { GraphBuilder } from '@dxos/plugin-graph';
|
|
11
10
|
|
|
12
11
|
import { meta } from '#meta';
|
|
13
12
|
|
|
@@ -15,12 +14,12 @@ export default Capability.makeModule(
|
|
|
15
14
|
Effect.fnUntraced(function* () {
|
|
16
15
|
const extensions = yield* Effect.all([
|
|
17
16
|
GraphBuilder.createExtension({
|
|
18
|
-
id:
|
|
19
|
-
match:
|
|
20
|
-
connector: (
|
|
17
|
+
id: 'space-settings-daily-summary',
|
|
18
|
+
match: AppNodeMatcher.whenSpace,
|
|
19
|
+
connector: () =>
|
|
21
20
|
Effect.succeed([
|
|
22
21
|
AppNode.makeSettingsPanel({
|
|
23
|
-
id:
|
|
22
|
+
id: 'daily-summary',
|
|
24
23
|
type: `${meta.id}.space-settings-daily-summary`,
|
|
25
24
|
label: ['plugin.name', { ns: meta.id }],
|
|
26
25
|
icon: 'ph--calendar-check--regular',
|
|
@@ -6,6 +6,8 @@ import * as Effect from 'effect/Effect';
|
|
|
6
6
|
|
|
7
7
|
import { Capability } from '@dxos/app-framework';
|
|
8
8
|
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
9
|
+
// eslint-disable-next-line unused-imports/no-unused-imports
|
|
10
|
+
import type { Blueprint } from '@dxos/compute';
|
|
9
11
|
|
|
10
12
|
import { DailySummaryBlueprint } from '#blueprints';
|
|
11
13
|
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Capability } from '@dxos/app-framework';
|
|
6
|
+
// eslint-disable-next-line unused-imports/no-unused-imports
|
|
7
|
+
import type { Blueprint } from '@dxos/compute';
|
|
6
8
|
|
|
7
9
|
export const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));
|
|
8
10
|
export const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));
|
|
@@ -7,7 +7,7 @@ import React from 'react';
|
|
|
7
7
|
|
|
8
8
|
import { Capabilities, Capability } from '@dxos/app-framework';
|
|
9
9
|
import { Surface } from '@dxos/app-framework/ui';
|
|
10
|
-
import { useActiveSpace } from '@dxos/app-toolkit/ui';
|
|
10
|
+
import { AppSurface, useActiveSpace } from '@dxos/app-toolkit/ui';
|
|
11
11
|
|
|
12
12
|
import { DailySummarySettings } from '#containers';
|
|
13
13
|
import { meta } from '#meta';
|
|
@@ -16,9 +16,8 @@ export default Capability.makeModule(() =>
|
|
|
16
16
|
Effect.succeed(
|
|
17
17
|
Capability.contributes(Capabilities.ReactSurface, [
|
|
18
18
|
Surface.create({
|
|
19
|
-
id:
|
|
20
|
-
|
|
21
|
-
filter: (data): data is { subject: string } => data.subject === `${meta.id}.space-settings-daily-summary`,
|
|
19
|
+
id: 'space-settings-daily-summary',
|
|
20
|
+
filter: AppSurface.literal(AppSurface.Article, `${meta.id}.space-settings-daily-summary`),
|
|
22
21
|
component: () => {
|
|
23
22
|
const space = useActiveSpace();
|
|
24
23
|
if (!space) {
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { useCallback, useMemo } from 'react';
|
|
6
6
|
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
7
|
+
import { AppSurface } from '@dxos/app-toolkit/ui';
|
|
8
|
+
import { Trigger } from '@dxos/compute';
|
|
9
|
+
import { Operation } from '@dxos/compute';
|
|
10
|
+
import { Filter, Query, Ref } from '@dxos/echo';
|
|
11
11
|
import { useQuery } from '@dxos/react-client/echo';
|
|
12
12
|
import { IconButton, useTranslation } from '@dxos/react-ui';
|
|
13
13
|
import { Settings } from '@dxos/react-ui-form';
|
|
@@ -15,14 +15,13 @@ import { Settings } from '@dxos/react-ui-form';
|
|
|
15
15
|
import { GenerateSummary } from '#blueprints';
|
|
16
16
|
import { meta } from '#meta';
|
|
17
17
|
|
|
18
|
-
export
|
|
19
|
-
space: Space;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export const DailySummarySettings = ({ space }: DailySummarySettingsProps) => {
|
|
18
|
+
export const DailySummarySettings = ({ space }: AppSurface.SpaceArticleProps) => {
|
|
23
19
|
const { t } = useTranslation(meta.id);
|
|
24
20
|
|
|
25
|
-
const triggers = useQuery(
|
|
21
|
+
const triggers = useQuery(
|
|
22
|
+
space.db,
|
|
23
|
+
Query.select(Filter.type(Trigger.Trigger)).debugLabel('plugin-daily-summary.DailySummarySettings'),
|
|
24
|
+
);
|
|
26
25
|
const existingTrigger = useMemo(
|
|
27
26
|
() =>
|
|
28
27
|
triggers.find((trigger) => {
|
|
@@ -43,10 +42,7 @@ export const DailySummarySettings = ({ space }: DailySummarySettingsProps) => {
|
|
|
43
42
|
}
|
|
44
43
|
const trigger = Trigger.make({
|
|
45
44
|
enabled: true,
|
|
46
|
-
spec:
|
|
47
|
-
kind: 'timer',
|
|
48
|
-
cron: '0 21 * * *',
|
|
49
|
-
},
|
|
45
|
+
spec: Trigger.specTimer('0 21 * * *'),
|
|
50
46
|
function: Ref.make(Operation.serialize(GenerateSummary)),
|
|
51
47
|
});
|
|
52
48
|
space.db.add(trigger);
|
package/src/index.ts
CHANGED
package/src/meta.test.ts
CHANGED
|
@@ -8,14 +8,14 @@ import { meta } from '#meta';
|
|
|
8
8
|
|
|
9
9
|
describe('plugin meta', () => {
|
|
10
10
|
test('has correct id', () => {
|
|
11
|
-
expect(meta.id).toBe('org.dxos.plugin.
|
|
11
|
+
expect(meta.id).toBe('org.dxos.plugin.dailySummary');
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
test('has required fields', () => {
|
|
15
15
|
expect(meta.name).toBe('Daily Summary');
|
|
16
16
|
expect(meta.description).toBeTruthy();
|
|
17
17
|
expect(meta.icon).toBe('ph--calendar-check--regular');
|
|
18
|
-
expect(meta.iconHue).toBe('
|
|
18
|
+
expect(meta.iconHue).toBe('sky');
|
|
19
19
|
expect(meta.source).toContain('plugin-daily-summary');
|
|
20
20
|
});
|
|
21
21
|
});
|
package/src/meta.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type Plugin } from '@dxos/app-framework';
|
|
|
6
6
|
import { trim } from '@dxos/util';
|
|
7
7
|
|
|
8
8
|
export const meta: Plugin.Meta = {
|
|
9
|
-
id: 'org.dxos.plugin.
|
|
9
|
+
id: 'org.dxos.plugin.dailySummary',
|
|
10
10
|
name: 'Daily Summary',
|
|
11
11
|
description: trim`
|
|
12
12
|
Generates a daily summary of your activity by querying objects edited in the last day
|
package/src/plugin.ts
ADDED
package/src/translations.test.ts
CHANGED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// src/meta.ts
|
|
2
|
-
import { trim } from "@dxos/util";
|
|
3
|
-
var meta = {
|
|
4
|
-
id: "org.dxos.plugin.daily-summary",
|
|
5
|
-
name: "Daily Summary",
|
|
6
|
-
description: trim`
|
|
7
|
-
Generates a daily summary of your activity by querying objects edited in the last day
|
|
8
|
-
and feeding them to an AI agent. Runs on a configurable schedule (default 9 PM).
|
|
9
|
-
`,
|
|
10
|
-
icon: "ph--calendar-check--regular",
|
|
11
|
-
iconHue: "sky",
|
|
12
|
-
tags: [
|
|
13
|
-
"labs"
|
|
14
|
-
],
|
|
15
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-daily-summary"
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
// src/DailySummaryPlugin.tsx
|
|
19
|
-
import { Plugin } from "@dxos/app-framework";
|
|
20
|
-
import { AppPlugin } from "@dxos/app-toolkit";
|
|
21
|
-
import { meta as meta3 } from "#meta";
|
|
22
|
-
|
|
23
|
-
// src/translations.ts
|
|
24
|
-
import { meta as meta2 } from "#meta";
|
|
25
|
-
var translations = [
|
|
26
|
-
{
|
|
27
|
-
"en-US": {
|
|
28
|
-
[meta2.id]: {
|
|
29
|
-
"plugin.name": "Daily Summary",
|
|
30
|
-
"settings.summary.label": "Manage Daily Summary",
|
|
31
|
-
"create-trigger.label": "Create daily summary trigger",
|
|
32
|
-
"create-trigger.description": "Create a timer trigger that generates an AI-powered daily summary. After creation, edit the schedule in the Automation panel."
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
];
|
|
37
|
-
|
|
38
|
-
// src/DailySummaryPlugin.tsx
|
|
39
|
-
import { AppGraphBuilder, BlueprintDefinition, ReactSurface } from "#capabilities";
|
|
40
|
-
var DailySummaryPlugin = Plugin.define(meta3).pipe(AppPlugin.addAppGraphModule({
|
|
41
|
-
activate: AppGraphBuilder
|
|
42
|
-
}), AppPlugin.addBlueprintDefinitionModule({
|
|
43
|
-
activate: BlueprintDefinition
|
|
44
|
-
}), AppPlugin.addSurfaceModule({
|
|
45
|
-
activate: ReactSurface
|
|
46
|
-
}), AppPlugin.addTranslationsModule({
|
|
47
|
-
translations
|
|
48
|
-
}), Plugin.make);
|
|
49
|
-
export {
|
|
50
|
-
DailySummaryPlugin,
|
|
51
|
-
meta
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts", "../../../src/DailySummaryPlugin.tsx", "../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.daily-summary',\n name: 'Daily Summary',\n description: trim`\n Generates a daily summary of your activity by querying objects edited in the last day\n and feeding them to an AI agent. Runs on a configurable schedule (default 9 PM).\n `,\n icon: 'ph--calendar-check--regular',\n iconHue: 'sky',\n tags: ['labs'],\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-daily-summary',\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\n\nimport { meta } from '#meta';\nimport { translations } from './translations';\n\nimport { AppGraphBuilder, BlueprintDefinition, ReactSurface } from '#capabilities';\n\nexport const DailySummaryPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.make,\n);\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.id]: {\n 'plugin.name': 'Daily Summary',\n 'settings.summary.label': 'Manage Daily Summary',\n 'create-trigger.label': 'Create daily summary trigger',\n 'create-trigger.description':\n 'Create a timer trigger that generates an AI-powered daily summary. After creation, edit the schedule in the Automation panel.',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
-
"mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,SAAS;EACTC,MAAM;IAAC;;EACPC,QAAQ;AACV;;;ACdA,SAASC,cAAc;AACvB,SAASC,iBAAiB;AAE1B,SAASC,QAAAA,aAAY;;;ACDrB,SAASC,QAAAA,aAAY;AAEd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,MAAKC,EAAE,GAAG;QACT,eAAe;QACf,0BAA0B;QAC1B,wBAAwB;QACxB,8BACE;MACJ;IACF;EACF;;;;ADTF,SAASC,iBAAiBC,qBAAqBC,oBAAoB;AAE5D,IAAMC,qBAAqBC,OAAOC,OAAOC,KAAAA,EAAMC,KACpDC,UAAUC,kBAAkB;EAAEC,UAAUC;AAAgB,CAAA,GACxDH,UAAUI,6BAA6B;EAAEF,UAAUG;AAAoB,CAAA,GACvEL,UAAUM,iBAAiB;EAAEJ,UAAUK;AAAa,CAAA,GACpDP,UAAUQ,sBAAsB;EAAEC;AAAa,CAAA,GAC/Cb,OAAOc,IAAI;",
|
|
6
|
-
"names": ["trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "tags", "source", "Plugin", "AppPlugin", "meta", "meta", "translations", "meta", "id", "AppGraphBuilder", "BlueprintDefinition", "ReactSurface", "DailySummaryPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addBlueprintDefinitionModule", "BlueprintDefinition", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations", "make"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"src/meta.ts":{"bytes":1976,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/translations.ts":{"bytes":1906,"imports":[{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/DailySummaryPlugin.tsx":{"bytes":2667,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"#capabilities","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":702,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/DailySummaryPlugin.tsx","kind":"import-statement","original":"./DailySummaryPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3112},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true}],"exports":["DailySummaryPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/meta.ts":{"bytesInOutput":488},"src/index.ts":{"bytesInOutput":0},"src/DailySummaryPlugin.tsx":{"bytesInOutput":531},"src/translations.ts":{"bytesInOutput":448}},"bytes":1644}}}
|