@dxos/plugin-daily-summary 0.8.3 → 0.8.4-main.422d1c7879
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 +25 -20
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/DailySummaryPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/functions/generate.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +4 -3
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- 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/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +5 -4
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -25
- package/src/DailySummaryPlugin.tsx +3 -2
- package/src/blueprints/functions/generate.test.ts +8 -9
- package/src/blueprints/functions/generate.ts +14 -8
- package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +9 -12
- package/src/capabilities/{blueprint-definition/blueprint-definition.ts → blueprint-definition.ts} +1 -1
- package/src/capabilities/index.ts +6 -4
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +5 -6
- package/src/containers/DailySummarySettings/DailySummarySettings.tsx +18 -24
- package/src/containers/DailySummarySettings/index.ts +1 -3
- package/src/meta.test.ts +1 -1
- package/src/translations.test.ts +5 -4
- package/src/translations.ts +5 -4
- package/dist/lib/browser/DailySummarySettings-RF6P6R5M.mjs +0 -63
- package/dist/lib/browser/DailySummarySettings-RF6P6R5M.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-RHJEYETQ.mjs +0 -39
- package/dist/lib/browser/app-graph-builder-RHJEYETQ.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-XOEDPUVU.mjs +0 -53
- package/dist/lib/browser/blueprint-definition-XOEDPUVU.mjs.map +0 -7
- package/dist/lib/browser/chunk-2TNDFGQB.mjs +0 -21
- package/dist/lib/browser/chunk-2TNDFGQB.mjs.map +0 -7
- package/dist/lib/browser/chunk-UYXGTD3T.mjs +0 -40
- package/dist/lib/browser/chunk-UYXGTD3T.mjs.map +0 -7
- package/dist/lib/browser/generate-FSSCIHAO.mjs +0 -172
- package/dist/lib/browser/generate-FSSCIHAO.mjs.map +0 -7
- package/dist/lib/browser/react-surface-WCGJVZCQ.mjs +0 -36
- package/dist/lib/browser/react-surface-WCGJVZCQ.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/blueprint-definition/index.ts +0 -7
- package/src/capabilities/react-surface/index.ts +0 -7
- /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
- /package/dist/types/src/capabilities/{blueprint-definition/blueprint-definition.d.ts → blueprint-definition.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
|
@@ -1,21 +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
|
-
export {
|
|
19
|
-
meta
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=chunk-2TNDFGQB.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.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"],
|
|
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;",
|
|
6
|
-
"names": ["trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "tags", "source"]
|
|
7
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// src/blueprints/functions/definitions.ts
|
|
2
|
-
import * as Schema from "effect/Schema";
|
|
3
|
-
import { AiService } from "@dxos/ai";
|
|
4
|
-
import { Database } from "@dxos/echo";
|
|
5
|
-
import { Operation } from "@dxos/operation";
|
|
6
|
-
var GenerateSummary = Operation.make({
|
|
7
|
-
meta: {
|
|
8
|
-
key: "org.dxos.function.daily-summary.generate",
|
|
9
|
-
name: "Generate Daily Summary",
|
|
10
|
-
description: "Queries objects modified in the last day and generates an AI-summarized markdown document."
|
|
11
|
-
},
|
|
12
|
-
input: Schema.Struct({
|
|
13
|
-
previousSummary: Schema.optional(Schema.String).annotations({
|
|
14
|
-
description: "The previous day summary text for context continuity."
|
|
15
|
-
}),
|
|
16
|
-
lookbackHours: Schema.optional(Schema.Number).annotations({
|
|
17
|
-
description: "Number of hours to look back for modified objects. Defaults to 24."
|
|
18
|
-
})
|
|
19
|
-
}),
|
|
20
|
-
output: Schema.Struct({
|
|
21
|
-
id: Schema.String.annotations({
|
|
22
|
-
description: "DXN of the created or updated markdown document."
|
|
23
|
-
}),
|
|
24
|
-
objectCount: Schema.Number.annotations({
|
|
25
|
-
description: "Number of objects included in the summary."
|
|
26
|
-
}),
|
|
27
|
-
date: Schema.String.annotations({
|
|
28
|
-
description: 'Date label for the summary (e.g., "March 20").'
|
|
29
|
-
})
|
|
30
|
-
}),
|
|
31
|
-
services: [
|
|
32
|
-
Database.Service,
|
|
33
|
-
AiService.AiService
|
|
34
|
-
]
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
export {
|
|
38
|
-
GenerateSummary
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=chunk-UYXGTD3T.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/blueprints/functions/definitions.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { AiService } from '@dxos/ai';\nimport { Database } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\n\n/**\n * Generates a daily summary of recently modified objects using AI.\n * Queries the database for objects updated within a time window,\n * sends them to an LLM for summarization, and creates/updates\n * a Markdown document in a \"Summaries\" collection.\n */\nexport const GenerateSummary = Operation.make({\n meta: {\n key: 'org.dxos.function.daily-summary.generate',\n name: 'Generate Daily Summary',\n description: 'Queries objects modified in the last day and generates an AI-summarized markdown document.',\n },\n input: Schema.Struct({\n previousSummary: Schema.optional(Schema.String).annotations({\n description: 'The previous day summary text for context continuity.',\n }),\n lookbackHours: Schema.optional(Schema.Number).annotations({\n description: 'Number of hours to look back for modified objects. Defaults to 24.',\n }),\n }),\n output: Schema.Struct({\n id: Schema.String.annotations({\n description: 'DXN of the created or updated markdown document.',\n }),\n objectCount: Schema.Number.annotations({\n description: 'Number of objects included in the summary.',\n }),\n date: Schema.String.annotations({\n description: 'Date label for the summary (e.g., \"March 20\").',\n }),\n }),\n services: [Database.Service, AiService.AiService],\n});\n"],
|
|
5
|
-
"mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAQnB,IAAMC,kBAAkBC,UAAUC,KAAK;EAC5CC,MAAM;IACJC,KAAK;IACLC,MAAM;IACNC,aAAa;EACf;EACAC,OAAcC,cAAO;IACnBC,iBAAwBC,gBAAgBC,aAAM,EAAEC,YAAY;MAC1DN,aAAa;IACf,CAAA;IACAO,eAAsBH,gBAAgBI,aAAM,EAAEF,YAAY;MACxDN,aAAa;IACf,CAAA;EACF,CAAA;EACAS,QAAeP,cAAO;IACpBQ,IAAWL,cAAOC,YAAY;MAC5BN,aAAa;IACf,CAAA;IACAW,aAAoBH,cAAOF,YAAY;MACrCN,aAAa;IACf,CAAA;IACAY,MAAaP,cAAOC,YAAY;MAC9BN,aAAa;IACf,CAAA;EACF,CAAA;EACAa,UAAU;IAACC,SAASC;IAASC,UAAUA;;AACzC,CAAA;",
|
|
6
|
-
"names": ["Schema", "AiService", "Database", "Operation", "GenerateSummary", "Operation", "make", "meta", "key", "name", "description", "input", "Struct", "previousSummary", "optional", "String", "annotations", "lookbackHours", "Number", "output", "id", "objectCount", "date", "services", "Database", "Service", "AiService"]
|
|
7
|
-
}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
GenerateSummary
|
|
3
|
-
} from "./chunk-UYXGTD3T.mjs";
|
|
4
|
-
|
|
5
|
-
// src/blueprints/functions/generate.ts
|
|
6
|
-
import * as LanguageModel from "@effect/ai/LanguageModel";
|
|
7
|
-
import * as Prompt from "@effect/ai/Prompt";
|
|
8
|
-
import * as Effect from "effect/Effect";
|
|
9
|
-
import * as Layer from "effect/Layer";
|
|
10
|
-
import * as Schema from "effect/Schema";
|
|
11
|
-
import { AiService, ToolExecutionService, ToolResolverService } from "@dxos/ai";
|
|
12
|
-
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
|
-
import { Text } from "@dxos/schema";
|
|
16
|
-
import { CollectionModel } from "@dxos/schema";
|
|
17
|
-
import { trim } from "@dxos/util";
|
|
18
|
-
var DEFAULT_LOOKBACK_HOURS = 24;
|
|
19
|
-
var SUMMARIES_COLLECTION_NAME = "Summaries";
|
|
20
|
-
var SUMMARY_TITLE_PREFIX = "Daily Summary \u2014";
|
|
21
|
-
var SUMMARY_STRUCTURE = trim`
|
|
22
|
-
Given a list of recently modified objects,
|
|
23
|
-
generate a concise daily summary in markdown,
|
|
24
|
-
try to pull insights from the changes and the context of the changes.
|
|
25
|
-
Focus on the meaningful changes and try to avoid changes in the system objects.
|
|
26
|
-
|
|
27
|
-
Follow this exact structure:
|
|
28
|
-
|
|
29
|
-
## Highlights
|
|
30
|
-
Bullet points capturing the most significant changes or accomplishments.
|
|
31
|
-
|
|
32
|
-
## TODOs
|
|
33
|
-
List of TODOs that is inferred from the changes and the content of the changes.
|
|
34
|
-
Make it short, do not force it, only strong call to action data should be included.
|
|
35
|
-
Use - [ ] syntax for the TODOs.
|
|
36
|
-
|
|
37
|
-
Rules:
|
|
38
|
-
- Do NOT include the heading "Daily Summary" — the document already has a title.
|
|
39
|
-
- Be concise. Each bullet should be one sentence.
|
|
40
|
-
- If a previous summary is provided, note what changed since then.
|
|
41
|
-
- Try to pull actionable points from the changes and the context of the changes.
|
|
42
|
-
- Output raw markdown only, no wrapping code fences.
|
|
43
|
-
`;
|
|
44
|
-
var MarkdownDocument = Schema.Struct({
|
|
45
|
-
name: Schema.optional(Schema.String),
|
|
46
|
-
content: Ref.Ref(Text.Text)
|
|
47
|
-
}).pipe(Type.object({
|
|
48
|
-
typename: "org.dxos.type.document",
|
|
49
|
-
version: "0.1.0"
|
|
50
|
-
}));
|
|
51
|
-
var makeMarkdownDoc = ({ name, content }) => {
|
|
52
|
-
const doc = Obj.make(MarkdownDocument, {
|
|
53
|
-
name,
|
|
54
|
-
content: Ref.make(Text.make(content))
|
|
55
|
-
});
|
|
56
|
-
Obj.setParent(doc.content.target, doc);
|
|
57
|
-
return doc;
|
|
58
|
-
};
|
|
59
|
-
var generate_default = GenerateSummary.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ previousSummary, lookbackHours }) {
|
|
60
|
-
const hours = lookbackHours ?? DEFAULT_LOOKBACK_HOURS;
|
|
61
|
-
const cutoff = Date.now() - hours * 60 * 60 * 1e3;
|
|
62
|
-
const now = /* @__PURE__ */ new Date();
|
|
63
|
-
const dateLabel = now.toLocaleDateString("en-US", {
|
|
64
|
-
month: "long",
|
|
65
|
-
day: "numeric"
|
|
66
|
-
});
|
|
67
|
-
const docName = `${SUMMARY_TITLE_PREFIX} ${dateLabel}`;
|
|
68
|
-
const recentObjects = yield* Database.runQuery(Filter.updated({
|
|
69
|
-
after: cutoff
|
|
70
|
-
}));
|
|
71
|
-
const objectDescriptions = recentObjects.map((obj) => {
|
|
72
|
-
return JSON.stringify(Obj.toJSON(obj));
|
|
73
|
-
});
|
|
74
|
-
const content = yield* summarizeWithAi({
|
|
75
|
-
dateLabel,
|
|
76
|
-
objectDescriptions,
|
|
77
|
-
previousSummary,
|
|
78
|
-
hours
|
|
79
|
-
});
|
|
80
|
-
const existingDoc = yield* findExistingDaySummary(docName);
|
|
81
|
-
let doc;
|
|
82
|
-
if (existingDoc) {
|
|
83
|
-
yield* updateDocContent(existingDoc, content);
|
|
84
|
-
doc = existingDoc;
|
|
85
|
-
} else {
|
|
86
|
-
doc = makeMarkdownDoc({
|
|
87
|
-
name: docName,
|
|
88
|
-
content
|
|
89
|
-
});
|
|
90
|
-
const summariesCollection = yield* findOrCreateSummariesCollection();
|
|
91
|
-
yield* CollectionModel.add({
|
|
92
|
-
object: doc,
|
|
93
|
-
target: summariesCollection
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return {
|
|
97
|
-
id: Obj.getDXN(doc).toString(),
|
|
98
|
-
objectCount: recentObjects.length,
|
|
99
|
-
date: dateLabel
|
|
100
|
-
};
|
|
101
|
-
}, Effect.provide(Layer.mergeAll(AiService.model("@anthropic/claude-haiku-4-5"), ToolResolverService.layerEmpty, ToolExecutionService.layerEmpty, TracingService.layerNoop, FunctionInvocationService.layerNotAvailable)))));
|
|
102
|
-
var summarizeWithAi = Effect.fn(function* ({ dateLabel, objectDescriptions, previousSummary, hours }) {
|
|
103
|
-
const userContent = [
|
|
104
|
-
`Date: ${dateLabel}`,
|
|
105
|
-
`Time window: last ${hours} hours`,
|
|
106
|
-
`Total objects modified: ${objectDescriptions.length}`,
|
|
107
|
-
"",
|
|
108
|
-
"Modified objects:",
|
|
109
|
-
...objectDescriptions,
|
|
110
|
-
...previousSummary ? [
|
|
111
|
-
"",
|
|
112
|
-
"Previous summary for context:",
|
|
113
|
-
previousSummary
|
|
114
|
-
] : []
|
|
115
|
-
].join("\n");
|
|
116
|
-
const { text } = yield* LanguageModel.generateText({
|
|
117
|
-
prompt: Prompt.fromMessages([
|
|
118
|
-
Prompt.systemMessage({
|
|
119
|
-
content: SUMMARY_STRUCTURE
|
|
120
|
-
}),
|
|
121
|
-
Prompt.userMessage({
|
|
122
|
-
content: [
|
|
123
|
-
Prompt.makePart("text", {
|
|
124
|
-
text: userContent
|
|
125
|
-
})
|
|
126
|
-
]
|
|
127
|
-
})
|
|
128
|
-
])
|
|
129
|
-
});
|
|
130
|
-
return text;
|
|
131
|
-
});
|
|
132
|
-
var findExistingDaySummary = Effect.fn(function* (docName) {
|
|
133
|
-
const docs = yield* Database.runQuery(Query.type(MarkdownDocument, {
|
|
134
|
-
name: docName
|
|
135
|
-
}));
|
|
136
|
-
return docs.length > 0 ? docs[0] : null;
|
|
137
|
-
});
|
|
138
|
-
var updateDocContent = Effect.fn(function* (doc, newContent) {
|
|
139
|
-
const textRef = doc.content;
|
|
140
|
-
if (Ref.isRef(textRef)) {
|
|
141
|
-
const text = yield* Effect.promise(() => textRef.load());
|
|
142
|
-
if (text) {
|
|
143
|
-
Obj.change(text, (mutable) => {
|
|
144
|
-
mutable.content = newContent;
|
|
145
|
-
});
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
Obj.change(doc, (mutable) => {
|
|
150
|
-
mutable.content = Ref.make(Text.make(newContent));
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
var findOrCreateSummariesCollection = Effect.fn(function* () {
|
|
154
|
-
const collections = yield* Database.runQuery(Query.type(Collection.Collection, {
|
|
155
|
-
name: SUMMARIES_COLLECTION_NAME
|
|
156
|
-
}));
|
|
157
|
-
if (collections.length > 0) {
|
|
158
|
-
return collections[0];
|
|
159
|
-
}
|
|
160
|
-
const collection = Collection.make({
|
|
161
|
-
name: SUMMARIES_COLLECTION_NAME
|
|
162
|
-
});
|
|
163
|
-
yield* CollectionModel.add({
|
|
164
|
-
object: collection
|
|
165
|
-
});
|
|
166
|
-
return collection;
|
|
167
|
-
});
|
|
168
|
-
export {
|
|
169
|
-
SUMMARY_STRUCTURE,
|
|
170
|
-
generate_default as default
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=generate-FSSCIHAO.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/blueprints/functions/generate.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as LanguageModel from '@effect/ai/LanguageModel';\nimport * as Prompt from '@effect/ai/Prompt';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Schema from 'effect/Schema';\n\nimport { AiService, ToolExecutionService, ToolResolverService } from '@dxos/ai';\nimport { Collection, Database, Filter, Obj, Query, Ref, Type } from '@dxos/echo';\nimport { FunctionInvocationService, TracingService } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\nimport { Text } from '@dxos/schema';\nimport { CollectionModel } from '@dxos/schema';\nimport { trim } from '@dxos/util';\n\nimport { GenerateSummary } from './definitions';\n\nconst DEFAULT_LOOKBACK_HOURS = 24;\nconst SUMMARIES_COLLECTION_NAME = 'Summaries';\nconst SUMMARY_TITLE_PREFIX = 'Daily Summary —';\n\n/**\n * Predefined structure for the AI-generated daily summary.\n * Used as the system prompt for the summarization model.\n */\nexport const SUMMARY_STRUCTURE = trim`\n Given a list of recently modified objects,\n generate a concise daily summary in markdown, \n try to pull insights from the changes and the context of the changes.\n Focus on the meaningful changes and try to avoid changes in the system objects.\n\n Follow this exact structure:\n\n ## Highlights\n Bullet points capturing the most significant changes or accomplishments.\n\n ## TODOs\n List of TODOs that is inferred from the changes and the content of the changes.\n Make it short, do not force it, only strong call to action data should be included.\n Use - [ ] syntax for the TODOs.\n\n Rules:\n - Do NOT include the heading \"Daily Summary\" — the document already has a title.\n - Be concise. Each bullet should be one sentence.\n - If a previous summary is provided, note what changed since then.\n - Try to pull actionable points from the changes and the context of the changes.\n - Output raw markdown only, no wrapping code fences.\n`;\n\nconst MarkdownDocument = Schema.Struct({\n name: Schema.optional(Schema.String),\n content: Ref.Ref(Text.Text),\n}).pipe(Type.object({ typename: 'org.dxos.type.document', version: '0.1.0' }));\n\ntype MarkdownDoc = Schema.Schema.Type<typeof MarkdownDocument>;\n\nconst makeMarkdownDoc = ({ name, content }: { name: string; content: string }) => {\n const doc = Obj.make(MarkdownDocument, { name, content: Ref.make(Text.make(content)) });\n Obj.setParent(doc.content.target!, doc);\n return doc;\n};\n\nexport default GenerateSummary.pipe(\n Operation.withHandler(\n Effect.fnUntraced(\n function* ({ previousSummary, lookbackHours }) {\n const hours = lookbackHours ?? DEFAULT_LOOKBACK_HOURS;\n const cutoff = Date.now() - hours * 60 * 60 * 1000;\n const now = new Date();\n const dateLabel = now.toLocaleDateString('en-US', { month: 'long', day: 'numeric' });\n const docName = `${SUMMARY_TITLE_PREFIX} ${dateLabel}`;\n\n const recentObjects = yield* Database.runQuery(Filter.updated({ after: cutoff }));\n\n const objectDescriptions = recentObjects.map((obj) => {\n return JSON.stringify(Obj.toJSON(obj));\n });\n\n const content = yield* summarizeWithAi({\n dateLabel,\n objectDescriptions,\n previousSummary,\n hours,\n });\n\n const existingDoc = yield* findExistingDaySummary(docName);\n\n let doc;\n if (existingDoc) {\n yield* updateDocContent(existingDoc, content);\n doc = existingDoc;\n } else {\n doc = makeMarkdownDoc({ name: docName, content });\n const summariesCollection = yield* findOrCreateSummariesCollection();\n yield* CollectionModel.add({ object: doc, target: summariesCollection });\n }\n\n return {\n id: Obj.getDXN(doc).toString(),\n objectCount: recentObjects.length,\n date: dateLabel,\n };\n },\n Effect.provide(\n Layer.mergeAll(\n AiService.model('@anthropic/claude-haiku-4-5'),\n ToolResolverService.layerEmpty,\n ToolExecutionService.layerEmpty,\n TracingService.layerNoop,\n FunctionInvocationService.layerNotAvailable,\n ),\n ),\n ),\n ),\n);\n\nconst summarizeWithAi = Effect.fn(function* ({\n dateLabel,\n objectDescriptions,\n previousSummary,\n hours,\n}: {\n dateLabel: string;\n objectDescriptions: string[];\n previousSummary?: string;\n hours: number;\n}) {\n const userContent = [\n `Date: ${dateLabel}`,\n `Time window: last ${hours} hours`,\n `Total objects modified: ${objectDescriptions.length}`,\n '',\n 'Modified objects:',\n ...objectDescriptions,\n ...(previousSummary ? ['', 'Previous summary for context:', previousSummary] : []),\n ].join('\\n');\n\n const { text } = yield* LanguageModel.generateText({\n prompt: Prompt.fromMessages([\n Prompt.systemMessage({ content: SUMMARY_STRUCTURE }),\n Prompt.userMessage({ content: [Prompt.makePart('text', { text: userContent })] }),\n ]),\n });\n\n return text;\n});\n\nconst findExistingDaySummary = Effect.fn(function* (docName: string) {\n const docs = yield* Database.runQuery(Query.type(MarkdownDocument, { name: docName }));\n return docs.length > 0 ? docs[0] : null;\n});\n\nconst updateDocContent = Effect.fn(function* (doc: MarkdownDoc, newContent: string) {\n const textRef = doc.content;\n if (Ref.isRef(textRef)) {\n const text: Text.Text | undefined = yield* Effect.promise(() => textRef.load());\n if (text) {\n Obj.change(text, (mutable) => {\n mutable.content = newContent;\n });\n return;\n }\n }\n Obj.change(doc, (mutable) => {\n mutable.content = Ref.make(Text.make(newContent));\n });\n});\n\nconst findOrCreateSummariesCollection = Effect.fn(function* () {\n const collections = yield* Database.runQuery(Query.type(Collection.Collection, { name: SUMMARIES_COLLECTION_NAME }));\n\n if (collections.length > 0) {\n return collections[0];\n }\n\n const collection = Collection.make({ name: SUMMARIES_COLLECTION_NAME });\n yield* CollectionModel.add({ object: collection });\n return collection;\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["LanguageModel", "Prompt", "Effect", "Layer", "Schema", "AiService", "ToolExecutionService", "ToolResolverService", "Collection", "Database", "Filter", "Obj", "Query", "Ref", "Type", "FunctionInvocationService", "TracingService", "Operation", "Text", "CollectionModel", "trim", "DEFAULT_LOOKBACK_HOURS", "SUMMARIES_COLLECTION_NAME", "SUMMARY_TITLE_PREFIX", "SUMMARY_STRUCTURE", "trim", "MarkdownDocument", "Struct", "name", "optional", "String", "content", "Ref", "Text", "pipe", "Type", "object", "typename", "version", "makeMarkdownDoc", "doc", "Obj", "make", "setParent", "target", "GenerateSummary", "Operation", "withHandler", "fnUntraced", "previousSummary", "lookbackHours", "hours", "cutoff", "Date", "now", "dateLabel", "toLocaleDateString", "month", "day", "docName", "recentObjects", "Database", "runQuery", "Filter", "updated", "after", "objectDescriptions", "map", "obj", "JSON", "stringify", "toJSON", "summarizeWithAi", "existingDoc", "findExistingDaySummary", "updateDocContent", "summariesCollection", "findOrCreateSummariesCollection", "CollectionModel", "add", "id", "getDXN", "toString", "objectCount", "length", "date", "provide", "mergeAll", "AiService", "model", "ToolResolverService", "layerEmpty", "ToolExecutionService", "TracingService", "layerNoop", "FunctionInvocationService", "layerNotAvailable", "fn", "userContent", "join", "text", "generateText", "prompt", "fromMessages", "systemMessage", "userMessage", "makePart", "docs", "Query", "type", "newContent", "textRef", "isRef", "promise", "load", "change", "mutable", "collections", "Collection", "collection"]
|
|
7
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
meta
|
|
3
|
-
} from "./chunk-2TNDFGQB.mjs";
|
|
4
|
-
|
|
5
|
-
// src/capabilities/react-surface/react-surface.tsx
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import React from "react";
|
|
8
|
-
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
9
|
-
import { Surface } from "@dxos/app-framework/ui";
|
|
10
|
-
import { useActiveSpace } from "@dxos/plugin-space";
|
|
11
|
-
|
|
12
|
-
// src/containers/index.ts
|
|
13
|
-
import { lazy } from "react";
|
|
14
|
-
var DailySummarySettings = lazy(() => import("./DailySummarySettings-RF6P6R5M.mjs"));
|
|
15
|
-
|
|
16
|
-
// src/capabilities/react-surface/react-surface.tsx
|
|
17
|
-
var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
|
|
18
|
-
Surface.create({
|
|
19
|
-
id: `${meta.id}.space-settings-daily-summary`,
|
|
20
|
-
role: "article",
|
|
21
|
-
filter: (data) => data.subject === `${meta.id}.space-settings-daily-summary`,
|
|
22
|
-
component: () => {
|
|
23
|
-
const space = useActiveSpace();
|
|
24
|
-
if (!space) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
return /* @__PURE__ */ React.createElement(DailySummarySettings, {
|
|
28
|
-
space
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
})
|
|
32
|
-
])));
|
|
33
|
-
export {
|
|
34
|
-
react_surface_default as default
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=react-surface-WCGJVZCQ.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/containers/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\nimport { useActiveSpace } from '@dxos/plugin-space';\n\nimport { DailySummarySettings } from '../../containers';\nimport { meta } from '../../meta';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: `${meta.id}.space-settings-daily-summary`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}.space-settings-daily-summary`,\n component: () => {\n const space = useActiveSpace();\n if (!space) {\n return null;\n }\n\n return <DailySummarySettings space={space} />;\n },\n }),\n ]),\n ),\n);\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const DailySummarySettings: ComponentType<any> = lazy(() => import('./DailySummarySettings'));\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,sBAAsB;;;ACL/B,SAA6BC,YAAY;AAElC,IAAMC,uBAA2CC,KAAK,MAAM,OAAO,qCAAA,CAAA;;;ADQ1E,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,aAAaC,cAAc;EAChDC,QAAQC,OAAO;IACbC,IAAI,GAAGC,KAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SAAsCA,KAAKC,YAAY,GAAGJ,KAAKD,EAAE;IAC1EM,WAAW,MAAA;AACT,YAAMC,QAAQC,eAAAA;AACd,UAAI,CAACD,OAAO;AACV,eAAO;MACT;AAEA,aAAO,sBAAA,cAACE,sBAAAA;QAAqBF;;IAC/B;EACF,CAAA;CACD,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "React", "Capabilities", "Capability", "Surface", "useActiveSpace", "lazy", "DailySummarySettings", "lazy", "Capability", "makeModule", "succeed", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "subject", "component", "space", "useActiveSpace", "DailySummarySettings"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;;AAK/D,wBAuBE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/app-graph-builder/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,eAAe,qIAA0E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint-definition.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/blueprint-definition/blueprint-definition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,QAAA,MAAM,mBAAmB,gJAGoF,CAAC;AAE9G,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { Capability } from '@dxos/app-framework';
|
|
2
|
-
export declare const BlueprintDefinition: Capability.LazyCapability<[], Capability.Capability<Capability.InterfaceDef<import("@dxos/app-toolkit").AppCapabilities.BlueprintDefinition>>[], Error>;
|
|
3
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/blueprint-definition/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,yJAAiF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/react-surface/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,YAAY,iJAAmE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/react-surface/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;AAO/D,wBAkBE"}
|
|
File without changes
|
|
File without changes
|
/package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts}
RENAMED
|
File without changes
|